Делал под заказ, но бесплатно, поэтому что б мои труды зря не пропали, сохраню тут для истории.
Может быть кому-то пригодится :)

Этот алгоритм делает две вещи.
1.
при вводе адреса в строке адреса выскакивает список адресов, некоторые из них помечены звездочкой - это значит адрес взят из закладок.
если по такому адресу в этом списке кликнуть правой кнопкой мыши, то адрес полностью удаляется из закладок

2.
на тулбаре есть кнопка от этого плагина, называется "BookmarkRemove"
при клике на кнопку из всех закладок удаляется текущий адрес из текущей активной вкладки.

Будьте внимательны: 1 и 2 делают своё дело  без подтверждений а-ля "вы уверены?"

Name: BookmarkRemove
Поле инициализации (/*Initialization Code*/)

Выделить код

Код:

var btn = this;
var PopupAutoCompleteRichResult = document.getElementById('PopupAutoCompleteRichResult');

btn.addEventListener("click", clickBtn, true);
PopupAutoCompleteRichResult.addEventListener("click", clickPopup, false);
btn.onDestroy = function() {
    btn.removeEventListener("click", clickBtn, true);
    PopupAutoCompleteRichResult.removeEventListener("click", clickPopup, false);
}

function clickBtn(event) {
    if (event.button != 0) { return; }
    event.preventDefault();
    
    var url = gBrowser.selectedTab.linkedBrowser.currentURI.spec;
    bookmarkRemove(url);
}

function clickPopup(event) {
    if (event.button != 2) { return; }
    
    var item = PopupAutoCompleteRichResult.richlistbox.getSelectedItem(0);
    if (item && (item.getAttribute('type') == 'bookmark')) {
        var url = item.getAttribute('url');
        bookmarkRemove(url);
        item.setAttribute('type', 'favicon');

        var image = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'type-image');
        if (image) {
            image.setAttribute('class', 'ac-type-icon ac-result-type-favicon');
        }
        var an_url = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'url');
        if (an_url) {
            an_url.setAttribute('type', 'favicon');
        }
        var an_action = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'action');
        if (an_action) {
            an_action.setAttribute('type', 'favicon');
        }
    }
}

function bookmarkRemove(url) {
    var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
    var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
    var uri = ios.newURI(url, null, null);
    var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {});
    for (var i of bookmarksArray) {
        bmsvc.removeItem(i);
    }
}

Для ленивых :)

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EBookmarkRemove%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20btn%20%3D%20this%3B%0Avar%20PopupAutoCompleteRichResult%20%3D%20document.getElementById%28%27PopupAutoCompleteRichResult%27%29%3B%0A%0Abtn.addEventListener%28%22click%22%2C%20clickBtn%2C%20true%29%3B%0APopupAutoCompleteRichResult.addEventListener%28%22click%22%2C%20clickPopup%2C%20false%29%3B%0Abtn.onDestroy%20%3D%20function%28%29%20%7B%0A%09btn.removeEventListener%28%22click%22%2C%20clickBtn%2C%20true%29%3B%0A%09PopupAutoCompleteRichResult.removeEventListener%28%22click%22%2C%20clickPopup%2C%20false%29%3B%0A%7D%0A%0Afunction%20clickBtn%28event%29%20%7B%0A%09if%20%28event.button%20%21%3D%200%29%20%7B%20return%3B%20%7D%0A%09event.preventDefault%28%29%3B%0A%09%0A%09var%20url%20%3D%20gBrowser.selectedTab.linkedBrowser.currentURI.spec%3B%0A%09bookmarkRemove%28url%29%3B%0A%7D%0A%0Afunction%20clickPopup%28event%29%20%7B%0A%09if%20%28event.button%20%21%3D%202%29%20%7B%20return%3B%20%7D%0A%09%0A%09var%20item%20%3D%20PopupAutoCompleteRichResult.richlistbox.getSelectedItem%280%29%3B%0A%09if%20%28item%20%26%26%20%28item.getAttribute%28%27type%27%29%20%3D%3D%20%27bookmark%27%29%29%20%7B%0A%09%09var%20url%20%3D%20item.getAttribute%28%27url%27%29%3B%0A%09%09bookmarkRemove%28url%29%3B%0A%09%09item.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%0A%09%09var%20image%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27type-image%27%29%3B%0A%09%09if%20%28image%29%20%7B%0A%09%09%09image.setAttribute%28%27class%27%2C%20%27ac-type-icon%20ac-result-type-favicon%27%29%3B%0A%09%09%7D%0A%09%09var%20an_url%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27url%27%29%3B%0A%09%09if%20%28an_url%29%20%7B%0A%09%09%09an_url.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%09%09%7D%0A%09%09var%20an_action%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27action%27%29%3B%0A%09%09if%20%28an_action%29%20%7B%0A%09%09%09an_action.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20bookmarkRemove%28url%29%20%7B%0A%09var%20bmsvc%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%09var%20ios%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Components.interfaces.nsIIOService%29%3B%0A%09var%20uri%20%3D%20ios.newURI%28url%2C%20null%2C%20null%29%3B%0A%09var%20bookmarksArray%20%3D%20bmsvc.getBookmarkIdsForURI%28uri%2C%20%7B%7D%29%3B%0A%09for%20%28var%20i%20of%20bookmarksArray%29%20%7B%0A%09%09bmsvc.removeItem%28i%29%3B%0A%09%7D%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

