Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№116-03-2016 17:37:30

pag77
Участник
 
Группа: Extensions
Зарегистрирован: 20-03-2012
Сообщений: 1657
UA: Firefox 45.0

[CB] Удаление выбранных закладок одним щелчком мыши

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

Этот алгоритм делает две вещи.
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

Отсутствует

 

№218-10-2016 22:51:54

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: unknown 0.0

Re: [CB] Удаление выбранных закладок одним щелчком мыши

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

Отсутствует

 

№319-10-2016 10:19:05

pag77
Участник
 
Группа: Extensions
Зарегистрирован: 20-03-2012
Сообщений: 1657
UA: Firefox 49.0

Re: [CB] Удаление выбранных закладок одним щелчком мыши

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

Отсутствует

 

№420-10-2016 10:04:16

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: unknown 0.0

Re: [CB] Удаление выбранных закладок одним щелчком мыши

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

pag77 пишет

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

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

Отредактировано LBra (20-10-2016 10:04:49)

Отсутствует

 

№520-10-2016 16:35:52

pag77
Участник
 
Группа: Extensions
Зарегистрирован: 20-03-2012
Сообщений: 1657
UA: Firefox 49.0

Re: [CB] Удаление выбранных закладок одним щелчком мыши

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

Отсутствует

 

№624-10-2016 11:01:06

LBra
Участник
 
Группа: Members
Зарегистрирован: 20-10-2011
Сообщений: 40
UA: unknown 0.0

Re: [CB] Удаление выбранных закладок одним щелчком мыши

Спасибо!   :)

Отредактировано LBra (09-11-2016 16:41:16)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]