Страницы: 1
Делал под заказ, но бесплатно, поэтому что б мои труды зря не пропали, сохраню тут для истории.
Может быть кому-то пригодится
Этот алгоритм делает две вещи.
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
Отсутствует
из меню автозаполнения подсказок адресной строки
при вводе адреса в строке адреса выскакивает список адресов, некоторые из них помечены звездочкой - это значит адрес взят из закладок.
если по такому адресу в этом списке кликнуть правой кнопкой мыши, то адрес полностью удаляется из закладок
то же самое, но для адресов, не помеченных звездочкой, т.е. адресов из истории
Отредактировано LBra (20-10-2016 10:04:49)
Отсутствует
pag77, спасибо за кнопку.Хорошо было бы добавить также удаление записей истории из выпадающего меню.
то же самое, но для адресов, не помеченных звездочкой, т.е. адресов из истории
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
Отсутствует
Страницы: 1