pag77, спасибо за кнопку.
Хорошо было бы добавить также удаление записей истории из выпадающего меню. :)

из какого выпадающего меню?

из меню автозаполнения подсказок адресной строки

pag77 пишет

при вводе адреса в строке адреса выскакивает список адресов, некоторые из них помечены звездочкой - это значит адрес взят из закладок.
если по такому адресу в этом списке кликнуть правой кнопкой мыши, то адрес полностью удаляется из закладок

то же самое,  но для адресов, не помеченных звездочкой, т.е. адресов из истории

LBra пишет

pag77, спасибо за кнопку.Хорошо было бы добавить также удаление записей истории из выпадающего меню.

LBra пишет

то же самое,  но для адресов, не помеченных звездочкой, т.е. адресов из истории

Выделить код

Код:

var btn = this;
var PopupAutoCompleteRichResult = document.getElementById('PopupAutoCompleteRichResult');

btn.addEventListener("click", clickBtn, true);
PopupAutoCompleteRichResult.addEventListener("click", clickPopup, false);
btn.onDestroy = function() {
    btn.removeEventListener("click", clickBtn, true);
    PopupAutoCompleteRichResult.removeEventListener("click", clickPopup, false);
}

function clickBtn(event) {
    if (event.button != 0) { return; }
    event.preventDefault();
    
    var url = gBrowser.selectedTab.linkedBrowser.currentURI.spec;
    bookmarkRemove(url);
}

function clickPopup(event) {
    if (event.button != 2) { return; }
    
    var item = PopupAutoCompleteRichResult.richlistbox.getSelectedItem(0);
    if (item) {
        var url = item.getAttribute('url');
        if (item.getAttribute('type') == 'bookmark') {
            bookmarkRemove(url);
            item.setAttribute('type', 'favicon');

            var image = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'type-image');
            if (image) {
                image.setAttribute('class', 'ac-type-icon ac-result-type-favicon');
            }
            var an_url = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'url');
            if (an_url) {
                an_url.setAttribute('type', 'favicon');
            }
            var an_action = item.ownerDocument.getAnonymousElementByAttribute(item, 'anonid', 'action');
            if (an_action) {
                an_action.setAttribute('type', 'favicon');
            }
        }
        if (!/^moz\-action\:/.test(url)) {
            PopupAutoCompleteRichResult.richlistbox.removeItemAt( PopupAutoCompleteRichResult.richlistbox.getIndexOfItem( item ) );
            historyRemove(url);
        }
    }
}

