В адресную строку вставляется мой текст, за которым следует текущий урл. Ну и нажимается Энтер.
gURLBar.value = "мой текст" + content.document.location; gURLBar.focus(); var evt = document. createEvent ("KeyEvents"); evt.initKeyEvent("keypress", true, true, null, false, false, false, false, evt. DOM_VK_RETURN, 0 ); if ( document.activeElement.nodeName == "browser" ) gBrowser.contentDocument.activeElement.dispatchEvent(evt); else document. activeElement. dispatchEvent (evt);
Отсутствует
bunda1
ну ты накрутил!!
там нужно то всего одну строчку
А вот не работает этот код. Я получаю сообщение:
Формат адреса неверен
URL недействителен и не может быть загружен.
Адреса веб-сайтов обычно записываются в формате http://www.example.com/
Убедитесь, что вы используете в качестве разделителя прямую косую черту (т.е. /).
Отсутствует
Можно как-то написать такой код, чтобы на определённом сайте, точнее на
По идее все эти ссылки на картинки есть в буфере управляющего скрипта, т.к. переключение картинок (страниц одной главы) происходит даже,если нет физического соединения с сетью, вот только как их выдрать не представляю...
Отсутствует
rbfyec а вам для каких целей то? и что вы добавляете впереди?если вам для поиска используя кейворды то вместо кейворда пишите полный адрес запроса например если g - поиск в гугле то вместо loadURI ("g "+gURLBar.value)пишемloadURI ("http://www.google.com/search?q="+gURLBar.value)
Да, именно кейворды я и собирался подставлять
Ваш вариант с полным адресом работает. Но не со всеми ресурсами, с некоторыми даёт сбой.
А код, который предложил bunda1 работает с любыми сайтами. Безотказно, как часы!
В любом случае, спасибо большое за помощь!
Отсутствует
Прошу сильно не пинать, пишу на яве вообще первый раз, может что-то упустил, не могу врубится, почему кнопка срабатывает через раз?..
Может кто, что посоветует?
/*CODE*/ var doc = content.document.body.innerHTML ; gClipboard.clear() ; // --------------------------------------- var razdelit = '"fullimg":["' ; // Сносим первую часть страницы, по "fullimg":[" var array_of_strings = doc.split(razdelit) ; cut_string = array_of_strings[1] ; doc = cut_string ; // --------------------------------------- var razdelit = '",]' ; // Сносим вторую часть страницы, начиная от ",] var array_of_strings = doc.split(razdelit) ; cut_string = array_of_strings[0] ; doc = cut_string ; // --------------------------------------- var i ; var ending_str="" ; var razdelit = '","' ; // Описываем разделители var array_of_strings = doc.split(razdelit) ; // описываем массив ссылок разделённых razdelit // собирам окончательную строку из элементов массива // в конце каждой ссылки добавляем перенос строки -'\n' for (i=0; i < array_of_strings.length; i++) { ending_str = ending_str + array_of_strings[i] + '\n' ; } ; gClipboard.write(ending_str) ; alert("Ссылки скопированны в буфер обмена.");
Отсутствует
проставь алерты на каждом этапе для контроля переменных
Бред какой-то, напихал алертов на каждое действие, кнопка стала работать идеально... O_<"
Добавлено 18 апреля 2013 г. в 12:30
В общем фиг знает почему, но нормально работает такой вот код:
/*CODE*/ var doc = content.document.body.innerHTML ; gClipboard.clear() ; // --------------------------------------- var razdelit = '"fullimg":["' ; // Сносим первую часть страницы, по "fullimg":[" var array_of_strings = doc.split(razdelit) ; var cut_string = array_of_strings[1] ; var doc = cut_string ; // --------------------------------------- var razdelit = '",]' ; // Сносим вторую часть страницы, начиная от ",] var array_of_strings = doc.split(razdelit) ; var cut_string = array_of_strings[0] ; var doc = cut_string ; // --------------------------------------- var i ; var ending_str="" ; var razdelit = '","' ; // Описываем разделители var array_of_strings = doc.split(razdelit) ; // описываем массив ссылок разделённых razdelit alert("Ссылки скопированы в буфер обмена."); // собирам окончательную строку из элементов массива // в конце каждой ссылки добавляем перенос строки -'\n' for (i=0; i < array_of_strings.length; i++) { ending_str = ending_str + array_of_strings[i] + '\n' ; } ; gClipboard.write(ending_str) ; // alert("Ссылки скопированны в буфер обмена.");
Отредактировано Zaycoff (18-04-2013 12:30:07)
Отсутствует
Отсутствует
Прошу сильно не пинать
И меня тоже
/*CODE*/ var links = content.wrappedJSObject.data.fullimg.join("\r\n"); gClipboard.write(links); alert("Ссылки скопированны в буфер обмена.\nВот они:\n" + links);
const du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils); function vk(e) { var doc = e.target; if (doc.location.host != "vk.com") return; var br = du.getParentForNode(doc, true); var wn = br.webNavigation; wn.allowMetaRedirects = false; addEventListener("load", function onLoad() { removeEventListener("load", onLoad, true, br); wn.allowMetaRedirects = true; }, true, br); } addEventListener("DOMContentLoaded", vk, false, gBrowser);
Отсутствует
intl.accept_languages;ru, en-US, en
что-то я такого вообще не нахожу
Отсутствует
Dumby
Ваа!! Как просто... спасибо огромное!
И за вконтакт отдельная благодарность - очень полезная штука, если нужно только почитать его, а разрешать скрипты и логиниться не хочется
okkamas_knife
Проверил код кнопки на ESR 10.0.9 и 17.0.5 - глючит точно так же, ладно, фиг с ним, главное хоть так работает
Отсутствует
что-то я такого вообще не нахожу
pcxFirefox - лучшая сборка Лисы!
Отсутствует
adidharma
вот так работает, спасибо за подсказку.
Отредактировано Kiril__777 (18-04-2013 18:58:22)
Отсутствует
Это где такое?
P.S. Если вопрос был про редирект, то может в Инициализацию
скрытый текстВыделить кодКод:
const du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils); function vk(e) { var doc = e.target; if (doc.location.host != "vk.com") return; var br = du.getParentForNode(doc, true); var wn = br.webNavigation; wn.allowMetaRedirects = false; addEventListener("load", function onLoad() { removeEventListener("load", onLoad, true, br); wn.allowMetaRedirects = true; }, true, br); } addEventListener("DOMContentLoaded", vk, false, gBrowser);
Если это код положить в инициализацию новой кнопки, то при посещении вконтакта можно будет не включать скрипты и куки, часть функционала конечно отвалится, но посты и всякое такое читать будет можно, а мне больше и не нужно, а то дают ссылку на статью во вконтате, а ему ещё и скрипты с куками подавай... бизобразие какой-то
Отсутствует
Как бы одну кнопку поправить, чтобы работала в 21 и выше. Convert E4X не помогает.
Кнопка - Extensions Options Menu (открывает Дополнения и содержит меню со списком расширений, для быстрого доступа к настройкам, где её брал, уже не помню):
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%3EExtensions%20Options%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU4NzIwMkI5QkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU4NzIwMkJBQkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTg3MjAyQjdCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTg3MjAyQjhCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4v/lPcAAACe0lEQVR42nRTW0tUURQ++3IuHmecdCJzLDRqisaKoR4zlMDKKLEoiR4qIiLwB/QS/YN6CYSgiCBCaKDAIqJI6GKQGFEqhjUQqQk5w5hnZjq3vVtrPMY46YaPb6+111pn3Q6RUioVhwMMgApwAX8AnrLawQBloH03bzU0b935bN2GLbPIKKO+wu4faEU8MvD4aasvaVO4rn4KGWXUr5YADVIOAeoQfTeuTyeTyc+mGc4io7z0FtjxZV+ENEJN8R0px/YSCiWCq3qhKhSeU3Uz79qF6qK1sNZzbVMRkmo6H/8+OXoC/KzyhmlC4bGaaPQrIdQjlArGuU0p94luOoxpBSkE9EDwgjUfA3sdUAQIbCGWIBnXFjjXclzX51W9KguyBYGKyJphZnQz9Msww7M63DOZbG3Hoa7D4BcGMAxgd3a0fRgbfj7Qub91xvddGoxvOQhxmKpa7Qe7r4xNTF6LJ3bfxnGjsXf+7On7wKnei2ee+K6NZTkrgXMj50kWqo7UffF80oi7gsb83IVLPd1HjxiDr960QbPcwOG/Q6hCd21P5D5+Gq1PtGxLY2Y4hdrGTS0vmapZKtd+G6HINNf0/EoB7KIVnRgZTPU/eBg/dfLYMKjeYgZUrzKnjerIFKXMI4y7vutwIX1OCfMoVx1CiI8BoDycwBA4DwFnlqagEMbype6r2oLiufzq5d6f4+9fvEOWrqOhL/ZKSFHafsBcwKVNlItXqF4I2bA+ynqOdz0CuR8ZZdSX5r5oJytX2Y5vbs5DfWscu1iTTn+r39t+IHnn7j0NGWXU4zvaoX3lKjPgfYBYoMNfdwTwA7ARsKds/2cAr4OSSuevAAMAy+gvpYr6B6sAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.label%20%3D%20%22Extensions%22%3B%0Athis.tooltipText%20%3D%20this.label%3B%0A%0A/*%20*****%20BEGIN%20LICENSE%20BLOCK%20*****%0A%20*%20Version%3A%20MPL%201.1%0A%20*%0A%20*%20The%20contents%20of%20this%20file%20are%20subject%20to%20the%20Mozilla%20Public%20License%20Version%0A%20*%201.1%20%28the%20%22License%22%29%3B%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%0A%20*%20the%20License.%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%20*%20http%3A//www.mozilla.org/MPL/%0A%20*%0A%20*%20Software%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20basis%2C%0A%20*%20WITHOUT%20WARRANTY%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%20See%20the%20License%0A%20*%20for%20the%20specific%20language%20governing%20rights%20and%20limitations%20under%20the%0A%20*%20License.%0A%20*%0A%20*%20Original%20code%20is%20Extensions%20Options%20Menu%20for%20Custom%20Buttons%0A%20*%0A%20*%20The%20Initial%20Developer%20of%20the%20Original%20Code%20is%20LouCypher.%0A%20*%20Portions%20created%20by%20the%20Initial%20Developer%20are%20Copyright%20%28C%29%202011%0A%20*%20the%20Initial%20Developer.%20All%20Rights%20Reserved.%0A%20*%0A%20*%20Contributor%28s%29%3A%0A%20*%20%20LouCypher%20%3Cloucypher@mozillaca.com%3E%0A%20*%0A%20*%20*****%20END%20LICENSE%20BLOCK%20*****%20*/%0A%0Afunction%20%24%28aId%29%20%7B%0A%20%20return%20document.getElementById%28aId%29%3B%0A%7D%0A%0Afunction%20%24xml%28aXML%29%20%7B%0A%20%20return%20cbu.makeXML%28aXML%29%3B%0A%7D%0A%0Afunction%20sort%28aArray%29%20%7B%0A%20%20aArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20return%200%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.openDialog%20%3D%20function%28aURL%29%20%7B%0A%20%20openDialog%28aURL%2C%20%22%22%2C%20%22chrome%2C%20dialog%2C%20close%2C%20titlebar%2C%20toolbar%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scrollbars%2C%20minimizable%2C%20centerscreen%22%29%3B%0A%7D%0A%0Athis.setStatus%20%3D%20function%28aString%29%20%7B%0A%20%20document.getElementById%28%22statusbar-display%22%29.label%20%3D%20aString%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%20inspectExtensions%28aEvent%29%20%7B%0A%20%20if%20%28%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7C%7C%0A%20%20%20%20%20%20%28aEvent.button%20%21%3D%201%29%29%20return%3B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20inspectObject%28extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.addonsMgr%20%3D%20function%28aPopup%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20aAddons%5Bi%5D.toString%20%3D%20function%28%29%20%7B%20return%20this.name%3B%20%7D%0A%20%20%20%20%20%20if%20%28%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28aAddons%5Bi%5D.optionsURL%20%21%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20aAddons%5Bi%5D.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20aCallback%28aPopup%2C%20extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Afunction%20getExtensionObject%28aId%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.id%20%3D%3D%20aId%29%20%7B%0A%20%20%20%20%20%20%20%20aCallback%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20addItem%28aNode%2C%20aId%2C%20aLabel%2C%20aURL%2C%20aIcon%2C%20aHomePage%2C%20aDesc%29%20%7B%0A%20%20aNode.appendChild%28%24xml%28%3Cmenuitem%20xmlns%3D%7Bxulns%7D%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GUID%3D%7BaId%7D%20label%3D%7BaLabel%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image%3D%7BaIcon%7D%20homepage%3D%7BaHomePage%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20statustext%3D%7BaURL%7D%20tooltiptext%3D%7BaDesc%7D/%3E%29%29%3B%0A%7D%0A%0Avar%20popup%20%3D%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20context%3D%22cb-extensions-menu%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%22event.stopPropagation%28%29%3B%20this.parentNode.openDialog%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%22this.parentNode.setStatus%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%22this.parentNode.setStatus%28%27%27%29%3B%22/%3E%29%3B%0A%0Athis.populate%20%3D%20function%28aPopup%2C%20aExtensions%29%20%7B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20addItem%28aPopup%2C%20ext.id%2C%20ext.name%20+%20%22%20%22%20+%20ext.version%2C%20ext.optionsURL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.iconURL%20%3F%20ext.iconURL%20%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%20%3A%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ext.description%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.addonsMgr%28popup%2C%20this.populate%29%3B%0A%0Athis.appendChild%28popup%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%0A%0A//---------------------------------%0A%0Athis.copyId%20%3D%20function%28aId%29%20%7B%0A%20%20Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.%0A%20%20getService%28Ci.nsIClipboardHelper%29.copyString%28aId%29%3B%0A%7D%0A%0Athis.goHome%20%3D%20function%28aURL%29%20%7B%0A%20%20gBrowser.loadOneTab%28aURL%29%3B%0A%7D%0A%0Athis.inspect%20%3D%20function%28aId%29%20%7B%0A%20%20getExtensionObject%28aId%2C%20inspectObject%29%3B%0A%7D%0A%0Athis.explore%20%3D%20function%28aId%29%20%7B%0A%20%20var%20dirService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIProperties%29%3B%0A%20%20var%20dir%20%3D%20dirService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20dir.append%28%22extensions%22%29%3B%0A%20%20dir.append%28aId%29%3B%0A%20%20if%20%28%21dir.exists%28%29%29%20%7B%0A%20%20%20%20alert%28%22Directory%20%22%20+%20dir.path%20+%20%22%20doesn%27t%20exist%21%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%20%20//dir.append%28%22.xpi%22%29%3B%0A%20%20%20%20//Application.console.log%28dir.path%29%3B%0A%20%20%7D%0A%20%20var%20localFileInterface%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsILocalFile%29%3B%0A%20%20localFileInterface.initWithPath%28dir.path%29%3B%0A%20%20var%20iDirectory%20%3D%20localFileInterface%3B%0A%20%20try%20%7B%0A%20%20%20%20iDirectory.reveal%28%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20var%20uri%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIIOService%29.newFileURI%28iDirectory%29%3B%0A%20%20%20%20var%20protocolSvc%20%3D%20Cc%5B%22@mozilla.org/uriloader/external-protocol-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIExternalProtocolService%29%3B%0A%20%20%20%20protocolSvc.loadUrl%28uri%29%3B%0A%20%20%7D%0A%7D%0A%0Aif%20%28%24%28%22cb-extensions-menu%22%29%29%20%7B%0A%20%20%24%28%22cb-extensions-menu%22%29.parentNode.removeChild%28%24%28%22cb-extensions-menu%22%29%29%3B%0A%7D%0A%0Athis.checkForDOMI%20%3D%20function%28aEvent%29%20%7B%0A%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7B%0A%20%20%20%20aEvent.target.getElementsByTagName%28%22menuitem%22%29%5B2%5D.hidden%20%3D%20true%3B%0A%20%20%7D%0A%7D%0A%0Avar%20popupset%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20context%20%3D%20popupset.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20id%3D%22cb-extensions-menu%22%20onclick%3D%22event.stopPropagation%28%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onpopupshowing%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.checkForDOMI%28event%29%3B%22%7D%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Visit%20Home%20Page%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.goHome%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Copy%20GUID%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.copyId%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Inspect%20Extension%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.inspect%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Browse%20Install%20Directory%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.explore%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%29%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20url%20%3D%20%22chrome%3A//mozapps/content/extensions/extensions.xul%22%3B%0A%0Aif%20%28gBrowser.mCurrentTab.linkedBrowser.currentURI.spec%20%3D%3D%20%22about%3Ablank%22%29%20%7B%0A%20%20loadURI%28url%29%3B%0A%20%20return%3B%0A%7D%0A%0Avar%20tabs%20%3D%20gBrowser.mTabs%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20tabs.length%3B%20i++%29%20%7B%0A%20%20if%20%28tabs%5Bi%5D.linkedBrowser.currentURI.spec%20%3D%3D%20url%29%20%7B%0A%20%20%20%20gBrowser.selectedTab%20%3D%20tabs%5Bi%5D%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%7D%0A%0AgBrowser.loadOneTab%28url%2C%20null%2C%20null%2C%20null%2C%20false%29%3B%0A%0A%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
код
var url = "chrome://mozapps/content/extensions/extensions.xul"; if (gBrowser.mCurrentTab.linkedBrowser.currentURI.spec == "about:blank") { loadURI(url); return; } var tabs = gBrowser.mTabs; for (var i = 0; i < tabs.length; i++) { if (tabs[i].linkedBrowser.currentURI.spec == url) { gBrowser.selectedTab = tabs[i]; return; } } gBrowser.loadOneTab(url, null, null, null, false);
инициализация
this.label = "Extensions"; this.tooltipText = this.label; /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Original code is Extensions Options Menu for Custom Buttons * * The Initial Developer of the Original Code is LouCypher. * Portions created by the Initial Developer are Copyright (C) 2011 * the Initial Developer. All Rights Reserved. * * Contributor(s): * LouCypher <loucypher@mozillaca.com> * * ***** END LICENSE BLOCK ***** */ function $(aId) { return document.getElementById(aId); } function $xml(aXML) { return cbu.makeXML(aXML); } function sort(aArray) { aArray.sort(function(a, b) { a = a.name.toLowerCase(); b = b.name.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0; }) } this.openDialog = function(aURL) { openDialog(aURL, "", "chrome, dialog, close, titlebar, toolbar," + "scrollbars, minimizable, centerscreen"); } this.setStatus = function(aString) { document.getElementById("statusbar-display").label = aString; } this.onclick = function inspectExtensions(aEvent) { if ((typeof inspectObject != "function") || (aEvent.button != 1)) return; AddonManager.getAllAddons(function(aAddons) { var extensions = []; for (var i = 0; i < aAddons.length; i++) { if (aAddons[i].type == "extension") { extensions.push(aAddons[i]); } } sort(extensions); inspectObject(extensions); }) } this.addonsMgr = function(aPopup, aCallback) { AddonManager.getAllAddons(function(aAddons) { var extensions = []; for (var i = 0; i < aAddons.length; i++) { aAddons[i].toString = function() { return this.name; } if ((aAddons[i].type == "extension") && (aAddons[i].optionsURL != null) && aAddons[i].isActive) { extensions.push(aAddons[i]); } } sort(extensions); aCallback(aPopup, extensions); }) } function getExtensionObject(aId, aCallback) { AddonManager.getAllAddons(function(aAddons) { for (var i = 0; i < aAddons.length; i++) { if (aAddons[i].id == aId) { aCallback(aAddons[i]); return; } } }) } function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) { aNode.appendChild($xml(<menuitem xmlns={xulns} class="menuitem-iconic" GUID={aId} label={aLabel} image={aIcon} homepage={aHomePage} statustext={aURL} tooltiptext={aDesc}/>)); } var popup = $xml(<menupopup xmlns={xulns} context="cb-extensions-menu" oncommand="event.stopPropagation(); this.parentNode.openDialog(event.target.statusText);" onmouseover="this.parentNode.setStatus(event.target.statusText);" onmouseout="this.parentNode.setStatus('');"/>); this.populate = function(aPopup, aExtensions) { for (var i = 0; i < aExtensions.length; i++) { let ext = aExtensions[i]; addItem(aPopup, ext.id, ext.name + " " + ext.version, ext.optionsURL, (ext.iconURL ? ext.iconURL : "chrome://mozapps/skin/extensions/extensionGeneric-16.png"), (ext.homepageURL ? ext.homepageURL : ext.reviewURL.replace(/\/reviews/, "").toString()), ext.description); } } this.addonsMgr(popup, this.populate); this.appendChild(popup); this.type = "menu-button"; //--------------------------------- this.copyId = function(aId) { Cc["@mozilla.org/widget/clipboardhelper;1"]. getService(Ci.nsIClipboardHelper).copyString(aId); } this.goHome = function(aURL) { gBrowser.loadOneTab(aURL); } this.inspect = function(aId) { getExtensionObject(aId, inspectObject); } this.explore = function(aId) { var dirService = Cc["@mozilla.org/file/directory_service;1"]. getService(Ci.nsIProperties); var dir = dirService.get("ProfD", Ci.nsIFile); dir.append("extensions"); dir.append(aId); if (!dir.exists()) { alert("Directory " + dir.path + " doesn't exist!"); return; //dir.append(".xpi"); //Application.console.log(dir.path); } var localFileInterface = Cc["@mozilla.org/file/local;1"]. createInstance(Ci.nsILocalFile); localFileInterface.initWithPath(dir.path); var iDirectory = localFileInterface; try { iDirectory.reveal(); } catch(ex) { var uri = Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService).newFileURI(iDirectory); var protocolSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"]. getService(Ci.nsIExternalProtocolService); protocolSvc.loadUrl(uri); } } if ($("cb-extensions-menu")) { $("cb-extensions-menu").parentNode.removeChild($("cb-extensions-menu")); } this.checkForDOMI = function(aEvent) { if (typeof inspectObject != "function") { aEvent.target.getElementsByTagName("menuitem")[2].hidden = true; } } var popupset = document.getElementById("mainPopupSet"); var context = popupset.appendChild( $xml(<menupopup xmlns={xulns} id="cb-extensions-menu" onclick="event.stopPropagation();" onpopupshowing={"document.getElementById('" + this.id + "').checkForDOMI(event);"}> <menuitem label="Visit Home Page" onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('homepage'));"} onmouseout={"document.getElementById('" + this.id + "').setStatus('');"} oncommand={"document.getElementById('" + this.id + "').goHome(document.popupNode.getAttribute('homepage'));"}/> <menuitem label="Copy GUID" onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"} onmouseout={"document.getElementById('" + this.id + "').setStatus('');"} oncommand={"document.getElementById('" + this.id + "').copyId(document.popupNode.getAttribute('GUID'));"}/> <menuitem label="Inspect Extension" onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"} onmouseout={"document.getElementById('" + this.id + "').setStatus('');"} oncommand={"document.getElementById('" + this.id + "').inspect(document.popupNode.getAttribute('GUID'));"}/> <menuitem label="Browse Install Directory" onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"} onmouseout={"document.getElementById('" + this.id + "').setStatus('');"} oncommand={"document.getElementById('" + this.id + "').explore(document.popupNode.getAttribute('GUID'));"}/> </menupopup>));
pcxFirefox - лучшая сборка Лисы!
Отсутствует
где её брал, уже не помню
LouCypher <loucypher@mozillaca.com>
https://loucypher.googlecode.com/svn/custombuttons/xml/
=> https://loucypher.googlecode.com/svn/cu … 20Menu.xml
По виду должна работать.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
По виду должна работать.
Спасибо за ссылку, но чёто всё-равно работать не хочет. Раньше совсем меню не работало и кнопка "бледная" была, а теперь выдаёт такую фигню:
21
C ABP конфликтует, штоли?
Да, отключил Adblock - всё нормально стало. С ABP такая ошибка:
На 20-й версии тоже такую же ошибку выдаёт, а та кнопка, что я выше привёл, нормально работает.
Отредактировано adidharma (19-04-2013 12:05:54)
pcxFirefox - лучшая сборка Лисы!
Отсутствует
adidharma
Заменить
function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) { aNode.appendChild($xml('<menuitem xmlns="' + xulns + '" ' + 'class="menuitem-iconic" GUID="' + aId + '" ' + 'label="' + aLabel + '" image="' + aIcon + '" ' + 'homepage="' + htmlEntities(aHomePage) + '" ' + 'statustext="' + aURL + '" ' + 'tooltiptext="' + aDesc + '"/>')); }
на
function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) { aNode.appendChild($xml('<menuitem xmlns="' + xulns + '" ' + 'class="menuitem-iconic" GUID="' + htmlEntities(aId) + '" ' + 'label="' + htmlEntities(aLabel) + '" image="' + htmlEntities(aIcon) + '" ' + 'homepage="' + htmlEntities(aHomePage) + '" ' + 'statustext="' + htmlEntities(aURL) + '" ' + 'tooltiptext="' + htmlEntities(aDesc) + '"/>')); }
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
для фф 20 есть кнопка BBCode? та что имеется уже не работает
Отсутствует
voqabuhe работает, спасибо
Отсутствует