>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB] Удаление выбранных закладок одним щелчком мыши http://forum.mozilla-russia.org/viewtopic.php?id=69556 |
pag77 > 16-03-2016 17:37:30 |
Делал под заказ, но бесплатно, поэтому что б мои труды зря не пропали, сохраню тут для истории. Этот алгоритм делает две вещи. 2. Будьте внимательны: 1 и 2 делают своё дело без подтверждений а-ля "вы уверены?" Name: BookmarkRemove Выделить код Код: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 > 18-10-2016 22:51:54 |
pag77, спасибо за кнопку. |
pag77 > 19-10-2016 10:19:05 |
из какого выпадающего меню? |
LBra > 20-10-2016 10:04:16 |
из меню автозаполнения подсказок адресной строки pag77 пишет
то же самое, но для адресов, не помеченных звездочкой, т.е. адресов из истории |
pag77 > 20-10-2016 16:35:52 |
LBra пишет
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 |
LBra > 24-10-2016 11:01:06 |
Спасибо! |