function bookmarkRemove(url) {
    var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
    var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
    var uri = ios.newURI(url, null, null);
    var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {});
    for (var i of bookmarksArray) {
        bmsvc.removeItem(i);
    }
}
function historyRemove(url) {
    var browserHistory = Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsIBrowserHistory);
    var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
    var uri = ios.newURI(url, null, null);
    browserHistory.removePage(uri);
}

Для ленивых :)

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EBookmarkRemove%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20btn%20%3D%20this%3B%0Avar%20PopupAutoCompleteRichResult%20%3D%20document.getElementById%28%27PopupAutoCompleteRichResult%27%29%3B%0A%0Abtn.addEventListener%28%22click%22%2C%20clickBtn%2C%20true%29%3B%0APopupAutoCompleteRichResult.addEventListener%28%22click%22%2C%20clickPopup%2C%20false%29%3B%0Abtn.onDestroy%20%3D%20function%28%29%20%7B%0A%20%20%20%20btn.removeEventListener%28%22click%22%2C%20clickBtn%2C%20true%29%3B%0A%20%20%20%20PopupAutoCompleteRichResult.removeEventListener%28%22click%22%2C%20clickPopup%2C%20false%29%3B%0A%7D%0A%0Afunction%20clickBtn%28event%29%20%7B%0A%20%20%20%20if%20%28event.button%20%21%3D%200%29%20%7B%20return%3B%20%7D%0A%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%0A%20%20%20%20var%20url%20%3D%20gBrowser.selectedTab.linkedBrowser.currentURI.spec%3B%0A%20%20%20%20bookmarkRemove%28url%29%3B%0A%7D%0A%0Afunction%20clickPopup%28event%29%20%7B%0A%20%20%20%20if%20%28event.button%20%21%3D%202%29%20%7B%20return%3B%20%7D%0A%20%20%20%20%0A%20%20%20%20var%20item%20%3D%20PopupAutoCompleteRichResult.richlistbox.getSelectedItem%280%29%3B%0A%20%20%20%20if%20%28item%29%20%7B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20item.getAttribute%28%27url%27%29%3B%0A%20%20%20%20%20%20%20%20if%20%28item.getAttribute%28%27type%27%29%20%3D%3D%20%27bookmark%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20bookmarkRemove%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20item.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20image%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27type-image%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28image%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image.setAttribute%28%27class%27%2C%20%27ac-type-icon%20ac-result-type-favicon%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20an_url%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27url%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28an_url%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20an_url.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20an_action%20%3D%20item.ownerDocument.getAnonymousElementByAttribute%28item%2C%20%27anonid%27%2C%20%27action%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28an_action%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20an_action.setAttribute%28%27type%27%2C%20%27favicon%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%21/%5Emoz%5C-action%5C%3A/.test%28url%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20PopupAutoCompleteRichResult.richlistbox.removeItemAt%28%20PopupAutoCompleteRichResult.richlistbox.getIndexOfItem%28%20item%20%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20historyRemove%28url%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%0Afunction%20bookmarkRemove%28url%29%20%7B%0A%20%20%20%20var%20bmsvc%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%20%20%20%20var%20ios%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Components.interfaces.nsIIOService%29%3B%0A%20%20%20%20var%20uri%20%3D%20ios.newURI%28url%2C%20null%2C%20null%29%3B%0A%20%20%20%20var%20bookmarksArray%20%3D%20bmsvc.getBookmarkIdsForURI%28uri%2C%20%7B%7D%29%3B%0A%20%20%20%20for%20%28var%20i%20of%20bookmarksArray%29%20%7B%0A%20%20%20%20%20%20%20%20bmsvc.removeItem%28i%29%3B%0A%20%20%20%20%7D%0A%7D%0Afunction%20historyRemove%28url%29%20%7B%0A%20%20%20%20var%20browserHistory%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.getService%28Components.interfaces.nsIBrowserHistory%29%3B%0A%20%20%20%20var%20ios%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Components.interfaces.nsIIOService%29%3B%0A%20%20%20%20var%20uri%20%3D%20ios.newURI%28url%2C%20null%2C%20null%29%3B%0A%20%20%20%20browserHistory.removePage%28uri%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Спасибо!   :)