После установки и вывода кнопки на панель в контекстном меню адресной строки появится пункт "Вставить и искать" Который вставляет содержимое из буфера обмена с последующим поиском в текущем поисковике

urlbar-paste-and-search

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3Eurlbar-paste-and-search%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%5B/*Initialization%20Code*/%0Adocument.getElementById%28%22urlbar%22%29.addEventListener%28%22popupshowing%22%2C%20function%28event%29%20%7B%0A%09const%20eltID%20%3D%20%22urlbar-paste-and-search%22%3B%0A%09var%20menupopup%20%3D%20event.originalTarget%3B%0A%09var%20refChild%20%3D%20menupopup.getElementsByAttribute%28%22cmd%22%2C%20%22cmd_paste%22%29%5B0%5D%3B%0A%09var%20canPaste%20%3D%20refChild.getAttribute%28%22disabled%22%29%20%3D%3D%20%22true%22%3B%0A%09var%20menuitem%20%3D%20document.getElementById%28eltID%29%3B%0A%09if%20%28%21menuitem%29%20%7B%0A%09%09var%20urlbarPasteAndSearch%20%3D%20function%28event%29%20%7B%0A%09%09%09goDoCommand%28%22cmd_paste%22%29%3B%0A%09%09%09var%20str%20%3D%20gURLBar.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20loadURI%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20false%2C%20false%29%3B%0A%09%09%09menupopup.hidePopup%28%29%3B%0A%09%09%7D%3B%0A%09%09menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%09%09menuitem.id%20%3D%20eltID%3B%0A%09%09menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0438%20%u0438%u0441%u043A%u0430%u0442%u044C%22%29%3B%0A%09%09menuitem.addEventListener%28%22command%22%2C%20urlbarPasteAndSearch%2C%20false%29%3B%0A%09%09menupopup.insertBefore%28menuitem%2C%20refChild.nextSibling%29%3B%0A%09%7D%0A%09menuitem.setAttribute%28%22disabled%22%2C%20canPaste.toString%28%29%29%3B%0A%7D%2C%20false%29%3B%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

Советую заменить:

Выделить код

Код:

document.getElementById("urlbar").addEventListener("popupshowing", function(event) {
......
}, false);

на

Выделить код

Код:

addEventListener("popupshowing", function(event) {
......
}, false, document.getElementById("urlbar") );

Иначе после редактирования кнопки или открытия настройки панелей обработчик будет дублироваться.

bunda1 пишет

Иначе после редактирования кнопки или открытия настройки панелей обработчик будет дублироваться.

У меня не дублируется :)

Я тоже проверил:
document.getElementById("urlbar").addEventListener("popupshowing", function(event) { alert('');
......