>Форум 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=57166 |
feas > 25-11-2012 15:51:38 |
Как сделать в кнопке TabScroll(Firefox) прокрутку не через 1 вкладку, а подряд. |
bunda1 > 25-11-2012 16:46:08 |
Как это подряд? |
feas > 25-11-2012 16:54:16 |
с 1-й на 2-ю с 2-й на 3-ю итд)) а не как в кнопке: с 1 на 3-ю с 3-й на 5-ю. (все значения на 1 ед прокрутки колеса) |
bunda1 > 25-11-2012 17:03:36 |
Мне кажется кнопка вообще не работает. |
voqabuhe > 25-11-2012 17:10:33 |
А что для этого кнопка нужна? У меня и так крутит. 25-11-2012 17:14:46 |
bunda1 > 25-11-2012 17:16:56 |
Да крутит, но кнопка вроде может крутить по кругу с последней на первую. |
feas > 25-11-2012 17:27:46 |
Ставим в рабочий режим, рестарт |
bunda1 > 25-11-2012 17:32:44 |
feas |
feas > 25-11-2012 17:37:52 |
bunda1 пишет
Чтобы не было проблемы с перезагрузкой. И может тогда сделать её только в инициализации, чтоб не пришлось нажимать каждый раз. |
bunda1 > 25-11-2012 17:39:48 |
Какие функции нужны от кнопки. 25-11-2012 17:40:48 feas пишет
|
feas > 25-11-2012 17:45:52 |
1 вариант. Чисто прокрутка колесом вкладок, без этой (в цитате) проблемы. Мне такая подойдет. feas пишет
2 вариант - для искушенных. ЛКМ - переход на самую левую. ПКМ - на самую правую. 25-11-2012 17:46:21 bunda1 пишет ок |
bunda1 > 25-11-2012 17:55:23 |
Прокрутка колесом вкладок у FF и так есть. feas пишет
По кругу что ли? |
feas > 25-11-2012 18:03:22 |
bunda1 пишет
имел ввиду на самую крайнюю. Тогда во 2-м варианте по кругу не будет нужна. |
bunda1 > 25-11-2012 18:09:54 |
Выделить код Код://Перейти на последнюю вкладку .... gBrowser.selectedTab = gBrowser.mTabs[gBrowser.mTabs.length - 1]; //Перейти на первую вкладку .... gBrowser.selectedTab = gBrowser.mTabContainer.childNodes[0];
А что с этим. |
feas > 25-11-2012 19:02:06 |
bunda1 пишет
незаметил.... |
bunda1 > 25-11-2012 20:33:47 |
Попробую, но не знаю что получится. |
adidharma > 23-12-2012 10:00:04 |
Чето в 23-12-2012 10:08:28 23-12-2012 12:20:08 voqabuhe пишет
|
voqabuhe > 23-12-2012 11:38:50 |
adidharma пишет
|
Babai555 > 26-12-2012 22:08:42 |
Если не в тему то удалите . |
feas > 26-12-2012 22:32:28 |
26-12-2012 22:34:14 |
iDev.Pi > 27-12-2012 01:20:29 |
bunda1 пишет
без дополнений? нет. |
iDev.Pi > 27-12-2012 10:51:30 |
okkamas_knife |
feas > 27-12-2012 12:08:15 |
У меня лежит код кнопки. Ввечером скину сюда |
bunda1 > 27-12-2012 21:00:21 |
iDev.Pi пишет
А вот и есть. Открой столько вкладок что бы появились кнопки прокрутки вкладок и покрути колёсиком мыши на вкладках. |
Babai555 > 27-12-2012 21:32:04 |
feas пишет
СПАСИБО!!! |
feas > 27-12-2012 22:33:54 |
bunda1 пишет
не очень удобно((( к сожалею кода у меня не осталось - стучите автору (см. начало темы) |
1fesFFFF > 05-01-2013 22:53:00 |
Кто может состряпать простенькую кнопку, чтобы при нажатии в новой вкладке |
bunda1 > 05-01-2013 23:12:31 |
1fesFFFF пишет
Создай кнопку с кодом: 05-01-2013 23:17:34 Пример: Выделить код Код: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%3Egoogle.ru%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%2C%2589PNG%250D%250A%251A%250A%2500%2500%2500%250DIHDR%2500%2500%2500%2510%2500%2500%2500%2510%2508%2506%2500%2500%2500%251F%25F3%25FFa%2500%2500%2500%2504sBIT%2508%2508%2508%2508%257C%2508d%2588%2500%2500%2500%2509pHYs%2500%2500%250E%25C3%2500%2500%250E%25C3%2501%25C7o%25A8d%2500%2500%2500%251CtEXtSoftware%2500Adobe%2520Fireworks%2520CS4%2506%25B2%25D3%25A0%2500%2500%2500%2516tEXtCreation%2520Time%250008%252F11%252F09%25D12_v%2500%2500%2501%25C6IDAT8%258Du%2592%25CDj%2513Q%2514%25C7%257F%29%25D9g%2593%2507%25B8%25FA%2500%25A2%250B%25B7%25E6%25AE%255C%25F9%2502YH%25B3%25E9%25C6%2597p%25B2u%25E7%25BEB%250A%258D%25D9%250A%25A2%251B%25A9%25DC%252C%25A4%2582%2510%25BA%25E9%25A6%28%258E%25AD%2514%25D2%250A%25C9%2540%25F0%2583%25CC%253D%257F%25173%2519%2526iz%25E00%25E7p%25CE%25FD%259D%258F9%2500%2592%25A4%25F05%25C8%25F5%2582%25F0A%25C9%2520H%2592%25B4%259C%252Bx%25AF%25D4%21qS%2501%25EDH%2502%2560p%2508%29%2580%2583%2524%2500y%2506%25CD%2516%259D%250Fo%25B8M%2504%25EC%25AC%259C%2590%25AE%2507%25FB%25C3%2593%25C2h%25B6%25C0%25F9%25AD%2580%251F%25AE%2506pn%253D%2598%25D6%2581%251B%25B1%25BA4W%2586w%251B%255D%25D4%251E%25A5%2501%25D2%250DH%25A7%25CCmh9%2517%25CD%2516%25E4%2519w%25F6NX1%255E%253F%25BBO%25F7a%258B%2583%2583%21I%25BA%25BF%250EH%25C1%25A7%25E0C%25A0%25E1z%2589%2592%259Eg%25B7%25D3%2501%2560%25F4%2525%25A3%25FB%2500h%25B6%25E8%258F%25FB%2524%21%25DC%253EB%250A%250D%25D7%250B%2522%250D8%25E7%25F1%251E%259E%25EF%2516%25A0%25F1%25B71%25FE%25D0o_%25E0%25DA%25A8%25BD%25A0%25E9%25EC%259F%25CCLf%25A6J%252C%25EA%25C9%25DB%253D1%25F0%253A%25BA%259C%28%25B7%25A8%25A3%25CB%2589%2518x%251D_%259C*%25B7%25A8%25E3%258BS%25E1%257C%25223%2513%25E5a%25D4U%2516%25E5%2507%2589r%258B%2502%258A%25EF%25C0o%25F8%25A1%25B8%253A%25CA%258B%255CI%25DD%258Fe%2581%25AD%2580%25FA%2583%259B%251D%25E4%25C54%25AA%2501%2512%25AFX%2503%25EC%2590ge%253EHB%25B2%25C2%25B6Hv%253E%252C%25FE5%258DjgO%25EF%253D%255E_%25A8%2596s%25A9%25AC%2520%2599%25FE%25CC%253EV%25FEr1U%2511%252F%253A43E%258B%2595%253F%25FF%25BBX%258D%2560%25D5%25CC%253F%253F%25DF%2595lY%2501%2525%25E9%25FB%25D5U%25D5%25F6J%25A3E%25BD%259A%25BC%2517%25F5D%25C9%2594%2506%25AF%25EC%257C%2524%2595%2595%25CE%25AE%25CF%25F4%25E8eW%25FB%2593w%259A.f%25CA-%25EA%25D7%25EFL%252F%253E%258D%25D4n%25B7%25F5%251FN2%25C0e-%2526g9%2500%2500%2500%2500IEND%25AEB%2560%2582%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BgetBrowser%28%29.selectedTab%20%3D%20getBrowser%28%29.addTab%28%22https%3A//www.google.ru%22%29%3B%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%u041E%u043D%u043B%u0430%u0439%u043D-%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u043C%20%u043E%u043A%u043D%u0435%0A%u0411%u0435%u0437%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%u0441%u044F%20%u0432%u0441%u044F%20%u0442%u0435%u043A%u0443%u0449%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%0A%0A%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
feas > 05-01-2013 23:49:16 |
Открыть url в новой вкладке без проверки Выделить код Код:var url="http://custombuttons.mozdev.org/"; getBrowser (). selectedTab = getBrowser (). addTab (url); Открыть url в новой вкладке если она не пустая, если пустая то в текущей Выделить код Код:var url="http://custombuttons.mozdev.org/"; if(getBrowser().currentURI.spec == "about:blank") loadURI (url); else{ getBrowser (). selectedTab = getBrowser (). addTab (url); }; Открыть url в новой вкладке если она не пустая, если пустая то в текущей вариант 2 для ФФ 4+ Выделить код Код:var url = "http://custombuttons.mozdev.org/"; if( ( gBrowser.currentURI.spec == "about:blank" || gBrowser.currentURI.spec == cbu.getPrefs("browser.newtab.url") ) && !gBrowser.selectedBrowser.webProgress.isLoadingDocument ) loadURI(url); else gBrowser.selectedTab = gBrowser.addTab(url); Открыть url в текущей вкладке
- короче уже вынес сюда 05-01-2013 23:56:42 |
Pony_Smile_Pack > 06-01-2013 00:02:45 |
Ну и ещё вариант.
|
bunda1 > 06-01-2013 00:35:58 |
feas пишет
Что изменить на вертикальную? |
feas > 06-01-2013 00:42:12 |
bunda1 пишет
картинку видишь? это то ли персональная панель, то ли элементы панели закладок. |
bunda1 > 06-01-2013 01:04:51 |
feas пишет
Вижу. Я сейчас изменил orient на vertikal используя DOM Inspector Plus и ничего. Вот так. |
Infocatcher > 06-01-2013 01:25:44 |
bunda1 пишет
|
bunda1 > 06-01-2013 01:32:17 |
Infocatcher пишет
|
feas > 06-01-2013 02:18:27 |
bunda1 пишет
Ещё как практичную))) 06-01-2013 02:27:52 |
bunda1 > 06-01-2013 02:29:26 |
feas |
feas > 06-01-2013 15:02:26 |
Infocatcher, bunda1 спасибо вам. Решил пока стилем сделать. |
Kamui > 06-01-2013 17:14:37 |
feas пишет
Какой-то неказистый стиль, может должно быть: |
feas > 06-01-2013 17:29:00 |
Kamui пишет
может. А на что влияет синтаксис "{}" |
Kamui > 06-01-2013 17:36:17 |
feas |
Pony_Smile_Pack > 09-01-2013 05:10:52 |
Похоже на 18 |
bunda1 > 09-01-2013 09:01:03 |
Pony_Smile_Pack пишет
Я исправлю. |
feas > 31-01-2013 22:47:53 |
Установил кнопку VT на |
bunda1 > 01-02-2013 19:23:36 |
feas |
feas > 02-02-2013 20:57:15 |
Может я тут накосячил: От версии CB независит. (хоть релиз хоть тот пре что выше) Внешне выглядит так... кнопки вытянуты в высоту, большинство не работает, но там где голый код без инициализации пашут без проблем. 02-02-2013 21:04:26 |
bunda1 > 03-02-2013 11:59:27 |
feas |
feas > 04-02-2013 00:57:22 |
bunda1 пишет
Подтверждаю - работает как прежде. |
sonyas75 > 11-02-2013 22:56:56 |
bunda1 извините, если не туда пишу |
bunda1 > 11-02-2013 23:07:39 |
sonyas75 |
sonyas75 > 11-02-2013 23:30:29 |
о! благодарствую. |
vom > 21-02-2013 08:07:14 |
Подскажите пожалуйста, максимально простой код для кнопки вкл/выкл навигационной панели. |
bunda1 > 21-02-2013 09:20:05 |
vom Выделить код Код:document.getElementById("nav-bar").collapsed = !document.getElementById("nav-bar").collapsed; |
vom > 21-02-2013 10:29:46 |
bunda1 |
Kamui > 21-02-2013 10:35:27 |
vom Выделить код Код:#page-proxy-favicon { opacity: .5 !important; } #urlbar:hover #page-proxy-favicon { opacity: 1 !important; } |
vom > 21-02-2013 10:44:45 |
Kamui |
fish08 > 13-03-2013 18:09:55 |
Подскажите как сделать чтобы кнопка Linkification всегда была активной? |
bunda1 > 13-03-2013 21:28:23 |
fish08 |
fish08 > 14-03-2013 13:42:25 |
bunda1 пишет
Иконку поменял но после перезагрузки страницы или браузера она опять не активна.. |
bunda1 > 14-03-2013 19:29:27 |
fish08 |
fish08 > 14-03-2013 19:46:04 |
bunda1 пишет
может не поняли друг друга. Мне надо чтобы кнопка всегда была нажатой. |
bunda1 > 14-03-2013 20:14:28 |
fish08 пишет
Значит тебе нужно что бы кнопка автоматически превращала на страницах текстовые ссылки в обычные. Ну это не так сразу не сделаешь, может просто установи Linkification :: Дополнения Firefox или http://userscripts.org/scripts/show/67744 |
fish08 > 14-03-2013 22:27:22 |
Ясно, поставил скрипт но кнопка все же лучше работает(поставлю ее если переделаете). Спасибо. |
feas > 01-04-2013 22:24:43 |
Можно вернуть к жизни эту кнопку? Master Edit Button №130 после Конвертирование старых кнопок с XML (E4X) 01-04-2013 22:48:21 |
bunda1 > 02-04-2013 20:38:36 |
feas 02-04-2013 20:39:14 feas пишет
Вот пример такой кнопки: Выделить код Код:// Настройка функций кликов мыши ................................................................ this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; // Создать меню ................................................................................. var array = [ "scripts 1", "scripts 2", "scripts qwerty", "scripts 44 55 66", "separator", "scripts some 1", "scriptssome 2", "scripts some 3" ]; var node = document.getElementById(this.id + "-menuPopup"); if ( node && node.parentNode ) node.parentNode.removeChild(node); // блокировать дублирование меню var menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup")); menuPopup.id = this.id + "-menuPopup"; array.forEach(function(str) { if ( str == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", str ); menuItem.addEventListener("command", insertOrCopyText, false); menuPopup.appendChild(menuItem); }); //this.type = "menu"; // Ставить текст в текстовое поле или скопировать из меню .......................................... function insertOrCopyText( text ) { var text = this.label; try { document.commandDispatcher.focusedElement.type; } catch(e) { gClipboard.write( text); return }; var cmd = "cmd_insertText"; var controller = document.commandDispatcher.getControllerForCommand(cmd); if ( controller && controller.isCommandEnabled(cmd) ) { var controller = controller.QueryInterface(Components.interfaces.nsICommandController); var params = Components.classes["@mozilla.org/embedcomp/command-params;1"].createInstance(Components.interfaces.nsICommandParams); params.setStringValue("state_data", text); controller.doCommandWithParams(cmd, params); } }; |
feas > 02-04-2013 20:54:18 |
bunda1 пишет
пока ПКМ не сделал, не догадался бы bunda1 пишет
спасиб, работает. (остальным: вставляйте в инициализацию) |
adidharma > 03-04-2013 12:41:44 |
|
Infocatcher > 03-04-2013 12:46:49 |
adidharma |
adidharma > 03-04-2013 13:04:28 |
Infocatcher |
Infocatcher > 03-04-2013 13:27:30 |
adidharma пишет
Там эта настройка уже удалена, как и E4X, который она включала. |
adidharma > 03-04-2013 13:57:34 |
Infocatcher пишет
И, больше ничего не сделать, для 21 и выше? |
Infocatcher > 03-04-2013 14:11:09 |
adidharma пишет
Кроме как переписать неработающий код без использования E4X? Ничего. |
adidharma > 03-04-2013 14:45:05 |
Infocatcher пишет
Спасибо. |
Pony_Smile_Pack > 03-04-2013 15:03:21 |
adidharma пишет
И работают даже после перезапуска? |
adidharma > 03-04-2013 15:16:33 |
Pony_Smile_Pack пишет
Да. |
Inko7 > 03-04-2013 15:26:11 |
Infocatcher adidharma пишет
Аналогично! Присоединяюсь с благодарностям! |
Infocatcher > 03-04-2013 15:43:45 |
Inko7 пишет
Все верно. Причем при javascript.options.xml.chrome = false редактировать кнопки можно только в экспериментальной версии CB, иначе потом чинить придется. |
oopsididagainster > 04-04-2013 21:26:55 |
Просьба. |
VORON > 05-04-2013 10:17:32 |
Здравствуйте. |
bunda1 > 05-04-2013 18:58:18 |
VORON пишет
Расстояние от курсора и длительность нахождения курсора рядом с вертикальной панелью при котором она появляется или сворачивается можно изменить в начале кода инициализации в кнопке изменяя эти константы: showDelay, distanceShow, distanceHide. |
VORON > 05-04-2013 19:08:58 |
bunda1 |
bunda1 > 05-04-2013 19:14:58 |
VORON пишет
Так не должно быть, ты наверно положил код из вкладки Код в вкладку Инициализация. 05-04-2013 19:16:47 05-04-2013 19:35:26 oopsididagainster пишет
Выделить код Код: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%3EUser-agent%20change%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAALi4uMjIyNDQ0Pj4+MC8vCAUFAgEBLxYWLxAQMhYWMhAQNRYWBAEBNRAQLwgIMggIORYWNQgIORAQOQgIPBgYPAoKPRAQPQcILwICMgICNQICOQICPAEBPgIBP8AAP8oKP9gYPQQCPQoHPRgVPRAKNQgCOQgCPQgCNRAKORAKPRYQLwgCMggCNRYQLxAKMhAKORYQMhYQLxYQPRYKPRADORYKMBAFNRADORADNRYKMhYKLxYKPRYDMBABNRYFORYDMBYFNRYBMBYBCAUBNDQyCAkDCA0BCA0FCBEDCBUDAgUBCB0BCBkDCCEDCCUDCB0FCCkDCC0DCDECCDUCCDkCCD0CCj0HBD0CCDEICDUICDkICjwKBz0IAi0DAjECAjUCAjkCAj0BADwBAD/ACj/KCCUJCC0JAhkDAh0DAiEDAiUDAikDAD4CCB0JAhEDAhUDAT0ECBUJCCkLAg0DAjUIAjkIAj0ICCELCC0NAjEIAgkDCBkLCCUNCD0RCA0JCDURAi0LCDkTAikLCB0NCC0RAiULCD0VCDETCDUVAiELAjkTAj0TCD0ZCBELCCkTCC0VAh0LAjUTCCUTCDUZAjETCBUNCDkbAhkLCD0dAi0TAj0ZAjkZCB0RCCETAikTBD0dAD4cCC0ZCDEbCDUdAhULAj0dAD/eAiUTAjUbAjkdADwdLjAvMjQzLzMxAAIBAjEbCC0dAiETCCUZCCkbAi0bAhELCB0VAh0TAikbCBkTCCUdAiUbCCEbAhkTAiEbCB0ZAg0LCBUTAhUTAh0bCA0NAgUFCB0dAhkbCBkbAhETCBETCBUZAgkLAhUbAg0TCBUdAhEbCA0RCBEbAg0bAgkTCA0VCAkLAgULCA0ZAgkbCA0dAgUTAgUbCAkTCAkbLi4wMjI0Ly8zAAACAgEbAgETAgELCAUdCAUZCAUTAgEFCAEbCAUNCAETCAELCAUJNDIzCAEDLxAWMhAWNRAWORAWPRAWLwIIMgIINQIIOQIIPQIIPQEEPRUWPgACCwAAAAAEAAQAAAIhwAJCBxIsOBABAIRmFlohmDDhAsVMjRThkAZVAcjlinjZiJFgWYkIkwocSHIkAjEkfR4cqErAghSTvwjMIRNmzEZ5nxo81+ImC8FkkNgsyZOogd/fvggEMNSDx6YwiTwM4QIozdvxox51egHqyJwhkVgYKDUr1pDeBgpUCqBD//+fYhqsK7dgAA7%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%22reset%22%29%3B%0A%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%0Athis.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAAHh4eJiYmLi4uMjIyNDQ0Pj4+MC8vKCYmJiMjHBgYJB0dKCIiJhgYCAUFKxwcHRAQAgEBKxYWJRAQLxYWKBAQKxAQDgUFMxwcHQoKLxAQMxYWIQoKNhwcJQoKMxAQBAEBFAUFKwoKNhYWLwoKNhAQKAgIMwoKNgoKCAEBDgEBFAEBKAoJKAwKNhgWNhYUIxkYIRIQLx4cJhgWNhAKLxAKNhYQMxAKMxYQKxAKNhwWKCQjJhoXLxYQMxwWKBAKFAUBKxYQJRAKFg0KLxwWIRAKFAkFNhYKHhkXKxwWMxYKDgUBHRAKLxYKNhwQHBgWEw0KMxwQJh0YKxYKLxwQNhwKFAkBKxwQDgkFMxwKIx0YLxwKFA0FKxwKCAUBHBoXDgkBFA0BJyYjDg0KDg0FDg0BHh4cNDQyHR0YCAkBCAkFCA0BCA0FJCcjAgUBAgkBAg0BIigiFhwWCg0KFh4XDR0QIiYjAg0FCh0QIigkFhwYFB0XCB0PBh4OBhwPBh4QAgkFLjAvMjQzLzMxER0XBw0KBx0SAAIBDR0WCB0WAg0KIycmHB0dAgUFAgkKAg0QCA0QAg0WCAkKAgkQCA0WAgUKAgkWAgUQAgUWCAkQCAkWIyMkLi4wMjI0Ly8zAAACAgEQAgEWDg0WAgEKCAUWAgEFCAUQDg0QCAEWBwUKDgkWCAEQDgUWDgEWEw0WDgkQCAEKDgUQFAkWDgEQFAUWFAEWHRkdFg0WCgUKHQocHRAcFAEQIQocJyMmFAUQIRAcDgEKJQocFAkQHQoWKAocJRAcCAEFDgUKKwocHhwdNDIzKBAcIQoWLwocHRAWFAEKFA0QKxAcJQoWMwocNgocLxAcKAoWJBkdKwoWKCIkIRAWMxAcFAUKHQoQLwoWNhAcKxYcJRAWMwoWDgEFNgoWHRkaLxYcKBAWIQoQKxAWJQoQDgkKLxAWMxYcKAoQFAEFMxAWKwoQNhYcLwoQNhAWMwoQNgoQKAkMJhkaFAkKNhUYIQ8QLxscKAgKNhQVCwAAAAAEAAQAAAIpgANCBxIsOBACQIl+Fnoh6CAg3L8KOzTZ2EdA3X2HFwooY5Hjwv7XDQwQKFETwklVFwoUIBEhCkX5qkokBPDQQYkSBi0kqKBQUnyCc2nkyEiRCwN9OgxoodOnCmXChTqVEK+g0RH4BM4ocWIFmATDnKaj8fUfD2EhkurUyePZQJ7hGsx4cULtBL+EUUwsAXOFmjZ9mgBU+CIgSMSgx2B0qBAqI4NBAQAOw%3D%3D%27%3B%0A%0A%0Avar%20%u043C%u0435%u043D%u044E%20%3D%0A%27%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%5Cn%5C%0A%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%28event%29%22%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22reset%22%20label%3D%22Default%20User-Agent%22/%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuseparator/%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%205.1%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/3.6.15%20YB/3.5.1%22%20label%3D%22FF%203.6.15+yandexbar%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%205.1%3B%20ru%3B%20rv%3A1.9.1.4%29%20Gecko/20091016%20Firefox/1.5.4%22%20label%3D%22firefox%201.5.4%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/4.76C-SGI%20%5Bru%5D%20%28X11%3B%20I%3B%20IRIX64%206.5%20IP30%29%22%20label%3D%22Mozilla%20SGI%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/4.0%20%28compatible%3B%20MSIE%206.0%3B%20Windows%20NT%205.1%3B%20SV1%29%22%20label%3D%22IE-6%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Googlebot/2.1%20%28+http%3A//www.google.com/bot.html%29%22%20label%3D%22Googlebot%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22iCab/3.0.2%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%29%22%20label%3D%22iCab/Mac%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20Linux%20x86_64%3B%20rv%3A2.0b6pre%29%20Gecko/20100401%20Firefox/3.6.3%22%20label%3D%22Linux%20x86_64%3B%20rv%3A2.0b6pre%29%20Gecko/20100401%20Firefox/3.6.3%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22AmigaVoyager/3.2%20%28AmigaOS/MC680x0%29%22%20label%3D%22AmigaVoyager%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20en-US%3B%20rv%3A1.9.1.3%29%20Gecko/20090914%20Slackware/13.0_stable%20Firefox/3.5.3%22%20label%3D%22Slackware%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%20X%2010.4%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/3.6.3%22%20label%3D%22Firefox/3.6.3%20Mac%20OS%20X%2010.4%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NCSA%20Mosaic/1.0%20%28X11%3BSunOS%204.1.4%20sun4m%29%22%20label%3D%22NCSA%20Mosaic/1.0%20%28X11%3BSunOS%204.1.4%20sun4m%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NetSurf/2.0%20%28RISC%20OS%3B%20armv5l%29%22%20label%3D%22NetSurf/2.0%20%28RISC%20OS%3B%20armv5l%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/1.10%20%5Ben%5D%20%28Compatible%3B%20RISC%20OS%203.70%3B%20Oregano%201.10%29%22%20label%3D%22Mozilla/1.10%20%5Ben%5D%20%28Compatible%3B%20RISC%20OS%203.70%3B%20Oregano%201.10%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28BeOS%3B%20U%3B%20Haiku%20BePC%3B%20en-US%3B%20rv%3A1.8.1.10pre%29%20Gecko/20080112%22%20label%3D%22Mozilla/5.0%20%28BeOS%3B%20U%3B%20Haiku%20BePC%3B%20en-US%3B%20rv%3A1.8.1.10pre%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28OS/2%3B%20U%3B%20Warp%204.5%3B%20en-US%3B%20rv%3A1.8.1.3pre%29%20Gecko/20070307%22%20label%3D%22Mozilla/5.0%20%28OS/2%3B%20U%3B%20Warp%204.5%3B%20en-US%3B%20rv%3A1.8.1.3pre%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22%20label%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Links%20%286.9%3B%20Unix%206.9-astral%20sparc%3B%2080x25%29%22%20label%3D%22Links%20%286.9%3B%20Unix%206.9-astral%20sparc%3B%2080x25%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NCSA_Mosaic/2.0%20%28Windows%203.1%29%22%20label%3D%22NCSA_Mosaic/2.0%20%28Windows%203.1%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%206.1%3B%20en-US%29%20AppleWebKit/532.9%20%28KHTML%2C%20like%20Gecko%29%20Chrome/5.0.307.0%20Safari/532.9%22%20label%3D%22Chrome/5.0.307.0%22/%3E%5Cn%5C%0A%3C/menupopup%3E%27%3B%0A%0A%0A%u043C%u0435%u043D%u044E%20%3D%20e4xConv_parseXULFromString%20%28%u043C%u0435%u043D%u044E%29%3B%0A%u043C%u0435%u043D%u044E.%20childNodes%20%5B0%5D.%20setAttribute%20%28%22checked%22%2C%20%22true%22%29%3B%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20appendChild%20%28%u043C%u0435%u043D%u044E%29%3B%0Athis.%20%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20function%20%28%u0441%u043E%u0431%u044B%u0442%u0438%u0435%29%0A%7B%0A%20%20%20%20var%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20%u0441%u043E%u0431%u044B%u0442%u0438%u0435.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20%20%20%20var%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Aif%20%28state%3D%3D%22reset%22%29%20%7B%20%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%20%0Athis.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAAHh4eJiYmLi4uMjIyNDQ0Pj4+MC8vKCYmJiMjHBgYJB0dKCIiJhgYCAUFKxwcHRAQAgEBKxYWJRAQLxYWKBAQKxAQDgUFMxwcHQoKLxAQMxYWIQoKNhwcJQoKMxAQBAEBFAUFKwoKNhYWLwoKNhAQKAgIMwoKNgoKCAEBDgEBFAEBKAoJKAwKNhgWNhYUIxkYIRIQLx4cJhgWNhAKLxAKNhYQMxAKMxYQKxAKNhwWKCQjJhoXLxYQMxwWKBAKFAUBKxYQJRAKFg0KLxwWIRAKFAkFNhYKHhkXKxwWMxYKDgUBHRAKLxYKNhwQHBgWEw0KMxwQJh0YKxYKLxwQNhwKFAkBKxwQDgkFMxwKIx0YLxwKFA0FKxwKCAUBHBoXDgkBFA0BJyYjDg0KDg0FDg0BHh4cNDQyHR0YCAkBCAkFCA0BCA0FJCcjAgUBAgkBAg0BIigiFhwWCg0KFh4XDR0QIiYjAg0FCh0QIigkFhwYFB0XCB0PBh4OBhwPBh4QAgkFLjAvMjQzLzMxER0XBw0KBx0SAAIBDR0WCB0WAg0KIycmHB0dAgUFAgkKAg0QCA0QAg0WCAkKAgkQCA0WAgUKAgkWAgUQAgUWCAkQCAkWIyMkLi4wMjI0Ly8zAAACAgEQAgEWDg0WAgEKCAUWAgEFCAUQDg0QCAEWBwUKDgkWCAEQDgUWDgEWEw0WDgkQCAEKDgUQFAkWDgEQFAUWFAEWHRkdFg0WCgUKHQocHRAcFAEQIQocJyMmFAUQIRAcDgEKJQocFAkQHQoWKAocJRAcCAEFDgUKKwocHhwdNDIzKBAcIQoWLwocHRAWFAEKFA0QKxAcJQoWMwocNgocLxAcKAoWJBkdKwoWKCIkIRAWMxAcFAUKHQoQLwoWNhAcKxYcJRAWMwoWDgEFNgoWHRkaLxYcKBAWIQoQKxAWJQoQDgkKLxAWMxYcKAoQFAEFMxAWKwoQNhYcLwoQNhAWMwoQNgoQKAkMJhkaFAkKNhUYIQ8QLxscKAgKNhQVCwAAAAAEAAQAAAIpgANCBxIsOBACQIl+Fnoh6CAg3L8KOzTZ2EdA3X2HFwooY5Hjwv7XDQwQKFETwklVFwoUIBEhCkX5qkokBPDQQYkSBi0kqKBQUnyCc2nkyEiRCwN9OgxoodOnCmXChTqVEK+g0RH4BM4ocWIFmATDnKaj8fUfD2EhkurUyePZQJ7hGsx4cULtBL+EUUwsAXOFmjZ9mgBU+CIgSMSgx2B0qBAqI4NBAQAOw%3D%3D%27%3B%0A%0A%20%7D%0A%20else%20%7B%20this.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAALi4uMjIyNDQ0Pj4+MC8vCAUFAgEBLxYWLxAQMhYWMhAQNRYWBAEBNRAQLwgIMggIORYWNQgIORAQOQgIPBgYPAoKPRAQPQcILwICMgICNQICOQICPAEBPgIBP8AAP8oKP9gYPQQCPQoHPRgVPRAKNQgCOQgCPQgCNRAKORAKPRYQLwgCMggCNRYQLxAKMhAKORYQMhYQLxYQPRYKPRADORYKMBAFNRADORADNRYKMhYKLxYKPRYDMBABNRYFORYDMBYFNRYBMBYBCAUBNDQyCAkDCA0BCA0FCBEDCBUDAgUBCB0BCBkDCCEDCCUDCB0FCCkDCC0DCDECCDUCCDkCCD0CCj0HBD0CCDEICDUICDkICjwKBz0IAi0DAjECAjUCAjkCAj0BADwBAD/ACj/KCCUJCC0JAhkDAh0DAiEDAiUDAikDAD4CCB0JAhEDAhUDAT0ECBUJCCkLAg0DAjUIAjkIAj0ICCELCC0NAjEIAgkDCBkLCCUNCD0RCA0JCDURAi0LCDkTAikLCB0NCC0RAiULCD0VCDETCDUVAiELAjkTAj0TCD0ZCBELCCkTCC0VAh0LAjUTCCUTCDUZAjETCBUNCDkbAhkLCD0dAi0TAj0ZAjkZCB0RCCETAikTBD0dAD4cCC0ZCDEbCDUdAhULAj0dAD/eAiUTAjUbAjkdADwdLjAvMjQzLzMxAAIBAjEbCC0dAiETCCUZCCkbAi0bAhELCB0VAh0TAikbCBkTCCUdAiUbCCEbAhkTAiEbCB0ZAg0LCBUTAhUTAh0bCA0NAgUFCB0dAhkbCBkbAhETCBETCBUZAgkLAhUbAg0TCBUdAhEbCA0RCBEbAg0bAgkTCA0VCAkLAgULCA0ZAgkbCA0dAgUTAgUbCAkTCAkbLi4wMjI0Ly8zAAACAgEbAgETAgELCAUdCAUZCAUTAgEFCAEbCAUNCAETCAELCAUJNDIzCAEDLxAWMhAWNRAWORAWPRAWLwIIMgIINQIIOQIIPQIIPQEEPRUWPgACCwAAAAAEAAQAAAIhwAJCBxIsOBABAIRmFlohmDDhAsVMjRThkAZVAcjlinjZiJFgWYkIkwocSHIkAjEkfR4cqErAghSTvwjMIRNmzEZ5nxo81+ImC8FkkNgsyZOogd/fvggEMNSDx6YwiTwM4QIozdvxox51egHqyJwhkVgYKDUr1pDeBgpUCqBD//+fYhqsK7dgAA7%27%3B%0A%0A%20%7D%3B%0A%7D%0A%20%20%0A%0Afunction%20e4xConv_parseXULFromString%28xul%29%20%7B%0A%09xul%20%3D%20xul.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09return%20new%20DOMParser%28%29.parseFromString%28xul%2C%20%22application/xml%22%29.documentElement%3B%0A%7D%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 |
VORON > 05-04-2013 22:16:31 |
bunda1 |
humnmind > 07-04-2013 11:49:10 |
У кого-нибудь кнопка Plugins Permissions работает? |
Infocatcher > 07-04-2013 17:12:05 |
humnmind на – будет частично работать для Flash. 07-04-2013 17:18:10 Infocatcher пишет
Это, впрочем, легко подправить, но вот для контроля всех плагинов придется делать по кнопке на каждый... 07-04-2013 17:24:40 Infocatcher пишет
Это все видно в %профиль%/permissions.sqlite – таблица moz_hosts, столбец type. |
Infocatcher > 07-04-2013 17:46:40 |
А в SeaMonkey 2.17 не работает ни "plugins", ни "plugin:flash", ни встроенная переключалка (переключает, но не сохраняет). Ну, вообще молодцы, чё. 07-04-2013 18:15:52 |
humnmind > 07-04-2013 18:52:37 |
Infocatcher |
Infocatcher > 07-04-2013 19:14:31 |
humnmind |
humnmind > 07-04-2013 19:17:41 |
Infocatcher |
Infocatcher > 07-04-2013 19:47:54 |
humnmind пишет
07-04-2013 19:49:40 |
feas > 09-04-2013 21:22:49 |
bunda1 пишет
Возникла проблема - это для символов и даже ссылок, но вот мне нужно такой формат в буфере, и в меню желательно отдельное название: Выделить код Код:jQuery(function(){ jQuery.fn.getTitle = function() { // Copy the title of every IMG tag and add it to its parent A so that fancybox can show titles var arr = jQuery("a.fancybox"); jQuery.each(arr, function() { var title = jQuery(this).children("img").attr("title"); jQuery(this).attr('title',title); }) } // Supported file extensions var thumbnails = jQuery("a:has(img)").not(".nolightbox").filter( function() { return /\.(jpe?g|png|gif|bmp)$/i.test(jQuery(this).attr('href')) }); thumbnails.addClass("fancybox").attr("rel","fancybox").getTitle(); jQuery("a.fancybox").fancybox({ 'cyclic': true, 'autoScale': true, 'padding': 10, 'opacity': true, 'speedIn': 500, 'speedOut': 500, 'changeSpeed': 300, 'overlayShow': true, 'overlayOpacity': "0.3", 'overlayColor': "#666666", 'titleShow': true, 'titlePosition': 'inside', 'enableEscapeButton': true, 'showCloseButton': true, 'showNavArrows': true, 'hideOnOverlayClick': true, 'hideOnContentClick': false, 'width': 560, 'height': 340, 'transitionIn': "elastic", 'transitionOut': "elastic", 'centerOnScroll': true }); }) </script> |
bunda1 > 09-04-2013 21:56:35 |
feas пишет
Сделал по простому, твой большой код в вкладке Справка: Выделить код Код: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%3Eeksperimental%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20................................................................%20%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20.................................................................................%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%22scripts%201%22%2C%0A%20%20%20%20%22scripts%202%22%2C%0A%20%20%20%20%22scripts%20qwerty%22%2C%0A%20%20%20%20%22scripts%2044%2055%2066%22%2C%20%20%20%20%0A%20%20%20%20%20%20%20%22separator%22%2C%0A%20%20%20%20%22scripts%20some%201%22%2C%0A%20%20%20%20%22scriptssome%202%22%2C%0A%20%20%20%20%22scripts%20some%203%22%2C%0A%20%20%20%20this.Help%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%0Aarray.forEach%28function%28str%29%20%7B%0A%20%20%20%20%20if%20%28%20str%20%3D%3D%20%22separator%22%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%20%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20str.substring%28%200%2C%2020%20%29%20%29%3B%20%0A%20%20%20%20%20menuItem.setAttribute%28%22value%22%2C%20str%20%29%3B%20%0A%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertOrCopyText%2C%20false%29%3B%20%0A%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%7D%29%3B%0A//this.type%20%3D%20%22menu%22%3B%20%0A%0A%0A%0A//%20%u0421%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%20%u043C%u0435%u043D%u044E%20..........................................%0Afunction%20insertOrCopyText%28%29%20%7B%20%0A%0A%20%20%20var%20text%20%3D%20this.value%3B%0A%20%20%20%0A%20%20%20try%20%7B%20document.commandDispatcher.focusedElement.type%3B%20%7D%0A%20%20%20catch%28e%29%20%7B%20gClipboard.write%28%20text%29%3B%20return%20%7D%3B%0A%20%20%20%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%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%5BjQuery%28function%28%29%7B%0A%0AjQuery.fn.getTitle%20%3D%20function%28%29%20%7B%20//%20Copy%20the%20title%20of%20every%20IMG%20tag%20and%20add%20it%20to%20its%20parent%20A%20so%20that%20fancybox%20can%20show%20titles%0A%20%20%20%20var%20arr%20%3D%20jQuery%28%22a.fancybox%22%29%3B%0A%20%20%20%20jQuery.each%28arr%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20title%20%3D%20jQuery%28this%29.children%28%22img%22%29.attr%28%22title%22%29%3B%0A%20%20%20%20%20%20%20%20jQuery%28this%29.attr%28%27title%27%2Ctitle%29%3B%0A%20%20%20%20%7D%29%0A%7D%0A%0A//%20Supported%20file%20extensions%0Avar%20thumbnails%20%3D%20jQuery%28%22a%3Ahas%28img%29%22%29.not%28%22.nolightbox%22%29.filter%28%20function%28%29%20%7B%20return%20/%5C.%28jpe%3Fg%7Cpng%7Cgif%7Cbmp%29%24/i.test%28jQuery%28this%29.attr%28%27href%27%29%29%20%7D%29%3B%0A%0Athumbnails.addClass%28%22fancybox%22%29.attr%28%22rel%22%2C%22fancybox%22%29.getTitle%28%29%3B%0AjQuery%28%22a.fancybox%22%29.fancybox%28%7B%0A%20%20%20%20%27cyclic%27%3A%20true%2C%0A%20%20%20%20%27autoScale%27%3A%20true%2C%0A%20%20%20%20%27padding%27%3A%2010%2C%0A%20%20%20%20%27opacity%27%3A%20true%2C%0A%20%20%20%20%27speedIn%27%3A%20500%2C%0A%20%20%20%20%27speedOut%27%3A%20500%2C%0A%20%20%20%20%27changeSpeed%27%3A%20300%2C%0A%20%20%20%20%27overlayShow%27%3A%20true%2C%0A%20%20%20%20%27overlayOpacity%27%3A%20%220.3%22%2C%0A%20%20%20%20%27overlayColor%27%3A%20%22%23666666%22%2C%0A%20%20%20%20%27titleShow%27%3A%20true%2C%0A%20%20%20%20%27titlePosition%27%3A%20%27inside%27%2C%0A%20%20%20%20%27enableEscapeButton%27%3A%20true%2C%0A%20%20%20%20%27showCloseButton%27%3A%20true%2C%0A%20%20%20%20%27showNavArrows%27%3A%20true%2C%0A%20%20%20%20%27hideOnOverlayClick%27%3A%20true%2C%0A%20%20%20%20%27hideOnContentClick%27%3A%20false%2C%0A%20%20%20%20%27width%27%3A%20560%2C%0A%20%20%20%20%27height%27%3A%20340%2C%0A%20%20%20%20%27transitionIn%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27transitionOut%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27centerOnScroll%27%3A%20true%0A%7D%29%3B%0A%0A%0A%7D%29%0A%3C/script%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E 09-04-2013 22:13:15 Выделить код Код: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%3Eeksperimental%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20................................%0Avar%20section%20%3D%20%22%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%22%3B%0Asection%20%3D%20%22%5Cn%22%20+%20section%20+%20%22%5Cn%22%3B%0Avar%20item%20%3D%20this.Help.split%28%20section%20%29%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%22scripts%201%22%2C%0A%20%20%20%20%22scripts%202%22%2C%0A%20%20%20%20%22scripts%20qwerty%22%2C%0A%20%20%20%20%22scripts%2044%2055%2066%22%2C%20%20%20%20%0A%20%20%20%20%22separator%22%2C%0A%20%20%20%20%22scripts%20some%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0Avar%20i%20%3D%200%3B%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20%20if%20%28%20m%20%3D%3D%20%22separator%22%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%20%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20m%20%29%3B%20%0A%20%20%20%20%20menuItem.setAttribute%28%22value%22%2C%20i++%20%29%3B%20%0A%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertOrCopyText%2C%20false%29%3B%20%0A%20%20%20%20%20menuPopup.appendChild%28%20menuItem%20%29%3B%0A%7D%29%3B%0A//this.type%20%3D%20%22menu%22%3B%20%0A%0A%0A%0A//%20%u0421%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%20%u043C%u0435%u043D%u044E%20%20................................%0Afunction%20insertOrCopyText%28%29%20%7B%20%0A%0A%20%20%20var%20text%20%3D%20item%5Bthis.value%5D%3B%0A%20%20%20%0A%20%20%20try%20%7B%20document.commandDispatcher.focusedElement.type%3B%20%7D%0A%20%20%20catch%28e%29%20%7B%20gClipboard.write%28%20text%29%3B%20return%20%7D%3B%0A%20%20%20%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%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%5BtoggleImage%28%29%3B%0Avar%20ps%20%3D%20Cc%5B%22@mozilla.org/preferences-service%3B1%22%5D.getService%28Ci.nsIPrefBranch%29.QueryInterface%28Ci.nsIPrefBranch2%29%3B%0Aps.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%20%20%20%20%20%20if%20%28%20%21%21gFindBar._findField.style.color%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20gFindBar.getElement%28%27highlight%27%29.setAttribute%28%22checked%22%2C%20%22true%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20gFindBar._findField.removeAttribute%28%22style%22%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%20%20var%20mItem%20%3D%20e.target%3B%0A%20%20%20var%20value%20%3D%20mItem.getAttribute%28%22value%22%29%3B%0A%20%20%20var%20label%20%3D%20mItem.getAttribute%28%22label%22%29%3B%0A%20%20%20var%20image%20%3D%20mItem.getAttribute%28%22image%22%29%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%7B%20label%3A%20%27%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27FindBar.Highlight%27%2C%20func%3A%20toggleAttribute%2C%20cek%3A%27%27%7D%2C%0A%20%20%7B%20label%3A%20%27%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%27%2C%20value%3A%20%27FindBar.Highlight.Link%27%2C%20func%3A%20Highlight%2C%20cek%3A%27%27%7D%2C%0A%20%20%7B%20label%3A%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27add%27%2C%20func%3A%20toggleHighlightValue%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27clear%27%2C%20func%3A%20toggleHighlightValue%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u0446%u0432%u0435%u0442%3A%20%7C%23ef0fff%7C%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27ui.textHighlightBackground%27%2C%20change%3A%27%27%7D%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0AjQuery%28function%28%29%7B%0A%0AjQuery.fn.getTitle%20%3D%20function%28%29%20%7B%20//%20Copy%20the%20title%20of%20every%20IMG%20tag%20and%20add%20it%20to%20its%20parent%20A%20so%20that%20fancybox%20can%20show%20titles%0A%20%20%20%20var%20arr%20%3D%20jQuery%28%22a.fancybox%22%29%3B%0A%20%20%20%20jQuery.each%28arr%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20title%20%3D%20jQuery%28this%29.children%28%22img%22%29.attr%28%22title%22%29%3B%0A%20%20%20%20%20%20%20%20jQuery%28this%29.attr%28%27title%27%2Ctitle%29%3B%0A%20%20%20%20%7D%29%0A%7D%0A%0A//%20Supported%20file%20extensions%0Avar%20thumbnails%20%3D%20jQuery%28%22a%3Ahas%28img%29%22%29.not%28%22.nolightbox%22%29.filter%28%20function%28%29%20%7B%20return%20/%5C.%28jpe%3Fg%7Cpng%7Cgif%7Cbmp%29%24/i.test%28jQuery%28this%29.attr%28%27href%27%29%29%20%7D%29%3B%0A%0Athumbnails.addClass%28%22fancybox%22%29.attr%28%22rel%22%2C%22fancybox%22%29.getTitle%28%29%3B%0AjQuery%28%22a.fancybox%22%29.fancybox%28%7B%0A%20%20%20%20%27cyclic%27%3A%20true%2C%0A%20%20%20%20%27autoScale%27%3A%20true%2C%0A%20%20%20%20%27padding%27%3A%2010%2C%0A%20%20%20%20%27opacity%27%3A%20true%2C%0A%20%20%20%20%27speedIn%27%3A%20500%2C%0A%20%20%20%20%27speedOut%27%3A%20500%2C%0A%20%20%20%20%27changeSpeed%27%3A%20300%2C%0A%20%20%20%20%27overlayShow%27%3A%20true%2C%0A%20%20%20%20%27overlayOpacity%27%3A%20%220.3%22%2C%0A%20%20%20%20%27overlayColor%27%3A%20%22%23666666%22%2C%0A%20%20%20%20%27titleShow%27%3A%20true%2C%0A%20%20%20%20%27titlePosition%27%3A%20%27inside%27%2C%0A%20%20%20%20%27enableEscapeButton%27%3A%20true%2C%0A%20%20%20%20%27showCloseButton%27%3A%20true%2C%0A%20%20%20%20%27showNavArrows%27%3A%20true%2C%0A%20%20%20%20%27hideOnOverlayClick%27%3A%20true%2C%0A%20%20%20%20%27hideOnContentClick%27%3A%20false%2C%0A%20%20%20%20%27width%27%3A%20560%2C%0A%20%20%20%20%27height%27%3A%20340%2C%0A%20%20%20%20%27transitionIn%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27transitionOut%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27centerOnScroll%27%3A%20true%0A%7D%29%3B%0A%0A%0A%7D%29%0A%3C/script%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
feas > 09-04-2013 23:42:01 |
bunda1 пишет
спасиб! работает идеально! |
rubel > 10-04-2013 15:38:36 |
bunda1 |
bunda1 > 10-04-2013 20:17:07 |
rubel |
VORON > 10-04-2013 21:57:27 |
bunda1 |
bunda1 > 10-04-2013 22:22:16 |
VORON |
feas > 10-04-2013 23:04:53 |
bunda1 пишет
На вскидку(боковые) - закладки, журнал - есть в комплекте лисы. Возможно у автора и свои фичи типа дополнения и загрузки в боковой. |
VORON > 11-04-2013 00:17:03 |
bunda1 пишет
addons,extensions,settings,password manager и ещё куча всего остального может быть открыто из VT |
feas > 11-04-2013 00:49:02 |
VORON пишет
ясн - готовься писать правила |
rubel > 11-04-2013 07:58:37 |
bunda1 |
bunda1 > 11-04-2013 19:35:12 |
okkamas_knife |
bunda1 > 12-04-2013 18:19:12 |
okkamas_knife |
oopsididagainster > 12-04-2013 23:26:15 |
В кнопке Compact Menu( Firefox 4 + ) не работают опции Недавно закрытые вкладки и Недавно закрытые окна: не отображаются закрытые окна и вкладки. |
Dumby > 13-04-2013 05:45:04 |
oopsididagainster пишет
скрытый текст Выделить код Код: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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0421%u0442%u0438%u043B%u044C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u041F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%20%u0438%20%u043A%u043D%u043E%u043F%u043A%u0443%20Firefox%20..............%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20css%20%3D%20%27%5C%0A%23toolbar-menubar%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20display%20%3A%20none%20%21important%3B%20%7D%5C%0A%23titlebar-content%20%23appmenu-button%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%23TabsToolbar%20hbox.titlebar-placeholder%5Btype%3D%22appmenu-button%22%5D%20%7B%5C%0Adisplay%3A%20none%20%21important%3B%5C%0A%7D%5C%0A%27%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20if%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Aconst%20id%20%3D%20%22Compact-Menu-menupopup%22%3B%0Avar%20popup%20%3D%20document.getElementById%28id%29%3B%0Aif%20%28%21popup%29%20%7B%0A%09popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09const%20attrs%20%3D%20%7B%0A%09%09id%3A%20id%2C%0A%09%09position%3A%20%22after_start%22%2C%0A%09%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%2C%0A%09%09oncommand%3A%20%22event.stopPropagation%28%29%22%2C%0A%09%7D%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20popup.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%0A%09ids.forEach%28function%28id%29%20%7B%0A%09%09var%20clonedMenu%20%3D%20document.getElementById%28id%29.cloneNode%28true%29%3B%0A%09%09clonedMenu.hidden%20%3D%20false%3B%0A%09%09popup.appendChild%28clonedMenu%29%3B%0A%09%7D%29%3B%0A%09if%20%28ids.indexOf%28%22history-menu%22%29%20%21%3D%20-1%29%20%7B%0A%09%09%5B%22%22%2C%20%22Window%22%5D.forEach%28function%28str%29%20%7B%0A%09%09%09var%20node%20%3D%20popup.getElementsByAttribute%28%22id%22%2C%20%22historyUndo%22%20+%20str%20+%20%22Popup%22%29%5B0%5D%3B%0A%09%09%09var%20attr%20%3D%20node.getAttribute%28%22onpopupshowing%22%29%3B%0A%09%09%09node.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.parentNode.parentNode%22%20+%20attr.substring%2839%29%29%3B%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%0Apopup.openPopup%28this%29%3B%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 |
rubel > 13-04-2013 06:56:37 |
Dumby |
oopsididagainster > 13-04-2013 11:36:13 |
Dumby пишет
Так работает. |
Dumby > 13-04-2013 14:03:19 |
rubel пишет
Попробовать то можно, только не понял что. |
rubel > 13-04-2013 16:50:02 |
Dumby |
Dumby > 13-04-2013 22:07:49 |
rubel Попробуй добавить это в самый конец кода скрытый текст Выделить код Код:function n(id) document.getElementById(id); const page = n("content"), box = n("sidebar-box"), sidebar = n("sidebar"); var tvtc = 0; function onSBL(e) { var time = Date.now(); if (time - tvtc > 800) return; addEventListener("mouseover", function onMO() { removeEventListener("mouseover", onMO, false, page); if (box.hidden) return; var id = box.getAttribute("sidebarcommand") || "viewBookmarksSidebar"; n(id).setAttribute("checked", true); toggleSidebar(id); }, false, page); } function onVTC(e) { var time = Date.now(); for (var node = e.target; node; node = node.parentNode) { if (node == toolbar) { tvtc = time; break; } } } const data = [ ["DOMContentLoaded", onSBL, false, sidebar], ["click", onVTC, false, window], ["command", onVTC, false, window] ]; function ael(add) { data.forEach(function(args) { (add ? addEventListener : removeEventListener).apply(this, args); }); } ael(true); addDestructor(function() { ael(false) }); |
rubel > 14-04-2013 07:18:30 |
Dumby
Прекрасно всё получилось, именно так, как мне и хотелось. Огромное спасибо! |
rubel > 14-04-2013 09:51:35 |
Dumby |
feas > 14-04-2013 12:31:03 |
okkamas_knife пишет
Эх эх.... расшифрую А стоит лишь убрать мышку все тут же исчезнет: Выделить код Код:if (!toolbar.hasAttribute("autohide")) { browser.addEventListener("mousemove", collapser, false); } else toolbar.setAttribute("autohide", "true"); lock(); Редактирование функции ни к чему не приводит видимому: Выделить код Код:var tvtc = 10000; function onSBL(e) { var time = Date.now(); if (time - tvtc > 8000000) return; |
oopsididagainster > 14-04-2013 12:36:16 |
Как узнать какая команда отвечает за опцию Настроить ? |
feas > 14-04-2013 12:46:17 |
Вот эта настроить и есть настройки интерфейса 14-04-2013 12:54:32 Ещё так можно ![]() и так №11 |
rubel > 14-04-2013 12:58:57 |
okkamas_knife пишет
Это как раз я попробовал в первую очередь и как и у feas ничего не меняется. |
oopsididagainster > 14-04-2013 12:58:58 |
feas feas пишет
То что нужно! |
Dumby > 14-04-2013 15:17:45 |
rubel пишет
Можно попробовать вместо той добавки эту. скрытый текст Выделить код Код:const delay = 1000; function n(id) document.getElementById(id); const page = n("content"), box = n("sidebar-box"), sidebar = n("sidebar"); var tvtc, timeout; function listenMO(node, listen) { var func = node == box ? onBMO : onPMO; (listen ? addEventListener : removeEventListener) .apply(this, ["mouseover", func, false, node]); } function onPMO() { listenMO(page, false); timeout = setTimeout(hideSB, delay); listenMO(box, true); } function onBMO() { listenMO(box, false); clearTimeout(timeout); listenMO(page, true); } function hideSB() { listenMO(box, false); if (box.hidden) return; var id = box.getAttribute("sidebarcommand") || "viewBookmarksSidebar"; n(id).setAttribute("checked", true); toggleSidebar(id); } function onSBL() { var time = Date.now(); listenMO(page, false); if (time - tvtc < 800) listenMO(page, true); } function onVTC(e) { var time = Date.now(); for (var node = e.target; node; node = node.parentNode) { if (node != toolbar) continue; tvtc = time; break; } } function ael(add) { [ ["DOMContentLoaded", onSBL, false, sidebar], ["click", onVTC, false, window], ["command", onVTC, false, window] ].forEach(function(args) { (add ? addEventListener : removeEventListener).apply(this, args); }); } ael(true); addDestructor(function() { ael(false) }); okkamas_knife пишет
Хорошо подшутил над знакомой - спросил о том, чего нет |
rubel > 14-04-2013 16:17:39 |
Dumby
Отлично! Я поставил const delay = 400. Теперь очень хорошо. Спасибо ещё раз. |
rubel > 15-04-2013 19:26:40 |
bunda1 Починить можно? |
Dumby > 15-04-2013 21:19:48 |
rubel |
feas > 15-04-2013 21:36:15 |
Dumby пишет
заработало, чтоб остальные не мучились: Выделить код Код: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%3EContext%20Search%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//Context%20Search......................................%0A%0Aif%20%28window.contextSearcher%29%20%7B%0A%20%20window.contextSearcher.destroy%28%29%3B%0A%20%20delete%20window.contextSearcher%3B%0A%7D%0A%0Awindow.contextSearcher%20%3D%20%7B%0A%20%20NEW_TAB%3A%20true%2C%0A%0A%20%20_regexp%3A%20%7B%0A%20%20%20%20hiragana%3A%20%22%5B%5C%5Cu3040-%5C%5Cu309F%5D%22%2C%0A%20%20%20%20katakana%3A%20%22%5B%5C%5Cu30A0-%5C%5Cu30FF%5D%22%2C%0A%20%20%20%20kanji%20%20%20%3A%20%22%5B%5C%5Cu4E00-%5C%5Cu9FA0%5D%22%2C%0A%20%20%20%20//suuji%20%20%20%3A%20%22%5B0-9_./%2C%25-%5D%22%2C%0A%20%20%20%20eisu_han%3A%20%22%5Ba-zA-Z0-9_-%5D%22%2C%0A%20%20%20%20eisu_zen%3A%20%22%5B%5C%5CuFF41-%5C%5CuFF5A%5C%5CuFF21-%5C%5CuFF3A%5C%5CuFF10-%5C%5CuFF19%5D%22%2C%0A%20%20%20%20hankaku%20%3A%20%22%5B%5C%5CuFF00-%5C%5CuFFEF%5D%22%2C%0A%20%20%7D%2C%0A%0A%20%20get%20startReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28%27%5E%27%20+%20this._regexp%5Bn%5D%20+%20%27+%27%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.startReg%3B%0A%20%20%20%20return%20this.startReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20get%20endReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28this._regexp%5Bn%5D%20+%20%27+%24%27%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.endReg%3B%0A%20%20%20%20return%20this.endReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20searchText%3A%20%27%27%2C%0A%20%20searchEngines%3A%20%5B%5D%2C%0A%20%20init%3A%20function%28%29%7B%0A%20%20%20%20this.searchService%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20this.context%20%3D%20document.getElementById%28%27contentAreaContextMenu%27%29%3B%0A%20%20%20%20var%20searchselect%20%3D%20document.getElementById%28%27context-searchselect%27%29%3B%0A%20%20%20%20searchselect.style.display%20%3D%20%27none%27%3B%0A%0A%20%20%20%20this.menu%20%3D%20this.context.insertBefore%28document.createElement%28%27splitmenu%27%29%2C%20searchselect%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27id%27%2C%20%27context-searcher%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27accesskey%27%2C%20gNavigatorBundle.getString%28%22contextMenuSearch.accesskey%22%29%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27oncommand%27%2C%20%27contextSearcher.command%28event%29%3B%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27onclick%27%2C%20%27checkForMiddleClick%28this%2C%20event%29%3B%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27iconic%27%2C%20%27true%27%29%3B%0A%0A%20%20%20%20this.popup%20%3D%20this.menu.appendChild%28%20document.createElement%28%27menupopup%27%29%20%29%3B%0A%0A%20%20%20%20//%20splitmenu%0A%20%20%20%20this.dummy%20%3D%20this.context.insertBefore%28document.createElement%28%27menuitem%27%29%2C%20searchselect%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27id%27%2C%20%27context-searcher-dummy%27%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27command%27%2C%20%27context-searcher%27%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27accesskey%27%2C%20gNavigatorBundle.getString%28%22contextMenuSearch.accesskey%22%29%29%3B%0A%20%20%20%20this.dummy.collapsed%20%3D%20true%3B%0A%0A%20%20%20%20this.context.addEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.addEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.addEventListener%28%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.addEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%0A%20%20%20this.menu._menuDelay%20%3D%20300%3B%0A%20%20%7D%2C%0A%0A%20%20uninit%3A%20function%28%29%20%7B%0A%20%20%20%20this.context.removeEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.removeEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.removeEventListener%28%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.removeEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20destroy%3A%20function%28%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%20%20document.getElementById%28%27context-searchselect%27%29.style.removeProperty%28%27display%27%29%3B%0A%20%20%20%20var%20m%20%3D%20document.getElementById%28%27context-searcher%27%29%3B%0A%20%20%20%20if%20%28m%29%0A%20%20%20%20%20%20m.parentNode.removeChild%28m%29%3B%0A%20%20%20%20m%20%3D%20document.getElementById%28%27context-searcher-dummy%27%29%3B%0A%20%20%20%20if%20%28m%29%0A%20%20%20%20%20%20m.parentNode.removeChild%28m%29%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28this%5Bevent.type%5D%29%0A%20%20%20%20%20%20this%5Bevent.type%5D%28event%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20unload%3A%20function%28e%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20DOMMouseScroll%3A%20function%28e%29%20%7B%0A%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%0A%20%20%20%20var%20index%20%3D%20this.searchEngines.indexOf%28this.searchService.currentEngine%29%3B%0A%20%20%20//var%20newEngine%20%3D%20e.detail%20%3E%200%3F%0A%20%20%20//this.searchEngines%5Bindex+1%5D%20%7C%7C%20this.searchEngines%5B0%5D%3A%0A%20%20%20//this.searchEngines%5Bindex-1%5D%20%7C%7C%20this.searchEngines%5Bthis.searchEngines.length%20-1%5D%3B%0A%20%20%20%20var%20newEngine%20%3D%20e.detail%20%3E%200%3F%20this.searchEngines%5Bindex+1%5D%20%3A%20this.searchEngines%5Bindex-1%5D%3B%0A%20%20%20%20if%20%28%21newEngine%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.searchService.currentEngine%20%3D%20newEngine%3B%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20command%3A%20function%28e%29%7B%0A%20%20%20%20var%20target%20%3D%20e.target%3B%0A%20%20%20%20var%20engine%20%3D%20e.target.engine%20%7C%7C%20this.menu.engine%3B%0A%0A%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28this.searchText%2C%20null%29%3B%0A%20%20%20%20if%20%28%21submission%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28%21this.NEW_TAB%20%7C%7C%20content.location.href%20%3D%3D%3D%20%27about%3Ablank%27%29%20%7B%0A%20%20%20%20%20%20loadURI%28submission.uri.spec%2C%20null%2C%20submission.postData%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28submission.uri.spec%2C%20%7B%0A%20%20%20%20%20%20%20%20postData%3A%20submission.postData%2C%0A%20%20%20%20%20%20%20%20ownerTab%3A%20gBrowser.mCurrentTab%2C%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20click%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28event.button%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20event.rangeParent%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%20event.rangeOffset%3B%0A%20%20%20%20%20%20this._clientX%20%3D%20event.clientX%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20null%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%200%3B%0A%20%20%20%20%20%20this._clientX%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20setMenuitem%3A%20function%28%29%20%7B%0A%20%20%20%20var%20currentEngine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20var%20l%20%3D%20this.searchText.length%20%3E%2016%3F%20this.searchText.substr%280%2C%2016%29%20+%20%27...%27%20%3A%20this.searchText%3B%0A%20%20%20%20this.menu.engine%20%3D%20currentEngine%3B%0A%20%20%20%20this.menu.setAttribute%28%27label%27%2C%20gNavigatorBundle.getFormattedString%28%22contextMenuSearch%22%2C%20%5BcurrentEngine.name%2C%20l%5D%29%29%3B%0A%20%20%20%20if%20%28currentEngine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20currentEngine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20popupshowing%3A%20function%28e%29%7B%0A%20%20%20%20if%20%28e.target%20%21%3D%20this.context%29%20return%3B%0A%0A%20%20%20%20this.searchText%20%3D%20gContextMenu.isTextSelected%3F%20this.getBrowserSelection%28%29%3A%20%27%27%20%7C%7C%20%0A%20%20%20%20%20%20gContextMenu.onLink%3F%20gContextMenu.linkText%28%29%3A%20%27%27%20%7C%7C%20%0A%20%20%20%20%20%20gContextMenu.onTextInput%3F%20this.getTextInputSelection%28%29%20%3A%20%27%27%20%7C%7C%0A%20%20%20%20%20%20this.getCursorPositionText%28%29%3B%0A%0A%20%20%20%20if%20%28%21this.searchText%20%7C%7C%20%21/%5CS/.test%28this.searchText%29%29%20%7B%0A%20%20%20%20%20%20this.menu.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20this.dummy.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28this.searchText.length%20%3E%20256%29%0A%20%20%20%20%20%20this.searchText%20%3D%20this.searchText.substr%280%2C%20256%29%3B%0A%20%20%20%20this.menu.hidden%20%3D%20false%3B%0A%20%20%20%20this.dummy.hidden%20%3D%20false%3B%0A%20%20%20%20%0A%20%20%20%20if%20%28%21this.popup.hasChildNodes%28%29%20%7C%7C%20e.ctrlKey%29%0A%20%20%20%20%20%20this.createMenuitem%28%29%3B%0A%20%20%20%20%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20createMenuitem%3A%20function%28%29%7B%0A%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20f%3B%0A%20%20%20%20while%20%28f%20%3D%20this.popup.firstChild%29%20%7B%0A%20%20%20%20%20%20this.popup.removeChild%28f%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this.menu.engine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20if%20%28this.menu.engine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20this.menu.engine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20s%20%3D%20this.searchEngines%2C%20l%20%3D%20s.length%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20engine%20%3D%20s%5Bi%5D%3B%0A%20%20%20%20%20%20var%20m%20%3D%20document.createElement%28%27menuitem%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27label%27%2C%20engine.name%29%3B%0A%20%20%20%20%20%20if%20%28engine.iconURI%29%20%7B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%27src%27%2C%20engine.iconURI.spec%29%3B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%27class%27%2C%20%27menuitem-iconic%27%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20m.setAttribute%28%27oncommand%27%2C%20%27contextSearcher.command%28event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27onclick%27%2C%20%27checkForMiddleClick%28this%2C%20event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.engine%20%3D%20engine%3B%0A%20%20%20%20%20%20this.popup.appendChild%28m%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%0A%20%20getBrowserSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20var%20str%20%3D%20%27%27%3B%0A%20%20%20%20if%20%28sel.isCollapsed%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20for%28var%20i%20%3D%200%2C%20l%20%3D%20sel.rangeCount%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20str%20+%3D%20sel.getRangeAt%28i%29%20+%20%27%20%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20getTextInputSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20elem%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20var%20str%20%3D%20elem.value.slice%28elem.selectionStart%2C%20elem.selectionEnd%29%3B%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20getCursorPositionText%3A%20function%28%29%20%7B%0A%20%20%20%20var%20str%20%3D%20%22%22%3B%0A%20%20%20%20var%20node%20%3D%20this._clickNode%3B%0A%20%20%20%20if%20%28%21node%20%7C%7C%20node.nodeType%20%21%3D%3D%20Node.TEXT_NODE%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20offset%20%3D%20this._clickOffset%3B%0A%20%20%20%20var%20text%20%3D%20node.nodeValue%3B%0A%20%20%20%20if%20%28%21text%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20range%20%3D%20node.ownerDocument.createRange%28%29%3B%0A%20%20%20%20range.setStart%28node%2C%20offset%29%3B%0A%20%20%20%20var%20rect%20%3D%20range.getBoundingClientRect%28%29%3B%0A%20%20%20%20range.detach%28%29%3B%0A%0A%20%20%20%20if%20%28rect.left%20%3E%3D%20this._clientX%29%0A%20%20%20%20%20%20offset--%3B%0A%0A%20%20%20%20var%20current%20%3D%20text%5Boffset%5D%3B%0A%20%20%20%20var%20type%3B%0A%20%20%20%20for%20%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20if%20%28this.endReg%5Bn%5D.test%28current%29%29%20%7B%0A%20%20%20%20%20%20%20%20type%20%3D%20n%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21type%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20s%20%3D%20this.endReg%5Btype%5D.exec%28%20text.substr%280%2C%20offset%29%20%29%3B%0A%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%20%20%20%20s%20%3D%20this.startReg%5Btype%5D.exec%28%20text.substr%28offset%29%20%29%0A%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%0A%20%20%20%20if%20%28str.length%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20if%20%28type%20%3D%3D%3D%20%22kanji%22%29%20%7B%0A%20%20%20%20%20%20%20%20s%20%3D%20this.startReg%5B%22hiragana%22%5D.exec%28%20text.substr%28offset+1%29%20%29%3B%0A%20%20%20%20%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20return%20str%3B%0A%20%20%7D%2C%0A%0A%20%20log%3A%20function%28%29%20%7B%0A%20%20%20%20Application.console.log%28%22%5BcontextSearcher%5D%20%22%20+%20Array.slice%28arguments%29%29%3B%0A%20%20%7D%0A%7D%0A%0Awindow.contextSearcher.init%28%29%3B%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 |
Kamui > 15-04-2013 22:21:18 |
feas |
rubel > 16-04-2013 07:36:00 |
Dumby
Так и сделал, теперь прекрасно работает. Положил Код инициализации в кнопку Cookie Manager, в ней было пусто во вкладке Инициализация, не стал ставить отдельную кнопку feas'а. |
rbfyec > 16-04-2013 12:55:49 |
А можно соорудить такой код? В адресную строку вставляется мой текст, за которым следует текущий урл. Ну и нажимается Энтер. |
bunda1 > 16-04-2013 18:55:08 |
rbfyec пишет
Выделить код Код: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); |
rbfyec > 16-04-2013 22:43:11 |
bunda1, это именно то, что я хотел. Спасибо! okkamas_knife, спасибо за ссылки, буду стараться разобраться |
rbfyec > 17-04-2013 10:29:06 |
okkamas_knife пишет
А вот не работает этот код. Я получаю сообщение: Формат адреса неверен URL недействителен и не может быть загружен. Адреса веб-сайтов обычно записываются в формате http://www.example.com/ |
Zaycoff > 17-04-2013 18:26:58 |
Можно как-то написать такой код, чтобы на определённом сайте, точнее на скрытый текст Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст. при просмотре манги можно было нажать кнопку и все ссылки на изображения, относящиеся к конкретной главе, скопировались в буфер обмена, а то замучался каждую картинку сохранять вручную ![]() По идее все эти ссылки на картинки есть в буфере управляющего скрипта, т.к. переключение картинок (страниц одной главы) происходит даже,если нет физического соединения с сетью, вот только как их выдрать не представляю... |
Zaycoff > 17-04-2013 20:09:38 |
okkamas_knife |
rbfyec > 17-04-2013 21:19:24 |
okkamas_knife пишет
Да, именно кейворды я и собирался подставлять В любом случае, спасибо большое за помощь! |
Zaycoff > 18-04-2013 02:09:42 |
Прошу сильно не пинать, пишу на яве вообще первый раз, может что-то упустил, не могу врубится, почему кнопка срабатывает через раз?.. Может кто, что посоветует? скрытый текст проверить можно, например, тут: Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст. Выделить код Код:/*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("Ссылки скопированны в буфер обмена."); |
Zaycoff > 18-04-2013 11:39:37 |
okkamas_knife пишет
Бред какой-то, напихал алертов на каждое действие, кнопка стала работать идеально... 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("Ссылки скопированны в буфер обмена."); |
Kiril__777 > 18-04-2013 13:00:09 |
http://forum.mozilla-russia.org/viewtopic.php?pid=446701#p446701 |
Dumby > 18-04-2013 13:21:42 |
Zaycoff пишет
И меня тоже скрытый текст Выделить код Код:/*CODE*/ var links = content.wrappedJSObject.data.fullimg.join("\r\n"); gClipboard.write(links); alert("Ссылки скопированны в буфер обмена.\nВот они:\n" + links); 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); |
adidharma > 18-04-2013 15:12:45 |
Kiril__777 пишет
intl.accept_languages;ru, en-US, en так? Больше причин не знаю, УМВР. |
Kiril__777 > 18-04-2013 15:22:29 |
adidharma пишет
что-то я такого вообще не нахожу |
Zaycoff > 18-04-2013 15:35:15 |
Dumby И за вконтакт отдельная благодарность - очень полезная штука, если нужно только почитать его, а разрешать скрипты и логиниться не хочется okkamas_knife |
adidharma > 18-04-2013 15:49:47 |
Kiril__777 пишет
скрытый текст А, ну да, ступил я, наверно. ![]() Как убрал ru-RU - стало всё нормально. |
Kiril__777 > 18-04-2013 15:59:27 |
adidharma скрытый текст где можно прочитать об этом ru-ru и где хранится эта настройка в профиле? intl.accept_languages |
voqabuhe > 18-04-2013 16:37:32 |
Zaycoff пишет
Это где такое? |
Zaycoff > 18-04-2013 16:57:43 |
voqabuhe пишет
Dumby пишет
Если это код положить в инициализацию новой кнопки, то при посещении вконтакта можно будет не включать скрипты и куки, часть функционала конечно отвалится, но посты и всякое такое читать будет можно, а мне больше и не нужно, а то дают ссылку на статью во вконтате, а ему ещё и скрипты с куками подавай... бизобразие какой-то |
adidharma > 19-04-2013 08:41:39 |
Как бы одну кнопку поправить, чтобы работала в скрытый текст код кнопки Выделить код Код: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>)); |
Infocatcher > 19-04-2013 09:14:23 |
adidharma пишет
https://loucypher.googlecode.com/svn/custombuttons/xml/ |
adidharma > 19-04-2013 10:04:05 |
Infocatcher пишет
Спасибо за ссылку, но чёто всё-равно работать не хочет. C ABP конфликтует, штоли? Да, отключил Adblock - всё нормально стало. С ABP такая ошибка: На 20-й версии тоже такую же ошибку выдаёт, а та кнопка, что я выше привёл, нормально работает. |
Infocatcher > 19-04-2013 12:42:49 |
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) + '"/>')); } |
adidharma > 19-04-2013 13:12:32 |
Infocatcher |
Kiril__777 > 21-04-2013 18:33:47 |
для фф 20 есть кнопка BBCode? та что имеется уже не работает |
voqabuhe > 21-04-2013 20:19:41 |
Kiril__777 пишет
|
Kiril__777 > 22-04-2013 06:21:51 |
voqabuhe работает, спасибо |
Чайник > 22-04-2013 13:04:42 |
А как бы сделать, чтобы можно было использовать такую конструкцию Выделить код Код:(function(){var url=document.location.href;window.open('http://my_search.com/?q=' + encodeURIComponent(url))})() только вместо адреса подставлять содержимое буфера обмена? |
Чайник > 22-04-2013 16:21:29 |
okkamas_knife пишет
Мне надо вставлять содержимое буфера не в адресную строку, а в поле ввода поискового запроса на странице поисковика. |
Чайник > 23-04-2013 18:06:54 |
okkamas_knife пишет
okkamas_knife, потихоньку пробую вникнуть. Есть код Выделить код Код:gBrowser.selectedTab = gBrowser.addTab("http://my_url"); function upimg() { loadURI ("javascript:my_bookmarklet)"); } setTimeout(upimg, 1000); var input = content.document.getElementsByName("name")[0]; input.focus(); Получается, всё что идёт после setTimeout не работает. Почему? |
bunda1 > 23-04-2013 19:13:12 |
Чайник пишет
При отладке кода полезно смотреть в консоль ошибок:
|
Чайник > 23-04-2013 19:33:30 |
Нет, в консоли ошибок у меня ничего нет |
Чайник > 23-04-2013 22:48:52 |
okkamas_knife пишет
Вы абсолютно правильно поняли! okkamas_knife пишет
Не получается, нужно чтобы между срабатыванием букмарклета и фокусировкой был небольшой интервал, иначе не работает. okkamas_knife пишет
Тоже не выходит, срабатывает только первый таймер. В том числе и тот код, что вы предложили. |
Чайник > 24-04-2013 11:52:43 |
Я сделал с листенером: скрытый текст Выделить код Код:var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.addTab("http://pixator.ru/")); newTabBrowser.addEventListener("load", function () {loadURI ("javascript:my_bookmarklet"); }, true); function focus() { var input = content.document.getElementsByName("id")[0]; input.focus(); //Тут идут ещё пара команд и вроде всё работает } window.setTimeout(focus, 2000); Только у меня не работало, пока я не подставил window перед setTimeout. В каких случаях надо добавлять window? |
Чайник > 25-04-2013 11:15:59 |
okkamas_knife пишет
Точно! В этом, как оказалось, и было всё дело. Спасибо огромное за помощь! |
1fesFFFF > 25-04-2013 15:14:43 |
В списке готовых кнопок нашёл только одну кнопку "Tabs Counter", но она не подходит мне. Мне нужно, чтобы сразу показывало число вкладок и только. Желательно, чтобы в этом месте |
diliana > 30-04-2013 01:25:18 |
всем привет есть такая удобная кнопка Stf - №76. Сохраняет выделенный текст или весь текст на странице как txt файл. еще я нашла кнопку Text To Editor - №165, которая умеет так делать, но в отличии от Stf в этой кнопке есть 2 больших неудобства В общем мне очень нужна ваша помощь, чтобы немного подправить кнопку Stf. |
Dumby > 30-04-2013 06:26:40 |
diliana Eщё вариант скрытый текст Заменить Выделить код Код:saveURL("data:text/plain," + encodeURIComponent( content.location.href + ("\r\n\r\n" + getSelect() )), fileTitle + ".txt", null, false, false, null, content.document); на Выделить код Код:var text = convertFromUnicode("UTF-8", content.location + "\r\n\r\n" + getSelect()); const filePicker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); filePicker.appendFilters(filePicker.filterText); filePicker.defaultExtension = "txt"; filePicker.defaultString = fileTitle + ".txt"; filePicker.init(window, "Сохранить как", filePicker.modeSave); if (filePicker.show() != filePicker.returnCancel) { const foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); foStream.init(filePicker.file, -1, 0777, 0); foStream.write(text, text.length); foStream.close(); filePicker.file.launch(); } |
diliana > 30-04-2013 15:29:41 |
Dumby это то, что было нужно! просто супер! |
adidharma > 11-05-2013 11:24:02 |
Тут предложение и запрос по кнопке Текстовые смайлы(Firefox3.6-5.0) |
bunda1 > 11-05-2013 11:43:03 |
adidharma |
adidharma > 11-05-2013 12:12:01 |
bunda1 пишет
Было бы прекрасно. |
bunda1 > 11-05-2013 12:14:11 |
okkamas_knife |
adidharma > 11-05-2013 12:14:19 |
okkamas_knife пишет
Я о том же думал - тогда новую кнопку сделать и выложить, отдельным постом. 11-05-2013 12:17:29 bunda1 пишет
Это, наверно, к модераторам/администраторам надо обратиться? |
bunda1 > 11-05-2013 12:25:02 |
adidharma пишет
Сложно это, я не возьмусь. |
adidharma > 11-05-2013 12:33:37 |
bunda1 пишет
Ну тогда просто отдельным постом выложить. |
bunda1 > 11-05-2013 12:37:47 |
Хорошо, примерно через час. |
Dumby > 11-05-2013 13:28:43 |
Чуть отвернулся - уже, наверно, не актуально, а выбросить жалко. скрытый текст Выделить код Код: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%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20data%20%3D%20%5B%0A%09%22%u042D%u043C%u043E%u0446%u0438%u044F%22%2C%0A%09%5B%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%3A-%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%3A-%28%22%2C%0A%09%09%22%u0437%u0430%u0434%u0443%u043C%u0447%u0438%u0432%u043E%u0441%u0442%u044C%22%2C%20%22%3A-%7C%22%2C%0A%09%09%22%u0441%u043C%u0435%u0445%22%2C%20%22%3A-D%22%2C%0A%09%09%22%u0441%u043C%u0435%u0445%20%u0441%20%u0437%u0430%u0436%u043C%u0443%u0440%u0435%u043D%u043D%u044B%u043C%u0438%20%u0433%u043B%u0430%u0437%u0430%u043C%u0438%22%2C%20%22X-D%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u043E%u0433%u043E%u0440%u0447%u0435%u043D%u0438%u0435%22%2C%20%22%3A-C%22%2C%0A%09%09%22%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%3A-/%22%2C%0A%09%09%22%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%3A-%5C%5C%22%2C%0A%09%09%22%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3A-0%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%228-O%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3D-O%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%5B%20%5D%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%5B%22%2C%0A%09%09%22%u0441%u0431%u0438%u0442%20%u0441%20%u0442%u043E%u043B%u043A%u0443%22%2C%20%22%250%22%2C%0A%09%09%22%u0437%u043B%u043E%u0440%u0430%u0434%u043D%u044B%u0439%20%20%u0441%u043C%u0435%u0445%22%2C%20%22%3E%3A-D%22%2C%0A%09%09%22%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%7D%3A-%3E%22%2C%0A%09%09%22%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%5D%3A-%3E%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%2C%20%22%3A%27-%29%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%2C%20%22%3A%27-D%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u0430%u044F%20%u0437%u043B%u043E%u0441%u0442%u044C%22%2C%20%22D-%3A%22%2C%0A%09%09%22%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%2C%20%22/%3A-%28%22%2C%0A%09%09%22%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%2C%20%22/%3A-%5D%22%0A%09%5D%2C%0A%09%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%2C%0A%09%5B%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%3B-%29%22%2C%0A%09%09%22%u0446%u0435%u043B%u043E%u0432%u0430%u0442%u044C%22%2C%20%22%3A-*%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A_%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A%7E%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A%27%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A*%28%22%2C%0A%09%09%22%u0441%u0442%u0440%u0430%u0441%u0442%u043D%u044B%u0439%20%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%2C%20%22%3A-%7B%7D%22%2C%0A%09%09%22%u043A%u0440%u0438%u0447%u0430%u0442%u044C%22%2C%20%22%3A-@%22%2C%0A%09%09%22%u0440%u043E%u0442%20%u043D%u0430%20%u0437%u0430%u043C%u043A%u0435%22%2C%20%22%3A-X%22%2C%0A%09%09%22%u043E%u0442%u0432%u0440%u0430%u0449%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%21%22%2C%0A%09%09%22%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%2C%20%22%3A-P%22%2C%0A%09%09%22%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%2C%20%22%3A-p%22%2C%0A%09%09%22%u0433%u0440%u043E%u043C%u043A%u0438%u0439%20%u0441%u043C%u0435%u0445%22%2C%20%22%3Alol%3A%22%0A%09%5D%2C%0A%09%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%2C%0A%09%5B%0A%09%09%22%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%2C%20%228-%29%22%2C%0A%09%09%22%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%2C%20%22B-%29%22%2C%0A%09%09%22%u0430%u043D%u0433%u0435%u043B%22%2C%20%22O%3A-%29%22%2C%0A%09%09%22%u0441%u0443%u043C%u0430%u0441%u0448%u0435%u0434%u0448%u0438%u0439%22%2C%20%22%25%29%22%2C%0A%09%09%22%3A*%29%u043F%u044C%u044F%u043D%u044B%u0439%22%2C%20%22%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%22%2C%20%22/b/%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%5C%5Co/%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%u0413%u0433Y%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%7B%3A%u20AC%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%3AE%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28%3B%2C%3B%29%22%2C%0A%09%09%22%u043A%u043B%u043E%u0443%u043D%22%2C%20%22*%3AO%29%22%2C%0A%09%09%22%u043E%u0441%u043A%u0430%u043B%u0435%u043D%u043D%u044B%u0439%20%20%u0432%u0430%u043C%u043F%u0438%u0440%22%2C%20%22%3A-E%22%2C%0A%09%09%22%u0432%u0430%u043C%u043F%u0438%u0440%20%u0431%u0435%u0437%20%u043A%u043B%u044B%u043A%u0430%22%2C%20%22%3A-F%22%2C%0A%09%09%22%u043C%u0443%u0442%u0430%u043D%u0442/%u043F%u0440%u0438%u0448%u0435%u043B%u0435%u0446%22%2C%20%22%3A%3A-%29%22%2C%0A%09%09%22%u0440%u043E%u0431%u043E%u0442%22%2C%20%22%5B%3A%5D%22%2C%0A%09%09%22%u0432%u043E%u043B%u0448%u0435%u0431%u043D%u0438%u043A%22%2C%20%22-%3D%3C%3A-%29%22%2C%0A%09%09%22%u043A%u0438%u0442%u0430%u0435%u0446%22%2C%20%22%2C%u2019-/%22%2C%0A%09%09%22%u043A%u0438%u0442%u0430%u0435%u0446%22%2C%20%22%3C%7C-%29%22%2C%0A%09%09%22%u0446%u0438%u043A%u043B%u043E%u043F%22%2C%20%22%u043E-%29%22%2C%0A%09%09%22%u0446%u0438%u043A%u043B%u043E%u043F%22%2C%20%22O-%29%22%2C%0A%09%09%22%u0447%u0435%u0440%u0435%u043F%22%2C%20%22%3A-%5D%5B%22%2C%0A%09%09%22%u043A%u0443%u0440%u044F%u0449%u0438%u0439%20%u0442%u0440%u0443%u0431%u043A%u0443%22%2C%20%22%3A-%3F%22%2C%0A%09%09%22%u043E%u043B%u0435%u043D%u044C%22%2C%20%22%u042D%3A-%29%22%2C%0A%09%09%22%u0441%u0435%u0440%u0434%u0446%u0435%22%2C%20%22%3C3%22%2C%0A%09%09%22%u0440%u043E%u0437%u0430%22%2C%20%22@%7D-%3E--%22%2C%0A%09%09%22%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%2C%20%22%5C%5Cm/%22%2C%0A%09%09%22%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%2C%20%22%5C%5Cm/_%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%7C%7C%7C%3A%5D%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%5D/%5C%5C/%5C%5C/%5C%5C%5B%3A%5D%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%5D%7C%7C%7C%5B%3A%5D%22%2C%0A%09%09%22%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%2C%20%22%28_%21_%29%22%2C%0A%09%09%22%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%2C%20%22%28%29%28%29%22%0A%09%5D%0A%5D%3B%0Afunction%20appendNode%28nodeName%2C%20parent%2C%20attrs%29%20%7B%0A%09var%20node%20%3D%20document.createElement%28nodeName%29%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20node.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09parent.appendChild%28node%29%3B%0A%09return%20node%3B%0A%7D%0Athis.insertText%20%3D%20function%28text%29%20%7B%0A%09const%20command%20%3D%20%22cmd_insertText%22%3B%0A%09var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%09if%20%28%21controller%20%7C%7C%20%21controller.isCommandEnabled%28command%29%29%20return%3B%0A%09var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%09params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.QueryInterface%28Ci.nsICommandController%29.doCommandWithParams%28command%2C%20params%29%3B%0A%7D%3B%0Avar%20popup%20%3D%20appendNode%28%22menupopup%22%2C%20this%2C%20%7B%0A%09position%3A%20%22after_start%22%2C%0A%09oncommand%3A%20%22event.stopPropagation%28%29%3B%20this.parentNode.insertText%28event.target.value%29%22%2C%0A%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%0A%7D%29%3B%0Afor%20%28var%20i%20%3D%200%2C%20l%20%3D%20data.length%3B%20i%20%3C%20l%3B%20i%20+%3D%202%29%20%7B%0A%09var%20menu%20%3D%20appendNode%28%22menu%22%2C%20popup%2C%20%7B%20label%3A%20data%5Bi%5D%20%7D%29%3B%0A%09var%20menupopup%20%3D%20appendNode%28%22menupopup%22%2C%20menu%2C%20%7B%7D%20%29%3B%0A%09var%20items%20%3D%20data%5Bi%20+%201%5D%3B%0A%09for%20%28var%20j%20%3D%200%2C%20s%20%3D%20items.length%3B%20j%20%3C%20s%3B%20j%20+%3D%202%29%20%7B%0A%09%09appendNode%28%22menuitem%22%2C%20menupopup%2C%20%7B%0A%09%09%09label%3A%20items%5Bj%20+%201%5D%20+%20%22%20%22%20+%20items%5Bj%5D%2C%0A%09%09%09value%3A%20items%5Bj%20+%201%5D%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.lastChild.openPopup%28this%29%3B%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 Выделить код Код: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%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%20%28%u0410%u0437%u0438%u044F%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20data%20%3D%20%5B%0A%09%22%u042D%u043C%u043E%u0446%u0438%u044F%22%2C%0A%09%5B%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%28n_n%29%22%2C%0A%09%09%22%u0440%u0430%u0434%u043E%u0441%u0442%u044C%22%2C%20%22%28%5E_%5E%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%28%3C_%3E%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%28v_v%29%22%2C%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%20%u0447%u0435%u0440%u0435%u0437%20%u0441%u0438%u043B%u0443%22%2C%20%22%28%5E%20%5E%29%22%2C%0A%09%09%22%u0437%u043B%u043E%u0441%u0442%u044C/%u043A%u0430%u0442%u0435%u0433%u043E%u0440%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3E_%3C%29%22%2C%0A%09%09%22%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3E_%3E%29%22%2C%0A%09%09%22%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3C_%3C%29%22%2C%0A%09%09%22%u0441%u043A%u043E%u043D%u0444%u0443%u0436%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%A8%29%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0451%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%5E_%5E%A8%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0435%u043D%u043D%u043E%u0441%u0442%u044C%20%u0441%20%u043F%u043E%u043A%u0440%u0430%u0441%u043D%u0435%u043D%u0438%u0435%u043C%22%2C%20%22*%5E_%5E*%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%23%29%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%A4%29%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-+%29%22%2C%0A%09%09%22%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28o_o%29%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%280_0%29%22%2C%0A%09%09%22%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28O_o%29%22%2C%0A%09%09%22%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28o_O%29%22%2C%0A%09%09%22%u043D%u0435%u043F%u0440%u0438%u044F%u0442%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28V_v%29%22%2C%0A%09%09%22%u043E%u0431%u0430%u043B%u0434%u0435%u043D%u0438%u0435%22%2C%20%22%28@_@%29%22%2C%0A%09%09%22%u0443%u0441%u0442%u0430%u043B%u043E%u0441%u0442%u044C%20%u0433%u043B%u0430%u0437%22%2C%20%22%28%25_%25%29%22%2C%0A%09%09%22%u0434%u0435%u043F%u0440%u0435%u0441%u0441%u0438%u044F%22%2C%20%22%28u_u%29%22%2C%0A%09%09%22%u0447%u0435%u0440%u0442%21%22%2C%20%22%28%3Ex%3C%21%29%22%2C%0A%09%09%22%u0440%u0435%u0432%u043D%u0438%u0432%u044B%u0439%22%2C%20%228%28%3E_%3C%298%22%2C%0A%09%09%22%u043A%u043E%u0441%u043E%u0439%20%u0432%u0437%u0433%u043B%u044F%u0434%2C%20%u043D%u0435%u0434%u043E%u0432%u0435%u0440%u0438%u0435%22%2C%20%22%28%3E%3E%29%22%2C%0A%09%09%22%u043D%u0435%u0440%u0432%u043D%u044B%u0439%20%u0442%u0438%u043A%22%2C%20%22%280_%3C%29%22%2C%0A%09%09%22%u0444%u0430%u043D%u0430%u0442%u0435%u043D%u0438%u0435%22%2C%20%22%28*_*%29%22%2C%0A%09%09%22%u0444%u043B%u0435%u0433%u043C%u0430%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C/%AB%u043C%u0434%u0430-%u0430-%u0430%u2026%BB%22%2C%20%22-__-%22%2C%0A%09%09%22%u043D%u0435%20%u0441%u043F%u0430%u043B%20%u0432%u0441%u044E%20%u043D%u043E%u0447%u044C%22%2C%20%22%289_9%29%22%2C%0A%09%09%22%u0441%u043E%u043D%u043D%u044B%u0439%20%u0438%u043B%u0438%20%AB%u0434%u043E%u0441%u0442%u0430%u043B%u0438%u2026%BB%22%2C%20%22%3D__%3D%22%2C%0A%09%09%22Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%2C%20%22%28-.-%29Zzz.%22%2C%0A%09%09%22Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%2C%20%22%28-_-%29Zzz.%22%2C%0A%09%09%22%u0431%u043E%u043B%u0435%u0437%u043D%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%3B%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28%u0425_%u0445%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28+_+%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28%u0445_%u0445%29%22%0A%09%5D%2C%0A%09%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%2C%0A%09%5B%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%28%5E_%7E%29%22%2C%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%28%5E_-%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28%3B_%3B%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28T_T%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28TT.TT%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28ToT%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22Q__Q%22%2C%0A%09%09%22%u0440%u0443%u043A%u043E%u043F%u043E%u0436%u0430%u0442%u0438%u0435%22%2C%20%22%3DX%3D%22%2C%0A%09%09%22%u043B%u044E%u0431%u043E%u0432%u044C%22%2C%20%22%5E%7D%7B%5E%22%2C%0A%09%09%22%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%2C%20%22%28%5E3%5E%29%22%0A%09%5D%2C%0A%09%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%2C%0A%09%5B%0A%09%09%22%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%2C%20%22%28%3D%5E.%5E%3D%29%22%2C%0A%09%09%22%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%2C%20%22%3D%5E_%5E%3D%22%2C%0A%09%09%22%u0441%u043E%u0432%u0430%22%2C%20%22%28O%2Co%29%22%2C%0A%09%09%22%u0441%u0432%u0438%u043D%u044C%u044F%22%2C%20%22%5E..%5E%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22///_%u0422%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22T_%5C%5C%5C%5C%5C%5C%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22///_%5E%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22%5E_%5C%5C%5C%5C%5C%5C%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%28%A8%5C%5C%28%u043E_%u041E%29/%A8%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28jIj%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28%3B%2C%3B%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28o%2C.%2CO%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22Y%28O%2C%2C%2C%2CO%29Y%22%2C%0A%09%09%22%u0436%u0438%u0432%u043E%u0439%20%u0441%u0440%u0435%u0434%u0438%20%u0437%u043E%u043C%u0431%u0438%22%2C%20%22%28x%28x_%28x_x%28%u041E_%u043E%29x_x%29_x%29x%29%22%2C%0A%09%09%22%u043F%u0440%u043E%u0441%u043D%u0443%u043B%u0441%u044F%20%u0432%20%u043C%u0435%u0442%u0440%u043E%22%2C%20%22%28-%28-_%28-_-%28%u041E_%u043E%29-_-%29_-%29-%29%22%2C%0A%09%09%22%u043E%u0432%u0435%u043D%2C%20%u0431%u0430%u0440%u0430%u0448%u043A%u0430%22%2C%20%22@-_-@%22%0A%09%5D%0A%5D%3B%0Afunction%20appendNode%28nodeName%2C%20parent%2C%20attrs%29%20%7B%0A%09var%20node%20%3D%20document.createElement%28nodeName%29%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20node.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09parent.appendChild%28node%29%3B%0A%09return%20node%3B%0A%7D%0Athis.insertText%20%3D%20function%28text%29%20%7B%0A%09const%20command%20%3D%20%22cmd_insertText%22%3B%0A%09var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%09if%20%28%21controller%20%7C%7C%20%21controller.isCommandEnabled%28command%29%29%20return%3B%0A%09var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%09params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.QueryInterface%28Ci.nsICommandController%29.doCommandWithParams%28command%2C%20params%29%3B%0A%7D%3B%0Avar%20popup%20%3D%20appendNode%28%22menupopup%22%2C%20this%2C%20%7B%0A%09position%3A%20%22after_start%22%2C%0A%09oncommand%3A%20%22event.stopPropagation%28%29%3B%20this.parentNode.insertText%28event.target.value%29%22%2C%0A%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%0A%7D%29%3B%0Afor%20%28var%20i%20%3D%200%2C%20l%20%3D%20data.length%3B%20i%20%3C%20l%3B%20i%20+%3D%202%29%20%7B%0A%09var%20menu%20%3D%20appendNode%28%22menu%22%2C%20popup%2C%20%7B%20label%3A%20data%5Bi%5D%20%7D%29%3B%0A%09var%20menupopup%20%3D%20appendNode%28%22menupopup%22%2C%20menu%2C%20%7B%7D%20%29%3B%0A%09var%20items%20%3D%20data%5Bi%20+%201%5D%3B%0A%09for%20%28var%20j%20%3D%200%2C%20s%20%3D%20items.length%3B%20j%20%3C%20s%3B%20j%20+%3D%202%29%20%7B%0A%09%09appendNode%28%22menuitem%22%2C%20menupopup%2C%20%7B%0A%09%09%09label%3A%20items%5Bj%20+%201%5D%20+%20%22%20%22%20+%20items%5Bj%5D%2C%0A%09%09%09value%3A%20items%5Bj%20+%201%5D%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.lastChild.openPopup%28this%29%3B%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 |
Dumby > 11-05-2013 13:57:21 |
okkamas_knife |
Dumby > 11-05-2013 15:40:35 |
Упс, виноват, не все обратные слэши заэкранировал. |
bunda1 > 11-05-2013 15:43:46 |
Dumby пишет
Не понял, где поправить. 11-05-2013 15:44:46 11-05-2013 15:58:33 |
MySh > 15-05-2013 20:28:57 |
Всем доброго времени суток! Нужна помощь с кнопками. После обновления Firefox до версии 21 перестали работать вот эти кнопки:
Они отвалились на самом деле ещё раньше, но тогда помогло включение параметра javascript.options.xml.chrome. Он и сейчас включён, но это больше не помогает. |
Pony_Smile_Pack > 15-05-2013 20:32:44 |
MySh пишет
|
adidharma > 15-05-2013 21:51:20 |
MySh пишет
|
bunda1 > 15-05-2013 21:52:46 |
MySh пишет
|
MySh > 15-05-2013 23:49:31 |
Pony_Smile_Pack
Спасибо, уже лучше, чем совсем ничего, но всё же не совсем то. Та кнопка позволяла выбрать один символ из выпадающего меню, и он появлялся на ней же, после чего его можно было вставлять много раз, не открывая выпадающего меню; с этой же кнопкой так не получается. К тому же у той кнопки меню не закрывалось, пока не щёлкнешь где-нибудь вне его (возможно, потому, что у меня установлено расширение Stay-Open Menu), а у этой оно всё равно закрывается. okkamas_knife
Это я уже понял. А как её вернуть? Может быть, есть какое-нибудь расширение для этого? adidharma
А вот это я не очень понял. По ссылке открывается GitHub, а в нём какие-то файлы. И что мне с ними делать? Это надо самому расширение собирать, что ли?
К сожалению, нормально не хочет работать. То есть, вроде работает, но в выпадающем меню какой-то ужас творится (какие-то сущности XML). Видимо, тоже уже не работает. bunda1
И эта, к сожалению, работать не хочет. |
adidharma > 16-05-2013 00:13:23 |
MySh пишет
Там нужно перейти по ссылке http://infocatcher.github.io/Custom_But … rtE4X.html и установить кнопку, тыцнул по "install" (если есть NoScript и/или Redirect Remover, то в первом надо разр. скрипты, а второе отключить). Потом вытащить установленную кнопку и кликая сначала на ней, а потом на требующей конвертации, сконвертировать (будет открыта вкладка с исправленным кодом инициализации). Page Encoding (Firefox 13+) и Вставка символа сконвертились без проблем. MySh пишет
В этом посте же написано, как исправить: №164 |
MySh > 16-05-2013 00:22:34 |
adidharma
Спасибо, буду разбираться.
Ещё раз спасибо, исправил, вроде работает. |
bunda1 > 16-05-2013 08:13:07 |
MySh пишет
Я сейчас проверил и кнопка работает даже на Nightly |
voqabuhe > 16-05-2013 10:48:16 |
bunda1 |
bunda1 > 16-05-2013 18:18:47 |
voqabuhe пишет
Обнови кнопку, эта ошибка исправлена. |
voqabuhe > 16-05-2013 21:47:49 |
bunda1 пишет
А, спасибо, проморгал обновление. |
MySh > 18-05-2013 00:05:49 |
bunda1
Я вспомнил, почему оно не хочет работать — это из-за того, что у меня Linux, да ещё с KDE. Для моей системы Anton сделал специальную версию, которая у меня и стояла. Как бы то ни было, кнопка помогла, всё заработало как нужно. Посмотрим, надолго ли. |
bunda1 > 18-05-2013 00:09:29 |
MySh |
MySh > 18-05-2013 01:32:32 |
bunda1 Хотелось бы, чтобы в этой кнопке в выпадающем меню отключённые расширения тоже показывались (только в более бледном виде). Можно ли такое сделать? Тогда будет полная замена старой версии. |
Чайник > 18-05-2013 19:52:56 |
Какой командой можно закрыть toolbar-context-menu? |
Dumby > 18-05-2013 20:17:22 |
Чайник пишет
Выделить код Код:addEventListener("popupshowing", function(e) e.preventDefault(), false, document.getElementById("toolbar-context-menu")); |
Чайник > 18-05-2013 21:05:57 |
Dumby Выделить код Код:// ------ Очистка searchbar по правому клику на иконке лупы var sbar = document.getElementById("searchbar"); var butt = document.getAnonymousElementByAttribute(sbar, "anonid", "search-go-button"); butt.setAttribute("onclick", "event.stopPropagation(); clear(event);"); clear = function (event) { // ------ Добавлен EventListener addEventListener("popupshowing", function(e) e.preventDefault(), false, document.getElementById("toolbar-context-menu")); // ------------------------------------- if ( event.button == 2 ) { sbar.value="" } else { sbar.handleSearchCommand(event).doCommand(); } } Кликаю по лупе и контекстное меню выскакивает как и без листенера. |
Dumby > 18-05-2013 21:43:18 |
Чайник скрытый текст Выделить код Код:// ------ Очистка searchbar по правому клику на иконке лупы var sbar = document.getElementById("searchbar"); var butt = document.getAnonymousElementByAttribute(sbar, "anonid", "search-go-button"); var attr = '\ if (event.button == 2) { event.preventDefault(); this.parentNode.parentNode.value = ""; }\ else handleSearchCommand(event);'; butt.setAttribute("onclick", attr); |
Чайник > 18-05-2013 22:32:12 |
Просто блеск!! |
vom > 29-05-2013 09:32:02 |
Подскажите пожалуйста код, чтобы сворачивать браузер сочетанием Shift + F1. |
Dumby > 29-05-2013 10:16:36 |
vom Выделить код Код:addEventListener("keypress", function(e) { if (e.keyCode == e.DOM_VK_F1 && e.shiftKey) minimize() }, false); |
vom > 29-05-2013 17:35:06 |
Dumby, okkamas_knife и ради интереса, возможно ли сделать такой же глобальный хот кей на свернуть/развернуть браузер? В фубаре, например, глобальные клавиши назначаются просто, может и в лисе можно? |
bunda1 > 29-05-2013 20:33:52 |
vom пишет
Свернуть можно если фокус на баузере но развернуть наверно нет. |
vom > 30-05-2013 13:31:07 |
bunda1 |
vom > 30-05-2013 15:26:46 |
okkamas_knife |
adidharma > 02-06-2013 08:30:37 |
Насчёт кнопок в UX: feas пишет
adidharma пишет
тут случайно обнаружил - если перетащить неработающие кнопки с панели навигации (не работают только те кнопки, у которых код в Инициализации, точнее код из Инициализации не работает, а из секции "Код" работает) на панель закладок, а потом назад, то они начинают работать. Однако после перезапуска UX опять перестают работать. |
Ferguss114 > 02-06-2013 12:34:21 |
Можно сделать, чтобы кнопка вызывала на searchbar-e то контекстное меню, что открывается у выделенного текста на странице? |
bunda1 > 02-06-2013 13:39:57 |
Ferguss114 пишет
|
Dumby > 02-06-2013 14:12:17 |
adidharma пишет
У меня так сработало скрытый текст Выделить код Код:var sel = '#nav-bar-customizationtarget > toolbarbutton[id^="custombuttons-button"]:not([initialized])'; Array.forEach(document.querySelectorAll(sel), btn => { try { btn.init() } catch(ex) {} }); |
bunda1 > 02-06-2013 14:42:01 |
Dumby |
Dumby > 02-06-2013 15:13:30 |
bunda1 пишет
Дело было так скрытый текст Забрал этот ![]() А там - похоже, что кнопки, вытащенные на #nav-bar, не хотят инициализироваться сами. Ну а код, будучи положен в Инициализацию кнопки, |
bunda1 > 02-06-2013 15:21:29 |
Dumby |
adidharma > 02-06-2013 20:31:10 |
Dumby пишет
Спасибо, это работает. 02-06-2013 20:41:43 скрытый текст Dumby пишет
Там, кстати, и установка кнопок на панель дополнений делается весьма костыльным методом - кнопки устанавливаются и их расположение настраивается в обычной Nightly, после чего папка custombuttons и файл localstore.rdf копируются в профиль UX. |
bunda1 > 03-06-2013 19:42:04 |
Ferguss114 пишет
Я продублировал это пункт меню в контекстном меню панели поиска и обнаружил что он не работает Выделить код Код:addEventListener("popupshowing", function(e) { var popup = e.originalTarget; var cloneSearchSelect = document.getElementById("context-searchselect").cloneNode(true); popup.appendChild( cloneSearchSelect ); }, false, document.getElementById("searchbar") ); |
Ferguss114 > 04-06-2013 00:12:14 |
Жаль... |
Zaycoff > 04-06-2013 02:46:54 |
Небольшой вопросик: я тут одну кнопочку делал и нужно мне, чтобы пользователь вводил некое число... вставляю значит такой код: а на выходе оно выдаёт число ровно в 10 раз большее чем введено (т.е. вместо 5 выдаёт 50)... пытаюсь его поделить на 10, раз уж его так колбасит, на выходе получаю в 10 раз меньший результат, т.е 0.5 Умножаю его ещё раз на 10 и получаю нужный, в итоге работает такой вот код: Только у меня так или так и задумано? |
Zaycoff > 04-06-2013 03:47:14 |
okkamas_knife |
Mishania > 06-06-2013 20:36:55 |
У меня установлено расширение Greasefire (поиск скриптов для открытой страницы на Userscripts.org), но в последнее время расширение работает из рук вон плохо. И вот я подумал, а нельзя-ли для этой цели использовать сделать кнопку? |
Pony_Smile_Pack > 06-06-2013 21:02:08 |
Mishania пишет
Добавить поиск по Userscripts.org с помощью Add to Search Bar :: Дополнения Firefox |
Mishania > 07-06-2013 05:39:25 |
Pony_Smile_Pack |
Mishania > 07-06-2013 07:46:58 |
okkamas_knife |
Zaycoff > 07-06-2013 08:24:16 |
Mishania Выделить код Код: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%3ESearch%20for%20Userscripts.org%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKwSURBVHjabJNJTBNRGID/mc5MQYVWVNCGTbEtNZGDBj1ogolEMR5UJA2LBmMoIokxERIj8ehJjx6MYIQoJgq4JIa6gEARkKJFTa2iFFtKWwp2oeDCzNQ+31DQCc5L/nmT/P/3749ACAFBECBxiEPFFds0Ws399DRVhtX2udc97ig0PmgOLBkIbOwjAR8uMRRdvXF7pqv/NfrqnEAOlxsdLas6j3Wk2AEpCRcbKvLydrdu1WUr0lXrITEhAZKUSkhQKvKwXiY2ppbDRzCcv29P/ZZsDaSqUkCJYVJGwKMnHTDlmWgTZ/CvjkW4sKTScP1WC+oZsKAxpwv5gyEUnAkj2xc70p88Y8Y2a8VBxT0gispOGa413UVDb23IMe6OwaEw+jTqQKMOF3pptqBSw7k74hLEPaDUOu0VmpFDV58ZCJIAkiDB5fUBz0eApmjQqbOgrqa69HhVbZO4jKUfmiBJBctysHJFPPiDYbA7J4DjeJDLaWAYGVAyErIy0uDs6RPH9OXVtULWYgfEmN3emJK8BlYrEsHl8cEvloX4ODnEyRlgKGZhV1iOhcz0VNixM7dOCCp2EBkeMF3u6DaNqDasg1U4CzlFxxSRKMyz8xjmsPAQwNmRsc2jxGPkR0esHp7n9RBFrYbyUi1DUzh1GujFG0UBQrNz8P7DR3j+9NklqTEK3VVkbNLkVNZc9AwNW5Hb60PT/gCamg6gEbsT3XvYjvIP6i9gu2ShhOWb+BvLD13O9o3azWrVdy4K3wKhv5HfWW1Q39BY19nechPbzQrVwX9bhU+iIqnyQMF+mPvJQr/FCsHwDJgG30ADhl8Y2wQ4jIUVkpdaZRnPcd6AfxomJ32AIhEwdvaC8XG7JLwwvmXPmVFn52Tu2lvQjN9Crn3M6bWY+6otr3oGpWCB/SPAAJaJRguGUxB0AAAAAElFTkSuQmCC%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Aurl%3DgetBrowser%28%29.currentURI.spec%3B%0Adomen%20%3D%20url.split%28/%5C/+/g%29%5B1%5D%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22https%3A//userscripts.org/scripts/search%3Fq%3D%22%20+%20domen%20+%22%26submit%3DSearch%22%29%3B%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 Выделить код Код:url=getBrowser().currentURI.spec; domen = url.split(/\/+/g)[1]; getBrowser (). selectedTab = getBrowser (). addTab ("https://userscripts.org/scripts/search?q=" + domen +"&submit=Search"); |
1fesFFFF > 17-06-2013 01:07:00 |
Есть ли кнопка, которая открывает окошко с сохранёнными паролями именно для того сайта, на котором она была нажата? |
Dumby > 17-06-2013 22:27:16 |
1fesFFFF пишет
Если нет и если правильно понял, то может новую, и во вкладку Код скрытый текст Выделить код Код:var str = ""; var loc = content.location; if (!loc.protocol.indexOf("http")) str = loc.host; var win = Services.wm.getMostRecentWindow("Toolkit:PasswordManager"); if (win) win.setFilter(str), win.focus(); else openDialog( "chrome://passwordmgr/content/passwordManager.xul", "_blank", "resizable,dialog=no,centerscreen", { filterString: str } ); |
1fesFFFF > 17-06-2013 23:23:50 |
Dumby |
Loom > 03-09-2013 17:15:27 |
Подскажите пожалуйста, как изменить сохранение изображений с двойного на одинарный клик ПКМ в этой кнопке Autocopy+3? И можно ли сделать выделение слова по одинарному ЛКМ, а абзаца по двойному? |
bunda1 > 04-09-2013 21:18:06 |
Loom пишет
Выделить код Код: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%3EAutocopy+3%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy+3%20%u043E%u0442%2005.08.2013.%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20%21cbu.getPrefs%28%22Autocopy%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28%20this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u0441%u0442%u0440%u043E%u043A%20%u0432%20%27about%3Aconfig%27%20%u0438%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20................................%0Aif%20%28%20%21cbu.isPref%28%22Autocopy.saveWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%5B%22Autocopy%22%2C%20%22Autocopy.reset%22%2C%20%22Autocopy.selectingTextBlink%22%2C%20%22Autocopy.selectWithDoubleClick%22%2C%0A%20%20%20%20%20%20%22Autocopy.copyWithDoubleClick%22%2C%20%22Autocopy.saveWithDoubleClick%22%5D.forEach%28function%28pref%29%20%7B%20cbu.setPrefs%28%20pref%2C%20false%20%29%20%7D%29%3B%0A%7D%3B%0A%0A%0A%20%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20................................%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A//%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0434%u0430%u043D%u043D%u044B%u043C%u0438%20%u0434%u043B%u044F%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20....%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0432%u044B%u0434%u0435%u043B%u044F%u0435%u0442%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%27%2C%20value%3A%20%27Autocopy.selectWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%0A%5D%3B%0A%0A//%20%u0446%u0438%u043A%u043B%20%u043F%u043E%20%u043E%u0447%u0435%u0440%u0435%u0434%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u0437%20%u043C%u0430%u0441%u0441%u0438%u0432%u0430%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%u044B%20%u043A%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20....%20%20%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20custombuttons.getPrefs%28%20m.value%20%29%20%29%3B%0A%20%20%20%20mItem.setAttribute%28%27onclick%27%2C%20%27custombuttons.setPrefs%28%22%27%20+%20m.value%20+%20%27%22%2C%20%21custombuttons.getPrefs%28%22%27%20+%20m.value%20+%20%27%22%29%29%27%29%3B%20%20%0A%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0AaddDestructor%28function%28%29%20%7B%20menuPopup.parentNode.removeChild%28%20menuPopup%20%29%20%7D%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%0Avar%20cbContextPopup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0Avar%20clone%20%3D%20cbContextPopup.cloneNode%28true%29%3B%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29%22%29%3B%0Avar%20menu%20%3D%20document.createElement%28%22menu%22%29%3B%0Amenu.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0Amenu.appendChild%28%20clone%20%29%3B%0AmenuPopup.appendChild%28%20menu%20%29%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20button%20%3D%20this%2C%20s%20%3D%20%22Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%20%20%0A%20%20%20%20button.image%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%20%20%0A%0A%0A%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20turnOffButton%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20false%20%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28%20turnOffButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20return%3B%0A%0A%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%29%20var%20lastSelection%20%3D%20getBrowserSelection%28%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%21%3D%3D%20%27mouseup%27%20%29%20return%3B%20%0A%20%20%20%0A%20%20%20var%20selection%20%3D%20getBrowserSelection%28%29%3B%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy%22%29%20%26%26%20selection%20%26%26%20selection%20%21%3D%3D%20lastSelection%20%29%20%7B%0A%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20%20%20%20%20%20if%20%28%20%21cbu.getPrefs%28%22Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20window.content.focus%28%29%20%7D%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0AaddEventListener%28%22mousedown%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20................................%0Afunction%20middleMousePaste%28e%29%20%7B%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20cbu.getPrefs%28%27middlemouse.paste%27%29%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.commandDispatcher.getControllerForCommand%28%22cmd_paste%22%29%20%29%20%7B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20commandDispatcher%20%3D%20%28%20this.document%20%7C%7C%20document%20%29.commandDispatcher%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20controller%20%3D%20commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20gClipboard.read%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%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%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%20%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20................................%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%20%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20content.document%3B%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28%20doc%2C%20%28%20%28doc.location.protocol%29.slice%280%2C4%29%20%3D%3D%20%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%29%20%7B%20%0A%20%20%20%20%20%20%20%20gClipboard.write%28%20content.location%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20%20%20%20%20%20document.getElementById%28%22identity-box%22%29.setAttribute%28%22style%22%2C%20%22background%3A%20red%3B%22%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20document.getElementById%28%22identity-box%22%29.removeAttribute%28%22style%22%29%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20true%2C%20document.getElementById%28%22identity-box%22%29%20%29%3B%0A%0A%20%20%20%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Afunction%20handleDblClick%28e%29%20%7B%0A%0A%20%20var%20node%20%3D%20e.target%3B%0A%20%20var%20editor%20%3D%20node.editor%3B%0A%20%20%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%20....%0A%20%20if%20%28%20e.button%20%3D%3D%200%20%26%26%20custombuttons.getPrefs%28%22Autocopy.selectWithDoubleClick%22%29%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20if%20%28%20/input%7Ctextbox%7Ctextarea/.test%28%20node.localName%20%29%20%29%20%21editor%20%3F%20node.select%28%29%20%3A%20editor.selectAll%28%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.copyWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%21editor%20%3F%20goDoCommand%28%22cmd_copy%22%29%20%3A%20editor.copy%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28%20node.textbox%20%7C%7C%20node%20%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28%20box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20catch%28e%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20....%20%20%20%20%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.saveWithDoubleClick%22%29%20%26%26%20e.target.localName%20%3D%3D%20%27img%27%29%20%7B%0A%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20saveImageURL%28%20gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%2020%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%7D%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043E%u043A%u043E%u043D%20%u0430%u0434%u0440%u0435%u0441%u0430%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%20%u0432%20%u043A%u043E%u0434%u0435%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u043C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20................................%0Avar%20observer%20%3D%20%7B%20%20%0A%20%20%20%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20%20%20var%20href%20%3D%20doc.location.href%3B%20%0A%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%27%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%20%u0438%u043B%u0438%20%27%u0411%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0443%27%20%u0434%u0432%u043E%u0439%u043D%u044B%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u043D%u0435%u0439%20....%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20/pageInfo.xul%7Cplaces.xul/.test%28%20href%20%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20function%20close%28%29%20%7B%20this.close%28%29%20%7D%2C%20true%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%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%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%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20close%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0430%20Custom%20Buttons%20....%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20href.substring%280%2C%2041%29%20%3D%3D%20%22chrome%3A//custombuttons/content/editor.xul%22%20%29%20%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20Services.obs.removeObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%20%7D%29%3B%20%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20+%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 04-09-2013 21:18:51 Loom пишет
Я не знаю как |
Loom > 06-09-2013 20:56:59 |
bunda1 bunda1 пишет
Жаль конечно, уменьшение кликов очень благоприятно отражается на удобстве. А не знаете ли, можно сделать кнопку для зумирования изображений колесиком? Т.е. открываешь в отдельной вкладке ссылку *.png, *.jpeg, *.gif, и как бы зажимается Ctrl. Вариант с зажатием ПКМ в FireGestures не подходит, там жесты, к которым слишком привык за множество лет. |
bunda1 > 06-09-2013 21:18:35 |
Loom пишет
Завтра попробую сделать. |
rgdru > 09-09-2013 11:51:04 |
В кнопке Compact Menu( Firefox 4 + ) не работает пункт меню Новая приватная вкладка |
Dumby > 09-09-2013 22:29:28 |
rgdru скрытый текст Выделить код Код: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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%0A%09nodes%20%3D%20%5B%0A%09%09%22file-menu%22%2C%0A%09%09%22edit-menu%22%2C%0A%09%09%22view-menu%22%2C%0A%09%09%22bookmarksMenu%22%2C%0A%09%09%22history-menu%22%2C%0A%09%09%22tools-menu%22%2C%0A%09%09%22helpMenu%22%0A%0A%09%5D.map%28function%28id%29%20document.getElementById%28id%29%29%2C%0A%09menubar%20%3D%20true%2C%0A%09parent%20%3D%20nodes%5B0%5D.parentNode%2C%0A%09popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%2C%0A%09popupAttrs%20%3D%20%7B%0A%09%09id%3A%20%22Compact-Menu-menupopup%22%2C%0A%09%09position%3A%20%22after_start%22%2C%0A%09%09context%3A%20%22toolbar-context-menu%22%20//%20%22%22%0A%09%7D%2C%0A%09cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%27%5C%0A%09%09%23appmenu-button%2C%20.titlebar-placeholder%5Btype%3D%22appmenu-button%22%5D%25menubar%25%20%7B%5Cn%5C%0A%09%09%09display%3A%20none%20%21important%3B%5Cn%5C%0A%09%09%7D%5C%0A%09%27.replace%28/%5E%28%5Ct%5Ct%29/gm%2C%20%22%22%29.replace%28%22%25menubar%25%22%2C%20menubar%20%3F%20%22%22%20%3A%20%22%2C%20%23toolbar-menubar%22%29%29%29%2C%0A%09sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%2C%0A%09sheetType%20%3D%20sss.USER_SHEET%3B%0A%09%0Afor%20%28var%20attr%20in%20popupAttrs%29%20popup.setAttribute%28attr%2C%20popupAttrs%5Battr%5D%29%3B%0Anodes.forEach%28function%28node%29%20popup.appendChild%28node%29%29%3B%0AaddDestructor%28function%28%29%20nodes.forEach%28function%28node%29%20parent.appendChild%28node%29%29%29%3B%0Aif%20%28menubar%20%26%26%20%21parent.childNodes.length%29%20%7B%0A%09const%20dummy%20%3D%20parent.appendChild%28document.createElement%28%22menu%22%29%29%3B%0A%09addDestructor%28function%28%29%20parent.removeChild%28dummy%29%29%3B%0A%7D%0Asss.loadAndRegisterSheet%28cssURI%2C%20sheetType%29%3B%0AaddDestructor%28function%28%29%20sss.unregisterSheet%28cssURI%2C%20sheetType%29%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%20%28%21e.button%20%26%26%20e.target%20%3D%3D%20this%29%20popup.openPopup%28this%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28%21event.target%29%20this.click%28%29%3B%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 |
rgdru > 10-09-2013 00:10:01 |
Dumby |
Чайник > 14-09-2013 18:12:41 |
У меня в кнопке выполняется команда textarea.select() Или это дело только у меня? |
bunda1 > 14-09-2013 21:00:29 |
Чайник пишет
Я тоже такое наблюдаю, может добавь за; |
Dumby > 14-09-2013 21:46:22 |
Наверно из-за этого скрытый текст Выделить код Код:data:image/png;base64,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 Ещё вот так не прокручивает скрытый текст Выделить код Код:textarea.QueryInterface(Ci.nsIDOMNSEditableElement).editor.selectAll(); textarea.focus(); |
Чайник > 16-09-2013 18:27:52 |
bunda1 и Dumby |
Vladimir_S > 06-10-2013 17:35:41 |
Уважаемые программисты, нельзя ли соорудить кнопку (точнее, две: "вперед" и "назад"), имитирующую работу вот этого расширения? |
Dumby > 06-10-2013 21:15:42 |
Vladimir_S А пока, для проверки, можешь попробовать положить в начало Инициализации скрытый текст Выделить код Код:RewindForwardService.getHistoryEntryAt = function (aIndex) { var entry = gBrowser.sessionHistory.getEntryAtIndex(aIndex, false); var info = { URI : null, referrerURI : null }; if (entry) { entry = entry/*.QueryInterface(Components.interfaces.nsIHistoryEntry)*/ .QueryInterface(Components.interfaces.nsISHEntry); if (entry.URI) info.URI = entry.URI; if (entry.referrerURI) info.referrerURI = entry.referrerURI; } return info; } |
Vladimir_S > 06-10-2013 21:22:51 |
Dumby пишет
А пёс его знает из-за чего! Отвалилось в Авроре (26.0а2). До этого пару раз обращался к Hydrolizer'у, он мне это расширение правил, а вот сейчас, похоже, ушел человек совсем. Dumby пишет
А с этого места, если не трудно, помедленнее, поподробнее и попошаговее. |
feas > 06-10-2013 22:16:14 |
Vladimir_S пишет
1) установить рашсирение CB |
Vladimir_S > 07-10-2013 08:36:24 |
feas, благодарю. feas пишет
Имеется. feas пишет
Вечером на домашнем компе попробую. Спасибо. |
Vladimir_S > 07-10-2013 11:15:01 |
Да, только вот что: самО СВ-то под Аврору и выше допилили? Помнится, когда Аврора вышла, так оно отвалилось. |
wolwerine > 07-10-2013 11:57:18 |
Vladimir_S пишет
Custom Buttons 0.0.5.7pre1 |
Vladimir_S > 07-10-2013 19:05:47 |
Dumby, feas, wolwerine, друзья, коллеги - огромнейшее вам спасибо! Всё получилось, любимый аддон вновь заработал, СВ тоже, опять я дома на Аврору перешел, как привык - класс! Осталось только с менеджером загрузок разобраться - предпочитаю старый, ну да ладно, буду к новому привыкать, либо расширение на досуге поищу: ведь не один я, поди, такой реторгад. feas пишет
Ну а у меня скрыта панель закладок, куда кнопку и всунул. Dumby пишет
- ну да не обязательно, и так сойдёт. |
feas > 07-10-2013 19:24:49 |
Vladimir_S пишет
|
Vladimir_S > 07-10-2013 19:47:46 |
feas пишет
Да ну - так даже не интересно! |
Uxapb > 22-10-2013 14:22:01 |
bunda1, что на что нужно поменять в вашей кнопке Save, чтобы файл сохранялся не на рабочий стол и каждый день новый, а дописывался уже имеющийся и находящийся на постоянке в определенном мной месте. ps Дабы отказаться от Save Text to File |
Uxapb > 22-10-2013 15:53:59 |
okkamas_knife пишет
Работает, только что-то с кодировкой, кирилица корябушками ( |
Uxapb > 22-10-2013 18:23:13 |
okkamas_knife пишет
файл создан в UTF-8 |
bunda1 > 22-10-2013 19:32:09 |
Uxapb пишет
Есть другая кнопка которая делает то что ты просишь, Stf+: Выделить код Код: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%3EStf+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFsAAABYAAAAFwAAAACISi/ml2RK9ZdjSfWUYEX1jlpA9ZdjSfWXY0r1l2NL9ZdjS/WXY0v1l2NL9ZdjS/WXY0v1lWFI9J5mSvljMR7lAAAAPgIBAQDBhmP/6cOL/+Kxcf/Fo3L/kHdV/7GNXf/esHL/3q5t/9ysbP/drWz/3a1t/92tbf/erm7/3bBz/vLKlP+FUTrtAAAAPwMCAgC4f1791qtt/tOkZv7e1Mn+jIiE/lZMPv6djHX+4860/uvWu/7p1Ln+6tS4/uvVuv7nz7L+yphV/eK1fv9/TTjsAAAAPwMCAgC5gF//3LR6/9ixff//////29nU/5CRlP9SU1X/paGd//Xr4P//8OP/+uzc//zs2v/57uH/0aRm/ue+iv+ATTftAAAAPwMCAgC5gF//4LiC/9myfv///v3/8eXW/9LPy/+Li4z/RkI7/5OIef/l077/9N/I//Texv/36dn/06Zs/urBkP9/TDbtAAAAPwMCAgC5gGD/5sab/9u1hP////7/+vPp//Pp3f/Iwbr/foCE/0VERP+Lg3r/4NG///rm0P/369v/1Klx/uvFlv9/TDXtAAAAPwMCAgC7gmP/7dS1/926jf/+/Pv/9uzg//jt4P/06dv/u7m3/5l2QP90ShH/fXVv/+DPvP/57d3/1ax0/u7JnP9/SzTtAAAAPwMCAgC8hWj/8Nu//967j////////////////v//////9vTz/9+8gP/GgRL/ckwc/4eBff/n3tH/2bB5/u/Opf9/TDbtAAAAPwMCAgC9hmr/9OPM/9qzgv/p07T/6tO2/+rTtf/p0rT/7de7/97GqP/SoVH/x4IT/2xMJP+Admr/zKRw/vXUrf9/TTjtAAAAPwMCAgC+iW7/9ufT/+rRtP/lyKX/5Mim/+THpv/kx6T/4sWh/+rLp/+9pIf/vZJP/8WCGf9iPhH/fW9c/unNrP+CTzrtAAAAPwMCAgC/inD/+OrX//Ddyv/559X//OrV//ro0//659L/+ufS//zo0v/m1cL/lod4/7iPT//Ihx//Y0ck/pSLg/95STPtAAAAPwICAgC/i3L/+Ova//fk0P/Ct6v/o52W/6uknP+qo5v/q6Sc/6qjm/+1raT/rqij/2ZhX/+wj1n/w4EZ/m1QLv89JB/zAAAASgEBAQDAjnb9+O3e//rn1P+jnpn/lZib/6eoqf+rrK7/srK0/7y9vv+0trj/oaGi/6Cho/9eXF7/w59n/8qFF/9KKgP9AAAAhQIBAAW+h2z/+PLk/P/15fusqKP+oaKi/7Kysf+3trb/vby8/8nJyf+3t7f/cnFx/6Wlpf+fmpL+dXVx+66UYfyuhUP/Ligj1QAAAFqBPSKJ2KWK//PNt/+klo78oKKk+7Cvr/u1tLX7vLu7+8jIyPu3t7b7dHNz+52ho/vHrJz+y6WP/51vX/61jVvuxo0s/z0nCsERBgMDKw8ERh4AAEFjWFS9sLKz/62srfyzs7T/urm5/8HCwv/AwMD/sbGx/cDDw/9GNC7SKgsAaSgNAkMwKSQtq4VIsks0EmcBAQACAQEBAgAAAAAjIyNKOjo6fjU1NXM2NjZ1NjY2dTY2NnU3Nzd1Ozs7czw8PH0UFBQ4AAAAAAEBAQEAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.leftclick%20%3D%20function%28%29%20%7B%20%20//%20%u041B%u041A%u041C%20%0A%20%20%20%20%20if%20%28%20pathToFile%28%29%20%29%20saveSelectionToTxt%28%29%3B%0A%7D%3B%0A%0Athis.leftDclick%20%3D%20function%28%29%20%7B%20%20//%20%u0434%u0432%u043E%u0439%u043D%u043E%u0439%20%u041B%u041A%u041C%20%0A%20%20%20%20%20saveSelectionToTxt%28%29%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0A%0A%0A%0A/*%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%20................................*/%0Afunction%20saveSelectionToTxt%28%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0451%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20....%0A%20%20%20%20%20var%20all%20%3D%20%21getSelect%28%29%3B%0A%20%20%20%20%20if%20%28%20all%20%29%20document.getElementById%28%22cmd_selectAll%22%29.doCommand%28%29%3B%20%0A%0A%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20if%20%28%20%21sel%20%29%20return%3B%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u043A%u043E%u0434%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20UTF-8%20....%0A%20%20%20%20%20var%20converter%20%3D%20Components.classes%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20%20converter.charset%20%3D%20%22utf-8%22%20%3B%0A%20%20%20%20%20var%20text%20%3D%20converter.ConvertFromUnicode%28%20sel%20%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u044B%u0434%u0443%u0449%u0438%u0439%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u044F%20%u0438%u0437%20%27about%3Aconfig%27%20%u0438%u043B%u0438%20%u0434%u0438%u0441%u043A%20C%3A%20....%0A%20%20%20%20%20var%20pathToFile%20%3D%20Application.prefs.getValue%28%22CB.Stf.pathToSave%22%2C%200%29%0A%20%20%20%20%20var%20pathToFile%20%3D%20%28%20pathToFile%20%3D%3D%200%20%29%20%3F%20%28%20%22C%3A%5C%5C%22%20+%20getDocTitle%28%29%20%29%20%3A%20pathToFile%3B%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20var%20file%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28%20pathToFile%20+%20%22.txt%22%20%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u043A%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u044E%u0449%u0435%u043C%u0443%20%u0438%u0437%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u0432%u0440%u0435%u043C%u0435%u043D%u0438%20%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20....%0A%20%20%20%20%20var%20line%20%3D%20%22%20%20......................................................%22%0A%20%20%20%20%20var%20text%20%3D%20file.exists%28%29%3F%20%28%20%22%5Cn%22%20+%20%22%5Cn%22%20+%20%22%5Cn%22%20+%20getTime%28%29%20+%20line%20+%20%22%5Cn%22%20+%20text%20%29%3A%20text%3B%0A%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0442%u0435%u0441%u0442%u043E%u0432%u044B%u0439%20%u0444%u0430%u0439%u043B%20%u0435%u0441%u043B%u0438%20%u043E%u043D%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20%u0438%u043D%u0430%u0447%u0435%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0444%u0430%u0439%u043B%20....%0A%20%20%20%20%20var%20foStream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%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%20%20%20%20.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%20%20%20%20%20%28%20%21file.exists%28%29%20%29%3F%20foStream.init%28file%2C%200x02%7C0x08%7C0x20%2C%200666%2C%200%29%3A%20foStream.init%28file%2C%200x02%20%7C%200x10%2C%200664%2C%200%29%3B%0A%20%20%20%20%20foStream.write%28text%2C%20text.length%29%3B%0A%20%20%20%20%20foStream.close%28%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20....%0A%20%20%20%20%20var%20alertSlide%20%3D%20Cc%5B%22@mozilla.org/embedcomp/window-watcher%3B1%22%5D.getService%28Components.interfaces.nsIWindowWatcher%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.openWindow%28null%2C%20%22chrome%3A//global/content/alerts/alert.xul%22%2C%20%22_blank%22%2C%20%22chrome%2Ctitlebar%3Dno%2Cpopup%3Dyes%22%2C%20null%29%3B%0A%20%20%20%20%20alertSlide.arguments%20%3D%20%5Bself.image%2C%20self.label%2C%20%22%u0422%u0435%u043A%u0441%u0442%20%u0431%u044B%u043B%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%22%2C%20null%2C%20false%2C%20%22%22%5D%3B%0A%20%20%20%20%20alertSlide.setTimeout%28function%28%29%20%7B%20alertSlide.close%28%29%20%7D%2C%201500%29%3B%0A%0A%20%20%20%20%20if%20%28%20all%20%29%20goDoCommand%28%22cmd_selectNone%22%29%3B%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0430%20%u043F%u0443%u0442%u0438%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%20%u0434%u043B%u044F%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u0444%u0430%u0439%u043B%u0430%2C%20%u0438%u043D%u0430%u0447%u0435%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20................................%0Afunction%20pathToFile%28%29%20%7B%0A%0A%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u044B%u0434%u0443%u0449%u0438%u0439%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u044F%20%u0438%u0437%20%27about%3Aconfig%27%20%u0438%u043B%u0438%20%u0434%u0438%u0441%u043A%20C%3A%20....%0A%20%20%20%20%20var%20pathToFile%20%3D%20Application.prefs.getValue%28%22CB.Stf.pathToSave%22%2C%200%29%3B%0A%20%20%20%20%20var%20pathToFile%20%3D%20%28%20pathToFile%20%3D%3D%200%20%29%3F%20%22C%3A%5C%5C%22%3A%20pathToFile%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0444%u0430%u0439%u043B%u0430%20%u0438%u0437%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u0432%u0440%u0435%u043C%u0435%u043D%u0438%20....%0A%20%20%20%20%20var%20fileTitle%20%3D%20getDocTitle%28%29%20+%20%27%20%20%27%20+%20getTime%28%29%3B%0A%0A%20%20%20%20%20//%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u044F%20%u0438%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438%20%u043F%u0443%u0442%u0438%20....%0A%20%20%20%20%20var%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20fp.init%28window%2C%20%22%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u043F%u0443%u0442%u044C%20%u043A%20%u0444%u0430%u0439%u043B%u0443%20%u0438%20%u0435%u0433%u043E%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%21%22%2C%20fp.modeSave%29%3B%0A%20%20%20%20%20fp.appendFilters%28%20fp.filterText%20%29%3B%0A%20%20%20%20%20fp.defaultString%20%3D%20fileTitle%3B%0A%20%20%20%20%20dir.initWithPath%28%20pathToFile%20%29%3B%0A%20%20%20%20%20fp.displayDirectory%20%3D%20dir%3B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20fp.show%28%29%20%3D%3D%20fp.returnCancel%20%29%20return%20false%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0437%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u043F%u0443%u0442%u044C%20%u043A%20%u0444%u0430%u0439%u043B%u0443%20%u0432%20%27about%3Aconfig%27%20....%0A%20%20%20%20%20Application.prefs.setValue%28%22CB.Stf.pathToSave%22%2C%20fp.file.path%20%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20return%20true%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0435%u0435%20%u0432%u0440%u0435%u043C%u044F%20................................%0Afunction%20getTime%28%29%20%7B%0A%20%20%20%20%20var%20now%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20%20return%20now.toLocaleFormat%28%22%25H%3A%25M%3A%25S%22%29%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043E%u043A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%20%u0443%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0435%u0442%0A%20%20%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u043E%u0442%u043E%u043A%u043E%u043B%u0430%20%u0435%u0441%u043B%u0438%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u043D%u0435%u0442%20................................*/%0Afunction%20getDocTitle%28%29%20%7B%0A%20%20%20%20var%20protocol%20%3D%20content.document.location.protocol%3B%0A%20%20%20%20if%20%28protocol%20%3D%3D%20%22chrome%3A%22%29%20return%20%22chrome%22%3B%0A%20%20%20%20if%20%28protocol%20%3D%3D%20%22data%3A%22%29%20return%20%22data%22%3B%0A%20%20%20%20var%20docTitle%20%3D%20content.document.title%20%7C%7C%20content.document.domain%20%7C%7C%20gBrowser.mCurrentTab.label%3B%0A%20%20%20%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0435%u0434%u043E%u043F%u0443%u0441%u0442%u0438%u043C%u044B%u0435%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20....%20%0A%20%20%20%20var%20docTitle%20%3D%20docTitle.replace%28/%5B%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%22%20%22%29%0A%20%20%20%20%09%09%09%20%20%20.replace%28/%3A/g%2C%20%22%u05C3%22%29%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.replace%28/%5Cs%5Cs+/g%2C%20%22%20%22%29%3B%20%0A%20%20%20%20return%20docTitle%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20%20%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20................................*/%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%20%20%20%20var%20anchor%20%3D%20%28selection.anchorNode%20%21%3D%3D%20null%29%3F%20selection.anchorNode%3A%20false%3B%0A%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%27PRE%27%20....%0A%20%20%20%20if%20%28%20anchor%20%26%26%20anchor.parentNode.tagName%20%3D%3D%20%27PRE%27%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20var%20node%20%3D%20selection.focusNode%3B%0A%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20selection.anchorOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20endPos%20%3D%20selection.focusOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20node.data.substring%28startPos%2C%20endPos%29%3B%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0438%u0441%u043F%u0440%u0430%u0432%u043B%u044F%u0435%u043C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20%u043F%u0435%u0440%u0435%u043D%u043E%u0441%u043E%u043C%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u043E%u0432%u0443%u044E%20%u0441%u0442%u0440%u043E%u043A%u0443%20%u0432%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u043C%20win%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0435%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%21%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000D%5Cu000D%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Stf%22%20+%22%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%u041B%3A%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%22%20+%22%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%u0414%u041B%3A%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043D%u0430%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435%22%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 Л: Сохранить выделенный текст или весь текст на странице как txt файл |
Uxapb > 22-10-2013 22:31:37 |
bunda1 пишет
Да, спасибо, почти то, что нужно, но есть некоторые минусы для меня: это еще одна кнопка плюсом к Save, отсутствие пункта в контекстном меню, текст вставляется без титла и урла, целевой файл не прописан жестко под даблклик, из всплывающего окна не открыть файл. |
Pony_Smile_Pack > 23-10-2013 02:54:05 |
Uxapb пишет
|
Uxapb > 23-10-2013 06:37:14 |
Uxapb пишет
Pony_Smile_Pack пишет
Функционал схож. Но хотелось отказаться от аддона в пользу кнопки. Тем более, что разделение по вариантам сохранения при различных кликах юзабельнее. |
bunda1 > 23-10-2013 19:41:25 |
Uxapb пишет
Ну тогда поменяй: Выделить код Код:// путь к файлу и название файла.... var file = directoryService.get("Desk", Components.interfaces.nsIFile); file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt"); на: Выделить код Код:// путь к файлу и название файла.... var pathToFile = "C:\\qwerty"; file.initWithPath( pathToFile + ".txt" ); |
1fesFFFF > 23-10-2013 20:51:23 |
1) В 25 скрытый текст Выделить код Код:var findToolbar = document.getElementById("FindToolbar"); if (typeof gFindBar == "object") { //Bon Echo 2.0a3 if(findToolbar.hidden) { gFindBar.onFindCommand();; this.checked=true; } else { gFindBar.close(); this.checked=false; } // End if (findToolbar.hidden) } else { if(findToolbar.hidden){ onFindCmd(); } else { closeFindBar(); } // End if (findToolbar.hidden) } // End if (typeof gFindBar == "object") Можете поправить её? И ещё: |
Uxapb > 23-10-2013 21:27:46 |
bunda1 пишет
Спасибо большое, именно так и хотел. |
bunda1 > 23-10-2013 22:37:26 |
Uxapb пишет
Если я правильно понял: return docTitle.substring(0, 50); |
Uxapb > 23-10-2013 23:07:12 |
bunda1 пишет
Да, именно это значение. Еще раз спасибо, что не оставили без внимания мои маленькие прихоти. |
Dumby > 26-10-2013 11:28:09 |
1fesFFFF пишет
Там старого findbar'а больше нет. Теперь для каждого таба свой. скрытый текст Checked-индикация, если нужна, то можешь попробовать вариант (вкладка Инициализация) скрытый текст Выделить код Код:const observer = new MutationObserver(check), optChildList = { childList: true }, optAttributeHidden = { attributes: true, attributeFilter: ["hidden"] }; function check(mut) { const childList = mut && mut[0].type == "childList", findbar = childList && mut[0].addedNodes.length && mut[0].addedNodes[0].nodeName == "findbar"; if (childList && !findbar) return; childList && findbar && obs(true); self.checked = !gFindBar.hidden; } function obs(noCheck) { const tab = gBrowser.selectedTab, findbar = tab._findBar, node = findbar || tab.linkedBrowser.parentNode.parentNode, options = findbar ? optAttributeHidden : optChildList; observer.disconnect(); observer.observe(node, options); if (noCheck != true) findbar ? check() : self.checked = false; } obs(); addEventListener("TabSelect", obs, false, gBrowser.tabContainer); addDestructor(function() observer.disconnect()); |
1fesFFFF > 27-10-2013 17:41:51 |
Dumby |
Dеnis > 27-10-2013 21:08:21 |
Кнопка запуска внешнего приложения Выделить код Код:startProcess("C:\\Program Files (x86)\\SMPlayer\\smplayer.exe",["%u"]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Файл не найден", path); }; А как передать в аргументе текущий адрес страницы? Я пробовал %u, но не работает. Я хочу, чтобы на ютубе я нажал на кнопку и открылся SMPlayer с текущей страницей, например Выделить код Код:C:\Program Files (x86)\SMPlayer\smplayer.exe http://www.youtube.com/watch?v=QJO3ROT-A4E |
villa7 > 27-10-2013 22:51:19 |
Dеnis
|
by-psi-x > 03-11-2013 00:36:25 |
есть рабочая кнопка для отключения плагинов? Вот я попробовал Toggle Java(Firefox) по ссылке https://forum.mozilla-russia.org/viewtopic.php?pid=573843#p573843 - НЕРАБОТАЕТ |
Pony_Smile_Pack > 03-11-2013 00:44:34 |
by-psi-x пишет
Firefox 26 Бета | Форум Mozilla Россия
|
dedmazai1870 > 03-11-2013 10:39:41 |
bunda1 |
by-psi-x > 04-11-2013 00:35:11 |
т.е. кнопка отключения/включения плагинов больше работать не будет? Можно удалять? |
bunda1 > 05-11-2013 23:42:05 |
dedmazai1870 пишет
А какую нужно? |
feas > 05-11-2013 23:50:54 |
dedmazai1870 пишет
предлагай |
bunda1 > 06-11-2013 00:14:54 |
okkamas_knife 06-11-2013 00:17:33 |
dedmazai1870 > 06-11-2013 03:55:50 |
feas пишет
JavaScript включён |
villa7 > 06-11-2013 05:07:17 |
dedmazai1870 |
dedmazai1870 > 06-11-2013 11:08:14 |
villa7 |
villa7 > 06-11-2013 12:06:49 |
dedmazai1870 |
dedmazai1870 > 06-11-2013 13:24:18 |
Как меня ломало писать длинный пост! P.S. А в Speed Dial теперь так (гифка примерно 30 сек.). ![]() P.S. Сейчас нашёл Online Base64 Image Encoder/Decoder. Вижу, иконка одна. Вопросы остаются: как она меняет свой цвет в кнопке? |
dedmazai1870 > 06-11-2013 16:13:15 |
okkamas_knife |
bunda1 > 06-11-2013 21:25:55 |
dedmazai1870 пишет
Замени в кнопке: Выделить код Код:function toggleImage() { self.style.filter = pref.value ? '' : 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")'; }; на: Выделить код Код:function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); icon.src = pref.value ? 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAACQWzEUkFsxhJBbMaOQWzG2kFsxyZBbMdqQWzHrkFsx+pVhOf+GckP/TodG/zqIQP8+fDX4VHEyYf///wD///8AlF8zaLiQbf/WuqP/38az/+fUw//u39P/9eri//v07/+hyab/aLJ4/4PHk/9+wJf/gMSR/1ajY/orgDKG////AJlkNonHpIX////////////////////////+/P/a6Nj/crqC/4/Qnf8/plz/9PT0/0+5ev+Ky5v/V6Vl9yqAMjmeaTlXnmk59rSFWf/ZpXv/2J5v/9ebav/YlmP/dqdw/4nPlv9zx4P/RK9g//Hx8f/y8vL/Trl6/4DFkv8vhTjPpG88FKRvPKvVroz//fDl//fHov/3z63/+dW1/2yxfv+X16H/fMuI/2K/fv/z8/P/8fHx//X19f9OqmX/Nok/9v///wCqdUAot4ZW//7+/f/63sL/+ty///nbwP+HvI7/qd6z/47SmP9sunz/+fn5//b29v9ivoX/hsuV/zyOR8////8AsXtDHrmGUv/+/Pn/+dy///jbv//43MD/29O1/6HTrv+95cP/dryB//////+Lxpf/mdak/2i0ePdBkk45////ALeCRwm5hUv//vv3//ncwf/43L//+Ny///jbwP+yyqP/p9Wx/7vkw/+t1LL/p92x/32+iP9Qnl+G////AP///wD///8AvYhL+fz28P/538f/+dy9//rcv//628H/+t3D/9zVtf+IvZD/b7SC/4C8j/+rlFr/vYhLD////wD///8A////AMSOTtr159j/+uXS//navP/527z/+tu///rdwf/63cH/+d3E//vhyP///fv/yJRX/8SOThL///8A////AP///wDKlFK78NnB//vt4f/52sD/+dzC//nexf/64Mf/+uLK//rizf/65dD///79/8uPWv/KlFLxypRSRf///wD///8A0JpVpO3Qsv//9vD/+uHK//vjzP/749D/++bT//vp1f/86dj//Orb/////f/SnXH/7tnB/9CaVeX///8A////ANWfWJLryqX///37//3p1f/969j//erb//3t3//98OL//fHk//zw5P//////4KBw///7+f/fuIf/////AP///wDapFuE68aa///////87+L//fDn//3x6//99e7//fjx//369////Pr///////779//02sD/2qRb6v///wD///8A3qhdberAjP///////////////////////fn0//vz6v/469n/+ObT//Xfxv/py6b/3qhd7d6oXV3///8A////AOKsXzbirF/G6ryB/+i3d//msm3/5LBo/+KsX/DirF/j4qxfz+KsX8zirF+74qxfqOKsX0virF8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' : 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAACQWzEUkFsxhJBbMaOQWzG2kFsxyZBbMdqQWzHrkFsx+pVhOf+aaUH/ZGaG/xhNrv8FQrv/B0a16QNFuHr///8AlF8zaLiQbf/WuqP/38az/+fUw//u39P/9eri//v07//9+vb/jKrg/yhmyf8hd+b/BXnq/wFk3f8ETb38A0W4eplkNonHpIX////////////////////////+/P/++/f//vfx/x9Yv/9jnfT/GH///wB2+P8Adu7/A2jh/wNFueSeaTlXnmk59rSFWf/ZpXv/2J5v/9ebav/YlmP/1pJd/9SPWf8FQrz/rs3+/////////////////xh/7/8EQrz+pG88FKRvPKvVroz//fDl//fHov/3z63/+dW1//javf/43sL/JFm7/4219v9Nkv//EXf//yGG//9Aiuv/A0S53v///wCqdUAot4ZW//7+/f/63sL/+ty///nbwP/528D/+d3B/5Odwv89ddH/jbX3/7jW/v9yqPX/LWvL/ARDum3///8AsXtDHrmGUv/+/Pn/+dy///jbv//43MD/+dvC//ncwf/53cL/kp7D/ypfwv8FQ7z/FUut/ANFuXj///8A////ALeCRwm5hUv//vv3//ncwf/43L//+Ny///jbwP/53cD/+d3A//ndw//74sv//Pn1/7eCR/u3gkcB////AP///wD///8AvYhL+fz28P/538f/+dy9//rcv//628H/+t3D//rdwv/53cT/++DJ///8+v/BjVP/vYhLD////wD///8A////AMSOTtr159j/+uXS//navP/527z/+tu///rdwf/63cH/+d3E//vhyP///fv/yJRX/8SOThL///8A////AP///wDKlFK78NnB//vt4f/52sD/+dzC//nexf/64Mf/+uLK//rizf/65dD///79/8uPWv/KlFLxypRSRf///wD///8A0JpVpO3Qsv//9vD/+uHK//vjzP/749D/++bT//vp1f/86dj//Orb/////f/SnXH/7tnB/9CaVeX///8A////ANWfWJLryqX///37//3p1f/969j//erb//3t3//98OL//fHk//zw5P//////4KBw///7+f/fuIf/////AP///wDapFuE68aa///////87+L//fDn//3x6//99e7//fjx//369////Pr///////779//02sD/2qRb6v///wD///8A3qhdberAjP///////////////////////fn0//vz6v/469n/+ObT//Xfxv/py6b/3qhd7d6oXV3///8A////AOKsXzbirF/G6ryB/+i3d//msm3/5LBo/+KsX/DirF/j4qxfz+KsX8zirF+74qxfqOKsX0virF8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; }; |
dedmazai1870 > 06-11-2013 23:55:16 |
okkamas_knife |
adidharma > 20-11-2013 07:39:42 |
Чёто в новой ночнушке с австралисом кнопки с панели навигации не пашут. Уже возникал этот вопрос: №231, тогда помогло решение от Dumby: Выделить код Код:var sel = '#nav-bar-customizationtarget > toolbarbutton[id^="custombuttons-button"]:not([initialized])'; Array.forEach(document.querySelectorAll(sel), btn => { try { btn.init() } catch(ex) {} }); но теперь не помогает. p.s. upd. Вопрос решён. Ступил, не разглядел с утра, что #nav-bar-customizationtarget теперь #nav-bar-customization-target |
Mishania > 20-11-2013 10:09:08 |
Пользуюсь букмарклетом Upload To скрытый текст javascript:(function(){var%20c='ujs_max_upload',w=window,d ![]() Пытался сделать из него кнопку по принципу loadURI("") - не работает. Подскажите что нужно изменить. (В программирование я не 0, а -1, чем проще тем лучше.) |
voqabuhe > 20-11-2013 10:14:35 |
adidharma пишет
|
Чайник > 20-11-2013 15:33:08 |
Mishania пишет
Mishania, Выделить код Код:this.onclick=function(e) { if (e.button==0) { var url = PlacesUtils.getURLAndPostDataForKeyword(' вставить свой keyword ')[0]; loadURI(url); } } |
Mishania > 20-11-2013 17:09:57 |
Чайник |
Чайник > 20-11-2013 18:48:27 |
Mishania пишет
Keyword - это краткое имя. Вот это Выбрать краткое имя можно любое и вписать его в скобки в коде. |
Mishania > 20-11-2013 19:24:14 |
Чайник |
rubel > 23-11-2013 20:31:53 |
Что-то у меня на 24.0 совсем не работает кнопка Переключаться на новые вкладки/Открывать новые вкладке в фоне.(Firefox) |
Pony_Smile_Pack > 23-11-2013 22:00:59 |
rubel пишет
|
rubel > 24-11-2013 05:46:29 |
Pony_Smile_Pack пишет
У меня эта птичка не стоит. Проверил и на 17.0 с одним расщирением-open_link_in_new_tab , тоже не работает, может какие настройки нужны. Хочется чтоб все ссылки открывались в фоне в новых вкладках. |
1fesFFFF > 02-12-2013 21:43:09 |
Нужна кнопка или скрипт, который автоматически при запуске браузера или открытии любого сайта сбрасывает масштаб страницы на стандартные 100%. |
Mishania > 02-12-2013 22:41:04 |
1fesFFFF |
bunda1 > 02-12-2013 22:45:06 |
1fesFFFF пишет
|
mahtanoronra > 15-12-2013 20:36:05 |
всем привет, а есть ли кнопочки на подобее тех которые имеются в MRTechToolkit{6.0.4.9000}, список тем и расширением(клик и открываются настройки расширения). или выключение всех расширений. вообщем все которые имеются в MRTechToolkit. |
bunda1 > 15-12-2013 20:52:47 |
mahtanoronra 15-12-2013 20:55:50 15-12-2013 20:56:18 15-12-2013 20:56:38 15-12-2013 20:57:08 15-12-2013 20:59:05 15-12-2013 21:02:05 15-12-2013 21:02:47 15-12-2013 21:06:48 |
mahtanoronra > 15-12-2013 21:17:50 |
bunda1 |
bunda1 > 15-12-2013 21:27:14 |
mahtanoronra пишет
Сразу нельзя и наверно кнопка показывает только Restartless расширения. |
rbfyec > 15-12-2013 23:50:47 |
Я пользуюсь кнопкой Открывать всё в новых вкладках. Может можно что добавить в код кнопки? И насчёт кнопки Proxy. Мне не нужен полностью её функционал, а нужна та часть, которая позволяет установить адрес/порт прокси из выделенного текста. Какой кусок кода нужно взять? |
bunda1 > 16-12-2013 01:03:57 |
rbfyec пишет
Выделить код Код:// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................................ (function func() { var contextMenu = document.getElementById("contentAreaContextMenu"); // создать новый пункт меню var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Добавить прокси"); menuitem.setAttribute("class", "menuitem-iconic"); menuitem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); addEventListener("command", function(e) { addNewProxy() }, false, menuitem ); // устанавливаем где показывать пункт меню addEventListener("popupshowing", function() { menuitem.hidden = !gContextMenu.isContentSelected; }, false, contextMenu ); addDestructor(function() { contextMenu.removeChild( menuitem ) }); contextMenu.appendChild( menuitem ); // как последний пункт меню // добавление прокси function addNewProxy( sel, i ) { var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); var sel = ( sel == undefined ) ? selection : sel.toString(); sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки // если порт ... if ( sel.length < 5 && isFinite(sel) ) { sel = sel.replace(/:/g, ""); sel = +sel; // порт как число var lab = 'порт'; var pref = 'network.proxy.http_port'; } // если адрес ... if ( sel.length > 4 && !/:/.test(sel) && sel.split(".").length == 4 ) { var lab = 'адрес'; var pref = 'network.proxy.http'; } // если адрес и порт ... if ( sel.length > 4 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) { var lab = 'адрес и порт'; var array = sel.split(":"); array.forEach(function(sel, i) { addNewProxy( sel, i ) }); } Application.prefs.setValue( pref, sel ); // переключить настройки прокси if ( lab == undefined || i !== undefined || i == 0 ) return; // всплывающая подсказка рядом с выделенным текстом ... function showTooltip() { var tooltip = gBrowser.appendChild( document.createElement("tooltip") ); tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;"; var image = tooltip.appendChild( document.createElement("image") ); image.setAttribute("src", self.image ); var label = tooltip.appendChild( document.createElement("label") ); label.setAttribute("value", "Установлен " + lab + " прокси: " + sel ); var focused = document.commandDispatcher.focusedWindow; var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect(); var posX = focused.mozInnerScreenX + selection.left; var posY = focused.mozInnerScreenY + selection.bottom - 5; tooltip.showPopup( gBrowser, posX, posY ); setTimeout(function() { gBrowser.removeChild( tooltip ) }, 2000 ); }; showTooltip(); }; })(); |
bunda1 > 16-12-2013 01:46:52 |
rbfyec пишет
Добавить: Выделить код Код:addEventListener("popupshowing", function(e) { var menupopup = e.originalTarget; var pasteAndGo = menupopup.getElementsByAttribute("anonid", "paste-and-go")[0]; pasteAndGo.setAttribute("oncommand", "event.preventDefault(); gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand(event);") }, false, document.getElementById("urlbar") ); |
rbfyec > 16-12-2013 02:42:07 |
bunda1 пишет
Это я добавил, оно работает, благодарю. А с кнопкой прокси не ладится. В консоли ошибок нет. |
bunda1 > 16-12-2013 03:19:51 |
rbfyec пишет
rbfyec |
rbfyec > 17-12-2013 03:07:42 |
bunda1 |
rbfyec > 17-12-2013 15:49:14 |
А как сделать, чтоб кнопка меняла иконку от состояния прокси, неважно включаю я прокси хоткеем, кнопкой или жестом? |
bunda1 > 17-12-2013 16:32:00 |
rbfyec пишет
Выделить код Код:// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................ var s = "network.proxy.type"; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); icon.src = ( cbu.getPrefs(s) == 0 ) ? self.image : 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; }; toggleImage(); gPrefService.addObserver( s, toggleImage, false ); addDestructor(function() { gPrefService.removeObserver( s, toggleImage, false ) }); |
rbfyec > 18-12-2013 15:29:28 |
Иконка есть! А вот одна вещь у меня не получается. Допустим прописан у меня в настройках какой-то прокси. Потом я через контекстное меню (или в диалоге) меняю адрес/порт. Выделить код Код:addr = Application.prefs.getValue("network.proxy.http", 0); prt = Application.prefs.getValue("network.proxy.http_port", 0) И хочу использовать их для возврата на первый прокси. Но когда я меняю через контекстное меню адрес/порт - addr и prt перезаписываются. Хочу уточнить: первый прокси - это не какойто фиксированный адрес, а просто тот, который был ДО изменения настроек. |
bunda1 > 18-12-2013 17:01:32 |
rbfyec Выделить код Код:Application.prefs.setValue('network.proxy.http', '119.82.240.185' ); Application.prefs.setValue('network.proxy.http_port', 8080 ); Порт и адрес ставь свой. |
rbfyec > 18-12-2013 20:43:27 |
bunda1 пишет
Нет, как установить эти настройки я знаю и я это делаю. То что предлагает okkamas_knife вроде подходит, но... Выделить код Код://установить значение параметра в about:config (средствами CB) var n="browser.download.dir";//параметр var z="C:\Documents and Settings\Администратор\Рабочий стол";//значение, для булевых ставим 0-false 1-true custombuttons.setPrefs(n,z); И вот в коде кнопки я нашёл место, где добавляется прокси и написал скрытый текст Выделить код Код:// добавление прокси function addNewProxy( sel, i ) { var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); var sel = ( sel == undefined ) ? selection : sel.toString(); sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки // если порт ... if ( sel.length < 5 && isFinite(sel) ) { sel = sel.replace(/:/g, ""); sel = +sel; // порт как число var lab = 'порт'; var pref = 'network.proxy.http_port'; } // если адрес ... if ( sel.length > 4 && !/:/.test(sel) && sel.split(".").length == 4 ) { var lab = 'адрес'; var pref = 'network.proxy.http'; } // если адрес и порт ... if ( sel.length > 4 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) { var lab = 'адрес и порт'; var array = sel.split(":"); array.forEach(function(sel, i) { addNewProxy( sel, i ) }); } Application.prefs.setValue( pref, sel ); // переключить настройки прокси //**************** Это я добавил ************************************* proxybakup = custombuttons.setPrefs("custombuttons.button.proxy.proxybakup", pref); portbakup = custombuttons.setPrefs("custombuttons.button.proxy.portbakup", sel); Это не работает. В консоли
|
bunda1 > 18-12-2013 22:14:13 |
Надо заменить: на: Выделить код Код:addEventListener("command", function(e) { // сохранить старые настройки прокси .... Application.prefs.setValue('CB.button.proxy.portbakup', cbu.getPrefs("network.proxy.http_port") ); Application.prefs.setValue('CB.button.proxy.proxybakup', cbu.getPrefs("network.proxy.http") ); addNewProxy(); }, false, menuitem ); |
rbfyec > 18-12-2013 23:22:49 |
Я напутал в коде, потому и не выходило bunda1 пишет
Вот это получилось то самое что я и хотел! |
rbfyec > 19-12-2013 16:58:19 |
А просто интересно, это вообще-то возможно: присвоить переменной значение какого-то параметра about:config и сохранить эту переменную неизменной когда этот параметр меняется? |
bunda1 > 19-12-2013 17:05:25 |
rbfyec пишет
Можно конечно но только до закрытия браузера и наверно |
xrun1 > 19-12-2013 17:18:07 |
rbfyec |
1fesFFFF > 22-12-2013 08:30:27 |
bunda1 Вот ссылки на мой скрипт: скрытый текст http://multi-up.com/934591 или http://files.mail.ru/79D0D2B0E8C149D38E06CD91105C46EA Можете его починить? Данный скрипт - это Context Search. Преимущество его для меня в том, что он идёт отдельной строкой в контекстном меню и после поиска через него, не меняет поисковик из строки поиска. |
toxa > 22-12-2013 19:45:28 |
Как сделать listener чтобы он следил за появлением окна с определённым адресом (или с определённым заголовком) и тогда выполнится действие? |
bunda1 > 22-12-2013 20:41:13 |
toxa пишет
Вот пример: Выделить код Код:// Обработчик следит за переключением табов и запускают нужные коды и функции ................................ addEventListener("TabAttrModified", function(e) { var tab = e.target; var uri = tab.linkedBrowser.currentURI.spec; var doc = tab.linkedBrowser.contentDocument; if ( tab.hasAttribute('read') ) setTimeout(function() { { tab.removeAttribute('unread') } }, 0) // автоматически меняем название таба для таба "Bookmarks tab" .... if ( uri == "chrome://browser/content/bookmarks/bookmarksPanel.xul") doc.title = "Закладки"; // автоматически очистить адресную строку для 'Bookmarks tab' .... if ( gBrowser.currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") { gURLBar.value = ""; gURLBar.focus(); }; // стоп, если открыть другие вкладки в фоновом режиме .... if ( uri !== gBrowser.currentURI.spec ) return; // показываем иконки сайтов в адресной строке .... gProxyFavIcon.src = ( gBrowser.mCurrentTab.image == '' ) ? "chrome://global/skin/icons/Portrait.png" : gBrowser.mCurrentTab.image; }, true, gBrowser.tabContainer ); |
toxa > 22-12-2013 21:45:39 |
Что-то не могу понять как мне приспособить этот код... Что я должен написать в коде? |
bunda1 > 22-12-2013 22:20:25 |
Упс, я невнимательно прочитал. Ну тогда не знаю, а что ты хочешь добится. 22-12-2013 22:24:55 Выделить код Код:// Наблюдатель следит за открытием окон var observer = { observe: function(subject, topic, data) { subject.addEventListener("load", this, false); }, handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; var href = doc.location.href.slice(0,60); win.removeEventListener("load", this, false); ............... } }; Services.obs.addObserver( observer, "domwindowopened", false); addDestructor(function() { Services.obs.removeObserver(observer, "domwindowopened", false) }); |
toxa > 22-12-2013 23:17:17 |
bunda1 пишет
Добиться я хочу вот чего: мне нужно приделать обработчик онклик к кнопке, расположенной в этом окошке. Но не через html атрибут онклик, а через свойство my_button.onclick Вот я и хочу чтобы какой-то наблюдатель, как только откроется моё окошко, запустил код okkamas_knife пишет
Я там ничего не понял |
bunda1 > 22-12-2013 23:35:00 |
Ты хочешь кнопкой открыть окошко и там что то сделать, так? |
Teu > 25-12-2013 11:55:10 |
bunda1 А нет ли случайно CB открывающей Find Bar во всех вкладках, как раньше? |
voqabuhe > 25-12-2013 12:20:04 |
Teu пишет
|
Teu > 26-12-2013 06:28:55 |
voqabuhe |
1fesFFFF > 26-12-2013 08:15:01 |
Для 26 1) Открывает боковую панель с загрузками. скрытый текст Выделить код Код:// Настройка функций кликов мыши для кнопки ................................................................ this.onclick = function(e) { // действие при клике ЛКМ .... if ( e.button == 0 ) { document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", downTabUrl ); }; // действие при клике СКМ .... if ( e.button == 1 ) { var windows = Components. classes ['@mozilla.org/appshell/window-mediator;1'].getService(Components. interfaces. nsIWindowMediator).getEnumerator (null); while( windows. hasMoreElements() ) { var win = windows.getNext (); if ( win.document.documentURI == "chrome://mozapps/content/downloads/downloads.xul") { win.close(); return; } }; BrowserDownloadsUI(); }; // действие при клике ПКМ .... if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); downloadManagerInTab( true ); } }; // Объявляем переменные для этой вкладки ................................................................... var downTabUrl = 'chrome://mozapps/content/downloads/downloads.xul'; // иконки для вкладки загрузок .... const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg=="; /* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой если загрузи уже открыты и закрыть все лишние вкладки загрузок ..........................................*/ function downloadManagerInTab( foregroundTab ) { setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок // закрыть все вкладки загрузок кроме первой .... var downTab = null; Array.slice( gBrowser.tabs ).forEach(function(tab) { if ( tab.linkedBrowser.currentURI.spec !== downTabUrl ) return; !downTab ? downTab = tab : gBrowser.removeTab(tab); }) // переместить или открыть вкладку загрузок рядом с текущей вкладкой .... var selTab = gBrowser.selectedTab; if ( downTab !== selTab ) { if ( downTab && gBrowser.visibleTabs.indexOf( downTab ) == -1 ) TabView.moveTabTo( downTab, TabView._window.GroupItems._activeGroupItem.id ); downTab = downTab || gBrowser.addTab( downTabUrl ); var pos = selTab._tPos + ( downTab._tPos > selTab._tPos ); gBrowser.moveTabTo( downTab, pos ); gBrowser.selectedTab = downTab; } }; // Автоматически меняем иконку для таба "Загрузки" ......................................................... addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec == downTabUrl ) { var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument ); var tab = gBrowser.mTabContainer.childNodes[tabIndex]; LOG(tab.label) tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg; } }, true, gBrowser.tabContainer); // Отслеживать все команды связные с загрузкой и запускать нужные функции и команды ........ function getCommand(e) { var command = e.target.getAttribute("oncommand"); if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') { if ( content.document.location == downTabUrl) document.getElementById("Browser:Reload").doCommand(); if ( document.getElementById('sidebar-box').getAttribute('sidebarcommand') ) openWebPanel("Downloads", downTabUrl ); } }; addEventListener("command", getCommand, true, window); // Исправляем ошибки ....................................................................................... function setFakeArguments(e) { if ( e.target.location.href == 'chrome://mozapps/content/downloads/downloads.xul' ) { var win = e.target.defaultView; win = win.wrappedJSObject || win; win.arguments = []; } }; addEventListener("TabClose", setFakeArguments, true, gBrowser); addEventListener("DOMContentLoaded", setFakeArguments, true, gBrowser); addEventListener("DOMContentLoaded", setFakeArguments, true, document.getElementById('sidebar-box')); // Закрыть стандартный менеджер загрузок .................................................................... function closeDownloadManager() { var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var dm = wm.getMostRecentWindow("Download:Manager"); if ( dm ) dm.close(); }; // Подсказка для кнопки ..................................................................................... this.tooltipText = "L: Download Manager in the Sidebar\nM: Download Manager \nR: Download Manager in the Tab\nCtrl+R: CB menu "; ![]() 2) Нужна кнопка, которая откроет окно загрузок (Ctrl+J). |
bunda1 > 27-12-2013 00:10:15 |
1fesFFFF пишет
А что с ней не так, вроде работает 1fesFFFF пишет
Создай кнопку с кодом: Выделить код Код:var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var dm = wm.getMostRecentWindow("Download:Manager"); if ( dm ) dm.focus(); else BrowserDownloadsUI(); |
1fesFFFF > 27-12-2013 14:49:10 |
Спасибо!
На 26 |
bunda1 > 27-12-2013 23:32:53 |
1fesFFFF пишет
А если так: Выделить код Код:// Настройка функций кликов мыши для кнопки ................................................................ this.onclick = function(e) { // действие при клике ЛКМ .... if ( e.button == 0 ) { document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", downTabUrl ); }; // действие при клике СКМ .... if ( e.button == 1 ) { var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var dm = wm.getMostRecentWindow("Download:Manager"); if ( dm ) dm.focus(); else BrowserDownloadsUI(); }; // действие при клике ПКМ .... if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); downloadManagerInTab( true ); } }; // Объявляем переменные для этой вкладки ................................................................... var downTabUrl = 'about:downloads'; // иконки для вкладки загрузок .... const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg=="; /* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой если загрузи уже открыты и закрыть все лишние вкладки загрузок ..........................................*/ function downloadManagerInTab( foregroundTab ) { setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок // закрыть все вкладки загрузок кроме первой .... var downTab = null; Array.slice( gBrowser.tabs ).forEach(function(tab) { if ( tab.linkedBrowser.currentURI.spec !== downTabUrl ) return; !downTab ? downTab = tab : gBrowser.removeTab(tab); }) // переместить или открыть вкладку загрузок рядом с текущей вкладкой .... var selTab = gBrowser.selectedTab; if ( downTab !== selTab ) { if ( downTab && gBrowser.visibleTabs.indexOf( downTab ) == -1 ) TabView.moveTabTo( downTab, TabView._window.GroupItems._activeGroupItem.id ); downTab = downTab || gBrowser.addTab( downTabUrl ); var pos = selTab._tPos + ( downTab._tPos > selTab._tPos ); gBrowser.moveTabTo( downTab, pos ); gBrowser.selectedTab = downTab; } }; // Автоматически меняем иконку для таба "Загрузки" ......................................................... addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec == downTabUrl ) { var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument ); var tab = gBrowser.mTabContainer.childNodes[tabIndex]; LOG(tab.label) tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg; } }, true, gBrowser.tabContainer); // Отслеживать все команды связные с загрузкой и запускать нужные функции и команды ........ function getCommand(e) { var command = e.target.getAttribute("oncommand"); if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') { if ( content.document.location == downTabUrl) document.getElementById("Browser:Reload").doCommand(); if ( document.getElementById('sidebar-box').getAttribute('sidebarcommand') ) openWebPanel("Downloads", downTabUrl ); } }; addEventListener("command", getCommand, true, window); // Закрыть стандартный менеджер загрузок .................................................................... function closeDownloadManager() { var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); var dm = wm.getMostRecentWindow("Download:Manager"); if ( dm ) dm.close(); }; // Подсказка для кнопки ..................................................................................... this.tooltipText = "L: Download Manager in the Sidebar\nM: Download Manager \nR: Download Manager in the Tab\nCtrl+R: CB menu "; |
1fesFFFF > 28-12-2013 09:30:24 |
bunda1 |
Mishania > 07-01-2014 13:59:51 |
Всех с Праздником! Вот какой вопрос у меня. Делал умный человек мне кнопку для поиска скриптов на сайте userscripts.org скрытый текст /*CODE*/ url=getBrowser().currentURI.spec; domen = url.split(/\/+/g)[1]; getBrowser (). selectedTab = getBrowser (). addTab ("https://userscripts.org/scripts/search?q=" + domen +"&submit=Search"); Хочу для своих нужд переделать, только чтоб брался не весь адрес, а часть после последнего слеша. скрытый текст http://www.хххххххх.хх/хххх/вот эта часть Что-то пытался поменять, но проще спросить. Спасибо. |
Чайник > 07-01-2014 22:30:16 |
Mishania пишет
Не совсем понятно сформулировано - что нужно? скрытый текст Выделить код Код:url = content.document.location.href; adr=(url.substring(url.indexOf('/')+2)); getBrowser().selectedTab = getBrowser().addTab("https://userscripts.org/scripts/search?q=" + adr +"&submit=Search"); |
Mishania > 07-01-2014 22:51:07 |
Чайник скрытый текст название сайта не важно, важно именно последний блок адреса и чтоб открывалось в новой фоновой вкладке. |
Ki_rrrilll > 08-01-2014 15:35:44 |
А как сделать, чтобы в кнопке Proxy( Firefox 10 + ) от 11.12.2013 можно было создать прокси из выделения и в текстовых полях? Выделить код Код:// устанавливаем где показывать пункт меню addEventListener("popupshowing", function() { menuitem.hidden = !cbu.getPrefs("Proxy.inContextMenu") || !gContextMenu.isContentSelected; }, false, contextMenu ); закомментировать || !gContextMenu.isContentSelected но тогда пункт "Добавить прокси" висит в меню постоянно. Оно и понятно. Не сильно это мешает, но может можно сделать все это менее топорным способом? |
bunda1 > 08-01-2014 20:09:16 |
Замени: на: |
Ki_rrrilll > 08-01-2014 20:21:06 |
Спасибо, bunda1! |
toxa > 09-01-2014 23:30:20 |
Я хочу подсчитать (просто для иллюстрации) количество слов Members на этой странице Выделить код Код:goDoCommand('cmd_selectAll'); goDoCommand('cmd_copy'); goDoCommand('cmd_selectNone'); text = readFromClipboard(); // должен получиться весь текст страницы; x = text.length - text.replace(/Members/g, '').length // сравниваю текст страницы до и после удаления всех вхождений Members alert(x) Я сравниваю свой результат со счётчиком совпадений кнопки Find |
Infocatcher > 10-01-2014 00:08:06 |
toxa |
toxa > 10-01-2014 00:57:39 |
Infocatcher пишет
Ну да, это если искать слово, то конечно. |
Infocatcher > 10-01-2014 01:18:18 |
toxa |
feas > 28-01-2014 21:45:40 |
Столкнулся с багом дублирования кода. Версия 0.0.5.7 Список расширений Mozilla SeaMonkey 2.23 (build 20131210201652) User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 SeaMonkey/2.23 *** Расширения ( Включено: 18, Отключено: 0, Всего: 18 ) *** Внешний вид ( Включено: 1, Отключено: 2, Всего: 3 ) *** Словари ( Включено: 0, Отключено: 0, Всего: 0 ) *** Языки ( Включено: 0, Отключено: 0, Всего: 0 ) *** Плагины ( Включено: 5, Отключено: 0, Всего: 5 ) *** Стили ( Включено: 3, Отключено: 0, Всего: 3 ) *** User Scripts ( Включено: 0, Отключено: 0, Всего: 0 ) *** Кнопки ( Включено: 22, Отключено: 0, Всего: 22 ) |
lokiju > 28-01-2014 22:10:21 |
feas |
feas > 28-01-2014 22:14:18 |
lokiju пишет
ммм Ясно - благодарю. |
MySh > 29-01-2014 02:18:12 |
feas
Есть такая проблема. Но по средней кнопке мыши работает вроде нормально. Тут ещё, как я понимаю, может от системы зависеть. Возможно, поможет изменение параметров middlemouse.contentLoadURL и middlemouse.paste. |
bunda1 > 29-01-2014 21:32:19 |
feas пишет
Кажется это баг Custom Buttons 0.0.5.7pre3, вот тут 24-01-2014 22:24:59 почитай под спойлером что пишет Dumby про это. Надо жаловатся автору Custom Buttons. |
SendInfo > 30-01-2014 04:48:11 |
bunda1 пишет
Если глючат все кнопки , то да баг СВ, а если глючат некоторые lokiju пишет
|
2k1dmg > 30-01-2014 09:09:43 |
http://forum.mozilla-russia.org/viewtop … 02#p636502 добавлен из-за |
feas > 30-01-2014 16:39:54 |
SendInfo пишет
Глючит много кнопок, практически все в инициализации. 2k1dmg пишет
Кстати в кнопке http://forum.mozilla-russia.org/viewtopic.php?id=51861 он есть Мда не выходит. |
lokiju > 30-01-2014 17:26:55 |
feas пишет
У меня из 35-ти кнопок глючат точно на |
bunda1 > 30-01-2014 21:41:25 |
feas пишет
Можно все эти коды + мой Context Search закинуть в одну кнопку в начале которой поставить: И все дела. lokiju пишет
Такой же совет. |
lokiju > 30-01-2014 22:02:55 |
bunda1 пишет Спасибо. |
Dumby > 30-01-2014 22:49:29 |
lokiju пишет
Если речь об этой, то может попробуй скрытый текст Выделить код Код://const root = n("tabContextMenu"); const root = document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu"); |
lokiju > 30-01-2014 23:16:58 |
Dumby нет. Эта на Эта Выделить код Код:/*Initialization Code*/ //seamonkey if ( self.hasAttribute("stop") ) return; self.setAttribute("stop", "true"); //Копировать информацию вкладки (function() { var htmlEscape = function(s) { s = s.replace(/&/g, "&"); s = s.replace(/>/g, ">"); s = s.replace(/</g, "<"); s = s.replace(/"/g, """); return s; }; var copyTabInfo = function (aAsHTML) { var tab = document.popupNode; var title = tab.label; var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href; var txt = aAsHTML ? '<a href="' + htmlEscape(url) + '">' + htmlEscape(title) + '</a>' : title + "\n" + url; Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper) .copyString(txt); }; var copyTabBBC = function (aAsBBC) { var tab = document.popupNode; var title = tab.label; var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href; var txt = aAsBBC ? '[url=' + htmlEscape(url) + ']' + htmlEscape(title) + '[/url]' : title + "\n" + url; Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper) .copyString(txt); }; var menuitem1 = document.createElement("menuitem"); menuitem1.setAttribute("label", "Копировать название + URL"); menuitem1.addEventListener("command", function() { copyTabInfo(false); }, false); var menuitem2 = document.createElement("menuitem"); menuitem2.setAttribute("label", "Копировать название + URL (HTML)"); menuitem2.addEventListener("command", function() { copyTabInfo(true); }, false); var menuitem3 = document.createElement("menuitem"); menuitem3.setAttribute("label", "Копировать название + URL (BBCode)"); menuitem3.addEventListener("command", function() { copyTabBBC(true); }, false); setTimeout(function() { gBrowser.mStrip.childNodes[1].appendChild(document.createElement("menuseparator")); gBrowser.mStrip.childNodes[1].appendChild(menuitem1); gBrowser.mStrip.childNodes[1].appendChild(menuitem2); gBrowser.mStrip.childNodes[1].appendChild(menuitem3); }, 0); })(); с правкой от bunda1 нормально работает. |
feas > 30-01-2014 23:29:49 |
Спасибо |
Pony_Smile_Pack > 05-02-2014 16:33:11 |
bunda1, поправь пожалуйста Find (№112) 05-02-2014 16:33:48 |
bunda1 > 05-02-2014 23:08:18 |
Pony_Smile_Pack пишет
Пытаюсь ! |
bunda1 > 06-02-2014 23:57:44 |
Pony_Smile_Pack пишет
Вот Dumby исправил для FF27: Выделить код Код: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%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%0A%20%20%20%20if%20%28e.button%20%3D%3D%201%29%20%7B%20gShowPopup%28this%29%3B%20return%3B%20%7D%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20%u0438%u043B%u0438%20%u041F%u041A%u041C%20....%0A%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20var%20fastFind%20%3D%20gBrowser.finder._fastFind%3B%0A%0A%20%20%20%20fastFind.find%28str%2C%20false%29%20%3D%3D%20fastFind.FIND_FOUND%0A%20%20%20%20%3F%20fastFind.findAgain%28e.button%2C%20false%29%0A%20%20%20%20%3A%20disableIcon%28%29%3B%0A%20%20%20%20%0A%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.ondblclick%20%3D%20function%28e%29%20e.button%20%21%3D%202%3B%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20self.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20self.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%27false%27%20................................%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%20//%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%20%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20var%20sel%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20var%20sel%20%3D%20gClipboard.read%28%29%3B%20//%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.showAlertNotification%28%20self.image%2C%20self.label%2C%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%20%29%3B%0A%20%20%0A%20%20return%20%28%20sel%20%3D%3D%20%27%27%20%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%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 |
Pony_Smile_Pack > 07-02-2014 00:27:52 |
bunda1 пишет
Спасибо. |
bunda1 > 07-02-2014 21:46:46 |
Pony_Smile_Pack Выделить код Код: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%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%0A%20%20%20%20if%20%28e.button%20%3D%3D%201%29%20%7B%20gShowPopup%28this%29%3B%20return%3B%20%7D%0A%0A%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20%u0438%u043B%u0438%20%u041F%u041A%u041C%20....%0A%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20var%20fastFind%20%3D%20gBrowser.finder._fastFind%3B%0A%0A%20%20%20%20fastFind.find%28str%2C%20false%29%20%3D%3D%20fastFind.FIND_FOUND%0A%20%20%20%20%3F%20fastFind.findAgain%28e.button%2C%20false%29%0A%20%20%20%20%3A%20disableIcon%28%29%3B%0A%7D%3B%0Athis.ondblclick%20%3D%20function%28e%29%20e.button%20%21%3D%202%3B%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20self.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20self.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%27false%27%20................................%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%20//%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%20%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20var%20sel%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20var%20sel%20%3D%20gClipboard.read%28%29%3B%20//%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.showAlertNotification%28%20self.image%2C%20self.label%2C%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%20%29%3B%0A%20%20%0A%20%20return%20%28%20sel%20%3D%3D%20%27%27%20%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%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 |
Pony_Smile_Pack > 07-02-2014 22:55:16 |
bunda1 пишет
Спасибо. |
middim > 05-03-2014 19:46:59 |
Можно сделать кнопку "Обновить все вкладки" |
bunda1 > 05-03-2014 22:19:07 |
middim пишет
Выделить код Код: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%3E%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAEAwMACQUDAwAAAAI4HQwAwWgyMrNpPLC0Xh3Ttl4S0LdhFNC2YRXTslgar7QxAzIzCAAAAAABAQgDAAMDAgAAAgEBAQAAAAA/IhAfnVIseLhjLM3DdRPqzoMJ8tiQD/LenCby3Z878tONNOrBZRrNmUEUdzsXCx4AAAAAAgEAAX9oWARhQzEanVEhktl3H/TKewf+3I8A/+GVAP/lnQH/6qsa//C6P//1w0z/6bdL/umPM/SeSRCQUysAGWRFAgTss5IA2YpjfMJwLvfIghr/1o0L9tKCB/3OiCD+zZM8/s+dT/7Wp17+5LZk/fbGWfbquEn/1Icl9sRgA3u5XwAAunxjMLhvSMbRijD/36lM9s2XY//CfUz/xZ6V/8u8wv/Pw8f/zbzC/82uov/hs2n/+ctd9u26Tf+5ZBzGmSkCL8uagbDJhkTp3JUc/+i9Yv3dzrz/2s7N/+He3//k5uX/4+Hd/+Pf2f/i3NX/3cSr/+3Fav31xEX/1pEt6bVgFK/DgjvY0ZNE8+apQf/txHj+7ebc/+/y9//s7Oz/5dbM/+G8f//frUP/3a1f/920fv/ntlL+87wp/9+eGPPAcQTXx4Aj09meTfPptWP/7cmM/vXt4P/9//7//f///+7Zw//mvoP/6sWF/+vLn//v2Lv/6bx7/uqqH//elwDzxngB09GNKtPep2Dz6r58/+vHjf7r0br/6tC6/+zQsP/fsX7/37qe//Pu9P/9/v///////+zHqP7lpDn/3pkO8s2CD9Dcn0nY4axs8+rBhf/sx43+5L+d/9y0lP/Xp2//051s/9++rf/18fH////////////v0K7+57Jq/+GjPPLRhQjQ6cCVsOOqZunnt3P/79Cf/fLYtf/58e3/9vDy//fz8//9/Pz////+//78+f///v3/8+DC/uu/gf/hozry1JAA0uPAlzDfqWnG5bR2/+3Lmvbuzpz/9eHG//z27v///////v37//nu3//y27n/89u6//HZuvzosFT/36A29N2+leH+/+oA/9+jfOupTvfdqmH/7c2e9vDTpP3y2a3+8ty2/vHZsv7u0KD+7MqR/u3MnPvluXn52JlD/+W/jtf///9wkpeHBHdqUhrHlESS/8dl9OKxcv7pu3z/68OT/+zHmf/sxZL/68OM/+i7fP/hqVH/8qdB7//qrtjd4dp0hoB+CgMCAQEAAAAAUkQtH8uiYXjnr2LN5K9t6uWyYPLms1jy5a9T8eWwXPPms3Py67Ne5a58O4u6pIs1hIWCDgAAAAAEBAQACwkHAwAAAAFJPSoA/dSZNOi/hrDdnxbU2pMA0tiRAM/blw/W6rt40f/sz4xMSEMeAAAAAAgIBwQEBAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20BrowserReload%28%29%3B%20//%20%u041B%u041A%u041C%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%20//%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20//%20%u041F%u041A%u041C%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.reloadAllTabs%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%22%3B%0A%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 |
vit0149 > 22-03-2014 08:57:17 |
Всем привет!Я новичёк прошу сильно не ругаться,хочу узнать есть-ли расширение типа Tab_Position_Customizer_RU_2.5 как в Chome,надо,чтоб вкладка открывалась последняя,а при закрытии фокусировалась из которой была открыта,кроме Tab Mix Plus.Спасибо. |
bunda1 > 22-03-2014 11:53:39 |
vit0149 пишет
В этой теме просят сделать или исправить Сustom Buttons кнопки а не расширения. |
feas > 29-04-2014 08:01:00 |
https://forum.mozilla-russia.org/viewto … 19#p649119 |
etoins srldu > 29-04-2014 17:29:46 |
feas пишет
Что за кнопка закладок, id у неё какой? |
feas > 29-04-2014 19:46:04 |
etoins srldu пишет
звездочку. |
rgdru > 01-05-2014 20:32:56 |
Престала работать кнопка в FF29 https://forum.mozilla-russia.org/viewto … 70#p626370 |
Uxapb > 01-05-2014 21:55:46 |
bunda1, почините плз под 29 [CB]Искать страницу в кэше Google или на Archive.org |
MDM > 01-05-2014 23:06:26 |
Кнопки, помещенные в новое меню Firefox 29, не инициализируются, пока не откроешь это меню. Кто-нибудь в курсе, это чинится? |
etoins srldu > 02-05-2014 19:31:03 |
Uxapb пишет
Куда ты хочешь переместить подменю Искать страницу? |
Uxapb > 02-05-2014 21:51:22 |
etoins srldu пишет
В Инструменты, в самый низ. |
etoins srldu > 02-05-2014 22:06:45 |
Uxapb пишет
Выделить код Код:// Добавить новый пункт "Искать страницу" в меню kнопки ................................ (function () { var img = "data:image/x-icon;base64,AAABAAEAEhAAAAEAGADoAwAAFgAAACgAAAASAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx9vm0y9y40OC50OG40OG40OG40OG40OG40OG40d68z+yuz8a34qYAAAAAAAAAAAAAAAAEkQAAANLl9Dya11Oo2Eqg0kyh00uh0kqg0kyf0kqgzkqYzz2MrRexIxfFA6PhpQAAAAAAAAAAAASRAAAA1Of4Sq3rXKLUYqjeYajeY6vgZq7kYqrcYaHYSoasI7wsMPMqLu8yHdUdrOCqAAAAAAAABJEAAADU5/dGp+VireB4xfx2xPpyvvNprt5ss+pgpcsmwjct8iYz7DU17DM58zcl2SSu464AAAAEkQAAANTo+Eio5mOr33XA93bE+WWs3HOu0V6jyS6+PWvwXHPvdUDuQDfuNWryaXXwdDLOM7DnsQSRAAAA1Oj4RqfmZK3gesj8dsX4d8f5e8n7arncPbNzKKNMZdtiX/dfR/FDl/KWWMNYe9R7v+u/BJEAAADW5/hFqOZ0uuKc3PiU1/aU2PaV1/SU1fGZxv9aop1a21d2+3Vg9WSW8peA04EAAAAAAAAEkQAAANTm9kuv63TD8Gy46W+76m666m+762286W+z5ziVh2fYXLr7ran2npXolm/ObgAAAAAAAASRAAAA1Ob3SaznWqPSXanZXanZXqvaYa3eYKzbXqbZUKW0R8JpPbZzRbp4a81oo+CjAAAAAAAABJEAAADV5/hGqOVmteOA1f990v980fx0xe91zfl/2f9/1/+d3Pxgt/Jsvv8AAAAAAAAAAAAAAAAEkQAAANTn90eq5WW14nzS/X3U/2q34XazzHvG73bP/XnS/ZLb9F225Wq+8QAAAAAAAAAAAAAAAASRAAAA0+f3SKrlZbfletX/edH/d9D9gtv+gdn/etT/edf/lN36W7foa772AAAAAAAAAAAAAAAABJEAAADW6PhEqOd/wOCk5PqX2/ea3viY3PeY3faZ3/ia3/ig2/Rctelsv/cAAAAAAAAAAAAAAAAEkQAAAM/k9kuv6nnE63O/7XPA7XPA7nTA7XXA7XO/7XTA7HK+7GnC8Ge79QAAAAAAAAAAAAAAAASRAAAA3u34ccDvoOb8n+P7oOT8oOT8oOT8oOT8oeT8n+T8pOf9jdn5jMn1AAAAAAAAAAAAAAAABJEAAAAAAADB4vtRtvRbv/dZvvZZvvZavvdavvZavvZcwPZXvfZ3w/YAAAAAAAAAAAAAAAAAAAAEkYADwEGAAcBBgADAQYAAQEGAAABBgAAAQYAAwEGAAMBBgADAQYADwEGAA8BBgAPAQYADwEGAA8BBgAPAQcAHwEE="; var menu = document.createElement("menu"); menu.setAttribute("label", "Искать страницу"); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", img ); menu.onmouseout = function() { menu.removeAttribute('_moz-menuactive') }; var array = [ ["в кэше Google", function() gBrowser.selectedTab = gBrowser.addTab('http://www.google.com/search?q=cache:' + content.location) ], ["на Archive.org", function() gBrowser.selectedTab = gBrowser.addTab('http://web.archive.org/web/' + content.location) ], //["separator"], ]; var menuPopup = document.createElement("menupopup"); menuPopup.onmouseover = function() { menu.setAttribute('_moz-menuactive', 'true') }; array.forEach(function( m ) { if ( m[0] == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", m[0] ); menuItem.addEventListener("command", m[1] ); menuPopup.appendChild( menuItem ); }); menu.appendChild( menuPopup ); var toolsMenu = document.getElementById("menu_ToolsPopup"); toolsMenu.appendChild( menu ); addDestructor(function() toolsMenu.removeChild( menu ) ); })(); 02-05-2014 22:08:38 okkamas_knife пишет
Тоже можно. |
difabor > 02-05-2014 23:58:27 |
etoins srldu пишет
Я поставил подменю в таб контекст меню (вместо menu_ToolsPopup поставил tabContextMenu) - работает. |
Dumby > 03-05-2014 09:57:36 |
rgdru пишет
У меня не перестала MDM пишет
№30. скрытый текст Выделить код Код:(function() { if (gBrowser.currentURI.spec == "about:customizing") return; var observer = {}; observer.observe = function(subject, topic, data) { var id = data.split(":")[1]; if (topic.endsWith("cloneButton")) { var {area, position} = CustomizableUI.getPlacementOfWidget(id); CustomizableUI.addWidgetToArea(subject.id, area, position + 1); } else CustomizableUI.removeWidgetFromArea(id); } const topicRemove = custombuttons.notificationPrefix + "removeButton"; const topicClone = custombuttons.notificationPrefix + "cloneButton"; Services.obs.addObserver(observer, topicRemove, false); Services.obs.addObserver(observer, topicClone , false); addDestructor(function() { Services.obs.removeObserver(observer, topicRemove); Services.obs.removeObserver(observer, topicClone); }); var panel = document.getElementById("PanelUI-popup"); if (!panel.hidden) return; for(var toolbar of document.getElementsByTagName("toolbar")) { if (!toolbar.hasOwnProperty("overflowable")) continue; var func = toolbar.overflowable.onOverflow; toolbar.overflowable.onOverflow = function() { func.apply(this, arguments); this._list._localName = this._list.localName; this._list.__defineGetter__("localName", function() arguments.callee.caller == custombutton.buttonConstructor ? "toolbar" : this._localName ); setTimeout(function(overflowable) { overflowable._panel.hidden = false; overflowable.onOverflow = func; }, 0, this); } } var btn = document.getElementById("PanelUI-menu-button"); panel.addEventListener("popupshown", function hideMenu(e) { this.removeEventListener(e.type, hideMenu, false); btn.click(); // Hides menu setTimeout(function() panel.collapsed = false, 0); }, false); panel.collapsed = true; btn.click(); // Opens menu })(); difabor пишет
Попробуй на TabContextMenu.contextTab.linkedBrowser.currentURI.spec |
rgdru > 03-05-2014 10:54:17 |
difabor > 03-05-2014 16:04:34 |
Dumby пишет
Спасибо огромное! Работает как надо!!! |
MDM > 03-05-2014 16:13:59 |
Dumby пишет
Спасибо. Работает и ладно. |
Dumby > 04-05-2014 10:17:14 |
rgdru пишет
Попробуй замену. Рестарт. скрытый текст Выделить код Код: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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0Aif%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%7D%0Avar%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Avar%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29%3B%0Avar%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0Avar%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0Afunction%20appendMenus%28parent%29%20%7B%0A%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09menu._placesView.uninit%28%29%3B%0A%09%09delete%20menu._placesView%3B%0A%09%7D%0A%7D%0Athis.textContent%20%3D%20%22%22%3B%0Avar%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Apopup.position%20%3D%20%22after_start%22%3B%0Apopup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0Apopup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0Apopup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0Apopup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09appendMenus%28menubar%29%3B%0A%7D%2C%20false%29%3B%0A%0AappendMenus%28popup%29%3B%0Apopup.openPopup%28this%29%3B%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 |
rgdru > 04-05-2014 11:23:12 |
feas > 15-05-2014 11:31:10 |
есть ли у нас способ объеденить эти 2 кнопки в одну? |
feas > 15-05-2014 12:20:41 |
okkamas_knife пишет
идея состоит в скрытии кнопок вперед/назад и обновить/остановить и создании их аналогов и есть у нас пример кнопки со сменой изображения, (невозможность перехода)? |
Pony_Smile_Pack > 15-05-2014 13:09:28 |
Поправьте если можно Relative tabs, а то он перестал корректно работать |
feas > 15-05-2014 19:18:18 |
okkamas_knife пишет
спасибо, а то на форуме такая вырвиглазная вещь встретилась |
bunda1 > 15-05-2014 19:47:56 |
Pony_Smile_Pack пишет
Выделить код Код:// Открывать любую новую вкладку справа от текущей, от 08.04.2014. ................................ addEventListener("TabOpen", function(e) { var newTab = e.target; var lab = newTab.label; var tabpos = gBrowser.selectedTab._tPos; var newTabLab = gBrowser.mStringBundle.getString("tabs.emptyTabTitle"); if ( tabpos == 0 && lab == newTabLab ) return; // если восстановление сессии if ( new Error().stack.indexOf("openContainer") !== -1 ) return; // если открыть всё во вкладках из папки закладок lab == newTabLab ? setTimeout(function() gBrowser.moveTabTo( e.target, tabpos + 1 ), 50) // если восстановление вкладки : gBrowser.moveTabTo( e.target, tabpos + 1 ); // автоматически закрывать "custombutton" вкладку if ( lab.startsWith("custombutton://%") ) setTimeout(function() gBrowser.removeTab( newTab ), 0); }, false, gBrowser.tabContainer ); |
Pony_Smile_Pack > 15-05-2014 20:22:44 |
Спасибо, bunda1. |
psfdart > 16-05-2014 19:04:18 |
подскажите как работать с группами вкладок в FF 29.0.1 ? ссылку на документацию бы |
bunda1 > 19-05-2014 22:44:26 |
Попробовал открывать новую пустую вкладку и вроде без проблем. А как ты открываешь пустую вкладку? |
Pony_Smile_Pack > 19-05-2014 22:44:38 |
[поправочка, я тут жаловался на Relative tabs, но это я её просто положил в панель-кнопку] 19-05-2014 22:45:57 |
bunda1 > 19-05-2014 22:46:31 |
Uxapb > 02-06-2014 13:41:41 |
Поправьте плз кнопочку Make bookmark button. Не вставляется автоматом иконка страницы и после перезагрузки кнопка-страница исчезает. Если присвоить свою иконку, то остается. |
bunda1 > 02-06-2014 14:25:24 |
Uxapb пишет
|
Uxapb > 02-06-2014 14:59:46 |
bunda1 пишет
Разместил кнопку на Панеле Закладок, нащелкал кнопок. Иконки присваиваются, но после перезагрузки кнопки пропадают с панели. |
Infocatcher > 02-06-2014 16:24:35 |
Uxapb пишет
Скорее всего, поможет 02-06-2014 16:25:52 |
Uxapb > 02-06-2014 16:58:34 |
custombuttons-0.0.5.8pre.xpi решило проблемку. Спасибо. |
xrun1 > 27-07-2014 01:29:16 |
bunda1 |
bunda1 > 28-07-2014 00:08:28 |
На FF31 у меня всё порядке, но попробуй добавить: в коде Memory Monitor перед: Выделить код Код:// Создать в адресной строке счётчик памяти .... var memoryDisplay = document.createElement("statusbarpanel"); Также можно в коде Memory Monitor в строке: Выделить код Код:memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; min-width: 5.5em; text-align: right;"; // Css стиль для счётчика или в коде Показывать количество открытых табов в адресной строке+ под строками: Выделить код Код:// Стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ добавить нужний тебе отступ margin |
xrun1 > 28-07-2014 01:37:51 |
На дефолтном профиле действительно всё нормально. Это код помог. |
bunda1 > 28-07-2014 10:42:02 |
xrun1 пишет
Спасибо, я это учту. Кстати RSS иконку в адресную строку можно передвинуть Сustom Buttons кодом. |
xrun1 > 28-07-2014 15:31:52 |
bunda1 пишет
Если удаляю код из кнопки - значение в адресной строке исчезает. Но перепроверил все кнопки на всякий случай. Memory Monitor точно один.
Это для меня слишком сложно и стандартная скучная серая. )) |
bunda1 > 28-07-2014 15:39:17 |
xrun1 |
xrun1 > 28-07-2014 17:26:59 |
bunda1 |
bunda1 > 28-07-2014 20:03:23 |
А я не знал что есть 0.0.5.8, а сам Сustom Buttons почему то не обновляется. А глюк Memory Monitor не понятный, но я добавлю if ( document.getElementById('memoryDisplay') ) return; в Memory Monitor |
voqabuhe > 28-07-2014 21:31:26 |
bunda1 пишет
Как оказалось уже и custombuttons-0.0.5.9pre1-20140622 есть №13222 |
firepox > 30-07-2014 01:00:05 |
Всем привет, помогите с кнопкой, пожалуйста ( ps |
Infocatcher > 30-07-2014 01:14:49 |
firepox пишет
По-видимому, без открытия боковой панели не обойтись. Выделить код Код:var sidebar = document.getElementById("sidebar"); function scan() { sidebar.contentWindow.USc_updatescan.scanButtonClick(); } toggleSidebar("viewUpdateScanSidebar", true); if( sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul" && sidebar.contentDocument.readyState == "complete" ) { scan(); } else { sidebar.addEventListener("load", function onLoad(e) { sidebar.removeEventListener(e.type, onLoad, true); scan() }, true); } |
firepox > 30-07-2014 01:28:45 |
Infocatcher а возможно сделать, что бы при повторном клике боковая панель закрывалась? |
firepox > 30-07-2014 14:13:24 |
okkamas_knife |
Infocatcher > 30-07-2014 14:56:54 |
firepox пишет
Только надо иметь в виду, что преждевременное закрытие прервет проверку. Выделить код Код:var sidebar = document.getElementById("sidebar"); if( sidebar.boxObject.width && sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul" ) { toggleSidebar(); } else { toggleSidebar("viewUpdateScanSidebar", true); var scan = function() { sidebar.contentWindow.USc_updatescan.scanButtonClick(); }; if( sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul" && !sidebar.webProgress.isLoadingDocument ) { scan(); } else { sidebar.addEventListener("load", function onLoad(e) { sidebar.removeEventListener(e.type, onLoad, true); scan(); }, true); } } В предыдущем коде «sidebar.contentDocument.readyState == "complete"» тоже лучше заменить на «!sidebar.webProgress.isLoadingDocument». |
Infocatcher > 30-07-2014 15:04:57 |
okkamas_knife пишет
Не, там проблема в том, что в Firefox у кнопки закрытия нет идентификатора. |
firepox > 30-07-2014 15:41:43 |
Infocatcher |
Infocatcher > 30-07-2014 16:35:49 |
okkamas_knife пишет
Не-а, там как раз полно отличий, из-за этого даже некий xSidebar есть: |
firepox > 30-07-2014 19:12:34 |
Если возможно, было бы еще лучше ) |
Infocatcher > 30-07-2014 19:48:58 |
firepox пишет
Все-таки есть там код для проверки без боковой панели. Выделить код Код:// See chrome://updatescan/content/autoscan.js and chrome://updatescan/content/updatescan.js // Like USc_autoscan._check(), but check all items like USc_updatescan.scanButtonClick() var me = USc_autoscan; me.scan = new USc_scanner(); me.numChanges = 0; if(me.scan.addItems(USc_places.getRootFolderId(), false /*autoScan*/) > 0) { me.scan.start( me._scanChanged, function onFinished() { me._scanFinished(); if(me.numChanges) { toggleSidebar("viewUpdateScanSidebar", true); } else { var str = document.getElementById("updatescanStrings"); window.openDialog( "chrome://updatescan/content/alert.xul", "alert:alert", "chrome,dialog=yes,titlebar=no,popup=yes", str.getString("statusNoChanges") ); } }, me._scanProgress, me._encodingChanged ); } |
firepox > 30-07-2014 20:04:01 |
Infocatcher |
firepox > 30-07-2014 21:04:25 |
а можно в последнем варианте убрать сообщение, чтобы если нет изменений - ничего и не происходило. 30-07-2014 21:07:50 |
foxX > 03-08-2014 03:33:42 |
помогите плиз! как сделать чтоб при запуске лисы у иконки была картинка (1) а после переключения (2)? |
VORON > 14-08-2014 09:57:27 |
Где то видел кнопку для запаролевания firefox-не могу найти.Ткните плиз. |
VORON > 14-08-2014 10:45:17 |
okkamas_knife |
difabor > 16-08-2014 19:30:48 |
Можно ли сделать кнопку, которая по длинному левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки, а по короткому, как обычно - делала бы эту вкладку активной (как сейчас)? |
bunda1 > 16-08-2014 21:15:10 |
difabor пишет
Выделить код Код:(function f() { const tabbrowser = gBrowser.mTabContainer; addEventListener("click", function(e) { if ( e.button || e.target.nodeName !== "tab" || (Date.now() - f.mouseDownTime) < 600 ) return; BrowserReload(); }, true, tabbrowser ); addEventListener("mousedown", function() f.mouseDownTime = Date.now(), true, tabbrowser ); })(); или: Выделить код Код:function tabLongPress(e) { if ( e.button || e.target.nodeName !== "tab" ) return; if ( e.type == "mousedown" ) tabLongPress.time = Date.now(), e.stopPropagation(); else Date.now() - tabLongPress.time > 600 ? gBrowser.reloadTab(e.target) : gBrowser.selectedTab = e.target; }; ["click", "mousedown"].forEach(function(type) addEventListener(type, tabLongPress, true, gBrowser.mTabContainer )); |
sonyas75 > 16-08-2014 21:42:25 |
а можно Выделить код Код://Активизировать вкладку наведением курсора...................... var tab_hover={ event:null, tid:null, onLoad: function() { gBrowser.tabContainer.addEventListener("mouseout", tab_hover.onMouseOut, false); gBrowser.tabContainer.addEventListener("mouseover", tab_hover.onMouseOver, false); }, onUnload: function() { gBrowser.tabContainer.removeEventListener("mouseover", tab_hover.onMouseOver, false); gBrowser.tabContainer.removeEventListener("mouseout", tab_hover.onMouseOut, false); }, onMouseOver: function(event) { tab_hover.event=event.target; tab_hover.tid=setTimeout( function(){ gBrowser.selectedTab=tab_hover.event; } , 450); }, onMouseOut: function() { clearTimeout(tab_hover.tid); } }; if (!this.tab_hoverRun) tab_hover.onLoad(); this.tab_hoverRun = true; можно в него добавить код по короткому левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки? спс заранее |
bunda1 > 16-08-2014 21:55:05 |
sonyas75 пишет
Добавлять не надо, будет работать вместе с твоим кодом: Выделить код Код:addEventListener("click", function(e) { if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload(); }, true, gBrowser.mTabContainer ); Кстати, советую заменить твой код на: Выделить код Код:// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................ (function () { var menubar = document.getElementById('toolbar-menubar'); addEventListener("mouseover", function(e) { if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") ) { gBrowser.selectedTab = e.target; e.target.setAttribute('read', 'true'); } }, false, gBrowser.tabContainer ); })(); |
sonyas75 > 16-08-2014 22:05:47 |
о! премного благодарен |
difabor > 17-08-2014 00:34:09 |
И от меня - огромнейшее спасибо!!! |
difabor > 18-08-2014 01:17:06 |
Уважаемый bunda1, Выделить код Код:// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................ (function () { var menubar = document.getElementById('toolbar-menubar'), dateout = Date.now(); addEventListener("mouseout", function(e) {dateout = Date.now(); }, true, gBrowser.tabContainer ); addEventListener("mouseover", function(e) { if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") && (Date.now() - dateout > 500 ) ) { gBrowser.selectedTab = e.target; e.target.setAttribute('read', 'true'); } }, false, gBrowser.tabContainer ); addEventListener("click", function(e) { if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload(); }, true, gBrowser.mTabContainer ); })(); То есть активизация вкладки происходит по наведению курсора, если курсор "покинул" предыдущую вкладку полсекунды или больше тому назад. |
bunda1 > 18-08-2014 11:21:58 |
difabor |
sanya.nefedov > 31-08-2014 16:54:29 |
Подскажите, а с помощью CB можно сделать имитацию нажатий клавивиатуры, чтобы не запускать vbscript: |
Zaycoff > 05-09-2014 20:18:10 |
Кнопочка Clear Cache / Delete flash cookie после обновления до FF32 больше не работает, можно её как-то исправить? |
bunda1 > 05-09-2014 21:46:37 |
Zaycoff пишет
Выделить код Код: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%3EClear%20Cache%20/%20Delete%20flash%20cookies%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExEAAAEAIAB4BQAAFgAAACgAAAATAAAAIgAAAAEAIAAAAAAAUAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAQEBCxMTEyElJSU/KywrWC4sLWUzMzNrPDs8a0NEQ2MsLCxKDg0PKgABAA8AAAAAAgICAAAAAAAAAAAAAAAAAQAAAAIZGhoHQ0NDUGJiYqZxcXHVcXFx6XNzc/STlJT2t7e2+NDP0Pjb3dz11tbY67GwsNtsbWy0JyYnYQICAg8CAgICAAAAAgICAgUAAAAAJykpJ5CRkM64t7f/q6ut/7m5uf/Lx8b/19bW/9nY2P7a2dz+4d/g/+rq6P/r7Or/1NTU/3V1ddkKCwo+AQEBAQEBAQQCAgIDAAABARMTEhdubmy/rq6w/snIyfbj4+H94uXn/d/l7f3W2+X9xc3R/a20u/2oqKr9paWi96Wmpf5ubW3NFRMTNgAAAA4BAQEJAQIBAQICAgUAAQUBhY6UpuDi5f7b2Nj609ng/rfB1v+ssc3/wcja/6qyx/99hqL/iZOr/rW4vfrZ2Nf+io2VuQQHDiICAgETAQEBBgIDBAIDAgEDAQoSAau8wq3/////4Oft+tzm7v7d4On/q6zJ/0tLoP9cXKb/tbXM/9Hb5v7f5/H6/////7K6wrYBDRkNAwEABQICAQECAwQCAQIBAggNEQest7+4+v7+/8rY6Pnf5u7++/r6/6OmzP9kZa//aGmu/8rN4//7+vv/3Obr+Pn9/f+/wsK7ChIWDAIBAQECAwMDAwQEBAEBAQINFhgPprXAvPb////K1OT5vcDX/6SlzP+Bg7z/5ebu/7S11P9+gbv/l5jE/7G60fj1/P7/w8TIwBYYIRcAAQEBBAQEBAQEBQQCAAAAESIsGbTGzMH5////5u70+dTW6P+Dg7//gIC//8PD3f+gocr/OTyf/3J0t/+/xd349P7//73EzsYgIy8hAAAAAAQEBAQEBAUEAAAAABoiLSLAyszH+f///9/q9vj0+Pz/2Nfp/7e32P+9vtz/ubvX/25vtP+/weD/5/D1+Pb////AytHLJSw3KwAAAAAEBAUFBAQFBQAAAAAgKzQrvsvOyvb+/v/I2e/42ef3//L19v/p6Ov//vv7//Hy8v/Jydv/1ODu/97r9Pj9/v//zdHY0C44RjgAAAAABAUFBQQFBQUAAAAAKzpJN8TV2dD4/v7/1Oj++NDq///Q6P7/4PH//+Pw/v/U5fb/xt3z/8Tc9f/X5/f4//7//9PX29c3QktFAAAAAAUFBQUEBQUFAAAAADE5Rj7G09rT8Pr7/8PV6fi60eX/q8ff/63G4P+uxt//s8vl/7PN6//F2fD/0N/r+Pr8/P/W3+TaP09aSwAAAAAFBQUFBAUFBQAAAAA4PUhRqrW/3bK6wP57gIn2cXeD/nh+gv2Rlpf9rrKz/crNz/3c4eT94uft/tDU2/bX2dr+tL3F4kJNWl0AAAAABAUGBgMDAwYAAAAAX15jfq+vsvqjpqb/mJ2f/qmyt/+vvMP+u8nT/8jT3f/R3Ob/2OTs/97l7P/N0dX+wsLE/62usP5WV1uLAAAAAAIDBAUDAwMEAAAAAEdGRkqJiYi6mZma57CztO/Q1tr20tni98PL1vettb/3maGs94uSnfeIjpL3iY2M8ZycnOmZmJfDTUtMVgAAAAACAgIDAAAAAAAAAAAEBAUBDxEQEickJCtAODtEVlFTW2RjZGljYl9yXVxadVdWVHNRUFNqR0RHXT03NkcpJyctFBUWEwgHCAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20const%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%0A%7D%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%28function%28%29%20%7B%0A%20%20%20%20var%20title%20%3D%20self.label%20+%20%22%3A%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%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 |
Zaycoff > 05-09-2014 22:37:02 |
bunda1 |
Mishania > 11-09-2014 09:26:37 |
День добрый. Есть кнопочка CB Mouse Gestures+ (мне её на делали для изменения масштаба страницы ПКМ+колёсико) помогите добавить сброс масштаба по ПКМ+ЛКМ. скрытый текст Выделить код Код:// Объявляем переменные для этой вкладки ................................ var _this = this; var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService); var ucjsMouseGestures = { // настройки .... enableWheelGestures: true, enableRockerGestures: true, enablePopupGestures: true, _lastX: 0, _lastY: 0, _directionChain: '', _isMouseDownL: false, _isMouseDownR: false, _hideFireContext: false, //for windows _shouldFireContext: false, //for linux POPUP_ID: 'GesturePopup', // Жесты .... GESTURES: { // Управление страницей ................................ 'W-':{name:'Увеличить масштаб',cmd:function(){ FullZoom.enlarge() }}, 'W+':{name:'Уменьшить масштаб',cmd:function(){ FullZoom.reduce() }}, 'UDU':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }}, }, init:function() { var self = this; var events = ["mousedown", "mousemove", "mouseup", "contextmenu"]; if ( this.enableRockerGestures ) events.push("draggesture"); if ( this.enableWheelGestures ) events.push("DOMMouseScroll"); function registerEvents( aAction, eventArray ) { eventArray.forEach(function(aType) { gBrowser.mPanelContainer[aAction + "EventListener"]( aType, self, true ) }); }; registerEvents("add", events); window.addEventListener("unload", function() { registerEvents("remove",events); }, false ); addDestructor(function() { registerEvents("remove", events) }); }, handleEvent:function( event ) { switch( event.type ) { case"mousedown": if ( event.button ==2 ) { this._isMouseDownR = true; this._hideFireContext = false; this._startGesture( event ); } if ( this.enableRockerGestures ) { if ( event.button == 2 && this._isMouseDownL ) { this._isMouseDownL = false; this._isMouseDownR = false; this._shouldFireContext = false; this._hideFireContext = true; this._directionChain = "L>R"; this._stopGesture(event); } else if ( event.button == 0 ) { this._isMouseDownL = true; if ( this._isMouseDownR ) { this._isMouseDownL = false; this._shouldFireContext = false; this._hideFireContext = true; this._directionChain = "L<R"; this._stopGesture( event ); } } } break; case"mousemove": if ( this._isMouseDownR ) { this._hideFireContext = true; this._progressGesture( event ); } break; case"mouseup": if ( content.xdTrailArea ) { content.xdTrailArea.parentNode.removeChild( content.xdTrailArea ); content.xdTrailArea = content.document.documentElement.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "xdTrailArea")); } if ( event.ctrlKey && event.button == 2 ) { this._isMouseDownL = false; this._isMouseDownR = false; this._shouldFireContext = false; this._hideFireContext = false; this._directionChain = ''; event.preventDefault(); XULBrowserWindow.statusTextField.label = "Reset Gesture"; break; } if ( this._isMouseDownR && event.button == 2 ) { if ( this._directionChain ) this._shouldFireContext = false; this._isMouseDownR = false; this._stopGesture( event ); if ( this._shouldFireContext && !this._hideFireContext ) { this._shouldFireContext = false; this._displayContextMenu( event ); } } else if ( this.enableRockerGestures && event.button == 0 && this._isMouseDownL ) { this._isMouseDownL = false; this._shouldFireContext = false; } else if ( this.enablePopupGestures && ( event.button == 0 || event.button == 1 ) && event.target.localName =='menuitem' ) { this._isMouseDownL = false; this._shouldFireContext = false; var popup = document.getElementById( this.POPUP_ID ); var activeItem = event.target; switch( popup.getAttribute("gesturecommand") ) { case"WebSearchPopup": var selText = popup.getAttribute("selectedtext"); var engine = activeItem.engine; if ( !engine ) break; var submission = engine.getSubmission( selText, null ); if ( !submission ) break; document.getElementById('searchbar').textbox.value = selText; gBrowser.loadOneTab( submission.uri.spec,null,null,submission.postData,null,false ); break; case"ClosedTabsPopup": undoCloseTab( activeItem.index ); break; case"HistoryPopup": gBrowser.webNavigation.gotoIndex( activeItem.index ); break; case"AllTabsPopup": gBrowser.selectedTab = gBrowser.mTabs[activeItem.index]; break; } popup.hidePopup(); } try { document.getElementById("statusbar-display").label = "" } catch(e) {}; break; case"popuphiding": var popup = document.getElementById( this.POPUP_ID ); popup.removeEventListener("popuphiding",this,true); document.documentElement.removeEventListener("mouseup",this,true); while( popup.hasChildNodes() ) popup.removeChild( popup.lastChild ); break; case"contextmenu": if ( this._isMouseDownL || this._isMouseDownR || this._hideFireContext ) { event.preventDefault(); event.stopPropagation(); this._shouldFireContext = true; this._hideFireContext = false; } break; case"DOMMouseScroll": if ( this.enableWheelGestures&&this._isMouseDownR ) { event.preventDefault(); event.stopPropagation(); this._shouldFireContext = false; this._hideFireContext = true; this._directionChain = "W" + ( event.detail > 0 ? "+" : "-" ); this._stopGesture(event); } break; case"draggesture": this._isMouseDownL = false; break; } }, _displayContextMenu:function( event ) { var evt = event.originalTarget.ownerDocument.createEvent("MouseEvents"); evt.initMouseEvent("contextmenu",true,true,event.originalTarget.defaultView,0,event.screenX,event.screenY,event.clientX,event.clientY,false,false,false,false,2,null); event.originalTarget.dispatchEvent(evt); }, _startGesture:function( event ) { this._lastX = event.screenX; this._lastY = event.screenY; this._directionChain = ""; }, _progressGesture:function( event ) { var x = event.screenX, y = event.screenY; var lastX = this._lastX, lastY = this._lastY; var subX = x-lastX, subY=y-lastY; var distX = ( subX > 0 ? subX : (-subX) ), distY = ( subY > 0 ? subY : ( -subY ) ); var direction; if ( distX < 10 && distY < 10 ) return; if ( distX > distY ) direction = subX < 0 ? "L" : "R"; else direction = subY < 0 ? "U" : "D"; var dChain = this._directionChain; if ( direction !== dChain.charAt( dChain.length-1 ) ) { dChain += direction; this._directionChain += direction; var gesture = this.GESTURES[dChain]; XULBrowserWindow.statusTextField.label = "Жест мыши: "+ dChain + ( gesture ? ' ('+ gesture.name +')' : '' ); } this._lastX = x; this._lastY = y; }, _stopGesture:function(event){ try { if ( dChain = this._directionChain ) this.GESTURES[dChain].cmd( this, event ); XULBrowserWindow.statusTextField.label = ""; } catch(e) { setTimeout(function() { XULBrowserWindow.statusTextField.label = "Неизвестный жест мыши: " + dChain }, 0); setTimeout(function() { XULBrowserWindow.statusTextField.label = "" }, 600); } this._directionChain = ""; }, _buildPopup:function( event,gestureCmd ) { if ( !this.enablePopupGestures ) return; var popup = document.getElementById( this.POPUP_ID ); if ( !popup ) { popup = document.createElement("popup"); popup.id = this.POPUP_ID; } document.getElementById("mainPopupSet").appendChild( popup ); popup.setAttribute("gesturecommand", gestureCmd ); switch( gestureCmd ) { case"WebSearchPopup": var searchSvc = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var engines = searchSvc.getVisibleEngines({}); if ( engines.length < 1 ) throw"Поисковые системы не установлены."; for ( var i = engines.length - 1; i >= 0;--i ) { var engine = engines[i]; var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", engine.name ); menuitem.setAttribute("class", "menuitem-iconic"); if ( engine.iconURI ) menuitem.setAttribute("src", engine.iconURI.spec ); popup.insertBefore( menuitem, popup.firstChild ); menuitem.engine = engine; } popup.setAttribute("selectedtext", getBrowserSelection().toString() ); break; case"ClosedTabsPopup": try { if ( !gPrefService.getBoolPref("browser.sessionstore.enabled") ) throw"Функция восстановления сессий отключена."; } catch(e){} var ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); if ( ss.getClosedTabCount(window) ==0 ) throw"Нет восстанавливаемых вкладок в этом окне."; var undoItems = eval("("+ss.getClosedTabData(window)+")"); for ( var i=0, LEN = undoItems.length; i<LEN; i++ ) { var menuitem=popup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("label",undoItems[i].title); menuitem.setAttribute("class","menuitem-iconic bookmark-item"); menuitem.index = i; var iconURL = undoItems[i].image; if ( iconURL ) menuitem.setAttribute("image", iconURL ); } break; case"HistoryPopup": var sessionHistory = gBrowser.webNavigation.sessionHistory; if ( sessionHistory.count<1 ) throw"Нет истории в этой вкладке."; var curIdx = sessionHistory.index; for ( var i = 0, shc = sessionHistory.count; i < shc; i++ ) { var entry = sessionHistory.getEntryAtIndex(i,false); if ( !entry ) continue; var menuitem = document.createElement("menuitem"); popup.insertBefore(menuitem,popup.firstChild); menuitem.setAttribute("label",entry.title); try { var iconURL = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService).getFaviconForPage( entry.URI ).spec; menuitem.style.listStyleImage = "url("+iconURL+")"; } catch(e){} menuitem.index = i; if ( i==curIdx ) { menuitem.style.listStyleImage = ""; menuitem.setAttribute("type","radio"); menuitem.setAttribute("checked","true"); menuitem.className = "unified-nav-current"; activeItem = menuitem; } else { menuitem.className = i< curIdx ? "unified-nav-back menuitem-iconic" : "unified-nav-forward menuitem-iconic"; } } break; case"AllTabsPopup": var tabs = gBrowser.mTabs; if ( tabs.length < 1 ) return; for ( var i=0, LEN = tabs.length; i < LEN; i++ ) { var menuitem = popup.appendChild(document.createElement("menuitem")); var tab = tabs[i]; menuitem.setAttribute("class", "menuitem-iconic bookmark-item"); menuitem.setAttribute("label", tab.label); menuitem.setAttribute("crop", tab.getAttribute("crop") ); menuitem.setAttribute("image", tab.getAttribute("image")); menuitem.index = i; if ( tab.selected ) menuitem.setAttribute("style", "color: red; font-weight: bold;"); if ( tab.hasAttribute('unread') ) menuitem.setAttribute("style", "color: blue;"); } break; } document.popupNode = null; document.tooltipNode = null; popup.addEventListener("popuphiding", this, true); popup.openPopup( null, "", event.clientX, event.clientY, false, false ); document.documentElement.addEventListener("mouseup", this, true); }, }; ucjsMouseGestures.init(); |
bunda1 > 11-09-2014 10:39:55 |
Под: положи: |
Mishania > 11-09-2014 10:48:58 |
bunda1 |
Inko7 > 11-09-2014 11:43:23 |
Mishania |
Mishania > 11-09-2014 18:46:02 |
Inko7, bunda1 |
difabor > 12-09-2014 01:54:56 |
Inko7 пишет
Объясните мне разницу между 'R>L' и 'L<R' |
bunda1 > 12-09-2014 20:05:51 |
Ну просто так установлено в коде кнопки. |
bazik210 > 19-09-2014 17:49:05 |
А существует ли простая кнопка выполнить, как в опере?(перейти по введённому адресу) Перерыл почти весь тырнет, чтот нигде нету... |
bunda1 > 19-09-2014 17:59:47 |
bazik210 пишет
Не понятно! |
bazik210 > 19-09-2014 18:12:09 |
http://itmages.ru/image/view/1926077/ff538f45 |
bunda1 > 19-09-2014 18:22:31 |
Создай кнопку с кодом: |
bazik210 > 19-09-2014 18:32:31 |
bunda1 пишет
пашет, пасиб. |
polk90 > 22-09-2014 03:01:01 |
есть замечательная кнопка "Bookmarks Menu". все хорошо кроме: |
polk90 > 22-09-2014 11:46:51 |
okkamas_knife 22-09-2014 12:06:47 |
polk90 > 22-09-2014 14:22:41 |
okkamas_knife p.s. нужно чтоб закладки открывались в боковой панели по ЛевойКМ (до этого неправильно написал ПКМ. так кнопака настроена изначально) |
polk90 > 22-09-2014 17:15:47 |
okkamas_knife 22-09-2014 17:38:08 |
Infocatcher > 22-09-2014 17:55:58 |
polk90 |
polk90 > 23-09-2014 00:54:48 |
Infocatcher |
VORON > 29-09-2014 09:24:18 |
Кто нибудь знает,как в новых версиях лиса закидывать в вертикальную панель кнопки?Раньше нажал изменить,покидал туда что нужно и всё.А теперь при изменить нет поля от кнопки,куда они ставились. |
villa7 > 29-09-2014 09:42:45 |
VORON |
bunda1 > 29-09-2014 09:52:12 |
villa7 пишет
Выделить код Код: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%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20vto%20%3D%20%7B%0A%09distanceShow%3A%202%2C%0A%09distanceHide%3A%2064%2C%0A%09showDelay%3A%20320%2C%0A%09color%3A%20%22%23a2dced%22%2C%0A%09fringe%3A%20%22black%22%2C%0A%09padding%3A%204%2C%0A%09name%3A%20%22VT%22%2C%0A%0A%09btn%3A%20this%2C%0A%09tcm%3A%20document.getElementById%28%22toolbar-context-menu%22%29%2C%0A%09ctm%3A%20document.getElementById%28%22customization-toolbar-menu%22%29%2C%0A%09deck%3A%20document.getElementById%28%22content-deck%22%29%2C%0A%09id%3A%20%22cb-vt%22%2C%0A%0A%09get%20cust%28%29%20gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%2C%0A%09get%20rdf%28%29%20%7B%0A%09%09delete%20this.rdf%3B%0A%09%09var%20rdf%20%3D%20Cc%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.getService%28Ci.nsIRDFService%29%3B%0A%09%09return%20this.rdf%20%3D%20%5B%0A%09%09%09rdf%2C%0A%09%09%09rdf.GetDataSource%28%22rdf%3Alocal-store%22%29%2C%0A%09%09%09rdf.GetResource%28location%20+%20%22%23%22%20+%20this.id%29%2C%0A%09%09%09null%2C%20null%0A%09%09%5D%3B%0A%09%7D%2C%0A%09init%3A%20function%28%29%20%7B%0A%09%09if%20%28this.cust%20%7C%7C%20this.btn._destructors.length%29%20return%3B%0A%0A%09%09var%20vt%20%3D%20this.initVT%28%29%3B%0A%09%09var%20vto%20%3D%20this%3B%0A%0A%09%09this.btn.onclick%20%3D%20function%28e%29%20%7B%0A%09%09%09e.button%20%7C%7C%20vto.toggleVT%28%29%3B%0A%09%09%7D%0A%09%09window.addEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%0A%09%09if%20%28vt.hasOwnProperty%28%22on%22%29%29%20%7B%0A%09%09%09vto.toggleVT%28vt.on%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09var%20%5Brdf%2C%20ds%2C%20source%5D%20%3D%20this.rdf%3B%0A%09%09%09var%20property%20%3D%20rdf.GetResource%28%22collapsed%22%29%3B%0A%09%09%09var%20target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09var%20collapsed%20%3D%20target%20%26%26%20target.QueryInterface%28Ci.nsIRDFLiteral%29.Value%20%3D%3D%20%22true%22%3B%0A%09%09%09vto.toggleVT%28%21collapsed%29%3B%0A%09%09%7D%0A%09%09this.resize%28%29%3B%0A%09%09vto.btn._destructors.push%28%7Bcontext%3A%20vto%2C%20destructor%3A%20vto.destroy%7D%29%3B%0A%09%7D%2C%0A%09destroy%3A%20function%28reason%29%20%7B%0A%09%09window.removeEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%09%09this.setCollapser%28false%29%3B%0A%0A%09%09if%20%28reason%20%3D%3D%20%22destructor%22%20%26%26%20this.cust%29%20%7B%0A%09%09%09var%20vto%20%3D%20this%3B%0A%09%09%09vto.resize%28%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09CustomizableUI.addListener%28vto%29%3B%0A%0A%09%09%09this.ctm.addEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09this.ctm.addEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09window.addEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22aftercustomization%22%2C%20function%20ac%28%29%20%7B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20ac%2C%20false%29%3B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09CustomizableUI.removeListener%28vto%29%3B%0A%0A%09%09%09%09vto.ctm.removeEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09vto.ctm.removeEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09window.removeEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09%09document.getElementById%28vto.btn.id%29%20%7C%7C%20vto.destroyVT%28%29%3B%0A%0A%09%09%09%7D%2C%20false%29%3B%0A%09%09%7D%0A%09%09if%20%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09CustomizableUI.removeWidgetFromArea%28this.btn.id%29%3B%0A%09%09%09this.destroyVT%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09handleEvent%3A%20function%28e%29%20this%5Be.type%5D%28e%29%2C%0A%0A%09command%3A%20function%28e%29%20%7B%0A%09%09if%20%28e.target.id%20%21%3D%20%22toggle_%22%20+%20this.id%29%20return%3B%0A%09%09e.preventDefault%28%29%3B%0A%09%09this.toggleVT%28%29%3B%0A%09%7D%2C%0A%09popupshowing%3A%20function%28e%29%20%7B%0A%09%09var%20menuitem%20%3D%20e.target.querySelector%28%22%23toggle_%22%20+%20this.id%29%3B%0A%09%09menuitem%20%26%26%20menuitem.setAttribute%28%22checked%22%2C%20this.vt.on%29%3B%0A%09%09if%20%28this.cust%20%7C%7C%20%21this.vt.contains%28e.target.triggerNode%29%29%20return%3B%0A%09%09for%28var%20selector%20of%20%5B%22.customize-context-moveToPanel%22%2C%20%22.customize-context-removeFromToolbar%22%5D%29%20%7B%0A%09%09%09menuitem%20%3D%20e.target.querySelector%28selector%29%3B%0A%09%09%09menuitem%20%26%26%20menuitem.removeAttribute%28%22disabled%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09mousemove%3A%20function%20collapser%28e%29%20%7B%0A%09%09var%20distance%20%3D%20collapser.distance%20%3D%20e.screenX%20-%20document.documentElement.boxObject.screenX%3B%0A%09%09if%20%28collapser.waiting%29%20return%3B%0A%09%09if%20%28distance%20%3C%3D%20this.distanceShow%20%26%26%20this.vt.collapsed%29%20%7B%0A%09%09%09if%20%28this.showDelay%20%3C%201%29%20%7B%0A%09%09%09%09this.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09collapser.waiting%20%3D%20true%3B%0A%09%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09%09if%20%28collapser.distance%20%3E%3D%20vto.distanceShow%29%20%7B%0A%09%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09vto.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%7D%2C%20this.showDelay%2C%20this%29%3B%0A%09%09%7D%0A%09%09if%20%28distance%20%3E%3D%20this.distanceHide%20%26%26%20%21this.vt.collapsed%29%0A%09%09%09this.vt.collapsed%20%3D%20true%3B%0A%09%7D%2C%0A%09setCollapser%3A%20function%28set%29%20%7B%0A%09%09set%0A%09%09%3F%20this.cust%20%7C%7C%20window.addEventListener%28%22mousemove%22%2C%20this%2C%20false%29%0A%09%09%3A%20window.removeEventListener%28%22mousemove%22%2C%20this%2C%20false%29%3B%0A%09%7D%2C%0A%09callCollapser%3A%20function%28e%29%20%7B%0A%09%09this.mousemove%28%7BscreenX%3A%20document.documentElement.boxObject.screenX%20+%20MousePosTracker._x%7D%29%3B%0A%09%7D%2C%0A%09customizationready%3A%20function%28%29%20%7B%0A%09%09window.removeEventListener%28%22customizationready%22%2C%20this%2C%20false%29%3B%0A%09%09this.vt.on%20%26%26%20this.insertBox%28true%29%3B%0A%09%7D%2C%0A%09resize%3A%20function%28e%29%20%7B%0A%09%09this.vt.style.maxHeight%20%3D%20this.deck.boxObject.height%20+%201%20+%20%22px%22%3B%0A%09%7D%2C%0A%09popupshown%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%09popuphidden%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%0A%09handlePopup%3A%20function%28e%29%20%7B%0A%09%09if%20%28%0A%09%09%09this.vt.collapsed%20%7C%7C%20this.vt.on%0A%09%09%09%7C%7C%20%28e.target.localName%20%21%3D%20%22menupopup%22%20%26%26%20e.target.localName%20%21%3D%20%22panel%22%29%0A%09%09%29%20return%3B%0A%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09var%20hasPopup%20%3D%20Array.concat%28%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22menupopup%22%29%29%2C%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22panel%22%29%29%0A%09%09%09%29.some%28function%28popup%29%0A%09%09%09%09%22state%22%20in%20popup%20%26%26%20popup.state%20%3D%3D%20%22open%22%20%26%26%20%28%0A%09%09%09%09%09vto.vt.contains%28popup%29%0A%09%09%09%09%09%7C%7C%20%28%22triggerNode%22%20in%20popup%20%26%26%20vto.vt.contains%28popup.triggerNode%29%29%0A%09%09%09%09%09%7C%7C%20%28%0A%09%09%09%09%09%09%22anchorNode%22%20in%20popup%20%26%26%20popup.anchorNode%20%26%26%20%28%0A%09%09%09%09%09%09%09vto.vt.contains%28popup.anchorNode%29%0A%09%09%09%09%09%09%09%7C%7C%20vto.vt.contains%28document.getBindingParent%28popup.anchorNode%29%29%0A%09%09%09%09%09%09%29%0A%09%09%09%09%09%29%0A%09%09%09%09%29%0A%09%09%09%29%3B%0A%09%09%09vto.setCollapser%28%21hasPopup%29%3B%0A%09%09%09hasPopup%20%7C%7C%20vto.callCollapser%28%29%3B%0A%09%09%7D%2C%20200%2C%20this%29%3B%0A%09%7D%2C%0A%09onWidgetAfterDOMChange%3A%20function%28...a%29%20%7B%0A%09%09if%20%28a%5B2%5D%20%3D%3D%20this.vt.box%29%20this.vt.hbox.style.minWidth%20%3D%20this.vt.boxObject.width%20+%20%22px%22%3B%0A%09%7D%2C%0A%09initVT%3A%20function%28%29%20%7B%0A%09%09var%20id%20%3D%20this.id%3B%0A%09%09var%20boxId%20%3D%20id%20+%20%22-customization-target%22%3B%0A%09%09var%20vt%20%3D%20this.vt%20%3D%0A%09%09%09document.getElementById%28id%29%20%7C%7C%0A%09%09%09document.createElement%28%22toolbar%22%29%3B%0A%09%09var%20attrs%20%3D%20%7B%0A%09%09%09id%3A%20id%2C%0A%09%09%09mode%3A%20%22icons%22%2C%0A%09%09%09iconsize%3A%20%22small%22%2C%0A%09%09%09orient%3A%20%22vertical%22%2C%0A%09%09%09customizable%3A%20%22true%22%2C%0A%09%09%09persist%3A%20%22collapsed%22%2C%0A%09%09%09toolbarname%3A%20this.name%2C%0A%09%09%09fullscreentoolbar%3A%20%22true%22%2C%0A%09%09%09class%3A%20%22chromeclass-toolbar%22%2C%0A%09%09%09context%3A%20%22toolbar-context-menu%22%2C%0A%09%09%09style%3A%20%22-moz-appearance%3A%20none%3B%20display%3A%20-moz-box%3B%20height%3A%20100%25%3B%20position%3A%20fixed%3B%20min-width%3A%2020px%22%0A%09%09%7D%3B%0A%09%09for%28var%20attr%20in%20attrs%29%20vt.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09%09if%20%28%21vt.parentNode%29%20%7B%0A%0A%09%09%09var%20box%20%3D%20vt.box%20%3D%20document.createElement%28%22vbox%22%29%3B%0A%09%09%09vt.appendChild%28box%29%3B%0A%09%09%09box.id%20%3D%20boxId%3B%0A%09%09%09box.style.cssText%20%3D%20%22height%3A%20100%25%3B%20width%3A%20100%25%3B%22%0A%0A%09%09%09vt.customizationTarget%20%3D%20box%3B%0A%09%09%09gNavToolbox.appendChild%28vt%29%3B%0A%0A%09%09%09if%20%28CustomizableUI.areas.indexOf%28id%29%20%3D%3D%20-1%29%20%7B%0A%09%09%09%09CustomizableUI.registerArea%28id%2C%20%7Blegacy%3A%20true%7D%29%3B%0A%09%09%09%7D%0A%09%09%09box.removeAttribute%28%22class%22%29%3B%0A%09%09%09box.__defineGetter__%28%22localName%22%2C%20function%28%29%20arguments.callee.caller%20%3D%3D%20custombutton.buttonConstructor%20%3F%20%22toolbar%22%20%3A%20%22vbox%22%29%3B%0A%0A%09%09%09vt.hbox%20%3D%20document.createElement%28%22hbox%22%29%3B%0A%09%09%09vt.hbox.id%20%3D%20id%20+%20%22-hbox%22%3B%0A%09%09%7D%0A%09%09vt.box.style.padding%20%3D%20%220%20%22%20+%20this.padding%20+%20%22px%22%3B%0A%09%09vt.style.backgroundColor%20%3D%20this.color%3B%0A%09%09vt.style.borderRight%20%3D%20%221px%20solid%20%22%20+%20this.fringe%3B%0A%09%09return%20vt%3B%0A%09%7D%2C%0A%09destroyVT%3A%20function%28reason%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09CustomizableUI.unregisterArea%28vt.id%2C%20%7B%7D%29%3B%0A%09%09vt.hbox.parentNode%20%26%26%20vt.hbox.parentNode.removeChild%28vt.hbox%29%3B%0A%09%09vt.parentNode%20%26%26%20vt.parentNode.removeChild%28vt%29%3B%0A%0A%09%09var%20%5Brdf%2C%20ds%2C%20source%2C%20property%2C%20target%5D%20%3D%20this.rdf%3B%0A%09%09var%20enumerator%20%3D%20ds.ArcLabelsOut%28source%29%3B%0A%09%09while%28enumerator.hasMoreElements%28%29%29%20%7B%0A%09%09%09property%20%3D%20enumerator.getNext%28%29%3B%0A%09%09%09target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%09%7D%0A%09%09target%20%3D%20source.QueryInterface%28Ci.nsIRDFNode%29%3B%0A%09%09source%20%3D%20rdf.GetResource%28location%29%3B%0A%09%09property%20%3D%20rdf.GetResource%28%22http%3A//home.netscape.com/NC-rdf%23persist%22%29%3B%0A%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%7D%2C%0A%09insertBox%3A%20function%28ins%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09var%20box%20%3D%20vt.hbox%3B%0A%09%09if%20%28%21ins%29%20%7B%0A%09%09%09box.parentNode%20%26%26%20box.parentNode.removeChild%28box%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20id%20%3D%20this.cust%20%3F%20%22customization-palette-container%22%20%3A%20%22sidebar-box%22%3B%0A%09%09var%20point%20%3D%20document.getElementById%28id%29%3B%0A%09%09point.parentNode.insertBefore%28box%2C%20point%29%3B%0A%09%09var%20mw%20%3D%20function%28%29%20box.style.minWidth%20%3D%20vt.boxObject.width%20+%20%22px%22%3B%0A%09%09mw%28%29%3B%20setTimeout%28mw%2C%20100%29%3B%0A%09%7D%2C%0A%09toggleVT%3A%20function%28on%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09if%20%28on%20%3D%3D%20undefined%29%20on%20%3D%20%21vt.on%3B%0A%09%09vt.on%20%3D%20on%3B%0A%09%09this.setCollapser%28%21on%29%3B%0A%09%09vt.collapsed%20%3D%20%21on%3B%0A%09%09this.insertBox%28on%29%3B%0A%09%7D%0A%7D%3B%0Avto.init%28%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bevent.target%20%7C%7C%20this.click%28%29%3B%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 |
villa7 > 29-09-2014 10:08:39 |
bunda1 |
VORON > 29-09-2014 10:08:53 |
bunda1 |
bunda1 > 29-09-2014 10:54:14 |
VORON пишет
Удали в начале кода: Cu.import("resource://gre/modules/XPIProvider.jsm"); |
voqabuhe > 29-09-2014 23:05:10 |
bunda1 пишет
Спасибо заработала. А можешь сделать, чтобы Место установки открывалось в Total Commander? |
polk90 > 01-10-2014 22:23:14 |
villa7 пишет
хотел попробовать, правильный код не нашел, подскажите где смотреть? |
villa7 > 01-10-2014 22:46:14 |
polk90 |
bunda1 > 01-10-2014 23:16:39 |
voqabuhe пишет
Наверно нет, мне кажется это надо настраивать в windows или в Total Commander, ну ассоциации с файлами. |
voqabuhe > 01-10-2014 23:41:40 |
bunda1 пишет
Ну очень сомнительно, что там это настраивается, да и какая ассоциация с файлами, если открывать надо папку? |
polk90 > 01-10-2014 23:45:33 |
villa7 пишет
а ... теперь понял. может кто знает аналогичный вариант панели, чтоб с автоскрытием и работал? |
roadrunner > 02-10-2014 01:17:16 |
https://addons.mozilla.org/en-US/firefo … l-toolbar/ |
polk90 > 02-10-2014 01:33:35 |
roadrunner |
localhorst > 02-10-2014 18:02:46 |
А кто-то может подсказать по созданию кнопок? |
difabor > 03-10-2014 23:52:36 |
Можно ли сделать CB кнопку - компаньон для Stylish? Описание функциональности привожу ниже. Выделить код Код:@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url-prefix("chrome"),url-prefix("file"), domain("yandex.ru") { body {background-image:url(file:///C:/Users/yudith/Pictures/Icons/gold.gif) !important;background-size: cover !important;background-repeat:no-repeat !important;background-attachment:fixed !important} all {background-color:transparent !important} } То есть, всё что этот стиль делает - вставляет в качестве фона - заданную картинку. |
firepox > 07-10-2014 05:28:18 |
Есть замечательная кнопка Выделить код Код:var oSvc = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); var observer = { observe: function(subject, topic, data) { subject.addEventListener("load", this, false); }, handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; win.removeEventListener("load", this, false); if (doc.location.href != "chrome://browser/content/preferences/cookies.xul") return; oSvc.removeObserver(observer, "domwindowopened", false); var filter = doc.getElementById("filter"); var host = gBrowser.contentDocument.location.host; var words = host.split("."); var theHost = words[words.length - 2] + "." + words[words.length - 1]; filter.value = theHost; window.setTimeout(function() {win.gCookiesWindow.filter();}, 250) }}; oSvc.addObserver(observer, "domwindowopened", false); var wm = Components. classes["@mozilla.org/appshell/window-mediator;1"]. getService (Components. interfaces. nsIWindowMediator); var win = wm. getMostRecentWindow ("Browser:Cookies"); if (win) { alert("Сначала закройте уже открытое окно с куками"); oSvc.removeObserver(observer, "domwindowopened", false); return; } else openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null); сейчас так: нажимаю кнопку - далее "удалить все куки" |
manuk > 09-10-2014 10:13:07 |
Можно кнопку https://forum.mozilla-russia.org/viewto … 86#p625686 немного изменить, т.е. вместо "выключить показ изображений на страницах" сделать "только с исходного сервера"? Или повесить на ПКМ. |
bunda1 > 09-10-2014 10:41:07 |
manuk пишет
Сделать наверно можно, но лично я не знаю как. |
manuk > 09-10-2014 10:58:45 |
bunda1 пишет
Оказалось только одну цифру в коде изменить нужно. |
bunda1 > 09-10-2014 11:24:02 |
manuk пишет
А я и забыл что есть такая настройка. |
polk90 > 12-10-2014 02:59:50 |
реально сделать кнопку чтобы автоматом очищала из истории загрузок записи о сохранении во временную папку оси? |
Dumby > 12-10-2014 22:45:04 |
polk90 скрытый текст Выделить код Код:gBrowser.currentURI.spec != "about:customizing" && (() => { var id = _id + "-" + Components.stack.lineNumber; var mod = Cu.import("resource:///modules/DownloadsLogger.jsm", {}); if (mod[id]) return; mod[id] = true; addDestructor(() => delete mod[id]); var err = Cu.reportError, tmp = OS.Constants.Path.tmpDir + "\\"; Task.spawn(function() { var list = yield Downloads.getList(Downloads.ALL), view = {}; view.onDownloadAdded = view.onDownloadChanged = download => download.progress == 100 && download.target.path.startsWith(tmp) && setTimeout(() => { var uri = makeURI(download.source.url); PlacesUtils.bhistory.removePage(uri); list.remove(download).then(null, err); }, 1e3); yield list.addView(view); setTimeout(() => delete view.onDownloadAdded, 5e3); addDestructor(() => list.removeView(view).then(null, err)); }).then(null, err); })(); |
polk90 > 13-10-2014 00:09:51 |
Dumby torrent/zip/pdf/doc - не убирается. другие не пробовал. |
Dumby > 13-10-2014 22:52:10 |
polk90 пишет
Если они в одной папке с торрентами, то не знаю. скрытый текст Выделить код Код:gBrowser.currentURI.spec != "about:customizing" && (() => { var id = _id + "-" + Components.stack.lineNumber; var mod = Cu.import("resource:///modules/DownloadsLogger.jsm", {}); if (mod[id]) return; mod[id] = true; addDestructor(() => delete mod[id]); var err = Cu.reportError; var directories = [ OS.Constants.Path.tmpDir + "\\", "D:\\Temp\\_sys_Temp\\" ]; function checkDir(path) directories.some(dir => path.startsWith(dir) //&& !path.slice(dir.length).contains("\\") ); Task.spawn(function() { var list = yield Downloads.getList(Downloads.ALL), view = {}; view.onDownloadAdded = view.onDownloadChanged = download => download.progress == 100 && checkDir(download.target.path) && setTimeout(() => { var uri = makeURI(download.source.url); PlacesUtils.bhistory.removePage(uri); list.remove(download).then(null, err); }, 1e3); yield list.addView(view); setTimeout(() => delete view.onDownloadAdded, 5e3); addDestructor(() => list.removeView(view).then(null, err)); }).then(null, err); })(); |
polk90 > 14-10-2014 03:07:36 |
Dumby и первый вариант тоже работает. |
skynet281978 > 14-10-2014 03:24:51 |
подскажите ка удалить кнопку у которой не отображается меню редактирования? |
polk90 > 14-10-2014 04:02:03 |
skynet281978 |
skynet281978 > 14-10-2014 10:00:47 |
спасибо всем. получилось через шифт ПКМ |
oopsididagainster > 23-10-2014 20:45:55 |
Подскажите код копирующий в буфер ссылку находящуюся под указателем мыши |
Pony_Smile_Pack > 23-10-2014 20:52:53 |
oopsididagainster пишет
oncommand = gContextMenu.copyLink(); |
oopsididagainster > 23-10-2014 21:42:57 |
Pony_Smile_Pack пишет
Поместил код в инициализацию кнопку, повесил кнопку на клавишу, но при нажатии на клавишу ничего не происходит. |
Pony_Smile_Pack > 23-10-2014 21:57:50 |
Ну это из контекстного меню. Возможно легче просто этот пункт меню наверх переместить, чем двумя руками ссылки копировать. |
polk90 > 24-10-2014 02:15:51 |
[del] |
thrower > 28-10-2014 07:36:38 |
bunda1, подскажи, что изменить в этом твоем коде, чтобы открытие происходило в новой вкладке скрытый текст Выделить код Код:// удаление обработчика для адресной строки, при открытии настройки панелей this.onDestroy = function() {document.getElementById("urlbar").removeEventListener("dblclick", mclick, false);}; // добавляем обработчик для адресной строки document.getElementById("urlbar").addEventListener("dblclick", mclick, false); //функция которую запускает обработчик function mclick(event){ if (event.button==0){ //отключать реакцию по умолчанию на левую кнопку мыши event.preventDefault(); event.stopPropagation(); //Вставить в адресную строку var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); var text = content.getSelection().toString(); if(text){gURLBar.value = text;} else { gURLBar.value = readFromClipboard(); } //поиск/перейти gURLBar.handleCommand(event); } }; |
Dumby > 28-10-2014 10:09:52 |
thrower скрытый текст Выделить код Код://gURLBar.handleCommand(event); gURLBar.handleCommand(new MouseEvent("", { ctrlKey: true, //shiftKey: true })); |
thrower > 28-10-2014 11:08:09 |
Dumby, работает! Спасибо |
VORON > 29-10-2014 10:03:35 |
Раньше была такая кнопка-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 Теперь неактивна,точнее просто открывает вкладку с дополнениями.Можно починить? |
Dumby > 29-10-2014 10:53:23 |
VORON |
VORON > 29-10-2014 11:49:02 |
Dumby |
voqabuhe > 29-10-2014 14:21:58 |
Indomito пишет Кнопка перестала сохранять CB из PanelUI, можешь поправить? |
Dumby > 29-10-2014 17:59:01 |
voqabuhe скрытый текст Выделить код Код:(() => { var document = { getElementsByTagName: tag => { var res = window.document.getElementsByTagName(tag); if (PanelUI.contents.hasChildNodes()) res = [...res].concat([...PanelUI.contents.getElementsByTagName(tag)]); return res; }, implementation: window.document.implementation }; // Здесь код кнопки })(); |
voqabuhe > 29-10-2014 23:02:50 |
Dumby пишет
У меня всё равно не сохраняет. |
Dumby > 30-10-2014 00:27:16 |
voqabuhe |
voqabuhe > 30-10-2014 10:11:41 |
voqabuhe пишет
Да, но ведь PanelUI уже не только в Dumby пишет
Скрин не понял к чему? |
Dumby > 30-10-2014 10:42:40 |
voqabuhe пишет
Просто посетовал, на то, что у меня сохраняет, а у тебя не сохраняет. |
voqabuhe > 30-10-2014 11:55:57 |
Dumby пишет
Теперь понЯл. А на |
Dumby > 30-10-2014 12:27:16 |
voqabuhe пишет
Так именно на Nightly и пробовал. И скрин с Nightly. |
voqabuhe > 31-10-2014 00:59:57 |
Dumby пишет
Разобрался, действительно работает. Спасибо. |
Александр Колесников > 01-11-2014 22:43:45 |
По поводу кнопки Target control(Firefox)(Seamonkey). Как я понял, она удаляет атрибут target='_blank' из ссылок. Просветите, пожалуйста, а нельзя ли в usercontent.css прописать стиль, чтоб из всех ссылок убирать target='_blank' , как в этом стиле для старой Оперы: скрытый текст Выделить код Код:/* Name: Remove blank Version: 0.1 Author: profiT Description: removes target='_blank' links http://usercss.ru/styles/remove_blank/ */ a[href][target='_blank'] { -o-link: attr(href) !important; -o-link-source: current !important; } или это какая-то нестандартная фишка Оперы, не имеющая аналогичного воплощения в Лисе? Кажется мне, что CSS не может менять HTML-код... |
Александр Колесников > 01-11-2014 23:37:19 |
okkamas_knife спасибо! |
Dumby > 02-11-2014 00:13:58 |
Александр Колесников пишет
Так кто ж тебе запретит ? скрытый текст Выделить код Код:a[href][target="_blank"] { -moz-binding: url("data:application/xml,%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Cbindings%20id%3D%22a-target-bindings%22%20xmlns%3D%22http%3A%2F%2Fwww.mozilla.org%2Fxbl%22%3E%0A%09%3Cbinding%20id%3D%22a-target-_blank%22%3E%0A%09%09%3Cimplementation%3E%0A%09%09%09%3Cconstructor%3E%0A%09%09%09%09this.removeAttribute(%22target%22)%3B%0A%09%09%09%3C%2Fconstructor%3E%0A%09%09%3C%2Fimplementation%3E%0A%09%3C%2Fbinding%3E%0A%3C%2Fbindings%3E%0A") !important; } |
Александр Колесников > 02-11-2014 01:51:53 |
Dumby Спасибо! ALL Можно ли написать CB-код для обхода этого бага, а то уж больно привык кликать ЛКМ по лупе? |
Dumby > 02-11-2014 04:53:22 |
Александр Колесников скрытый текст Выделить код Код:(bar => { if (!bar) return; var btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"); var prfx = 'event.button == 0 && gPrefService.getBoolPref("browser.search.openintab")\n\t' + '? doSearch(value, event.shiftKey ? "tabshifted" : "tab")\n\t: '; function setAttr(arg) btn.setAttribute("onclick", (arg ? "" : prfx) + "handleSearchCommand(event);"); setAttr(); addDestructor(setAttr); })(BrowserSearch.searchBar); |
Александр Колесников > 02-11-2014 10:04:54 |
Dumby Спасибо, багфикс работает! |
Александр Колесников > 03-11-2014 01:20:29 |
wolwerine Поправьте, пожалуйста, в Go and paste: если в буфере обмена находится не URL, а текст, то он по ПКМ (открыть в текущей вкладке) ищется в текущем поисковике, а по СКМ (открыть в новой вкладке)- не ищется с выдачей ошибки
|
Dumby > 03-11-2014 10:31:31 |
Александр Колесников скрытый текст Выделить код Код:this.onclick = e => { var arg, paste; switch (e.button) { case 2: if (e.ctrlKey || e.shiftKey) return; e.preventDefault(); case 1: if (!(paste = readFromClipboard())) return; if (e.button == 1) arg = new MouseEvent("", {ctrlKey: true}); gURLBar.value = paste; case 0: gURLBar.handleCommand(arg); } } this.onmouseenter = () => this.tooltipText = readFromClipboard() || this.label; |
Александр Колесников > 03-11-2014 13:31:30 |
Dumby Респект! |
Александр Колесников > 04-11-2014 10:00:04 |
Напишите, пожалуйста, код "Не открывать пустые вкладки при закачке файлов" типа zip, pdf... P.S. Уже есть: Releases · Infocatcher/Close_Download_Tabs · GitHub |
mozillka_ru > 04-11-2014 14:19:16 |
Народ, что то не нахожу инфы, а можно добавлять кнопки в "автозагрузку"? Вот есть у меня кнопка "добавить страницу в закладки по двойному клику". Для ее работы, кнопку надо вытащить на панель и жмакнуть после каждого перезапуска браузера, а можно этот процесс автоматизировать и убрать кнопку с панели? В CB полный ноль, если глупость сморозил, извините. |
mozillka_ru > 04-11-2014 22:34:14 |
Pony_Smile_Pack пишет
У меня она по другому принципу работает. Я один раз жму на CB на панели и после этого, до перезагрузки, страницы добавляются в закладки по двойному клику на нужной папке, а не как у вас - всегда в корневой каталог. Мой вариант явно удобней когда в закладках все по папкам отсортировано, вот бы еще при каждом перезапуске кнопку не нажимать.... |
voqabuhe > 04-11-2014 23:45:08 |
mozillka_ru пишет
А вот вариант ещё удобней и главное продолжает работать даже после перезагрузки. |
Pony_Smile_Pack > 05-11-2014 00:01:26 |
mozillka_ru пишет
[CB]Двойным левым кликом добавить закладку в папку закладок. | Форум Mozilla Россия |
mozillka_ru > 05-11-2014 00:27:35 |
Pony_Smile_Pack Это мне и было нужно, спасибо! ps а саму кнопку с панели убрать? |
Pony_Smile_Pack > 05-11-2014 00:33:57 |
mozillka_ru пишет
С панели в меню? - можно проверит что будет. Если вообще, то какой же смысл в кнопках тогда. |
mozillka_ru > 05-11-2014 00:44:14 |
Проверил - не работает! |
mozillka_ru > 05-11-2014 02:25:18 |
okkamas_knife Спасибо, я уже нашел вторую полезную кнопку, которая в один клик показывает\скрывает дополнительную панель и перетащил на неё все редко используемые кнопки |
skynet281978 > 06-11-2014 10:49:28 |
подскажите кнопку перезагрузки для CB можно разместить в главном меню как на картинке? |
wolwerine > 12-11-2014 00:50:54 |
Александр Колесников пишет
|
Grip > 17-11-2014 22:25:48 |
подскажите пожалуйста.хотел кнопку для запуска раширения fire commander создать,а кннопку расширения убрать потому-что она его только в плавающем окне запускает. сделал запуск по скм во вкладке, а по лкм хотел чтобы как раньше вызывалось. у него есть горячяя клавиша alt-c для запуска, а послать эту комбинацию не выходит. видел несколько вариантов,но ничего не получается,сам я ноль в этом деле. подскажите пожалуйста что надо вписать. сейчас код кнопки выглядит так: скрытый текст Выделить код Код:/*Initialization Code*/ // Fire Commander(в боковой панели) function lbMouse(){ sendKeyEvent({ alt: true, keyCode: "DOM_VK_C" }); }; // Fire Commander(во вкладке) function mbMouse(){ getBrowser (). selectedTab = getBrowser (). addTab ("chrome://FireCommander/content/FireCommander.xul") }; this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ lbMouse(); } else if(event.button == 1) { // Действие при клике СКМ mbMouse(); } }; спасибо. |
zoomlin > 21-11-2014 18:27:10 |
Поправьте кто нибудь VT2 очень надо. Заранее благодарю |
Ki_rrrilll > 22-11-2014 00:46:50 |
okkamas_knife пишет
Вот я давно хотел узнать на этот счет. Если берем команду для кнопки, в каких случаях надо писать goDoCommand ("..."), а когда onCommand, а когда ничего не добавлять, а просто вписать команду? |
Мимокрокодил > 27-11-2014 16:49:53 |
skynet281978 пишет
Во, как раз сам решил себе запилить. У меня работает. Вроде Выделить код Код:(function() { const restartbtnId = 'ui-restart-button'; var restartbtn = document.getElementById(restartbtnId); if(!restartbtn){ restartbtn = document.createElement('toolbarbutton'); restartbtn.id = restartbtnId; restartbtn.tooltipText = "Перезапустить Firefox"; restartbtn.onclick = function(event){ if(event.button == 0) { var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(Components.interfaces.nsIAppStartup); appStartup.quit(appStartup.eForceQuit | appStartup.eRestart); } }; restartbtn.setAttribute('style', 'padding-right: 11px; padding-left: 11px; list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUKCjI2BicMFgAAA0FJREFUeNqlk29oG3Ucxp/f/c8luaRJujQm7RbHLK4dwobaKrWTdX/YBAcDfaEizheCL/ayL9SpL3wxZDDwhY4hyqY4HYh04hiy1o11GyOidGi1o7t0bZo/veTSyyV3l7vLnS+W+sK99Pvygefz5fnyfIH/OeQhIfPeHikWfBkU9XQkKvZoumXZlqNYmnrSL5z8EUAHgP8wIP0uHY2Hzr76ysjhF/ZvD7IBHmrLhW51QDwPV678aX5/4easNf/+YQDmBoTpmkOxRPjSqY+PjAw/nmJPTxdRVQ0YLRNUgAcEDgYXCUh9yRGrMP48GtdmupAHgN6k9Pm5M689K0aC1EcXZPxx9fZ6WV4u+5695hMuLsYTKSYUErRySYF+SwPAA7AA+AzpPx7Zti059uhAD/XB+UXc+uHnauXOd8d9PTcPwADgtrhMBHzmEThKC76tA7D/jZBM9xz7cHJf3427GkqLK+26fP0TX8/NAVgC0ADgwS4Q2AUGAENC2wmXfX2ScNwbnU7nGhMIi8PxeJCamilieUFW26WpWQCrAGrdTQAANrmXEgYOHaU59p0ndu9I84lN3PWvf3qSYVlGMGwPvuuCYZl2N1sdgLNhjj3z6QGaZ07tnhje3P9YX+CG3ERhRQNN2WsMxbFNVbeR7BURkCSJiQyGXG3B28jYf+jcifGxrW/vGdsanpWbuDyvoWV7IKYJ4jZkql6vf3b15pKeToUxOJSJpkePTQIQAFAAQBGoatPxv8opuLNq4IFG4BiWS6zSIt26f3nVSR48+tSuTExKhIgDLoXefRPiwITO9+4s0EJPsFaz9rJBMQyeI07HB/Ep2JU1w8xPf0sAYPDIly/2Z9NfHDg4FDNsH6bpoLCy7uTzVXXL5riUzcYCDdvDr7IFzXLg2h3od2W1dPHNl2gAqP01dY9Nj7eq6/5ofJMkeBRBJCrSO4eSoXBUZHNLJlaqHaj3i3q7WNE9jheIZWr138+ep7uH9mrzF+cQ3bFUVMiw1nD5hkXYfLVNFmTNV5aVZqNcqSi5b04ot0+fCad2xWz13i/64vQc+c9ncgDifaNvPReIZYeESGKL3Vqv1RdmflP/vpTvNrMMoA0gCsD6B3vab6ot2QOXAAAAAElFTkSuQmCC)'); var quitbtn = document.getElementById('PanelUI-quit'); quitbtn.parentNode.insertBefore(restartbtn, quitbtn); quitbtn.parentNode.insertBefore(document.createElement('toolbarseparator'), quitbtn); } })(); |
VORON > 06-12-2014 06:39:36 |
Подскажите,что подправить,что бы заработала кнопка на 34-й лисе? |
voqabuhe > 06-12-2014 11:38:03 |
VORON пишет
Если ты воспользовался советом №505, то должна работать. Во всяком случае у меня в |
VORON > 07-12-2014 09:35:14 |
voqabuhe |
Mishania > 08-12-2014 19:53:40 |
Попалась мне такая кнопочка "ABP EHH" Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E3.0.0%3C/Cb2Ver%3E%0A%20%20%3Cname%3EABP%20EHH%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAAdVJREFUOE+lk79LAmEYx2sI+oHQErQ0NDSJblY4NNkfELhFQ0ENQkGCUMSFP0BMCqMhQiIrSxD8A2xpkMIghwizJXJxddHj3jvv7Nv7vGTkqQ113APHy30/z/d57nv96Ovj9z8uM+D49HSdF3rU0c9WQtsCcMFAYn9/5W5hAbWhoa71NDeH82g0yN8dJlAbgMQ5t7unuAUtuFy4DoUkDhn5BpDt3zqbHRXm53HBnfwEiM51mw1qIAB5dhby9DTUvT2oh4dQPB7ITie0gwNosRjqdjuS4TDaARYLtLU1fFSrUFZXoSwuwnh+BvP7Yby8QPF6YeTz0G9v0UilcBWPmwDj49CiUeiFAlgwCGV5Gcb7Oxq5HPSbG7ClJQE0ikXoDw+4SiTaAfXJSTSyWej399CSSbDNTRivr1C3t4WI7eyg+fYG7ewMdau1cwR5ZgbNSkWI9MdHMXuzVIK6u4tmuQyVu9PSadSmpsS+Onag8kUxSRJ0mpdtbIhujUwGbGsLMt888/lQm5joCjiikPQKkPm85HDgMhK5bAsSJYxC0hUyOIgaFbde5J84LUknPDuj5igPU8IoJB2QLwB1/hKPdUSZDiielDBaULci29S59UN9O6CHv9YnyBQiGHRETHQAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20Open/Close%20the%20Adblock%20Plus%3A%20Element%20Hiding%20Helper%0AehhSelectElement%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Check%20for%20Custom%20Buttons%B2%0Aif%20%28typeof%20custombuttons.uCbuttonButes%20%21%3D%20%27function%27%29%20%7B%0A%20%20alert%28%20%22This%20Button%20requires%20the%20Custom%20Buttons%25s%20Extension%22.replace%28%20/%25s/%2CString.fromCharCode%28%20178%20%29%20%29%20%29%3B%0A%20%20this.disabled%28true%29%3B%0A%7D%0A%0A//%20Initialise%20the%20tooltip%0Athis.tooltipText%20%3D%20%22Toggle%20ABP%3A%20Element%20Hiding%20Helper%22%3B%0A%0A%0A/*-------------------%20Attributes%20Block%20Start%20------------------*/%0A%0Athis.setAttribute%28%27author%27%2C%27Rawny%27%29%3B%0Athis.setAttribute%28%27version%27%2C%271%20%282009-04-20%29%27%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/toggle-adblock-plus-element-hiding-helper.html%27%29%3B%0Athis.setAttribute%28%27dependency%27%2C%27FF3.0*%2C%20CB2%202.0.9*%27%29%3B%0Athis.setAttribute%28%27status%27%2C%27Complete%27%29%3B%0Athis.setAttribute%28%27public%27%2Ctrue%29%3B%0A%0A/*-------------------%20Attributes%20Block%20End%20-------------------*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BClick%20the%20button%20to%20open%20the%20Adblock%20Plus%3A%20Element%20Hiding%20Helper%20%28ABP%20EHH%29%20or%20close%20it%20if%20you%20are%20already%20in%20it.%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E Я так понимаю что она должна запускать Element Hiding Helper для Adblock Plus. В 34 она не работает. Может кто-нибудь сможет разобраться в чём причина и починит? |
villa7 > 08-12-2014 21:52:49 |
Mishania |
Mishania > 09-12-2014 07:37:09 |
villa7 |
villa7 > 09-12-2014 09:11:44 |
Mishania |
Mishania > 09-12-2014 09:44:05 |
villa7 |
villa7 > 09-12-2014 10:12:03 |
Mishania |
Mishania > 09-12-2014 11:27:40 |
villa7 |
bunda1 > 09-12-2014 12:35:51 |
Mishania пишет
ABP и Element Hiding Helper должны быть включены. Выделить код Код:var cm = document.getElementById("abp-toolbar-popup"); cm.collapsed = true; cm.openPopup(); document.getElementsByAttribute("label", "Скрыть элемент на странице")[0].doCommand(); cm.hidePopup(); cm.collapsed = false; |
Mishania > 09-12-2014 20:49:27 |
bunda1 |
volland > 11-12-2014 07:54:33 |
можно ли подправить кнопку https://forum.mozilla-russia.org/viewto … 47#p531447 |
1fesFFFF > 13-12-2014 05:47:02 |
bunda1 Ссылка на скрипт (4кб) http://www.adrive.com/public/hfF4ZA/ucjs_statusbar_zoom_panel_1.3.uc.zip Содержание скрипта Выделить код Код:// ==UserScript== // @name ucjs_statusbar_zoom_panel_1.3.uc.js // @namespace http://bbs2ch.sourceforge.jp/uploader/upload.php // @description г‚№гѓ†гѓјг‚їг‚№гѓђгѓјгЃ«г‚єгѓјгѓ еЂ¤г‚’иЎЁз¤єгѓ»е¤‰ж›ґгЃ™г‚‹гѓ‘гѓЌгѓ«г‚’иїЅеЉ гЃ™г‚‹гЂ‚ // @include main // @author otokiti // @compatibility WindowsXP / Ubuntu8.04(gnome) // @compatibility Firefox 3.0 - 3.6a1pre // @compatibility userChrome.js 0.7 - 0.8 / userChromeJS 1.0 // @compatibility Sub-Script/Overlay Loader v3.0.24mod // @version 0.1: 08/10/21 初版 // @version 0.2: 08/10/23 г‚єгѓјгѓ еЂ¤д»Ґе¤–гЃ®гѓЎгѓ‹гѓҐгѓјг‚’иїЅеЉ // @version 0.3: 08/11/18 uc.xul から uc.js へ変更 // @version 0.4: 08/12/13 Zoom й–ўдї‚гЃ®й–ўж•°гЃ®ж›ёгЃЌжЏ›гЃ€г‚‹ж§гЃ«е¤‰ж›ґ // @version 0.5: 09/01/22 パネル上のホイール・スクгѓгѓјгѓ«гЃ§г‚єгѓјгѓ // @version 0.6: 09/02/18 onLocationChange гЃ®гѓ•гѓѓг‚ЇгЃ«ж°—гЃҐгЃ„гЃ¦гЃ„гЃЄгЃ‹гЃЈгЃџгЃ®гЃ§иїЅеЉ гЃ—гЃџ // @version thanks: http://pc11.2ch.net/test/read.cgi/software/1230791860/717 // @version 0.7: 09/02/19 з›ґжЋҐж•°еЂ¤гЃ§жЊ‡е®љгЃ—гЃ¦г‚єгѓјгѓ еЂ¤г‚’е¤‰ж›ґгЃ™г‚‹гѓЎгѓ‹гѓҐгѓјг‚’иїЅеЉ // @version 0.8: 09/02/20 メニューが toolkit.zoomManager.zoomValues гЃЁеђЊжњџгЃ™г‚‹гѓўгѓјгѓ‰г‚’иїЅеЉ гЃ—гЃџ(default)гЂ‚ // @version 0.9: 09/02/21 ホイール・スクгѓгѓјгѓ«ж™‚гЃ«гѓЎгѓ‹гѓҐгѓјгЃЊе‡єгЃ¦гЃ„г‚‹е ґеђ€гЃЇж¶€гЃ™ж§гЃ«гЃ—гЃџгЂ‚ // @version 1.0: 09/02/21 onLocationChange гЃ®еј•ж•°г‚’еїг‚ЊгЃ¦гЃ„гЃџгЃ®г‚’дї®жЈ // @version thanks: http://pc11.2ch.net/test/read.cgi/software/1230791860/757 // @version 1.1: 09/05/12 Zoom 関係の関数を書き換え方法の変更とその他微修жЈгЂ‚ // @version з”»йќўдёЉгЃ§гЃ® Ctrl+<マウススクгѓгѓјгѓ«> гЃ«е†ЌеЇѕеїњгЂ‚пјЉжіЁж„Џ // @version 1.2: 09/05/13 гѓЎгѓ‹гѓҐгѓјгЃ®ж•°еЂ¤жЊ‡е®љгЃ§г‚єгѓјгѓ г‚’е¤‰ж›ґгЃ—гЃџе ґеђ€г‚їгѓ–гЃ®е€‡г‚Љж›їгЃ€гЃ«еЇѕеїњгЃ—гЃ¦гЃ„гЃЄгЃ‹гЃЈгЃџгЃ®г‚’дї®жЈ(0.7から)гЂ‚ // @version 1.3: 09/05/18 _handleMouseScrolled だけ別扱いにしてみる。 // @Note 1) г‚№гѓ†гѓјг‚їг‚№гѓђгѓјгЃ«г‚єгѓјгѓ еЂ¤гѓ»гѓўгѓјгѓ‰г‚’иЎЁз¤єгЃ™г‚‹гѓ‘гѓЌгѓ«г‚’иїЅеЉ гЃ™г‚‹гЂ‚ // @Note 2) パネルのコンテクスト・メニューにズーム・メニューを表示する。 // @Note 3) パネル上のホイール・スクгѓгѓјгѓ«гЃ§г‚єгѓјгѓ гЂ‚ // @Note 4) гѓ‘гѓЌгѓ«гѓ»г‚ЇгѓЄгѓѓг‚ЇгЃ§гѓЄг‚»гѓѓгѓ€гЂ‚ // @Note 5) 直接ズームを指定可能なメニューリスト。 // @Note д»•ж§ _SYNC_ZOOMVALUES гЃЊ false гЃ®е ґеђ€ toolkit.zoomManager.zoomValues г‚„ USER_ZOOM_LEVEL の値を変更すると // @Note Zoom In(Ctrl++)/Zoom Out(Ctrl+-)で変えたズーム値がメニューに無く結果チェックがд»гЃ‹гЃЄгЃ„е ґеђ€гЃЊгЃ‚г‚‹гЂ‚ // @Note еЇѕз– A) _SYNC_ZOOMVALUES г‚’ true гЃ§дЅїгЃ†гЂ‚ // @Note B) 別に構わないとそのまま使う。 // @Note пјЉжіЁж„Џ Ctrl+<マウススクгѓгѓјгѓ«> гЃ§гЃЇз‹¬и‡Єг‚№гѓ†гѓѓгѓ—гЃЊе€©з”ЁгЃ•г‚Њг‚‹з‚єгѓЎгѓ‹гѓҐгѓјгЃ®еЂ¤д»Ґе¤–гЃ«гЃЄг‚‹е ґеђ€гЃЊжњ‰г‚‹гЂ‚ // @Note ---------------------------------------------------------------------------------------------- // @Note пјЉгЃ“гЃ®г‚№г‚ЇгѓЄгѓ—гѓ€гЃЇ Alice0775ж°ЏдЅњгЃ®ж‹ЎејµгЂЊDefault FullZoom Level 3.5гЂЌг‚’еЏ‚иЂѓгЃ«гЃ•гЃ›гЃ¦й ‚гЃЌгЃѕгЃ—гЃџгЂ‚ // @Note ---------------------------------------------------------------------------------------------- // ==/UserScript== var ucjs_zoom = { // ------------------------------ д»»ж„ЏгЃ«иЁе®љ ----------------------------------------------- // _TAGET_ID: "page-report-button", // _ZOOM_MODE: [ { txt: "\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443", color: "#00000" }, { txt: "\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442", color: "#096CE6" } ], // _SYNC_ZOOMVALUES: true, // USER_ZOOM_LEVEL: [ 30, 50, 67, 80, 90, 100, 110, 120, 133, 150, 170, 200, 240, 300 ], // USER_ZOOM_LEVEL: [ 30, 50, 75, 100, 150, 200, 250, 300 ], // -------------------------------------------------------------------------------- // ZoomLevel: [ ], // init: function() { // Zoom var _cmd = "ucjs_zoom.updateZoom();$&"; // toggleZoom eval("ZoomManager.toggleZoom = " + ZoomManager.toggleZoom.toString().replace(/}$/, _cmd)); // reset eval("FullZoom.reset = " + FullZoom.reset.toString().replace(/}$/, _cmd)); // enlarge eval("FullZoom.enlarge = " + FullZoom.enlarge.toString().replace(/}$/, _cmd)); // reduce eval("FullZoom.reduce = " + FullZoom.reduce.toString().replace(/}$/, _cmd)); // onLocationChange addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec == gBrowser.currentURI.spec ) { ucjs_zoom.updateZoom(); } }, true, gBrowser.tabContainer ); // _handleMouseScrolled _cmd = "setTimeout(ucjs_zoom.updateZoom, 0); $&"; eval("FullZoom._handleMouseScrolled = " + FullZoom._handleMouseScrolled.toString().replace(/}$/, _cmd)); // if (this._SYNC_ZOOMVALUES) { // toolkit.zoomManager.zoomValues var SysZoomLevel = Cc["@mozilla.org/preferences;1"].getService(Ci.nsIPrefBranch) .getCharPref("toolkit.zoomManager.zoomValues").split(","); for (var i=0; i<SysZoomLevel.length; i++) this.ZoomLevel.push(parseInt(parseFloat(SysZoomLevel[i])*100)); } else { this.ZoomLevel = this.USER_ZOOM_LEVEL; } // var zoomPanel = document.createElement("statusbarpanel"); zoomPanel.setAttribute("id", "ucjs_zoom_statuslabel"); zoomPanel.setAttribute("context", "ucjs_zoom-context"); zoomPanel.setAttribute("onclick", "ucjs_zoom.click_StatusLabel(event);event.stopPropagation();"); var targetPanel = document.getElementById(this._TAGET_ID); targetPanel.parentNode.insertBefore(zoomPanel, targetPanel.nextSibling); // var MainPopup = document.getElementById("mainPopupSet"); var PopupMenu = MainPopup.appendChild(document.createElement("menupopup")); PopupMenu.id = "ucjs_zoom-context"; PopupMenu.setAttribute("oncommand", "event.stopPropagation();"); PopupMenu.setAttribute("onpopupshowing", "ucjs_zoom.show_Popup(event);"); ucjs_zoom.updateZoom(); // zoomPanel.addEventListener("DOMMouseScroll", function(event){ ucjs_zoom.wheelZoom(event); }, false); }, // show_Popup : function(e) { var aPopup = e.target; for(var i = aPopup.childNodes.length - 1; i >= 0; i--) { aPopup.removeChild(aPopup.childNodes.item(i)); } // for (var i = ucjs_zoom.ZoomLevel.length-1; i >=0 ; i--) { var tempItem = document.createElement("menuitem"); tempItem.setAttribute("label", ucjs_zoom.ZoomLevel[i] + "%"); tempItem.setAttribute("oncommand","ucjs_zoom.set_Zoom(" + ucjs_zoom.ZoomLevel[i]/100 + ");"); tempItem.setAttribute("type", "checkbox"); if(ucjs_zoom.ZoomLevel[i] == Math.floor((ZoomManager.zoom + 0.005) * 100) ){ tempItem.setAttribute("checked",true); } aPopup.appendChild(tempItem); } var tempItem = document.createElement("menuseparator"); aPopup.appendChild(tempItem); // var popup = document.getElementById("viewFullZoomMenu").lastChild; for (var i = 0; i < popup.childNodes.length; i++) { var tempItem = popup.childNodes[i].cloneNode(true); if (tempItem.id) tempItem.id = "ucjs-" + tempItem.id; aPopup.appendChild(tempItem); } }, // set_Zoom: function(n) { var markupDocumentViewer = getBrowser().markupDocumentViewer; if (!markupDocumentViewer) return; if (ZoomManager.useFullZoom) { if (markupDocumentViewer.textZoom != 1) markupDocumentViewer.textZoom = 1; if (markupDocumentViewer.fullZoom != n) markupDocumentViewer.fullZoom = n; } else { if (markupDocumentViewer.textZoom != n) markupDocumentViewer.textZoom = n; if (markupDocumentViewer.fullZoom != 1) markupDocumentViewer.fullZoom = 1; } ucjs_zoom.updateZoom(); return n; }, // wheelZoom: function(e) { ucjs_zoom.hidePopup(document.getElementById("ucjs_zoom-context")); // if (e.detail > 0) FullZoom.reduce(); else FullZoom.enlarge(); }, // hidePopup: function (menu) { var popupBox = null; var menuBox = null; try { popupBox = menu.boxObject.QueryInterface(Ci.nsIPopupBoxObject); } catch (e) {} try { menuBox = menu.parentNode.boxObject.QueryInterface(Ci.nsIMenuBoxObject); } catch (e) {} if (menuBox) menuBox.openMenu(false); else if (popupBox) popupBox.hidePopup(); }, // click_StatusLabel:function(e){ if(e.button != 0) return; FullZoom.reset(); }, // updateZoom: function(){ // var Toggle_org = document.getElementById("toggle_zoom"); if (Toggle_org) { Toggle_org.setAttribute("checked", !ZoomManager.useFullZoom); } var Toggle_ucjs = document.getElementById("ucjs-toggle_zoom"); if (Toggle_ucjs) { Toggle_ucjs.setAttribute("checked", !ZoomManager.useFullZoom); } // var Zoom = document.getElementById("ucjs_zoom_statuslabel"); Zoom.setAttribute("label", Math.floor((ZoomManager.zoom + 0.005) * 100) + "%"); Zoom.setAttribute("tooltiptext", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].txt); Zoom.setAttribute("style", "color: " + ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].color + ";"); } } ucjs_zoom.init();; |
bunda1 > 13-12-2014 23:34:06 |
1fesFFFF пишет
Что то не смог исправить |
villa7 > 14-12-2014 05:32:17 |
Вот напасть, потребовалось отключать этот скрипт на одном сайте. скрытый текст Выделить код Код:// ==UserScript== // @author Al_H // @description Add URL in tooltip to include more informaton // @include * // @name Add URL in tooltip // @version 0.0.1.20141013112432 // @namespace https://greasyfork.org/users/5117 // ==/UserScript== for(var i=0;i<document.links.length;i++) { if(document.links[i]) document.links[i].title+=((document.links[i].title=='')?'':'\n')+decodeURI(document.links[i].href); } можно как то кнопку сделать вкл/откл скрипта с перезагрузкой страницы, задолбало каждый раз на вкладку аддонов лазить. |
bunda1 > 14-12-2014 12:36:42 |
villa7 пишет
Может поставь исключение для сайта тут: if(document.links[i] ) ну там && document.domain !== |
villa7 > 14-12-2014 14:23:39 |
bunda1 |
voqabuhe > 14-12-2014 14:40:39 |
villa7 пишет
А звёздочку ставишь http://www.ex.ua/* ? |
villa7 > 14-12-2014 15:21:03 |
voqabuhe |
voqabuhe > 14-12-2014 15:45:24 |
villa7 пишет
На лбу это конечно круто |
villa7 > 14-12-2014 15:59:28 |
voqabuhe |
voqabuhe > 14-12-2014 16:27:58 |
villa7 пишет
Да я видел выше. Это я к тому что в Greasemonkey правильно сделали, уже ну никак не забудешь. |
AlexCondor > 14-01-2015 16:10:38 |
WinXP sp3 - FF 35.0 - CB 0.0.5.8 - Autocopy+3 от 26.12.2013 P.S. Прошу прощения. Ошибся веткой, перенес сообщение из ветки обсуждения CB/ |
bunda1 > 15-01-2015 01:24:01 |
AlexCondor пишет
Исправил: Autocopy+3 |
AlexCondor > 15-01-2015 12:09:21 |
bunda1 пишет
Большое спасибо за помощь. |
HaGEN > 20-01-2015 23:44:23 |
Умельцы ! А можно на СКМ (клик колесом мыши) повесить действие "копировать выделенный текст" ? |
bunda1 > 21-01-2015 00:28:30 |
HaGEN пишет
Выделить код Код:addEventListener("mouseup", (e)=>{ e.button==1 && goDoCommand("cmd_copy") }, false, gBrowser ); |
rbfyec > 21-01-2015 04:14:49 |
bunda1 |
HaGEN > 21-01-2015 19:04:06 |
bunda1 благодарю! Завсегда помогаешь страждущим if {есть выделенный текст на странице, то отменить/destroy autoscroller} 21-01-2015 19:16:02 rbfyec пишет
хехех, ну это и я понял, даже проверил. addEventListener("mouseup", (e)=>{ e.button==0 && goDoCommand("cmd_copy") }, false, gBrowser ); то при выделив текст и сделав ЛКМ - выделенный текст будет скопирован и убрано выделение текста. Два в одном, хехе... |
rbfyec > 21-01-2015 22:32:21 |
HaGEN пишет
Про выбор кнопок мыши я догадался Почему не Выделить код Код:addEventListener("mouseup", function(e) { if (e.button==1) goDoCommand("cmd_copy") }, false, gBrowser ); |
bunda1 > 21-01-2015 22:36:00 |
rbfyec пишет
Анонимную функцию с передачей аргумента e которую запускает обработчик: можно написать короче: а можно и без скобок если код для запуска не сложный в одной строке: а можно сократить просто анонимная функцию и без обработчика: Выделить код Код:(function() { setTimeout(function() { custombuttons.alertSlide("alert", "function") }, 5500); })(); вот так: Выделить код Код:(() => { setTimeout(function() { custombuttons.alertSlide("alert", "=>") }, 5500); })(); Тут почитай: https://developer.mozilla.org/en-US/doc … _functions |
rbfyec > 21-01-2015 22:42:52 |
bunda1 пишет
А почему здесь а не |
bunda1 > 21-01-2015 22:59:18 |
rbfyec пишет
можно и так: но с && короче, но не всё работает, например: не будет работать, тут почитай http://learn.javascript.ru/logical-ops |
bunda1 > 22-01-2015 22:40:23 |
HaGEN пишет
Выделить код Код:addEventListener("mousedown", (e)=>{ if ( e.button !== 1 ) return; var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; selection = ( selection !== '' ) ? true : false; if ( selection ) { e.preventDefault(); e.stopPropagation(); setTimeout(()=> document.activeElement.blur(), 50); setTimeout(()=> window.content.focus(), 300); } goDoCommand("cmd_copy"); }, true, gBrowser ); Но мне кажется что копировать выделенный текст двойным правым кликом удобней: Выделить код Код:addEventListener("dblclick", (e)=>{ if ( e.button == 2 && !/findbar|tabbrowser/.test( e.target.localName ) ) { e.preventDefault(); goDoCommand("cmd_copy"); document.getElementById("contentAreaContextMenu").hidePopup(); } }, false, gBrowser ); |
HaGEN > 23-01-2015 09:15:41 |
Афигеть ! bunda1 - кудесник. |
rbfyec > 24-01-2015 13:08:01 |
bunda1 |
HaGEN > 24-02-2015 13:55:27 |
Помогите с кнопкой. Пункт создается, но действие не знаю как сделать, пробовал много, ниччё не получилося. Постоянный пункт меню при выделении текста "Открыть как ссылку". Пункт создается, с действием подмогните: Код кнопки // Открыть как ссылку. // (function() { if ( document.getElementById("go2link") ) return; var str = {получить в переменную выделенный текст}; // №1 хз. var menuItem = document.createElement("menuitem"); menuItem.id = "go2link"; |
turbot > 24-02-2015 22:57:32 |
HaGEN скрытый текст Выделить код Код:(function() { if ( document.getElementById("go2link") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "go2link"; menuItem.setAttribute("label", "Перейти по ссылке"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACIUlEQVQ4jZ2STUtUYRSAn3vfj3tnnBybUdEKTZ2gJjDQ/AHt3PWhTNAmadsq2tUPadG2JGWwRZugRbSKSAqHmkUpVMagoo7a1Rnv3Pu+LdJQYYQ6u8N5znM4nOPQJPLj079c1/1ijLlTLhbmmnFuswKQwuGSK9xn+fHpgf8RcHGoVyTbTpx3hfsuPz6d+2fBZhDRf66TdEc6K5QsDd6aGT3KOJncXatbMqiWNNJPIbSP0AqhFReGB4hjQ+dJn6XlLb4vrBiL86r09NroIUH+6k2kcJBSoJWL1gJrQQqXza06rnDItHrUd0KWK1W2g93Z0uT1EQC5b6qUPuOl2tBJHy/p4adTaP2nLIVLUI/ozCTpP93Kh0+Vy8MTL9biRjQmwQKwXd0gjhWNyBBGlkgo/IRFKwGAVoLQwHotoqennW8Ly5lGLF66e/0AWCwH86NRq0dIx2GpUiXYDqOu3o6Bvyv0DA3iJRIIJdFKoH2JtRAE4b6dbKti/usKqytbi6dy3bnnD0ZCCZafs+/RyRTKb0F5HspTKE/R3deF6zokfUkqIZn7uEjYiGdKkzfGSnuDJXClVl0nCg3Ktwgd7Z1Rvs6eiWnPJnGsZfbtvMVx3pgonjj0B832zY9N2b7BszSCHSo/1izw2MTmYblYWD3IySb9AKxUqtQ2AmOMfYK198vFQnCUOVZQ2wh2TWzulYuFR82Y5gLHMSY2t8vFwtRxQ34DLk/NkLifJmMAAAAASUVORK5CYII="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab(document.commandDispatcher.focusedWindow.getSelection().toString())"); document.getElementById("context-copy").parentNode.insertBefore( menuItem, document.getElementById("context-copy") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.isTextSelected; }, false); })(); |
HaGEN > 26-02-2015 14:10:58 |
turbot Благодарю! Всё отлично. |
4zz > 28-02-2015 23:20:16 |
Помогите с кнопкой Save + http://forum.mozilla-russia.org/viewtop … 40#p493040 |
Lex1 > 01-03-2015 00:08:57 |
4zz "nsIWebBrowserPersist.saveURI изменили в FF36 и для работы он теперь требует восемь параметров" Можно скажем воткнуть «null,» посередине в Или сделать как у меня там, если нужна работа в нескольких версиях фокса. |
4zz > 01-03-2015 00:32:09 |
Lex1 пишет
Я в кодах не силен, но |
Lex1 > 01-03-2015 00:40:28 |
Там семь параметров - теперь требуется восемь. Т.е. |
4zz > 01-03-2015 00:48:07 |
Lex1 |
difabor > 01-03-2015 22:09:53 |
Когда делаешь скриншот страницы с ютюбом, то на месте ютюба - чёрный прямоугольник. Это можно как-то исправить? |
bunda1 > 01-03-2015 22:21:41 |
difabor пишет
Если ты про кнопку Save+ то я не знаю. |
Lex1 > 01-03-2015 22:47:04 |
Плагины плохо захватываются (нужен wmode=opaque), html5 - нормально. Также см. http://forums.mozillazine.org/viewtopic.php?f=19&t=2663435 |
bunda1 > 01-03-2015 23:23:49 |
Lex1 пишет
Спасибо |
turbot > 02-03-2015 00:07:05 |
bunda1 |
bunda1 > 02-03-2015 00:17:22 |
turbot |
bunda1 > 03-03-2015 22:50:44 |
turbot пишет
Укажи в главных настройках FF папку для сохранения.
Выделить код Код:document.getElementById('здесь id пункта меню ScrapBook для сохранения страницы или текста в нужную папку').click(); |
turbot > 04-03-2015 07:40:10 |
bunda1
Указан "E:\", может поэтому? Или потому что |
bunda1 > 04-03-2015 19:41:39 |
turbot пишет
Странно, я сейчас установил и у меня сохраняет без запроса. Может сбрось все настройки и тогда попробуй сохранить. |
turbot > 04-03-2015 20:45:12 |
bunda1 |
voqabuhe > 05-03-2015 15:52:33 |
А случаем ни у кого нет кнопочки для замены Go Parent Folder? |
difabor > 06-03-2015 03:01:57 |
voqabuhe пишет
Тогда уж заодно желательно бы сделать и Show Parent Folder |
villa7 > 06-03-2015 11:19:51 |
bunda1 скрытый текст Выделить код Код:// ЛКМ переключить настройки кнопки и стиль .......... this._handleClick = function() setStyleForPages(void(run.value = !run.value)); // Создать настройки кнопки в about:config если они не существует .......... var s = "CB" + _id.slice(20) + ".setStyleForPage"; cbu.isPref(s, false); var previousUri = "CB" + _id.slice(20) + ".previousUri"; // Получить настройки кнопки и css код из вкладки Справка .......... var css = self.Help; var run = Application.prefs.get(s); // Переключить css стиль для страницы .......... function setStyleForPages(reason) { if ( reason == "destructor" ) return; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent(css)); try { sss.unregisterSheet(Services[_id + "previousUri"] || uri, 0) } catch(e) {}; Services[_id + "previousUri"] = uri; run.value && !reason && sss.loadAndRegisterSheet( uri, 0 ); }; addDestructor(setStyleForPages); run.value && setStyleForPages(); // Подсказка для кнопки .......... this.tooltipText = "Л: Переключить черный фон страниц"; Сайты где менял на чёрный стиль загружаются всё в чёрном, если отключить кнопку и загрузить а потом включить, то стиль срабатывает, а вот загружаться сразу с включенной кнопкой не хочет. |
rbfyec > 06-03-2015 12:18:07 |
difabor пишет
Горячо поддерживаю! show parent folder очень бы не помешала.
А разве эта кнопка существует в природе, что её можно найти поиском? |
SendInfo > 06-03-2015 12:36:04 |
villa7, кнопка от Infocatcher-а Выделить код Код: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%3EStyle%20toggler%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*/%0Athis.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20var%20cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28this.Help%29%29%3B%0A%20%20%20%20var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20this.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20%20%20%20%20if%28enable%20%3D%3D%20undefined%29%0A%20%20%20%20%20%20%20%20%20%20%20%20enable%20%3D%20%21this.checked%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20enable%3B%0A%20%20%20%20%20%20%20%20document.persist%28this.id%2C%20%22checked%22%29%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20if%28enable%20%26%26%20%21has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20else%20if%28%21enable%20%26%26%20has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.toggleStyle%28enable%29%3B%0A%7D%3B%0Aif%28this.checked%29%0A%20%20%20%20this.toggleStyle%28true%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Athis.toggleStyle%28%29%3B%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/*%u0430%u0432%u0442%u043E%u0440%20Infocatcher%20%u043A%u043D%u043E%u043F%u043A%u0430%20%22%u043F%u043E%u043C%u043D%u0438%u0442%22%20%u0441%u0432%u043E%u0435%20%u0441%u043E%u0441%u0442%u043E%u044F%u043D%u0438%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20firefox%2C%20%u0442%u043E%20%u0435%u0441%u0442%u044C%20%u0431%u044B%u043B%u0430%20%u043E%u043D%u0430%20%22%u0432%u043A%u043B.%22%20%u0438%u043B%u0438%20%22%u0432%u044B%u043A%u043B.%22%20*/%0A%0A/*http%3A//userstyles.org/styles/45663/global-pseudo-brightness-control*/%0A%0A%0A@namespace%20url%28http%3A//www.w3.org/1999/xhtml%29%3B%0A%0A@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28ftp%3A//%29%2C%20url-prefix%28file%3A//%29%2C%20url-prefix%28about%3A%29%7B%0A%0A%0A%0Ahtml%3Aafter%20%7B%0A%0A%0A%0Acontent%3A%22%22%20%21important%3B%0A%0Aposition%3A%20fixed%20%21important%3B%0A%0Atop%3A%200%20%21important%3B%0A%0Abottom%3A%200%20%21important%3B%0A%0Aleft%3A%200%20%21important%3B%0A%0Aright%3A%200%20%21important%3B%0A%0A/*background%3A%20%23000%20%21important%3B*/%0A/*background%3A%20%23002288%20%21important%3B*/%0Abackground%3A%20-moz-linear-gradient%28top%2C%20rgba%280%2C0%2C255%2C1%29%200%25%2C%20rgba%28110%2C119%2C116%2C1%29%2050%25%2C%20rgba%2810%2C14%2C10%2C1%29%2051%25%2C%20rgba%2810%2C8%2C9%2C1%29%20100%25%29%20%21important%3B%0A/*background%3A%23CDCDFD%21important%3B*/%0Az-index%3A%2099999999%20%21important%3B%0A%0Apointer-events%3A%20none%20%21important%3B%0A%0Aopacity%3A%20.2%20%21important%7D%0A%0A%0A%0A%7D%0A%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Кнопка "помнит" свое состояние после перезапуска ![]() |
villa7 > 06-03-2015 13:22:05 |
SendInfo |
SendInfo > 06-03-2015 18:41:45 |
villa7, а можно сам стиль. Я у себя посмотрю. Думается мне здесь дело не в js, а в css. |
voqabuhe > 06-03-2015 19:37:10 |
rbfyec пишет
Да нет такой кнопки, во всяком случае в свободном доступе. Это он так, чтобы в разговор встрясть |
bunda1 > 06-03-2015 20:27:01 |
voqabuhe пишет
А что делает это расширение? |
voqabuhe > 06-03-2015 20:39:56 |
bunda1 |
difabor > 06-03-2015 23:08:02 |
voqabuhe пишет
А Show Parent Folder добавляет колонку в Библиотеку закладок в которой указывается Parent Folder - полезно для меток, недавних добавлений и пр. В остальных случаях - не нужна, но эту колонку можно и убирать |
bunda1 > 06-03-2015 23:39:26 |
villa7 пишет
Похоже дело не в кнопке а в Css чёрном стиле, с другими стилями порядок. Советую удалять куски чёрного стиля по одному чтобы узнать где ошибка. Странно что консоль ошибок ничего не показывает. |
villa7 > 07-03-2015 00:46:08 |
bunda1 |
villa7 > 07-03-2015 01:35:33 |
SendInfo скрытый текст Выделить код Код:/*######################RUBOARD##################*/ @-moz-document domain("forum.ru-board.com"), domain("gallery.ru-board.com"), domain("forall.ru-board.com") { div, body, .tit, table, td, form{background: #333333 !important; } font, td, a {color: #cccccc !important;} span {color: #f2f2f2 !important;} .dats {background: #444444 !important;} a:link {color: #dddddd !important;} .lgf, table {border-color: #333333 !important;} img[src="board/temp/itech-promo/r/4.gif"], img[src="board/temp/itech-promo/r/1.gif"], img[src="board/temp/itech-promo/r/3.gif"], img[src="board/temp/itech-promo/r/2.gif"], img[src="board/temp/itech-promo/r/5.gif"], img[src="board/temp/itech-promo/r/6.gif"], img[src="board/temp/itech-promo/r/7.gif"], img[src="board/temp/itech-promo/r/8.gif"], img[src="board/temp/itech-promo/r/9.gif"], img[src="board/temp/itech-promo/r/10.gif"] {display: none !important;} textarea{ -moz-appearance: none !important; background-color: #333333 !important; color: #e2e2e2 !important;}} http://forum.ru-board.com/topic.cgi?for … start=4680 |
SendInfo > 07-03-2015 02:54:52 |
villa7 кнопка от Infocatcher-а ![]() |
villa7 > 07-03-2015 05:47:28 |
SendInfo |
Dumby > 07-03-2015 06:13:13 |
voqabuhe пишет
Ну, раз уж согласился на стиль, тогда может попробуй обновить этим. Бэкап, рестарт, и всё такое. скрытый текст Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #placesContext .box-inherit.scrollbox-innerbox { -moz-binding: url('data:application/xml,\ \ <?xml version="1.0"?>\%0A\ <bindings xmlns="http://www.mozilla.org/xbl">\%0A\ <binding id="placesContext_extraMenuitems">\%0A\ <implementation>\%0A\ <constructor>\%0A\ <![CDATA[\%0A\ var before = document.getElementById("placesContext_editSeparator");\%0A\ var popup = this.linkedPopup = this.parentNode.parentNode.parentNode;\%0A\ var menuitem = popup.insertBefore(document.createElement("menuitem"), before);\%0A\ menuitem.id = "placesContext_updateBookmarkURL";\%0A\ menuitem.setAttribute("label", decodeURIComponent(\%0A\ "%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D1%83"\%0A\ ));\%0A\ menuitem.setAttribute("oncommand", "this.cmd();");\%0A\ menuitem.cmd = function() {\%0A\ var id = popup._view.selectedNode.itemId;\%0A\ var win = Services.wm.getMostRecentWindow("navigator:browser");\%0A\ var {currentURI: uri, selectedBrowser: br, selectedTab: tab} = win.gBrowser;\%0A\ \%0A\ PlacesUtils.bookmarks.changeBookmarkURI(id, uri);\%0A\ PlacesUtils.bookmarks.setItemTitle(id, tab.label);\%0A\ \%0A\ var favicon = br.mIconURL, fs = Ci.nsIFaviconService;\%0A\ var faviconURI = favicon ? win.makeURI(favicon) : PlacesUtils.favicons.defaultFavicon;\%0A\ var private = win.PrivateBrowsingUtils.isBrowserPrivate(br);\%0A\ PlacesUtils.favicons.setAndFetchFaviconForPage(uri, faviconURI, true,\%0A\ private ? fs.FAVICON_LOAD_PRIVATE : fs.FAVICON_LOAD_NON_PRIVATE\%0A\ );\%0A\ }\%0A\ \%0A\ var menuitem2 = popup.insertBefore(document.createElement("menuitem"), before);\%0A\ menuitem2.id = "placesContext_goParentFolder";\%0A\ menuitem2.setAttribute("label", decodeURIComponent(\%0A\ "Go Parent Folder"\%0A\ ));\%0A\ function sel(view, id) {\%0A\ var str = "node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER";\%0A\ var src = view.selectItems.toString();\%0A\ var code = src.replace(str + ";", "(" + str + " || " + str + "_SHORTCUT);");\%0A\ view.place = view.place; eval("(" + code + ")").bind(view)([id]);\%0A\ vis(view);\%0A\ }\%0A\ function vis(tree) {\%0A\ var pos = 0.5, tbo = tree.treeBoxObject;\%0A\ var ind = tbo.view.selection.currentIndex;\%0A\ var first = tbo.getFirstVisibleRow();\%0A\ var visibleRows = tbo.height/tbo.rowHeight;\%0A\ var newFirst = ind - pos*visibleRows + 1;\%0A\ tbo.scrollByLines(Math.round(newFirst - first));\%0A\ }\%0A\ menuitem2.setAttribute("oncommand", "this.cmd();");\%0A\ menuitem2.cmd = function() {\%0A\ var view = popup._view, id = view.selectedNode.itemId;\%0A\ if (view.id == "placeContent") {\%0A\ var plView = document.getElementById("placesList");\%0A\ var parentId = PlacesUtils.bookmarks.getFolderIdForItem(id);\%0A\ sel(plView, parentId);\%0A\ setTimeout(() => {view.selectItems([id]); vis(view);}, 100);\%0A\ } else\%0A\ sel(view, id);\%0A\ }\%0A\ var handler = this.linkedPopupPopupshowihgHandler = function () {\%0A\ var place = (popup._view.selectedNodes.length == 1) && popup._view.selectedNode;\%0A\ menuitem.hidden = menuitem.disabled = !(place && PlacesUtils.nodeIsBookmark(place));\%0A\ menuitem2.hidden = menuitem2.disabled = menuitem.hidden || !location.href.contains("a");\%0A\ };\%0A\ handler(); popup.addEventListener("popupshowing", handler);\%0A\ ]]>\%0A\ </constructor>\%0A\ <destructor>\%0A\ this.linkedPopup.removeEventListener("popupshowing", this.linkedPopupPopupshowihgHandler);\%0A\ </destructor>\%0A\ </implementation>\%0A\ </binding>\%0A\ </bindings>\ \ ') !important; } |
turbot > 07-03-2015 06:37:11 |
Dumby orPaste for Stylish Выделить код Код:var theSeparator = "►►►►►►►"; theSeparator = "\n" + theSeparator + "\n"; var items = this.Help.split(theSeparator); //==================================================================================== this.imageOn = "data:image/gif;base64,R0lGODlhEAAQAN0DABop/8f//5zj/////+D//xpP/4rQ/xxk/xo8/0KH/3vA/xpH/1Ka/xpb/3W8/5DZ/6Lp/xow/1lo/yZr/0yU/zN6/zB1/2uz/z+IzDyEx+Hh4TJB/4bM8B9m/4/W/4jO/5be/+j//670/y50/1ed/3G1/6rM/7bF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUsASgAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAGlUCAcEgsCgNIJORhAAiezyPyAFgcDoUIgBMFICeFB2FA1jAOXSTgQQYZIIMLWiBFkBmFBADRUHSFCGMGWVVQdE4CCx5kAwQGegZdTx8IDmNkBBCIQk8GEhURDQyXBZICEiYnBwkICQMhHRgZnAIbAwECDhMCjQVqm4yMASUkv08WDRQKyw4VFEm0dBcJIxZeSQFG2kRBACH5BAkZACgALAAAAAAQABAAAAY5QJRwSCwKBUgkMcBkHpVGoRMFjaKm1ShWYJUGusPm9zq2TqfmMVPUPZfBZDAUHZ2/i0nvnZrkwotBADs="; this.imageOff = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/9nZ2f/Z2dn/2dnZ/6Ojo//Hx8f/srKy/62trf+tra3/o6Oj/+vr6//r6+v/6+vr/+vr6//r6+v/o6Oj/6Ojo//Z2dn/2dnZ/62trf+jo6P/uLi4/8zMzP/MzMz/zMzM/8nJyf+tra3/uLi4/+vr6//r6+v/6+vr/6Ojo/+jo6P/2dnZ/9nZ2f+jo6P/////////////////////////////////6+vr/8fHx/+9vb3/6+vr/+vr6/+jo6P/o6Oj/9nZ2f/Z2dn/ra2t///////r6+v/2dnZ/8fHx/+oqKj/2dnZ///////19fX/o6Oj/+vr6//r6+v/o6Oj/6Ojo//Z2dn/2dnZ/729vf/e3t7/4+Pj/6Ojo/+1tbX/o6Oj/7W1tf//////9/f3/6ampv+Hh4f/gICA/6Ojo/+jo6P/2dnZ/9nZ2f/R0dH/vb29/62trf+jo6P/o6Oj/729vf/19fX///////////+jo6P/2dnZ/9nZ2f+jo6P/o6Oj/9nZ2f/Z2dn/0dHR/6Ojo//Jycn/9fX1//////////////////X19f/b29v/o6Oj/9nZ2f/Z2dn/o6Oj/6Ojo//Z2dn/2dnZ/6Ojo//U1NT/////////////////9fX1/9HR0f+1tbX/o6Oj/9TU1P/Z2dn/2dnZ/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/9fX1///////R0dH/o6Oj/6Ojo/+jo6P/o6Oj/9nZ2f/Z2dn/2dnZ/9nZ2f+jo6P/o6Oj/+vr6//r6+v/o6Oj////////////urq6/6Ojo/+1tbX/o6Oj/6Ojo/+jo6P/zMzM/9nZ2f/Z2dn/o6Oj/6Ojo//r6+v/6+vr/6Ojo//W1tb////////////W1tb/0dHR/9vb2///////xMTE/6ampv/Z2dn/2dnZ/6Ojo/+jo6P/6+vr/+vr6/+oqKj/o6Oj/9bW1v/19fX/////////////////4ODg/7q6uv+mpqb/2dnZ/9nZ2f+jo6P/o6Oj/+vr6//r6+v/6+vr/6ampv+jo6P/o6Oj/6ampv+mpqb/o6Oj/6Ojo/+jo6P/xMTE/9nZ2f/Z2dn/o6Oj/6Ojo//r6+v/6+vr/+vr6//r6+v/6+vr/9vb2//U1NT/0dHR/6Ojo//Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="; this.image = this.imageOn; //==================================================================================== var cbIdNumber = this.id.replace("custombuttons-button", ""); var insertButtonId = "or-paste-by-cb" + cbIdNumber; //==================================================================================== var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService) .getBranch("custombutton.orPasteForStylish."); try { var pref = prefs.getBoolPref("off"); } catch(e) { prefs.setBoolPref("off", false); }; this.off = prefs.getBoolPref("off"); //==================================================================================== const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; function createButton(aWindow) { var button = document.createElementNS(kXULNS, "button"); button.setAttribute("id", insertButtonId); button.setAttribute("class", "devtools-toolbarbutton"); button.setAttribute("type", "menu"); button.setAttribute("label", "Шаблоны"); var menupopup = document.createElementNS(kXULNS, "menupopup"); button.appendChild(menupopup); aWindow["textStorage" + cbIdNumber] = []; // :D for (var i = 0; i < items.length; i++) { var menuitem = document.createElementNS(kXULNS, "menuitem"); var label = items[i].split("\n",1); var insertText = items[i].replace(label + "\n", ""); aWindow["textStorage" + cbIdNumber].push(insertText) menuitem.setAttribute("label", label); var Arg = "this.ownerDocument.defaultView" + ".textStorage" + cbIdNumber + "[" + i + "]"; var commandString = "insertCodeAtCaret(" + Arg + ")"; menuitem.setAttribute("oncommand", commandString); menupopup.appendChild(menuitem); } return button; } //=================================================================================== function isButtonAlredyPresent(aDoc) { // advice by Inforcatcher return !!aDoc.getElementById(insertButtonId); } //=================================================================================== var oSvc = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); var observer = { // thanks for Infocatcher observe: function(subject, topic, data) { subject.addEventListener("load", this, false); }, handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; var pageURL = doc.location.href; win.removeEventListener("load", this, false); if(!/^about:stylish-edit/.test(pageURL)) return; var hbox = doc.getElementById("editor-tools"); var btn = hbox.lastChild; if (!isButtonAlredyPresent(doc)) { hbox.insertBefore(createButton(win), btn.nextElementSibling); }}}; //================================================================================== var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"] .getService(Components.interfaces.nsIWindowWatcher); var activeWin = null; this.onmouseover = function() { activeWin = ww.activeWindow; } //==================================================================================== this.run = function() { if (!this.off) { oSvc.addObserver(observer, "domwindowopened", false); prefs.setBoolPref("off", false); } if (this.off ) { oSvc.removeObserver(observer, "domwindowopened"); prefs.setBoolPref("off", true); } var enumerator = ww.getWindowEnumerator(); var win = true; while (win) { win = enumerator.getNext(); if (!win) return; var doc = win.document; var pageURL = doc.location.href; if (!/^about:stylish-edit/.test(pageURL)) continue; if (!this.off) { if ( isButtonAlredyPresent(doc)) continue; var hbox = doc.getElementById("editor-tools"); var btn = hbox.firstChild; hbox.insertBefore(createButton(win), btn.nextElementSibling); if (win == activeWin) win.focus(); } if (this.off) { var b = doc.getElementById(insertButtonId); while (b) { b = doc.getElementById(insertButtonId); if (b) { b.parentElement.removeChild(b); } if (win == activeWin) win.focus(); }} }} //==================================================================================== if (this.off) { this.image = this.imageOff; return; } this.run(); //==================================================================================== this.onDestroy = function() { // thanks for Infocatcher, again var on = !this.off; if(on) this.off = true; this.run(); if(on) { this.off = false; prefs.setBoolPref("off", false); }}; Если с редактором последней версии Stylish'а, открытым в окне, я разобрался ((!/^about:stylish-edit/.test(pageURL)) - там при редактировании id стиля к адресу в конце добавляется), то заставить его работать с редактором, открытым во вкладке, у меня не выходит. И, если можно, еще хотелка - добавить сепаратор, который бы запихивал шаблоны между ним в подменю. Тоже с этим не заладилось, а список уже излишне разросся... ![]() |
SendInfo > 07-03-2015 09:19:11 |
villa7,проверял на[nightly]39 . В профиле указано. Попробуйте только эту кнопку , в ней уже ваш стиль, не меняя ничего. скрытый текст Выделить код Код: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%3EStyle%20toggler%20RUBOARD%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*/%0Athis.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20var%20cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28this.Help%29%29%3B%0A%20%20%20%20var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20this.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20%20%20%20%20if%28enable%20%3D%3D%20undefined%29%0A%20%20%20%20%20%20%20%20%20%20%20%20enable%20%3D%20%21this.checked%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20enable%3B%0A%20%20%20%20%20%20%20%20document.persist%28this.id%2C%20%22checked%22%29%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20if%28enable%20%26%26%20%21has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20else%20if%28%21enable%20%26%26%20has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.toggleStyle%28enable%29%3B%0A%7D%3B%0Aif%28this.checked%29%0A%20%20%20%20this.toggleStyle%28true%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Athis.toggleStyle%28%29%3B%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/*%u0430%u0432%u0442%u043E%u0440%20Infocatcher%20%u043A%u043D%u043E%u043F%u043A%u0430%20%22%u043F%u043E%u043C%u043D%u0438%u0442%22%20%u0441%u0432%u043E%u0435%20%u0441%u043E%u0441%u0442%u043E%u044F%u043D%u0438%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20firefox%2C%20%u0442%u043E%20%u0435%u0441%u0442%u044C%20%u0431%u044B%u043B%u0430%20%u043E%u043D%u0430%20%22%u0432%u043A%u043B.%22%20%u0438%u043B%u0438%20%22%u0432%u044B%u043A%u043B.%22%20*/%0A/*%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23RUBOARD%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23*/%0A@namespace%20url%28http%3A//www.w3.org/1999/xhtml%29%3B%0A@-moz-document%20domain%28%22forum.ru-board.com%22%29%2C%20%0Adomain%28%22gallery.ru-board.com%22%29%2C%0Adomain%28%22forall.ru-board.com%22%29%0A%7B%0Adiv%2C%20body%2C%20.tit%2C%20table%2C%20td%2C%20form%7Bbackground%3A%20%23333333%20%21important%3B%20%7D%0Afont%2C%20td%2C%20%20a%20%7Bcolor%3A%20%23cccccc%20%21important%3B%7D%0Aspan%20%7Bcolor%3A%20%23f2f2f2%20%21important%3B%7D%0A.dats%20%7Bbackground%3A%20%23444444%20%21important%3B%7D%0Aa%3Alink%20%7Bcolor%3A%20%23dddddd%20%21important%3B%7D%0A.lgf%2C%20table%20%7Bborder-color%3A%20%23333333%20%21important%3B%7D%0Aimg%5Bsrc%3D%22board/temp/itech-promo/r/4.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/1.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/3.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/2.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/5.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/6.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/7.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/8.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/9.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/10.gif%22%5D%20%0A%7Bdisplay%3A%20none%20%21important%3B%7D%0Atextarea%7B%0A-moz-appearance%3A%20none%20%21important%3B%0Abackground-color%3A%20%23333333%20%21important%3B%20%0Acolor%3A%20%23e2e2e2%20%21important%3B%7D%7D%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E . И отключите все другие стили. Может где-то пересекаются. |
turbot > 07-03-2015 10:02:17 |
SendInfo пишет
Попроубуйте Инспектор открыть с включенной кнопкой. villa7 |
SendInfo > 07-03-2015 10:59:50 |
turbot пишет
Да пожалуйста: скрытый текст ![]() |
voqabuhe > 07-03-2015 11:07:40 |
Dumby пишет
Ну как всегда просто шикарно. Огромное спасибо. |
turbot > 07-03-2015 11:20:07 |
SendInfo |
villa7 > 07-03-2015 11:47:59 |
SendInfo |
bunda1 > 07-03-2015 12:12:12 |
villa7 пишет
Да мистика, что то наверно поменяли, но помнится в старых версиях <36 с USER_SHEET тоже работали не все стили |
SendInfo > 07-03-2015 12:29:12 |
turbot,в вопросе villa7 об инспекторе ни слова, я его и не смотрел. А то что на сайте у меня работает - ранее выложен скрин. |
lokiju > 07-03-2015 12:42:35 |
Вот есть такая кнопка "deletion flash cookies" Выделить код Код:var dir = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("Home", Components.interfaces.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true); У меня не работает. Кто может починить? |
turbot > 07-03-2015 12:59:38 |
SendInfo с AGENT_SHEET, и, соответственно, он становится непрозрачным. А вот что у villa7 поверх страницы расположено - фиг знает. villa7 скрытый текст Выделить код Код:@namespace url(http://www.w3.org/1999/xhtml); @-moz-document domain("forum.ru-board.com"), domain("gallery.ru-board.com"), domain("forall.ru-board.com") {div,body,.tit,table,td{background:#333333!important} font,td,a{color:#cccccc!important} span{color:#f2f2f2!important} .dats{background:#444444!important} a:link{color:#dddddd!important} .lgf,table {border-color:#333333!important} img[src*="/itech-promo/"]{display:none!important} textarea,select,input,form,img[src^='http://i.ru-board.com/images/']{filter:grayscale(100%)invert(80%)!important}} Нужно включить поддержку свойства filter в about:config: layout.css.filters.enabled;true. С ними можно и вовсе радикально сделать: Выделить код Код:@namespace url(http://www.w3.org/1999/xhtml); @-moz-document domain("forum.ru-board.com"), domain("gallery.ru-board.com"), domain("forall.ru-board.com") {body{background: #303030!important} html{filter:grayscale(100%) invert(80%)!important}} Да-да, я для себя их недавно открыл, и теперь всюду сую. |
bunda1 > 07-03-2015 13:49:43 |
lokiju пишет
Выделить код Код:var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.exists() && dir.remove(true); !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); |
villa7 > 07-03-2015 13:52:34 |
turbot |
lokiju > 07-03-2015 18:43:45 |
bunda1, нет не удаляет содержимое "Macromedia". |
voqabuhe > 07-03-2015 19:24:01 |
lokiju пишет
Всё удаляет, положи во вкладку Код |
lokiju > 07-03-2015 19:30:47 |
voqabuhe пишет
Там и лежит. Но содержимому "Macromedia" все равно. И Вetter Privacy удалено по той же причине. |
turbot > 07-03-2015 20:51:08 |
lokiju
Если, конечно, ваш юзерагент не врет, как мой. |
lokiju > 07-03-2015 21:52:10 |
turbot пишет
Для кнопки может быть, но не для BetterPrivacy - раньше же работало . Собственно и кнопкой заинтересовался после того, как обнаружилась беда с BetterPrivacy(оно же не поддерживается автором.) turbot пишет
Нет не врет. |
bunda1 > 08-03-2015 01:15:03 |
lokiju пишет
Да, мой код для Windows, может попробуй этот код: Выделить код Код:var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); dir.initWithPath("C:\\Macromedia"); dir.exists() && dir.remove(true); !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); Но вместо C:\\Macromedia укажи свой свой путь к папке Macromedia, может с двумя \\ |
lokiju > 08-03-2015 02:45:56 |
bunda1 Выделить код Код:var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); dir.initWithPath("~/.macromedia/"); dir.exists() && dir.remove(true); !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); Вот так удаляет 08-03-2015 02:54:42 |
bunda1 > 08-03-2015 03:15:45 |
lokiju пишет
Выделить код Код:var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); dir.initWithPath("~/.macromedia/"); dir.exists() && dir.remove(true); !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); dir.initWithPath("~/.adobe/"); dir.exists() && dir.remove(true); !dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); |
Dumby > 08-03-2015 15:49:00 |
turbot пишет
Я попробовал запилить, вроде вставляет, наверно скрытый текст Выделить код Код:({ buttonsData: [ { "BUTTON 1": { image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka///jnP//45z//+Oc//8pGv//tG7//4ZA//90Lv//dTD//yka////x////8f////H////x////8f//yka//8pGv//45z//+Oc//91MP//Vxr//5RM///Bev//wXr//8F6//+8df//ejP//5JK////x////8f////H//8pGv//KRr//+Oc///jnP//KRr////////////////////////////////////H//+0bv//nVf////H////x///KRr//yka///jnP//45z//0Ey/////////8b//+Oc//+1cf//ayb//+Oc/////////+X//1Ma////x////8f//yka//8pGv//45z//+Oc//9oWf//zKr//8W2//9eGv//h0L//zwa//+HQv/////////o//9mH//MiD//x4Q8//8pGv//KRr//+Oc///jnP//0Ir//2hZ//96M///NBr//14a//+bVP///+D/////////////Uxr//+Oc///jnP//KRr//yka///jnP//45z//86I//88Gv//vHX////g////////////////////4P//6KL//yka///jnP//45z//yka//8pGv//45z//+Oc//9EGv//1o/////////////////////g///TjP//h0L//yka///Vj///45z//+Oc//8pGv//KRr//yka//8pGv//PBr////l////////0Ir//1Ma//8tGv//KRr//0Aa///jnP//45z//+Oc///jnP//KRr//yka////x////8f//zwa/////f///////5pS//9PGv//h0L//yka//88Gv//Wxr//8B7///jnP//45z//yka//8pGv///8f////H//8pGv//3pb/////////////3pb//9CK///qo////////7Nr//9kHP//45z//+Oc//8pGv//KRr////H////x///ayb//0ca///elv///+D/////////////////4eHh//+aUv//ZBz//+Oc///jnP//KRr//yka////x////8f////H//9kHP//KRr//0ca//9mH///ZBz//08a//8wGv//KRr/8MyG///jnP//45z//yka//8pGv///8f////H////x////8f////H///pov//2ZD//9CK//8pGv//45z//+Oc///jnP//45z//+Oc//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", id: "Button-1-id", data: { "Button 1 menuitem 1": ` 8461257969972130394635750604812869365370931486851886606643085 6226096450462739462668149466854904346848587433786390959291217 859556681023673155470765942664293343867480839875179799100937521 `, "Button 1 menuitem 2": ` 211719589689090920082926741548657453548273240041478388434571297 9467134014976113453058689329012399251109065413787280533498154 9033973941518880395243302959334777718781604739376219685379215 `, "Button 1 menu 1": { "Button 1 menu 1 menuitem 1": ` 2051991579069607310657879309722017441960000137380237785566423 82366451515210699197167835877150747720503556174426352286230224 245703349625817314565034119246802882333194576375906748723837 `, "Button 1 menu 1 menuitem 2": ` 218722713331159305668806110918112536255804285389845217355049114 8310252513869211823316302359823897208708687865872857059938107 030564260447343283699623654152284462156273428194141667685271482 `, "Button 1 menu 1 menu 1": { "Button 1 menu 1 menu 1 menuitem 1": ` 281804303220221146597605561935037356359018645418047020458794 4384938073647720339731610031281287090482630762556709830910227 399140227763397062946197043867452445291342396083641831699693 ` } } } } }, //◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙ { "BUTTON 2": { image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBjP+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEj///NEX//3F9//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0gf//MEH//yg6//80Rf//fYn//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBjP//M0P//yg6//8oOv//KDr//zRF//90gf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANrg/41UYv//M0T//yg6//8oOv//KDr//yg6//8oOv//MEH//0hX///W3P+NAAAAAAAAAAAAAAAAAAAAANbc/40xQv//LD3//ys8//8rPP//Kzz//ys8//8rPP//Kzz//ys8//8rPP//Kzv//9bc/40AAAAAAAAAAAAAAABBUP//MEP//zJF//8yRf//MkX//zJF//8yRf//MkX//zJF//8yRf//MkX//zFE//84SP//AAAAAAAAAAC0vP+NOUn//zxQ//88UP//PFD//zxQ//88UP//PFD//zxQ//88UP//PFD//zxQ//88UP//OEn//52n/40AAAAAl6H/jTpO//9GXf//Rl3//0Zd//9GXf//Rl3//0Zd//9GXf//Rl3//0Zd//9GXf//Rl3//zlN//97h/+NAAAAAKSt/40/Uf//UWr//1Fq//9Rav//UWr//1Fq//9Rav//UWr//1Fq//9Rav//UWr//1Fq//8+U///jpj/jQAAAADR1/+NNEb//1t2//9bdv//W3b//1t2//9Ycv//OUv//1hy//9bdv//W3b//1t2//9bdv//PU///7rC/40AAAAAAAAAAGZ0//9GXP//Y3///2N///9ge///QVT//4GN/404Sv//X3r//2N///9jf///Rlz//1xr//8AAAAAAAAAAAAAAAAAAAAAXGv//ztN//9AU///MEH//3yI/40AAAAAhJD/jTFC//9AU///OUr//1po///a4P+NAAAAAAAAAAAAAAAAAAAAAAAAAADDyv+Ntr7/jQAAAAAAAAAAAAAAAAAAAAAAAAAAtr7/jcrR/40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf9/rEH+P6xB/B+sQfgPrEHgA6xBwAGsQcABrEGAAKxBgACsQYAArEGAAKxBwAGsQeCBrEHz56xB//+sQQ==", id: "Button-2-id", data: { "Button 2 menuitem 1": ` 1704808533483901912593511057615798482706959734226981232605644 554364593368568792241103455746052909837105410644466183177142 8491036970273453442391718902925334048053461781577074832179994 `, "Button 2 menu 1": { "Button 2 menu 1 menuitem 1": ` 9188134855185033238311828665629715333876611982705880582763672 78018885404637109297633520 043865080315035899737560093465767124 395336760559446747709696748148666879296254004631107783736979 `, "Button 2 menu 1 menuitem 2": ` 5680021603172030840205691680158991695283324356770429331137686 485734254327862726853675364881849334230932442689674286326549 42123122519280921504265246263330912181059123544347533761097224 ` }, "Button 2 menuitem 2": ` 639315668318676304872944474192825257426286701763560448668300918 6516906487685234047552040688776748056337078135324403316543704 61982903287961345045288774833253159273727795146141071494331236 ` } } }, //◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙ { "I am a Human": { image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////////////////wAAAP////////////////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////////////////////////////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////wAAAP8AAAD//////wAAAP8AAAD///////////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD///////////8AAAD/AAAA//////8AAAD/AAAA////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP//////////////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==", id: "Invent-this-id", data: { "q": ` « """ ''' \`\`\`... » `, "template strings stuff": ` ${xhtmlns}\n${xulns}\n\n${"inserted by " + _id} `, "¯\\_(ツ)_/¯": ` ¯\\_(ツ)_/¯ ` } } } ], id: "cb-stylish-paste-buttons-box", isStylishTab: function(doc) doc.location.href.startsWith("about:stylish-edit"), get buttons () { delete this.buttons; return this.createButtons(); }, createButtons: function() { var box = this.insertElement("hbox", null, {id: this.id}); for(var buttonData of this.buttonsData) { var key = Object.keys(buttonData)[0], data = buttonData[key]; var btn = this.insertElement("toolbarbutton", box, data); btn.tooltipText = key; btn.linkedPopup = this.createPopup(data.data); btn.setAttribute("oncommand", "var popup = this.appendChild(this.linkedPopup); popup.openPopup(this);"); } return this.buttons = box; }, createPopup: function(data, notRoot) { var popup = this.insertElement("menupopup"); notRoot || popup.setAttribute("position", "after_start"); popup.setAttribute("oncommand", "event.stopPropagation(); insertCodeAtCaret(event.originalTarget.value);"); for(var [key, val] in Iterator(data)) { if (typeof val == "string") { var value = val.slice(val.indexOf("\n") + 1, val.lastIndexOf("\n")); var menuitem = this.insertElement("menuitem", popup, {label: key, value: value}); menuitem.tooltipText = value; } else { var menu = this.insertElement("menu", popup, {label: key}); this.insertElement(this.createPopup(val, true), menu); } } return popup; }, insertElement: function(element, parent, attributes, before = null) { var notExist = typeof element != "object"; if (notExist) element = document.createElement(element); if (notExist && attributes) { for(var attribute in attributes) { attribute == "data" || element.setAttribute(attribute, attributes[attribute]); } } parent && parent.insertBefore(element, before); return element; }, deleteAndAddForDoc(add, doc) { var box = doc.getElementById(this.id); box && box.remove(); add && this.pageshow({target: doc}); }, deleteAndAddForAll(add) { for(var br of gBrowser.browsers) { var doc = br.contentDocument; this.isStylishTab(doc) && this.deleteAndAddForDoc(add, doc); } }, init: function() { addEventListener("pageshow", this, false, gBrowser); this.deleteAndAddForAll(true); addDestructor(() => this.deleteAndAddForAll(), this); }, handleEvent: function(e) this[e.type](e), pageshow: function(e) { if (!this.isStylishTab(e.target)) return; var before = e.target.getElementById("wrap-lines"); var buttons = this.buttons, clone = buttons.cloneNode(true); before && this.insertElement(clone, before.parentNode, null, before); for(var i = 0, l = clone.childNodes.length; i < l; i++) { clone.childNodes[i].linkedPopup = buttons.childNodes[i].linkedPopup; } } }).init(); |
turbot > 08-03-2015 18:40:12 |
Dumby А можно сделать ее единой и для редактора во вкладке и в окне? Иногда так удобнее, иногда так. Боюсь, я сам не осилю... |
lokiju > 09-03-2015 21:47:51 |
bunda1, спасибо. А можно сделать очистку папок автоматом, перед закрытием браузера? |
mahtanoronra > 10-03-2015 02:13:06 |
а может кто нибудь добавить в кнопку Выделить код Код:startProcess("G:\\Programs\\HandyCache\\HandyCache.exe",[""]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Файл не найден", path); }; а при повтором нажатии(тоесть выключении прокси) убивание процесса программы(как это сделано в "Остановить очистку потребляемой оперативной памяти") |
bunda1 > 10-03-2015 22:09:35 |
Ну если по простому то в начале кода инициализации после: Выделить код Код:cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 1 ) ? 0 : 1 ); положи: Выделить код Код:if ( cbu.getPrefs("network.proxy.type") == 1 ) { var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath("C:\\Program Files\\HandyCache\\HandyCache.exe"); file.launch(); } else { // Закрыть все процессы 'HandyCache.exe' ................ var VBScript = 'strComputer = "."\ \nSet objWMIService = GetObject("winmgmts:" _\ \n& "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")\ \nSet colProcessList = objWMIService.ExecQuery _\ \n("Select * from Win32_Process Where Name = \x27HandyCache.exe\x27")\ \nFor Each objProcess in colProcessList\ \nobjProcess.Terminate()\ \nNext'; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.append("processTerminate.vbs"); custombuttonsUtils.writeFile(file.path, VBScript); file.launch(); } |
HaGEN > 11-03-2015 02:25:37 |
Прошу поясните кто может: что делает эта кнопка Script Loader |
bunda1 > 11-03-2015 20:58:30 |
HaGEN пишет
Кнопка не работает потому что в ней используется makeXML() который не поддерживается уже давно. И этот Script Loader кажется предназначен для запуска текстовых файлов типа .js с кодами которые работают в CB кнопках но не с кодами GM с некоторыми исключениями. |
HaGEN > 12-03-2015 14:31:08 |
Ага, знач не то что я думал и не буду пытаться. |
villa7 > 15-03-2015 17:25:08 |
Может кто знает, кнопка переключения стилей от Infocatcher Style toggler |
turbot > 15-03-2015 18:22:53 |
villa7 |
villa7 > 15-03-2015 19:47:14 |
turbot |
Dumby > 16-03-2015 00:17:56 |
turbot пишет
Во, может такая подойдёт скрытый текст У меня, вроде, не сильно глючит. Для редактирования предполагается контекстное меню. Результат редактирования (innerHTML) пишется на вкладку Справка. Попробуй. Выделить код Код: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%3EUnnamed%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAN0DABop/8f//5zj/////+D//xpP/4rQ/xxk/xo8/0KH/3vA/xpH/1Ka/xpb/3W8/5DZ/6Lp/xow/1lo/yZr/0yU/zN6/zB1/2uz/z+IzDyEx+Hh4TJB/4bM8B9m/4/W/4jO/5be/+j//670/y50/1ed/3G1/6rM/7bF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUsASgAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAGlUCAcEgsCgNIJORhAAiezyPyAFgcDoUIgBMFICeFB2FA1jAOXSTgQQYZIIMLWiBFkBmFBADRUHSFCGMGWVVQdE4CCx5kAwQGegZdTx8IDmNkBBCIQk8GEhURDQyXBZICEiYnBwkICQMhHRgZnAIbAwECDhMCjQVqm4yMASUkv08WDRQKyw4VFEm0dBcJIxZeSQFG2kRBACH5BAkZACgALAAAAAAQABAAAAY5QJRwSCwKBUgkMcBkHpVGoRMFjaKm1ShWYJUGusPm9zq2TqfmMVPUPZfBZDAUHZ2/i0nvnZrkwotBADs%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BgBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%20%7C%7C%20%28%28%29%20%3D%3E%20%7B%0A%09var%20obsId%20%3D%20%22CB%22%20+%20_id.slice%2820%29%20+%20%22_PasteButtonsForStylish%22%3B%0A%09var%20obs%20%3D%20Application.storage.get%28obsId%2C%20null%29%3B%0A%09if%20%28%21obs%29%20%7B%0A%09%09obs%20%3D%20%7B%0A%09%09%09id%3A%20obsId%2C%0A%09%09%09boxId%3A%20obsId%20+%20%22_Box%22%2C%0A%09%09%09brURL%3A%20location.href%2C%0A%09%09%09topic%3A%20%22document-shown%22%2C%0A%09%09%09init%3A%20function%28%29%20%7B%0A%09%09%09%09this.proceedAll%28true%29%3B%0A%09%09%09%09Services.obs.addObserver%28this%2C%20this.topic%2C%20false%29%3B%0A%09%09%09%7D%2C%0A%09%09%09destroy%3A%20function%28%29%20%7B%0A%09%09%09%09this.proceedAll%28false%29%3B%0A%09%09%09%09try%20%7BServices.obs.removeObserver%28this%2C%20this.topic%29%3B%7D%0A%09%09%09%09catch%28ex%29%20%7BCu.reportError%28ex%29%3B%7D%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------%20OBS%20----------------------------------%0A%0A%09%09%09observe%3A%20function%28doc%29%20this.proceedDoc%28doc%2C%20true%29%2C%0A%09%09%09isStylishDoc%3A%20function%28doc%29%20doc.location%0A%09%09%09%09%26%26%20doc.location.href.startsWith%28%22about%3Astylish-edit%22%29%2C%0A%09%09%09isBrowserDoc%3A%20function%28doc%29%20doc.location%0A%09%09%09%09%26%26%20doc.location.href%20%3D%3D%20this.brURL%2C%0A%09%09%09proceedAll%3A%20function%28init%29%20%7B%0A%09%09%09%09var%20en%20%3D%20Services.wm.getEnumerator%28null%29%3B%0A%09%09%09%09while%28en.hasMoreElements%28%29%29%20%7B%0A%09%09%09%09%09var%20doc%20%3D%20en.getNext%28%29.document%3B%0A%09%09%09%09%09if%20%28this.isBrowserDoc%28doc%29%29%20%7B%0A%09%09%09%09%09%09for%28var%20br%20of%20doc.defaultView.gBrowser.browsers%29%20%7B%0A%09%09%09%09%09%09%09this.proceedDoc%28br.contentDocument%2C%20init%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09var%20sidebarDoc%20%3D%20doc.getElementById%28%22sidebar%22%29.contentDocument%3B%0A%09%09%09%09%09%09this.proceedDoc%28sidebarDoc%2C%20init%29%3B%0A%09%09%09%09%09%09var%20wpb%20%3D%20sidebarDoc.getElementById%28%22web-panels-browser%22%29%3B%0A%09%09%09%09%09%09wpb%20%26%26%20this.proceedDoc%28wpb.contentDocument%2C%20init%29%3B%0A%09%09%09%09%09%7D%20%0A%09%09%09%09%09else%0A%09%09%09%09%09%09this.proceedDoc%28doc%2C%20init%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09proceedDoc%3A%20function%28doc%2C%20add%29%20%7B%0A%09%09%09%09if%20%28%21this.isStylishDoc%28doc%29%20%7C%7C%20doc.readyState%20%21%3D%20%22complete%22%29%20return%3B%0A%09%09%09%09var%20box%20%3D%20doc.getElementById%28this.boxId%29%3B%0A%09%09%09%09if%20%28add%20%26%26%20%21box%29%20%7B%0A%09%09%09%09%09var%20before%20%3D%20doc.getElementById%28%22wrap-lines%22%29%3B%0A%09%09%09%09%09this.addBox%28before%29%3B%0A%09%09%09%09%7D%20else%20if%20%28%21add%20%26%26%20box%29%20%7B%0A%09%09%09%09%09box%20%26%26%20box.remove%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A//%09%09%09---------------------------------------------%20BOX%20--------------------------------------------%0A%0A%09%09%09get%20box%28%29%20%7B%0A%09%09%09%09delete%20this.box%3B%0A%09%09%09%09return%20this.box%20%3D%20this.createBox%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09createBox%3A%20function%28%29%20%7B%0A%09%09%09%09var%20box%20%3D%20this.insertElement%28%22hbox%22%2C%20null%2C%20%7B%0A%09%09%09%09%09id%3A%20this.boxId%2C%0A%09%09%09%09%09onclick%3A%20%60%0A%09%09%09%09%09%09if%20%28event.button%20%21%3D%202%29%20return%3B%0A%09%09%09%09%09%09var%20popup%20%3D%20this.linkedPopup%3B%0A%09%09%09%09%09%09if%20%28popup.state%20%21%3D%20%22closed%22%29%20popup.hidePopup%28%29%3B%0A%09%09%09%09%09%09popup.linkedTarget%20%3D%20event.originalTarget%3B%0A%09%09%09%09%09%09popup.openPopupAtScreen%28event.screenX%2C%20event.screenY%29%3B%0A%09%09%09%09%09%60%2C%0A%09%09%09%09%09oncommand%3A%20%60%0A%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09var%20trg%20%3D%20event.originalTarget%3B%0A%09%09%09%09%09%09if%20%28trg.nodeName%20%3D%3D%20%22toolbarbutton%22%29%0A%09%09%09%09%09%09%09trg.firstChild.openPopup%28trg%29%3B%0A%09%09%09%09%09%09/*%0A%09%09%09%09%09%09else%20if%20%28trg.nodeName%20%3D%3D%20%22menuitem%22%29%0A%09%09%09%09%09%09%09trg.hasAttribute%28%22value%22%29%0A%09%09%09%09%09%09%09%26%26%20insertCodeAtCaret%28trg.value%29%3B%0A%09%09%09%09%09%09*/%0A%09%09%09%09%09%09else%20if%20%28trg.nodeName%20%3D%3D%20%22menuitem%22%20%26%26%20trg.hasAttribute%28%22value%22%29%29%20%7B%0A%09%09%09%09%09%09%09insertCodeAtCaret%28trg.value%29%3B%0A%09%09%09%09%09%09%09codeElementWrapper.focus%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%60%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09return%20box%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20boxContent%28%29%20%7B%0A%09%09%09%09delete%20this.boxContent%3B%0A%09%09%09%09return%20this.boxContent%20%3D%20self.Help.trim%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09addBox%3A%20function%28before%29%20%7B%0A%09%09%09%09var%20box%20%3D%20before.parentNode.insertBefore%28this.box.cloneNode%28false%29%2C%20before%29%3B%0A%09%09%09%09box.innerHTML%20%3D%20this.boxContent%3B%0A%09%09%09%09box.linkedPopup%20%3D%20box.appendChild%28this.popup.cloneNode%28true%29%29%3B%0A%09%09%09%09box.style.cssText%20%3D%20%22max-height%3A%2032px%20%21important%3B%20max-width%3A%20320px%20%21important%3B%22%3B%0A%09%09%09%7D%2C%0A%0A//%09%09%09-------------------------------------------%20CONTEXT%20------------------------------------------%0A%0A%09%09%09popupXUL%3A%20%60%0A%09%09%09%09%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09id%3D%22%24%7BobsId%20+%20%22_Context%22%7D%22%0A%09%09%09%09%09oncommand%3D%22event.stopPropagation%28%29%3B%20var%20obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20if%20%28obs%29%20obs.cmdDispatcher%28event%29%3B%22%0A%09%09%09%09%09onpopupshowing%3D%22var%20obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20if%20%28obs%29%20obs.contextPopupshowing%28this%29%3B%22%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%22%20value%3D%22openEditor%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0412%u044B%u0448%u0435%22%20value%3D%22moveUp%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u0438%u0436%u0435%22%20value%3D%22moveDown%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%22%20value%3D%22copyItem%22%20closemenu%3D%22none%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%22%20value%3D%22pasteItem%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%22%20value%3D%22deleteItem%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20menuitem%22%20value%3D%22newMenuitem%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432oe%20menu%22%20value%3D%22newMenu%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20toolbarbutton%22%20value%3D%22newButton%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20menuseparator%22%20value%3D%22newSeparator%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%20base64%22%20value%3D%22imgBase64%22/%3E%0A%09%09%09%09%3C/menupopup%3E%0A%09%09%09%60%2C%0A%09%09%09get%20popup%28%29%20%7B%0A%09%09%09%09delete%20this.popup%3B%0A%09%09%09%09return%20this.popup%20%3D%20this.createPopup%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09createPopup%3A%20function%28%29%20%7B%0A%09%09%09%09var%20xul%20%3D%20this.popupXUL.trim%28%29.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09%09%09%09var%20popup%20%3D%20new%20DOMParser%28%29.parseFromString%28xul%2C%20%22application/xml%22%29.documentElement%3B%0A%09%09%09%09return%20popup%3B%0A%09%09%09%7D%2C%0A%09%09%09cmdDispatcher%3A%20function%28e%29%20%7B%0A%09%09%09%09var%20trg%20%3D%20e.originalTarget%2C%20popup%20%3D%20trg.parentNode%2C%20cmd%20%3D%20trg.value%3B%0A%09%09%09%09if%20%28%21cmd%29%20return%3B%0A%09%09%09%09var%20popupNode%20%3D%20popup.linkedTarget%3B%0A%09%09%09%09cmd.startsWith%28%22new%22%29%0A%09%09%09%09%09%3F%20this.newItem%28popupNode%2C%20cmd.slice%283%29%29%0A%09%09%09%09%09%3A%20this%5Bcmd%5D%28popupNode%2C%20popup%29%3B%0A%09%09%09%09%22copyItem%20openEditor%20imgBase64%22.contains%28cmd%29%20%7C%7C%20this.save%28popupNode%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptySeparator%28%29%20%7B%0A%09%09%09%09delete%20this.emptySeparator%3B%0A%09%09%09%09return%20this.emptySeparator%20%3D%20this.insertElement%28%22menuseparator%22%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenuitem%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenuitem%3B%0A%09%09%09%09return%20this.emptyMenuitem%20%3D%20this.insertElement%28%22menuitem%22%2C%20null%2C%20%7Blabel%3A%20%22menuitem%22%2C%20value%3A%20%22%22%7D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenupopup%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenupopup%3B%0A%09%09%09%09var%20popup%20%3D%20this.insertElement%28%22menupopup%22%29%3B%0A%09%09%09%09popup.appendChild%28this.emptyMenuitem.cloneNode%28false%29%29%3B%0A%09%09%09%09return%20this.emptyMenupopup%20%3D%20popup%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenu%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenu%3B%0A%09%09%09%09var%20menu%20%3D%20this.insertElement%28%22menu%22%2C%20null%2C%20%7Blabel%3A%20%22menu%22%7D%29%3B%0A%09%09%09%09menu.appendChild%28this.emptyMenupopup.cloneNode%28true%29%29%3B%0A%09%09%09%09return%20this.emptyMenu%20%3D%20menu%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyButton%28%29%20%7B%0A%09%09%09%09delete%20this.emptyButton%3B%0A%09%09%09%09var%20btn%20%3D%20this.insertElement%28%22toolbarbutton%22%2C%20null%2C%20%7B%0A%09%09%09%09%09image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////////////////////////////////////////////////////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP//////AAAA/wAAAP///////////////////////////////////////////////////////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEH4KxBB+CsQQfgrEEH4KxBB+CsQQfgrEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09btn.appendChild%28this.emptyMenupopup.cloneNode%28true%29%29%3B%0A%09%09%09%09return%20this.emptyButton%20%3D%20btn%3B%0A%09%09%09%7D%2C%0A%09%09%09newItem%3A%20function%28node%2C%20name%29%20%7B%0A%09%09%09%09var%20newItem%20%3D%20this%5B%22empty%22%20+%20name%5D.cloneNode%28true%29%3B%0A%09%09%09%09node.parentNode.insertBefore%28newItem%2C%20node.nextSibling%29%3B%0A%09%09%09%09if%20%28name%20%3D%3D%20%22Button%22%29%20newItem.firstChild.setAttribute%28%22position%22%2C%20%22after_start%22%29%3B%0A%09%09%09%7D%2C%0A%09%09%09deleteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20win%20%3D%20this.top%28node%29%3B%0A%09%09%09%09if%20%28%21win.confirm%28%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%3F%22%29%29%20return%3B%0A%09%09%09%09node.remove%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09moveUp%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28node%2C%20node.previousSibling%29%3B%0A%09%09%09%7D%2C%0A%09%09%09moveDown%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28node%2C%20node.nextSibling.nextSibling%29%3B%0A%09%09%09%7D%2C%0A%09%09%09copyItem%3A%20function%28node%2C%20popup%29%20%7B%0A%09%09%09%09this.transactionNode%20%3D%20node.cloneNode%28true%29%3B%0A%09%09%09%09popup.querySelector%28%27menuitem%5Bvalue%3D%22pasteItem%22%5D%27%29.disabled%20%3D%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09pasteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28this.transactionNode%2C%20node%29%3B%0A%09%09%09%7D%2C%0A%09%09%09imgBase64%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20obs%20%3D%20this%3B%0A%09%09%09%09var%20picker%20%3D%20makeFilePicker%28%29%3B%0A%09%09%09%09picker.appendFilters%28picker.filterImages%29%3B%0A%09%09%09%09picker.init%28this.top%28node%29%2C%20%22%u0418%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%22%2C%20picker.modeOpen%29%3B%0A%09%09%09%09picker.open%28%7Bdone%3A%20function%28result%29%20%7B%0A%09%09%09%09%09if%20%28result%20%21%3D%20picker.returnOK%29%20return%3B%0A%09%09%09%09%09var%20reader%20%3D%20new%20FileReader%28%29%3B%0A%09%09%09%09%09reader.onload%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%21reader.result%29%20return%3B%0A%09%09%09%09%09%09var%20name%20%3D%20node.nodeName%3B%0A%09%09%09%09%09%09%22menuitem%22.contains%28name%29%20%26%26%20node.classList.add%28name%20+%20%22-iconic%22%29%3B%0A%09%09%09%09%09%09node.setAttribute%28%22image%22%2C%20reader.result%29%3B%0A%09%09%09%09%09%09obs.save%28node%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09reader.readAsDataURL%28new%20File%28picker.file%29%29%3B%0A%09%09%09%09%7D%7D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09disablers%3A%20%7B%0A%09%09%09%09moveUp%3A%20function%28node%29%20%21node.previousSibling%2C%0A%09%09%09%09moveDown%3A%20function%28node%29%20%21node.nextSibling%20%7C%7C%20node.nextSibling.nodeName%20%3D%3D%20%22menupopup%22%2C%0A%09%09%09%09deleteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09%09var%20count%20%3D%20node.parentNode.childElementCount%3B%0A%09%09%09%09%09return%20count%20%3D%3D%201%20%7C%7C%20%28node.nodeName%20%3D%3D%20%22toolbarbutton%22%20%26%26%20count%20%3D%3D%202%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09top%3A%20function%28node%29%20%22toolbarbutton%20hbox%22.contains%28node.nodeName%29%2C%0A%09%09%09%09newMenuitem%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newMenu%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newSeparator%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newButton%3A%20function%28node%29%20%21this.top%28node%29%2C%0A%09%09%09%09copyItem%3A%20function%28node%29%20node.nodeName%20%3D%3D%20%22hbox%22%2C%0A%09%09%09%09pasteItem%3A%20function%28%29%20%21%28%22transactionNode%22%20in%20this.obs%29%2C%0A%09%09%09%09imgBase64%3A%20function%28node%29%20%21%22toolbarbutton%20menu%20menuitem%22.contains%28node.nodeName%29%0A%09%09%09%7D%2C%0A%09%09%09contextPopupshowing%3A%20function%28popup%29%20%7B%0A%09%09%09%09this.disablers.obs%20%3D%20this%3B%0A%09%09%09%09var%20node%20%3D%20popup.linkedTarget%3B%0A%09%09%09%09for%28var%20key%20in%20this.disablers%29%20%7B%0A%09%09%09%09%09var%20menuitem%20%3D%20popup.querySelector%28%60menuitem%5Bvalue%3D%22%24%7Bkey%7D%22%5D%60%29%3B%0A%09%09%09%09%09if%20%28menuitem%29%20menuitem.disabled%20%3D%20this.disablers%5Bkey%5D%28node%29%20%7C%7C%20node.nodeName%20%3D%3D%20%22menupopup%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09popup.querySelector%28%27menuitem%5Bvalue%3D%22openEditor%22%5D%27%29.disabled%20%3D%20node.nodeName%20%3D%3D%20%22hbox%22%3B%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------------------%20EDITOR%20----------------------------------------------%0A%0A%09%09%09editorXUL%3A%20%60%0A%09%09%09%09%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%09%09%09%09%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%3E%0A%09%09%09%09%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//custombuttons/content/codeeditor.css%22%20type%3D%22text/css%22%3F%3E%0A%09%09%09%09%3Cdialog%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09title%3D%22%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%22%0A%09%09%09%09%09onload%3D%22obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20obs.initEditor%28window%29%3B%22%0A%09%09%09%09%09ondialogaccept%3D%22obs.setAttributes%28window%29%3B%22%0A%09%09%09%09%09buttons%3D%22extra2%2Caccept%2Ccancel%22%0A%09%09%09%09%09buttonlabelextra2%3D%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%22%0A%09%09%09%09%09ondialogextra2%3D%22obs.deleteAttribute%28window%29%3B%22%3E%0A%09%09%09%09%09%3Chbox%20align%3D%22center%22%3E%0A%09%09%09%09%09%09%3Clabel%20value%3D%22%u041D%u043E%u0432%u044B%u0439%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%22/%3E%0A%09%09%09%09%09%09%3Ctextbox%20flex%3D%221%22%20multiline%3D%22false%22%20onkeydown%3D%22obs.onTexboxKeydown%28event%29%3B%22/%3E%0A%09%09%09%09%09%09%3Cbutton%20label%3D%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%22%20oncommand%3D%22obs.newAttribute%28window%2C%20textbox.value%29%3B%22/%3E%0A%09%09%09%09%09%3C/hbox%3E%0A%09%09%09%09%09%3Ctabbox%20flex%3D%221%22%3E%0A%09%09%09%09%09%09%3Ctabs/%3E%0A%09%09%09%09%09%09%3Ctabpanels%20flex%3D%221%22/%3E%0A%09%09%09%09%09%3C/tabbox%3E%0A%09%09%09%09%3C/dialog%3E%0A%09%09%09%60%2C%0A%09%09%09get%20editorURL%28%29%20%7B%0A%09%09%09%09delete%20this.editorURL%3B%0A%09%09%09%09var%20xul%20%3D%20this.editorXUL.trim%28%29%3B%0A%09%09%09%09return%20this.editorURL%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20encodeURIComponent%28xul%29%3B%0A%09%09%09%7D%2C%0A%09%09%09openEditor%3A%20function%28node%29%20%7B%0A%09%09%09%09this.node%20%3D%20node%3B%20this.elm%20%3D%20this.insertElement%28%22box%22%29%3B%0A%09%09%09%09Services.ww.openWindow%28this.top%28node%29%2C%20this.editorURL%2C%20%22%22%2C%0A%09%09%09%09%09%22chrome%2Cmodal%2Cresizable%2Ccenterscreen%2Cwidth%3D700%2Cheight%3D500%22%0A%09%09%09%09%2C%20null%29%3B%0A%09%09%09%7D%2C%0A%09%09%09initEditor%3A%20function%28win%29%20%7B%0A%09%09%09%09for%28var%20str%20of%20%5B%22tabs%22%2C%20%22tabpanels%22%2C%20%22textbox%22%5D%29%20%7B%0A%09%09%09%09%09win%5Bstr%5D%20%3D%20win.document.querySelector%28str%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09for%28var%20%7Bname%2C%20value%7D%20of%20this.node.attributes%29%20%7B%0A%09%09%09%09%09var%20isVal%20%3D%20name%20%3D%3D%20%22value%22%3B%0A%09%09%09%09%09var%20tab%20%3D%20this.addTab%28win%2C%20name%2C%20value%2C%20isVal%29%3B%0A%09%09%09%09%09if%20%28isVal%29%20tab.style.cssText%20%3D%20%22font-weight%3A%20bold%3B%20color%3A%20navy%3B%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28win.tabs.selectedIndex%20%3D%3D%20-1%29%20win.tabs.selectedIndex%20%3D%200%3B%0A%09%09%09%7D%2C%0A%09%09%09addTab%3A%20function%28win%2C%20name%2C%20value%2C%20sel%29%20%7B%0A%09%09%09%09var%20tab%20%3D%20this.insertElement%28%22tab%22%2C%20win.tabs%2C%20%7Blabel%3A%20name%7D%29%3B%0A%09%09%09%09tab.linkedCbeditor%20%3D%20this.insertElement%28%22cbeditor%22%2C%20win.tabpanels%2C%20%7B%0A%09%09%09%09%09class%3A%20%22custombuttons-editor-codeBox%22%2C%0A%09%09%09%09%09multiline%3A%20%22true%22%2C%0A%09%09%09%09%09flex%3A%20%221%22%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09if%20%28sel%29%20%7B%0A%09%09%09%09%09win.tabs.selectedItem%20%3D%20tab%3B%0A%09%09%09%09%09tab.linkedCbeditor.focus%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20tab%3B%0A%09%09%09%7D%2C%0A%09%09%09newAttribute%3A%20function%28win%2C%20name%29%20%7B%0A%09%09%09%09name%20%26%26%20this.addTab%28win%2C%20name%2C%20%22%22%2C%20true%29%3B%0A%09%09%09%09win.textbox.value%20%3D%20%22%22%3B%0A%09%09%09%7D%2C%0A%09%09%09onTexboxKeydown%3A%20function%28e%29%20%7B%0A%09%09%09%09if%20%28e.keyCode%20%3D%3D%20e.DOM_VK_RETURN%29%20%7B%0A%09%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09%09this.newAttribute%28e.target.ownerGlobal%2C%20e.target.value%29%3B%0A%09%09%09%09%7D%20else%20try%20%7B%0A%09%09%09%09%09var%20attr%20%3D%20e.target.value%20+%20e.key%3B%0A%09%09%09%09%09this.elm.setAttribute%28attr%2C%20true%29%3B%0A%09%09%09%09%09this.elm.removeAttribute%28attr%29%3B%0A%09%09%09%09%7D%20catch%28ex%29%20%7B%0A%09%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09setAttributes%3A%20function%28win%29%20%7B%0A%09%09%09%09for%28var%20tab%20of%20win.tabs.childNodes%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20tab.linkedCbeditor.value%3B%0A%09%09%09%09%09this.node.setAttribute%28tab.label%2C%20val%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09this.save%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09deleteAttribute%3A%20function%28win%29%20%7B%0A%09%09%09%09var%20tab%20%3D%20win.tabs.selectedItem%3B%0A%09%09%09%09var%20attr%20%3D%20tab.label%3B%0A%09%09%09%09if%20%28%21win.confirm%28%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22%20+%20attr%20+%20%22%20%3F%22%29%29%20return%3B%0A%09%09%09%09this.node.removeAttribute%28tab.label%29%3B%0A%09%09%09%09tab.linkedCbeditor.remove%28%29%3B%20tab.remove%28%29%3B%0A%09%09%09%09win.tabs.selectedIndex%20%3D%200%3B%0A%09%09%09%7D%2C%0A%09%09%09save%3A%20function%28node%20%3D%20this.node%29%20%7B%0A%09%09%09%09var%20box%20%3D%20node.ownerDocument.getElementById%28this.boxId%29%3B%0A%09%09%09%09if%20%28%21box%29%20return%3B%0A%09%09%09%09box.removeChild%28box.linkedPopup%29%3B%0A%09%09%09%09var%20xul%20%3D%20box.innerHTML.replace%28/%5Ct/g%2C%20%22%26%23x9%3B%22%29.replace%28/%5Cn/g%2C%20%22%26%23xA%3B%22%29.replace%28/%5Cr/g%2C%20%22%26%23xD%3B%22%29%3B%0A%09%09%09%09var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%3B%0A%09%09%09%09var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%09%09%09%09param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%09%09%09%09param.help%20%3D%20xul%3B%0A%09%09%09%09custombuttons.cbService.installButton%28param%29%3B%09%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------------------%20MISC%20------------------------------------------%0A%0A%09%09%09insertElement%3A%20function%28element%2C%20parent%2C%20attributes%2C%20before%20%3D%20null%29%20%7B%0A%09%09%09%09var%20notExist%20%3D%20typeof%20element%20%21%3D%20%22object%22%3B%0A%09%09%09%09if%20%28notExist%29%20element%20%3D%20document.createElement%28element%29%3B%0A%09%09%09%09if%20%28notExist%20%26%26%20attributes%29%20%7B%0A%09%09%09%09%09for%28var%20attribute%20in%20attributes%29%20%7B%0A%09%09%09%09%09%09attribute%20%3D%3D%20%22data%22%20%7C%7C%20element.setAttribute%28attribute%2C%20attributes%5Battribute%5D%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09parent%20%26%26%20parent.insertBefore%28element%2C%20before%29%3B%0A%09%09%09%09return%20element%3B%0A%09%09%09%7D%2C%0A%09%09%09top%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20win%20%3D%20node.ownerGlobal%3B%0A%09%09%09%09if%20%28%21%28win%20instanceof%20ChromeWindow%29%29%0A%09%09%09%09%09win%20%3D%20Services.wm.getMostRecentWindow%28%22navigator%3Abrowser%22%29%3B%0A%09%09%09%09return%20win%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09Application.storage.set%28obsId%2C%20obs%29%3B%0A%09%09obs.init%28%29%3B%0A%09%7D%0A%09function%20destructor%28reason%29%20%7B%0A%09%09if%20%28%21%22update%20delete%22.contains%28reason%29%29%20return%3B%0A%09%09var%20obs%20%3D%20Application.storage.get%28obsId%2C%20null%29%3B%0A%09%09if%20%28obs%29%20%7B%0A%09%09%09obs.destroy%28%29%3B%0A%09%09%09Application.storage.set%28obsId%2C%20null%29%3B%0A%09%09%7D%0A%09%7D%0A%09addDestructor%28reason%20%3D%3E%20%7B%0A%09%09destructor%28reason%29%3B%0A%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09custombuttons.palette.querySelector%28%27toolbarbutton%5Bid%3D%22%27%20+%20_id%20+%20%27%22%5D%27%29%20%26%26%20destructor%28%22delete%22%29%3B%0A%09%09%7D%2C%20500%29%3B%0A%09%7D%29%3B%0A%7D%29%28%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%3Ctoolbarbutton%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka///jnP//45z//+Oc//8pGv//tG7//4ZA//90Lv//dTD//yka////x////8f////H////x////8f//yka//8pGv//45z//+Oc//91MP//Vxr//5RM///Bev//wXr//8F6//+8df//ejP//5JK////x////8f////H//8pGv//KRr//+Oc///jnP//KRr////////////////////////////////////H//+0bv//nVf////H////x///KRr//yka///jnP//45z//0Ey/////////8b//+Oc//+1cf//ayb//+Oc/////////+X//1Ma////x////8f//yka//8pGv//45z//+Oc//9oWf//zKr//8W2//9eGv//h0L//zwa//+HQv/////////o//9mH//MiD//x4Q8//8pGv//KRr//+Oc///jnP//0Ir//2hZ//96M///NBr//14a//+bVP///+D/////////////Uxr//+Oc///jnP//KRr//yka///jnP//45z//86I//88Gv//vHX////g////////////////////4P//6KL//yka///jnP//45z//yka//8pGv//45z//+Oc//9EGv//1o/////////////////////g///TjP//h0L//yka///Vj///45z//+Oc//8pGv//KRr//yka//8pGv//PBr////l////////0Ir//1Ma//8tGv//KRr//0Aa///jnP//45z//+Oc///jnP//KRr//yka////x////8f//zwa/////f///////5pS//9PGv//h0L//yka//88Gv//Wxr//8B7///jnP//45z//yka//8pGv///8f////H//8pGv//3pb/////////////3pb//9CK///qo////////7Nr//9kHP//45z//+Oc//8pGv//KRr////H////x///ayb//0ca///elv///+D/////////////////4eHh//+aUv//ZBz//+Oc///jnP//KRr//yka////x////8f////H//9kHP//KRr//0ca//9mH///ZBz//08a//8wGv//KRr/8MyG///jnP//45z//yka//8pGv///8f////H////x////8f////H///pov//2ZD//9CK//8pGv//45z//+Oc///jnP//45z//+Oc//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%20tooltiptext%3D%22Button%26%23xA%3BTooltip%26%23xA%3BText%22%3E%3Cmenupopup%20position%3D%22after_start%22%3E%3Cmenuitem%20label%3D%22%21Close%20menu%22%20value%3D%22%26%23xA%3B***%26%23xA%3B%26%23xA%3Bclosemenu%3D%26quot%3Bnone%26quot%3B%26%23xA%3B%26%23xA%3B***%26%23xA%3B%22%20closemenu%3D%22none%22/%3E%3Cmenuseparator/%3E%3Cmenuitem%20label%3D%22Styled%20menuitem%22%20value%3D%22bla%26%23xA%3B%26%23x9%3Bbla%26%23xA%3Bbla%22%20style%3D%22font-style%3A%20italic%3B%26%23xA%3B%26%23xA%3Bcolor%3A%20blue%3B%26%23xA%3Bfont-weight%3A%20bold%3B%26%23xA%3B%26%23xA%3B-moz-appearance%3A%20none%3B%26%23xA%3Bbackground-color%3A%20lightyellow%3B%26%23xA%3Bborder%3A%202px%20solid%20yellow%3B%22/%3E%3Cmenu%20label%3D%22Menu%20iconic%22%20class%3D%22menu-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3E%3Cmenupopup%3E%3Cmenuitem%20label%3D%22menuitem%22%20value%3D%22%22/%3E%3C/menupopup%3E%3C/menu%3E%3Cmenuitem%20label%3D%22Menuitem%20iconic%22%20value%3D%22123%26%23xA%3B%26%23xA%3B4567%26%23xA%3B890...%26%23xA%3B%22%20class%3D%22menuitem-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAGDBrppU5gMj/OH7H/zh+x/84fsf/OX7H/zl+x/85fsf/OX7H/zl+x/85fsf/OX7H/zl+x/84fsf/OYDI/zBrppU5gMj/Xdb//1TO//9Tzf//U83//1XO//9Vzv//VM3//1TN//9Vzv//Vc7//1TN//9Uzf//VM7//13W//85gMj/OH7H/1vP//9Dwv//TsX//z/A//9Dwf//RsL//0LB//9AwP//Q8H//0bC//9Cwf//QMD//0PC//9bz///OH7H/zZ9x/9XzP//y+7/////////////zO7//zW8/////////////8vt//81vP/////////////L7v//V8z//zZ9x/81fcf/V8v///////8ntv//K7f///////8zuv//L7j//yO0////////Lrj//y64//8jtP///////1fL//81fcf/NH3H/1nM////////KLX//zO5//8xuP//MLj//ye0///E6////////yi1//8mtP//xOr///////9czf//NX3H/zR9x/9dzP///////yGx//8stf//KbT//yOy////////wer//x+x//8hsf///////8Hq//8esf//Z8///zZ+x/80fcf/Y83///////8Sq///F63///////8WrP///////xCq//8brv//G67///////8Pqf//Ga7//23R//82fsf/NX3H/27R//+86f/////////////C6v//FKz//8Dp/////////////xWs///A6f////////////9w0f//NX3H/zZ+x/971f//Dqr//w2p//8Oqf//Eqr//xas//8Sqv//D6n//xGq//8Wq///Eqr//w6p//8Nqf//etT//zZ+x/83gMj/hNz//4LY//+C1///g9f//4TY//+E2P//hNj//4PX//+D2P//hNj//4TY//+C1///gtj//4Tc//83gMj/OYPKjTeAyP82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/83gMj/OYPKjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEH//6xB//+sQQ%3D%3D%22/%3E%3Cmenuseparator/%3E%3Cmenuitem%20label%3D%22JS%22%20oncommand%3D%27alert%28%22JS%22%29%3B%27%20tooltiptext%3D%22%u041F%u0440%u043E%u0441%u0442%u043E%20demo%22/%3E%3Cmenuitem%20label%3D%22%u0414%u043B%u044F%20%u0441%u043B%u0435%u0434%u0443%u044E%u0449%u0435%u0433%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%22%20value%3D%22@namespace%20url%28http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%29%3B%26%23xA%3B%26%23xA%3B%23blablabla%20%7B%26%23xA%3B%26%23x9%3Bcolor%3A%20black%3B%26%23xA%3B%26%23x9%3Bdisplay%3A%20-moz-box%20%21important%3B%26%23xA%3B%26%23x9%3Bwidth%3A100px%3B%26%23xA%3B%26%23x9%3Bheight%3A30px%21important%3B%26%23xA%3B%7D%22%20tooltiptext%3D%22@namespace%20url%28http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%29%3B%26%23xA%3B%26%23xA%3B%23blablabla%20%7B%26%23xA%3B%26%23x9%3Bcolor%3A%20black%3B%26%23xA%3B%26%23x9%3Bdisplay%3A%20-moz-box%20%21important%3B%26%23xA%3B%26%23x9%3Bwidth%3A100px%3B%26%23xA%3B%26%23x9%3Bheight%3A30px%21important%3B%26%23xA%3B%7D%22/%3E%3Cmenuitem%20label%3D%22JS%20%20%20%20%20%21important%3B%22%20oncommand%3D%22event.stopPropagation%28%29%3B%26%23xA%3Bthis.text%20%3D%20this.result%3B%26%23xA%3B%22%20onmouseenter%3D%27this.text%20%3D%20codeElementWrapper.value%3B%26%23xA%3Bthis.result%20%3D%20this.text%26%23xA%3B%26%23x9%3B.replace%28/%20%3F%21important%3B/g%2C%20%22%3B%22%29%26%23xA%3B%26%23x9%3B.replace%28/%3B/g%2C%20%22%20%21important%3B%22%29%26%23xA%3B%26%23x9%3B.replace%28/%28@namespace%5B%5E%3B%5D+%29%20%21important%3B/%2C%20%22%241%3B%22%29%3B%26%23xA%3B%26%23xA%3BsourceEditor.setText%28this.result%29%3B%27%20onmouseleave%3D%22sourceEditor.setText%28this.text%29%3B%26%23xA%3Bdelete%20this.text%3B%26%23xA%3Bdelete%20this.result%3B%22%20tooltiptext%3D%22%u041D%u0435%20%u0434%u0435%u043B%u0430%u0439%20%u0442%u0430%u043A%22%20class%3D%22menuitem-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMtebZPU+HWZ1+5tk9PJZ47Rk2uQ0r9xltTkd5vY83me2v96ndr5bZLT+WaN0PBiic6eXITLNgAAAAAAAAAAbZPUzqXH8/+rzPj/j7Dj/5O06P+hxPH/rc73/7HS+/+bve7/cpfV/42x5P+myPD/oMLt/26U1OoAAAAAAAAAAIKo4PO62/v/utr7/7DR+f+01fz/u9z8/77e/f+11vv/kLPn/26U1P9xldX/dZnW/3SY1f9njtDhXITLBwAAAACNseT/vt79/77e/f+93f3/vt79/77e/f+93f3/nb/v/3KX1f+Ut+f/udr6/77e/f+83fz/m73r/1yEy2sAAAAAjrHk/77e/f++3v3/vt79/77e/f++3v3/uNn8/5q87f9zl9f/cJTU/3WZ1v91mdb/dZnW/3CU1P9dhcxpAAAAAIqu4vq83Pz/vt79/77e/f++3v3/vt79/7TV/P+Dp9//dJnX/7HS9v++3v3/vt79/77e/f+y0/f/dZvY6gAAAAB4ndnbsdH2/6fI8f+pyvX/t9n6/77e/f+21/v/jrHl/2mQ0v9vlNT/dZnW/3WZ1v91mdb/c5fV/2SLzr0AAAAAXITLbHab2fd1mtridJnXq5Cz6P+21vn/vNz8/6/R+v+Dp9//ia3j/7jY+f++3v3/vt79/7XV+P96oNvqAAAAAAAAAAAAAAAAAAAAAAAAAABehsx4lLjr/7ra+v+42Pz/iq3j/2mP0f+DqeD/jrHk/46x5P+DqeD+XITLpQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiP0qSnyPH/vNz9/5a56v9ki9ApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMsVia3j7bbW+v+Xuez/XITLfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaO0IqqzPP/r9D3/3SZ2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMtboMLt/7vb+/+Bp+H2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXITLNpi76v+72/v/g6nh9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyEyxKGq+H/rM30/3Sa19IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXITLim+V1fVchMtfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOsQQADrEEAAaxBAAGsQQABrEEAAaxBAAGsQQABrEHwAaxB+D+sQfg/rEH8P6xB/D+sQfw/rEH8P6xB/j+sQQ%3D%3D%22/%3E%3C/menupopup%3E%3C/toolbarbutton%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
turbot > 16-03-2015 01:57:58 |
Dumby Может, стоит опубликовать в готовых? Полезная кнопка, на мой взгляд. |
difabor > 16-03-2015 02:04:23 |
turbot пишет
Присоединяюсь. |
turbot > 16-03-2015 02:19:49 |
difabor пишет
Вставляет заданные пользователем шаблоны в редакторе Stylish. Полезная штука для лентяев вроде меня. Которым и автодополнения редактора мало. |
HaGEN > 16-03-2015 14:43:11 |
Можно ли в CB использовать переменные процесса FF такие как %MOZILLA_PLUGINS%, %MOZ_PROFILE_PATH% и др. Для чего - для портабельной сборки со своим софтом(хочу сделать себе нечто наподобие ОпераAC). Например вот Выделить код Код:[Environment] ;(multiple istances) ;MOZ_NO_REMOTE=1 ; Путь к папке с прогами PM_SOFT=$Home$\$AppName$\Profiles\$Profile$\Soft ;(profile path) MOZ_PROFILE_PATH=$Home$\$AppName$\Profiles\$Profile$ PM_SOFT - это моя добавленная и она есть в "окружении" процесса. И хотелось бы запускать программы из кнопок используя в пути к файлу переменную %PM_SOFT% шобы с флэхи запускать везде. типа так: startProcess("%PM_SOFT%\\FVD-Suite\\FVD Downloader\\FVD Downloader.exe",[""]); ... и дальше как в кнопке-примере ![]() Решено ![]() |
diliana > 17-03-2015 03:19:38 |
Всем привет. |
diliana > 17-03-2015 19:44:04 |
okkamas_knife большое спасибо! |
turbot > 18-03-2015 02:15:25 |
bunda1 |
xrun1 > 18-03-2015 02:41:24 |
bunda1 |
turbot > 18-03-2015 02:47:17 |
Ну, я о б этом как раз. Можете сами у себя заменить, как выше сказано, чтоб не пропадала. |
xrun1 > 18-03-2015 03:11:44 |
turbot turbot пишет
Работает, спасибо. |
villa7 > 19-03-2015 15:41:43 |
Может кто нибудь починить Disable style |
Northtech > 19-03-2015 17:41:33 |
xrun1 пишет
Есть еще вариант, вот для примера иконка: и с Выделить код Код:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale") |
Dumby > 19-03-2015 20:36:27 |
villa7 пишет
А так пробовал ? скрытый текст Выделить код Код:gPageStyleMenu._getStyleSheetInfo().authorStyleDisabled ? gPageStyleMenu.switchStyleSheet("") : gPageStyleMenu.disableStyle(); |
bunda1 > 19-03-2015 23:09:22 |
turbot пишет
Спасибо за ценные замечания, исправил |
villa7 > 20-03-2015 08:54:31 |
Dumby |
Mishania > 21-03-2015 19:21:55 |
Пользуюсь кнопкой для коротких ссылок скрытый текст Выделить код Код:(function(location){ var icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzQxNEMxNjhCQkFFMzExQjBBMUQ4Qzc3OUM1QjM5QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ1MTc3NUJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ1MTc3NEJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pwkIsgAAA5BJREFUeNq0l11IU2EYx9+zneFyynIFFUXDwmBkDNHYVaJhXVTYh4VUtIu+KIToQ/u4yoiWFBkkfVwUBHURZhRh3hSVN90oJESDunARBactE1KHm9P1f8ZzYm4785zDfODHznbec97nfd7n/T/PpGQyKQppvb29orW1VZSUlNDXleAs2AGWg5/gBbgGvtMAi5g/qwVvQQtPLvizhX+vnRcHZFmmjwpe6WqNYfT7c7BGzrwzPj4uIpGIkCTJlAOKogiLxXIRl2VzDHWB9iwH+vv7RVtbm3A4HGaDsLC4uHizzrGbshyYmZkRiURCTE9Pm5odkXMROocvlnO8gEKYwqQ5aR3AqmNsvJBJuBCcp5MIbDqf+SIXYGI7OAjOgFUGn+3KuQU6jUK8F5wDlSYcfwQeyJlKSEmow7aDC8Cncf8luA42gBNgqfruaDSq4PIOCNBPUlNTU/qDXujAlnA4XIEk/IvvH3hPo3x/I0/coDHxO3AVvE7PdLAep2qJ0+n8VVdXN4Ao//4f8crKVPRsrM8tVqvVxmqm2idwA2wFezQmHgQd4JlWyGKxmPB4PKK7u3u2chYVFdHnLXBM49l14KHGvSCH+jFIzLVvtAW05el5RkttzjO5ln0DN8H9tO0xVzvAaSNSD25zEv0pSPECVQbGnwJPClk9jSrhNhNik9p7SsKpqamcDnw08K79PP4uWKvnASpqLpdL1NTUCDpxmUInVVdXN5sM6yR4SnIKBjTGuLFyu8/nCzc2No6qSktAD1JtGzkgeEX5TkKMK9yCXItk5etiISI7Ao4CDyazI/TheDxO4nQFpf4rtEb09fWJ8vJyIdPesFxOagjRZ3aOsv4k2AccGTVhJ/OKnd2l3qRzj/ctA34SM+TDbszxXi33RqVY7feOA3rhIhMJqcCBqp6eHsXtdgsps/hQW00tGbfV+WwFOAwO8bXuEwEHLsGBdnLAoiaFioFO6Ac1lawj1AuEDASiIV2IZpmJPypU2TrBSJ6akdUL0vbTdFkOUEM6NjZmvC2y28M2m03vAsjpZM4I0NHw+/30QkMODA0NDYZCoVFke5mO4W80t8Dr9aYwaoFAIBIMBjtLS0sv6yho98zWAk0jnUcSd3BvoGUj3EcqmhEwa1A6MTExkcApOkB/sFgNPdw1R7hNC+AYppRQzRWpUH/PkQNieHhYUCKm1wJ2IAxG1VNGx72+vj6lNf8EGADGSCd20PLWBgAAAABJRU5ErkJggg=='; if (location.protocol.startsWith('http')) { var xhr = new XMLHttpRequest(); var request = { longUrl : location.toString(), key : '{YOUR_API_KEY}' } xhr.onload = function(){ var link = JSON.parse(xhr.response).id; const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(link) try { Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService) .showAlertNotification(icon, link, 'Скопирован в буфер обмена', false, "", null, ""); } catch (e) {} } xhr.open('POST', 'https://www.googleapis.com/urlshortener/v1/url', true); xhr.setRequestHeader("Content-type", "application/json"); xhr.send(JSON.stringify(request)); } })(content.window.location); На 36.0.3 перестала работать. Поправьте пожалуйста, или подскажите другую. |
bunda1 > 21-03-2015 19:55:59 |
Mishania пишет
На FF24 тоже не работает, наверно сервис коротких ссылок изменился или глючит. |
Lex1 > 21-03-2015 20:28:44 |
Mishania "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." скрытый текст Выделить код Код:(function(location){ var icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzQxNEMxNjhCQkFFMzExQjBBMUQ4Qzc3OUM1QjM5QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ1MTc3NUJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ1MTc3NEJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pwkIsgAAA5BJREFUeNq0l11IU2EYx9+zneFyynIFFUXDwmBkDNHYVaJhXVTYh4VUtIu+KIToQ/u4yoiWFBkkfVwUBHURZhRh3hSVN90oJESDunARBactE1KHm9P1f8ZzYm4785zDfODHznbec97nfd7n/T/PpGQyKQppvb29orW1VZSUlNDXleAs2AGWg5/gBbgGvtMAi5g/qwVvQQtPLvizhX+vnRcHZFmmjwpe6WqNYfT7c7BGzrwzPj4uIpGIkCTJlAOKogiLxXIRl2VzDHWB9iwH+vv7RVtbm3A4HGaDsLC4uHizzrGbshyYmZkRiURCTE9Pm5odkXMROocvlnO8gEKYwqQ5aR3AqmNsvJBJuBCcp5MIbDqf+SIXYGI7OAjOgFUGn+3KuQU6jUK8F5wDlSYcfwQeyJlKSEmow7aDC8Cncf8luA42gBNgqfruaDSq4PIOCNBPUlNTU/qDXujAlnA4XIEk/IvvH3hPo3x/I0/coDHxO3AVvE7PdLAep2qJ0+n8VVdXN4Ao//4f8crKVPRsrM8tVqvVxmqm2idwA2wFezQmHgQd4JlWyGKxmPB4PKK7u3u2chYVFdHnLXBM49l14KHGvSCH+jFIzLVvtAW05el5RkttzjO5ln0DN8H9tO0xVzvAaSNSD25zEv0pSPECVQbGnwJPClk9jSrhNhNik9p7SsKpqamcDnw08K79PP4uWKvnASpqLpdL1NTUCDpxmUInVVdXN5sM6yR4SnIKBjTGuLFyu8/nCzc2No6qSktAD1JtGzkgeEX5TkKMK9yCXItk5etiISI7Ao4CDyazI/TheDxO4nQFpf4rtEb09fWJ8vJyIdPesFxOagjRZ3aOsv4k2AccGTVhJ/OKnd2l3qRzj/ctA34SM+TDbszxXi33RqVY7feOA3rhIhMJqcCBqp6eHsXtdgsps/hQW00tGbfV+WwFOAwO8bXuEwEHLsGBdnLAoiaFioFO6Ac1lawj1AuEDASiIV2IZpmJPypU2TrBSJ6akdUL0vbTdFkOUEM6NjZmvC2y28M2m03vAsjpZM4I0NHw+/30QkMODA0NDYZCoVFke5mO4W80t8Dr9aYwaoFAIBIMBjtLS0sv6yho98zWAk0jnUcSd3BvoGUj3EcqmhEwa1A6MTExkcApOkB/sFgNPdw1R7hNC+AYppRQzRWpUH/PkQNieHhYUCKm1wJ2IAxG1VNGx72+vj6lNf8EGADGSCd20PLWBgAAAABJRU5ErkJggg=='; if (location.protocol.startsWith('http')) { var xhr = new XMLHttpRequest(); var request = { longUrl : location.toString() } xhr.onload = function(){ var link = JSON.parse(xhr.response).id; const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(link) try { Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService) .showAlertNotification(icon, link, 'Скопирован в буфер обмена', false, "", null, ""); } catch (e) {} } xhr.open('POST', 'https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyC7uWVak6m9AFIMORinK4gfNZZ5IrNPgKA', true); xhr.setRequestHeader("Content-type", "application/json"); xhr.send(JSON.stringify(request)); } })(content.window.location); |
Mishania > 22-03-2015 19:50:59 |
Lex1 |
Quartz1t > 23-03-2015 14:18:41 |
Кнопка Linkification (Делает текстовые ссылки кликабельными) но для этого кнопку нужно каждый раз кликать) |
VORON > 23-03-2015 14:34:56 |
Quartz1t |
Quartz1t > 23-03-2015 15:14:07 |
VORON, спасибо, но всё же хотелось бы автоматизировать кнопку. |
xrun1 > 23-03-2015 16:44:24 |
Quartz1t P.S. "Linkification" - название кнопки, т.е. то, что при редактировании кнопки "Имя (N):" |
Coroner > 24-03-2015 21:23:41 |
Доброго времени суток. Имеется кнопка, собранная по видимому из кусков кода для открытия закладок, но тем не менее работающая. Выделить код Код:/*Initialization Code*/ this.tooltipText = "L = Открыть в боковой панели\n" + "M = Открыть в окне\n" + "R = Открыть во вкладке\n\n" + "Shift-R = Меню кнопки"; this. onclick = function (event) { if (event. button == 0) PlacesCommandHook.showPlacesOrganizer('AllBookmarks') if (event. button == 1) toggleSidebar('viewBookmarksSidebar'); if (event. button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { getBrowser (). selectedTab = getBrowser (). addTab ("chrome://browser/content/places/places.xul") } if(event.button == 2 && !event.shiftKey && !event.altKey && !event.metaKey) { event.preventDefault(); event.stopPropagation(); } }; Можно-ли как-нибудь на ЛКМ повесить функционал "родной" кнопки, не библиотеки (редактора закладок) как сделано, а целиком : меню с закладками и пунктами "показать закладки", "редактировать закладки" ну и ниже сами закладки. То есть : Решения на форуме не нашёл (пропустил ?) |
bunda1 > 24-03-2015 23:39:49 |
Мне кажется тут легче повесить на "родную" кнопку дополнительные клики, пример: Выделить код Код:addEventListener("click", function(e) { if ( e.button == 1 ) { alert("1"); } if ( e.button == 2 ) { e.preventDefault(); e.stopPropagation(); alert("2"); } }, false, document.getElementById("bookmarks-menu-button") ); |
Coroner > 24-03-2015 23:58:00 |
Я когда писал, под "родной" имел в виду собственную кнопку |
bunda1 > 25-03-2015 01:15:53 |
Выделить код Код:if ( !this.lastChild ) { var mc = document.getElementById("bookmarksMenuPopup"); var mcc = mc.cloneNode( true ); this.appendChild( mcc ); } var bo = document.getBoxObjectFor( this ); this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" ); |
Coroner > 25-03-2015 02:24:13 |
bunda1, спасибо огромное. Всё прекрасно работает и что называется "душа спокойна". |
bunda1 > 25-03-2015 02:33:49 |
okkamas_knife пишет
Да, проблема |
Infocatcher > 25-03-2015 12:59:51 |
okkamas_knife пишет
Вот так можно: Выделить код Код:var data = self.Help; var suc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); suc.charset = "UTF-16"; data = suc.ConvertFromUnicode(data); var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.append("runVBScript.vbs"); custombuttonsUtils.writeFile(file.path, data); file.launch(); |
bunda1 > 25-03-2015 19:22:59 |
Infocatcher Кстати, так тоже работает: Выделить код Код:var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.append("runVBScript.vbs"); custombuttonsUtils.writeFile( file.path, convertFromUnicode("UTF-16", self.Help) ); file.launch(); 25-03-2015 19:33:52 okkamas_knife пишет
Прикольно, смотрю ты что то соображаешь в VBScript, а не подскажешь код для кнопки который после закрытия Firefox выключает программу или процесс через: Выделить код Код:strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'Notepad.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next Вот тут есть что то похожее 26-05-2006 22:53:49 но код также запускает Firefox что не нужно. |
bunda1 > 25-03-2015 20:34:03 |
okkamas_knife |
HaGEN > 26-03-2015 00:34:57 |
Я не знаю за VBSscript, просто может каг идея... bunda1 пишет
Можно сделать процесс Firefox доченним и запускать его из своего скрипта, который и будет ждать закрытия бравзера и затем выполнять остальной код по уничтожению. Переписать тоже самое на VBS думаю можно |
VORON > 01-04-2015 21:32:57 |
Скажите,есть ли кнопка-остановить/перезагрузить страницу?После 28 го лиса,очень не хватает. |
Coroner > 01-04-2015 22:28:45 |
Что-то вроде этого не подойдёт ? |
bunda1 > 01-04-2015 23:26:10 |
VORON пишет
|
VORON > 01-04-2015 23:37:20 |
bunda1 |
Coroner > 06-04-2015 13:20:45 |
Ослеп и ничего не вижу. Для 39 (Developer Edition ) не ? |
VORON > 07-04-2015 11:34:07 |
bunda1 |
bunda1 > 07-04-2015 19:44:25 |
VORON пишет
Можно конечно, замени иконку кнопки или Css стилем изменить или положить в кнопку что то типа: |
sonyas75 > 08-04-2015 08:58:36 |
Есть кнопочка Proxy В ней по ЛКМ меняется состояние network.proxy.type с 1 на 0 и обратно. Я сменил на 2 и 5 Выделить код Код:if ( e.button == 0 ) { cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 2 ) ? 5 : 2 ); } но так как я совсем нифига не понимаю ни в коде, ни в кнопках, то у меня не меняется состояние иконки, с красного на зеленый о! понял Выделить код Код:// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................ var s = "network.proxy.type"; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); icon.src = ( cbu.getPrefs(s) == 2 ) надо менять cbu.getPrefs(s) == с 2 на 5, ну или наоборот. |
HaGEN > 19-04-2015 15:49:18 |
Что не так снопкой, поглядите... скрытый текст Выделить код Код:var urllink = getBrowser().currentURI.spec; gClipboard.write(urllink); var param="/StartDomain"; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe"); startProcess(file.path,param,[urllink]); function startProcess(path,param,args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("URL не найден", path); }; |
bunda1 > 19-04-2015 19:29:00 |
HaGEN пишет
Выделить код Код:var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, ["/StartDomain",content.window.location], 1); |
Dumby > 19-04-2015 21:13:44 |
bunda1 пишет
Почему не |
HaGEN > 19-04-2015 21:22:30 |
Благодарю bunda1! такой "упрощенный" вариант даже лучше. Выделить код Код:var url = getBrowser().currentURI.spec; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, ["/StartDomain", url], 2); 19-04-2015 21:24:01 19-04-2015 21:47:42 Выделить код Код:var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, ["/StartDomain", content.document.domain], 2); |
VORON > 28-04-2015 10:19:32 |
bunda1 |
bunda1 > 28-04-2015 18:51:55 |
VORON Выделить код Код: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%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20vto%20%3D%20%7B%0A%09distanceShow%3A%202%2C%0A%09distanceHide%3A%2064%2C%0A%09showDelay%3A%20320%2C%0A%09color%3A%20%22%23green%22%2C%0A%09fringe%3A%20%22black%22%2C%0A%09padding%3A%203%2C%0A%09name%3A%20%22VT%22%2C%0A%0A%09btn%3A%20this%2C%0A%09tcm%3A%20document.getElementById%28%22toolbar-context-menu%22%29%2C%0A%09ctm%3A%20document.getElementById%28%22customization-toolbar-menu%22%29%2C%0A%09deck%3A%20document.getElementById%28%22content-deck%22%29%2C%0A%09id%3A%20%22cb-vt%22%2C%0A%0A%09get%20cust%28%29%20gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%2C%0A%09get%20rdf%28%29%20%7B%0A%09%09delete%20this.rdf%3B%0A%09%09var%20rdf%20%3D%20Cc%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.getService%28Ci.nsIRDFService%29%3B%0A%09%09return%20this.rdf%20%3D%20%5B%0A%09%09%09rdf%2C%0A%09%09%09rdf.GetDataSource%28%22rdf%3Alocal-store%22%29%2C%0A%09%09%09rdf.GetResource%28location%20+%20%22%23%22%20+%20this.id%29%2C%0A%09%09%09null%2C%20null%0A%09%09%5D%3B%0A%09%7D%2C%0A%09init%3A%20function%28%29%20%7B%0A%09%09if%20%28this.cust%20%7C%7C%20this.btn._destructors.length%29%20return%3B%0A%0A%09%09var%20vt%20%3D%20this.initVT%28%29%3B%0A%09%09var%20vto%20%3D%20this%3B%0A%0A%09%09this.btn.onclick%20%3D%20function%28e%29%20%7B%0A%09%09%09e.button%20%7C%7C%20vto.toggleVT%28%29%3B%0A%09%09%7D%0A%09%09window.addEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%0A%09%09if%20%28vt.hasOwnProperty%28%22on%22%29%29%20%7B%0A%09%09%09vto.toggleVT%28vt.on%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09var%20%5Brdf%2C%20ds%2C%20source%5D%20%3D%20this.rdf%3B%0A%09%09%09var%20property%20%3D%20rdf.GetResource%28%22collapsed%22%29%3B%0A%09%09%09var%20target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09var%20collapsed%20%3D%20target%20%26%26%20target.QueryInterface%28Ci.nsIRDFLiteral%29.Value%20%3D%3D%20%22true%22%3B%0A%09%09%09vto.toggleVT%28%21collapsed%29%3B%0A%09%09%7D%0A%09%09this.resize%28%29%3B%0A%09%09vto.btn._destructors.push%28%7Bcontext%3A%20vto%2C%20destructor%3A%20vto.destroy%7D%29%3B%0A%09%7D%2C%0A%09destroy%3A%20function%28reason%29%20%7B%0A%09%09window.removeEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%09%09this.setCollapser%28false%29%3B%0A%0A%09%09if%20%28reason%20%3D%3D%20%22destructor%22%20%26%26%20this.cust%29%20%7B%0A%09%09%09var%20vto%20%3D%20this%3B%0A%09%09%09vto.resize%28%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09CustomizableUI.addListener%28vto%29%3B%0A%0A%09%09%09this.ctm.addEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09this.ctm.addEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09window.addEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22aftercustomization%22%2C%20function%20ac%28%29%20%7B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20ac%2C%20false%29%3B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09CustomizableUI.removeListener%28vto%29%3B%0A%0A%09%09%09%09vto.ctm.removeEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09vto.ctm.removeEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09window.removeEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09%09document.getElementById%28vto.btn.id%29%20%7C%7C%20vto.destroyVT%28%29%3B%0A%0A%09%09%09%7D%2C%20false%29%3B%0A%09%09%7D%0A%09%09if%20%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09CustomizableUI.removeWidgetFromArea%28this.btn.id%29%3B%0A%09%09%09this.destroyVT%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09handleEvent%3A%20function%28e%29%20this%5Be.type%5D%28e%29%2C%0A%0A%09command%3A%20function%28e%29%20%7B%0A%09%09if%20%28e.target.id%20%21%3D%20%22toggle_%22%20+%20this.id%29%20return%3B%0A%09%09e.preventDefault%28%29%3B%0A%09%09this.toggleVT%28%29%3B%0A%09%7D%2C%0A%09popupshowing%3A%20function%28e%29%20%7B%0A%09%09var%20menuitem%20%3D%20e.target.querySelector%28%22%23toggle_%22%20+%20this.id%29%3B%0A%09%09menuitem%20%26%26%20menuitem.setAttribute%28%22checked%22%2C%20this.vt.on%29%3B%0A%09%09if%20%28this.cust%20%7C%7C%20%21this.vt.contains%28e.target.triggerNode%29%29%20return%3B%0A%09%09for%28var%20selector%20of%20%5B%22.customize-context-moveToPanel%22%2C%20%22.customize-context-removeFromToolbar%22%5D%29%20%7B%0A%09%09%09menuitem%20%3D%20e.target.querySelector%28selector%29%3B%0A%09%09%09menuitem%20%26%26%20menuitem.removeAttribute%28%22disabled%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09mousemove%3A%20function%20collapser%28e%29%20%7B%0A%09%09var%20distance%20%3D%20collapser.distance%20%3D%20e.screenX%20-%20document.documentElement.boxObject.screenX%3B%0A%09%09if%20%28collapser.waiting%29%20return%3B%0A%09%09if%20%28distance%20%3C%3D%20this.distanceShow%20%26%26%20this.vt.collapsed%29%20%7B%0A%09%09%09if%20%28this.showDelay%20%3C%201%29%20%7B%0A%09%09%09%09this.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09collapser.waiting%20%3D%20true%3B%0A%09%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09%09if%20%28collapser.distance%20%3E%3D%20vto.distanceShow%29%20%7B%0A%09%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09vto.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%7D%2C%20this.showDelay%2C%20this%29%3B%0A%09%09%7D%0A%09%09if%20%28distance%20%3E%3D%20this.distanceHide%20%26%26%20%21this.vt.collapsed%29%0A%09%09%09this.vt.collapsed%20%3D%20true%3B%0A%09%7D%2C%0A%09setCollapser%3A%20function%28set%29%20%7B%0A%09%09set%0A%09%09%3F%20this.cust%20%7C%7C%20window.addEventListener%28%22mousemove%22%2C%20this%2C%20false%29%0A%09%09%3A%20window.removeEventListener%28%22mousemove%22%2C%20this%2C%20false%29%3B%0A%09%7D%2C%0A%09callCollapser%3A%20function%28e%29%20%7B%0A%09%09this.mousemove%28%7BscreenX%3A%20document.documentElement.boxObject.screenX%20+%20MousePosTracker._x%7D%29%3B%0A%09%7D%2C%0A%09customizationready%3A%20function%28%29%20%7B%0A%09%09window.removeEventListener%28%22customizationready%22%2C%20this%2C%20false%29%3B%0A%09%09this.vt.on%20%26%26%20this.insertBox%28true%29%3B%0A%09%7D%2C%0A%09resize%3A%20function%28e%29%20%7B%0A%09%09this.vt.style.maxHeight%20%3D%20this.deck.boxObject.height%20+%201%20+%20%22px%22%3B%0A%09%7D%2C%0A%09popupshown%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%09popuphidden%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%0A%09handlePopup%3A%20function%28e%29%20%7B%0A%09%09if%20%28%0A%09%09%09this.vt.collapsed%20%7C%7C%20this.vt.on%0A%09%09%09%7C%7C%20%28e.target.localName%20%21%3D%20%22menupopup%22%20%26%26%20e.target.localName%20%21%3D%20%22panel%22%29%0A%09%09%29%20return%3B%0A%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09var%20hasPopup%20%3D%20Array.concat%28%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22menupopup%22%29%29%2C%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22panel%22%29%29%0A%09%09%09%29.some%28function%28popup%29%0A%09%09%09%09%22state%22%20in%20popup%20%26%26%20popup.state%20%3D%3D%20%22open%22%20%26%26%20%28%0A%09%09%09%09%09vto.vt.contains%28popup%29%0A%09%09%09%09%09%7C%7C%20%28%22triggerNode%22%20in%20popup%20%26%26%20vto.vt.contains%28popup.triggerNode%29%29%0A%09%09%09%09%09%7C%7C%20%28%0A%09%09%09%09%09%09%22anchorNode%22%20in%20popup%20%26%26%20popup.anchorNode%20%26%26%20%28%0A%09%09%09%09%09%09%09vto.vt.contains%28popup.anchorNode%29%0A%09%09%09%09%09%09%09%7C%7C%20vto.vt.contains%28document.getBindingParent%28popup.anchorNode%29%29%0A%09%09%09%09%09%09%29%0A%09%09%09%09%09%29%0A%09%09%09%09%29%0A%09%09%09%29%3B%0A%09%09%09vto.setCollapser%28%21hasPopup%29%3B%0A%09%09%09hasPopup%20%7C%7C%20vto.callCollapser%28%29%3B%0A%09%09%7D%2C%20200%2C%20this%29%3B%0A%09%7D%2C%0A%09onWidgetAfterDOMChange%3A%20function%28...a%29%20%7B%0A%09%09if%20%28a%5B2%5D%20%3D%3D%20this.vt.box%29%20this.vt.hbox.style.minWidth%20%3D%20this.vt.boxObject.width%20+%20%22px%22%3B%0A%09%7D%2C%0A%09initVT%3A%20function%28%29%20%7B%0A%09%09var%20id%20%3D%20this.id%3B%0A%09%09var%20boxId%20%3D%20id%20+%20%22-customization-target%22%3B%0A%09%09var%20vt%20%3D%20this.vt%20%3D%0A%09%09%09document.getElementById%28id%29%20%7C%7C%0A%09%09%09document.createElement%28%22toolbar%22%29%3B%0A%09%09var%20attrs%20%3D%20%7B%0A%09%09%09id%3A%20id%2C%0A%09%09%09mode%3A%20%22icons%22%2C%0A%09%09%09iconsize%3A%20%22small%22%2C%0A%09%09%09orient%3A%20%22vertical%22%2C%0A%09%09%09customizable%3A%20%22true%22%2C%0A%09%09%09persist%3A%20%22collapsed%22%2C%0A%09%09%09toolbarname%3A%20this.name%2C%0A%09%09%09fullscreentoolbar%3A%20%22true%22%2C%0A%09%09%09class%3A%20%22chromeclass-toolbar%22%2C%0A%09%09%09context%3A%20%22toolbar-context-menu%22%2C%0A%09%09%09style%3A%20%22-moz-appearance%3A%20none%3B%20display%3A%20-moz-box%3B%20height%3A%20100%25%3B%20position%3A%20fixed%3B%20min-width%3A%2020px%22%0A%09%09%7D%3B%0A%09%09for%28var%20attr%20in%20attrs%29%20vt.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09%09if%20%28%21vt.parentNode%29%20%7B%0A%0A%09%09%09var%20box%20%3D%20vt.box%20%3D%20document.createElement%28%22vbox%22%29%3B%0A%09%09%09vt.appendChild%28box%29%3B%0A%09%09%09box.id%20%3D%20boxId%3B%0A%09%09%09box.style.cssText%20%3D%20%22height%3A%20100%25%3B%20width%3A%20100%25%3B%22%0A%0A%09%09%09vt.customizationTarget%20%3D%20box%3B%0A%09%09%09gNavToolbox.appendChild%28vt%29%3B%0A%0A%09%09%09if%20%28CustomizableUI.areas.indexOf%28id%29%20%3D%3D%20-1%29%20%7B%0A%09%09%09%09CustomizableUI.registerArea%28id%2C%20%7Blegacy%3A%20true%7D%29%3B%0A%09%09%09%7D%0A%09%09%09box.removeAttribute%28%22class%22%29%3B%0A%09%09%09box.__defineGetter__%28%22localName%22%2C%20function%28%29%20arguments.callee.caller%20%3D%3D%20custombutton.buttonConstructor%20%3F%20%22toolbar%22%20%3A%20%22vbox%22%29%3B%0A%0A%09%09%09vt.hbox%20%3D%20document.createElement%28%22hbox%22%29%3B%0A%09%09%09vt.hbox.id%20%3D%20id%20+%20%22-hbox%22%3B%0A%09%09%7D%0A%09%09vt.box.style.padding%20%3D%20%220%20%22%20+%20this.padding%20+%20%22px%22%3B%0A%09%09vt.style.backgroundColor%20%3D%20this.color%3B%0A%09%09vt.style.borderRight%20%3D%20%221px%20solid%20%22%20+%20this.fringe%3B%0A%09%09return%20vt%3B%0A%09%7D%2C%0A%09destroyVT%3A%20function%28reason%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09CustomizableUI.unregisterArea%28vt.id%2C%20%7B%7D%29%3B%0A%09%09vt.hbox.parentNode%20%26%26%20vt.hbox.parentNode.removeChild%28vt.hbox%29%3B%0A%09%09vt.parentNode%20%26%26%20vt.parentNode.removeChild%28vt%29%3B%0A%0A%09%09var%20%5Brdf%2C%20ds%2C%20source%2C%20property%2C%20target%5D%20%3D%20this.rdf%3B%0A%09%09var%20enumerator%20%3D%20ds.ArcLabelsOut%28source%29%3B%0A%09%09while%28enumerator.hasMoreElements%28%29%29%20%7B%0A%09%09%09property%20%3D%20enumerator.getNext%28%29%3B%0A%09%09%09target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%09%7D%0A%09%09target%20%3D%20source.QueryInterface%28Ci.nsIRDFNode%29%3B%0A%09%09source%20%3D%20rdf.GetResource%28location%29%3B%0A%09%09property%20%3D%20rdf.GetResource%28%22http%3A//home.netscape.com/NC-rdf%23persist%22%29%3B%0A%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%7D%2C%0A%09insertBox%3A%20function%28ins%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09var%20box%20%3D%20vt.hbox%3B%0A%09%09if%20%28%21ins%29%20%7B%0A%09%09%09box.parentNode%20%26%26%20box.parentNode.removeChild%28box%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20id%20%3D%20this.cust%20%3F%20%22customization-palette-container%22%20%3A%20%22sidebar-box%22%3B%0A%09%09var%20point%20%3D%20document.getElementById%28id%29%3B%0A%09%09point.parentNode.insertBefore%28box%2C%20point%29%3B%0A%09%09var%20mw%20%3D%20function%28%29%20box.style.minWidth%20%3D%20vt.boxObject.width%20+%20%22px%22%3B%0A%09%09mw%28%29%3B%20setTimeout%28mw%2C%20100%29%3B%0A%09%7D%2C%0A%09toggleVT%3A%20function%28on%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09if%20%28on%20%3D%3D%20undefined%29%20on%20%3D%20%21vt.on%3B%0A%09%09vt.on%20%3D%20on%3B%0A%09%09this.setCollapser%28%21on%29%3B%0A%09%09vt.collapsed%20%3D%20%21on%3B%0A%09%09this.insertBox%28on%29%3B%0A%09%7D%0A%7D%3B%0Avto.init%28%29%3B%0A%0A%0Afunction%20addBackground%28e%29%20%7B%0A%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20toolbar%20%3D%20document.getElementById%28%27cb-vt%27%29%3B%0A%20%20%20%20%20%20var%20win%20%3D%20document.getElementById%28%22main-window%22%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20image%20%3D%20win.style.backgroundImage%3B%0A%20%20%20%20%20%20if%20%28%20image%20%3D%3D%20%27%27%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20toolbar.style.background%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20toolbar.style.background%20%3D%20image%3B%0A%20%20%20%20%20%20toolbar.style.backgroundSize%20%3D%20%27auto%20100%25%27%3B%0A%20%20%20%7D%2C%20500%29%3B%0A%7D%3B%0AaddBackground%28%29%3B%20%0AServices.obs.addObserver%28%20addBackground%2C%20%22lightweight-theme-styling-update%22%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20Services.obs.removeObserver%28%20addBackground%2C%20%22lightweight-theme-styling-update%22%29%20%29%3B%20%0A%0A%0A%0A%0A%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 |
VORON > 28-04-2015 21:53:05 |
bunda1 |
LittleMontana > 29-04-2015 14:32:31 |
VORON пишет
По поводу 28 версии согласен с вами. Насколько много в плане производительности версии 28.0 и 37.0.2 различаются? и по теме: "код" кнопки const showSec = true; //========================================================== #digital-clock-text { } dct-style */ const mark = "dct-style"; this.label = showSec ? "00:00:00" : "00:00"; const icon = document.getAnonymousElementByAttribute(this, "class", "toolbarbutton-icon"); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); const format = showSec ? "%H:%M:%S" : "%H:%M"; this.onmouseenter = function() { "инициализация" кнопки // Автоматически очистить панель поиска после запуска поиска + возврат нужного поисковика, от 19.12.2013. .............. (function() { var func = BrowserSearch.searchBar.handleSearchCommand.toString() .replace(/^\s*function.+{/, '').replace(/}\s*$/, ''); var code = ['setTimeout(function() { textBox.value = ""; }, 500);\ \n var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);\ \n searchService.currentEngine = searchService.getEngineByName("Яндекс");\ '].join(''); func += code; // Показывать потребление памяти в адресной строке, от 28.07.2014. ................................ function addInfo(device, info) { memoryDisplay.onmouseenter = function() { setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0); // Удалять счётчик памяти и другие изменения .... document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function(event) { /*Initialization Code*/ проблема: тускло выглядит должно быть: http://puu.sh/huYJl/f6f77caf45.jpg как есть сейчас: http://puu.sh/htZNM/b378f2887c.jpg и второй вопрос: 29-04-2015 14:44:33 bunda1 пишет
а куда данный стиль запихать ? и в код и в инициализацию пробывал, все равно тускло. |
bunda1 > 29-04-2015 20:40:39 |
LittleMontana пишет
Такое происходит если в кодах кнопки которые ты положил в вкладку Код или Инициализация есть ошибка. Я проверил на FF38 и всё работает и кнопка выглядит как надо, наверно конфликт с другим кодом или расширением, смотри что пишет консоль ошибок или удаляй коды из своей кнопки по одному и проверяй тусклость. 29-04-2015 20:42:39 LittleMontana пишет
В инициализацию но в данном случае не поможет по выше упомянутым причинам. 29-04-2015 20:47:01 LittleMontana пишет
Я не понял о чём речь на твоём изображение не http://puu.sh/htZNM/b378f2887c.jpg не иконка загрузки |
LittleMontana > 29-04-2015 20:56:45 |
Извините, не тот скриншот |
bunda1 > 29-04-2015 21:19:54 |
LittleMontana пишет
И где такая иконка загрузки? |
LittleMontana > 29-04-2015 23:04:03 |
bunda1 |
turbot > 02-05-2015 03:35:59 |
bunda1
Спасибо. |
bunda1 > 04-05-2015 21:02:25 |
turbot пишет
Приятно когда пользователи находят в кнопках ошибки и сами исправляют |
Dumby > 04-05-2015 23:23:55 |
bunda1 скрытый текст e.target.ownerDocument.defaultView.getSelection().toString(); // + e10s
|
bunda1 > 05-05-2015 21:22:37 |
Dumby пишет
Да это работает на + e10s. Спасыбо alt |
Dumby > 05-05-2015 22:02:29 |
bunda1 пишет
Да, CB должен сам удалять обработчика. А в данном случае имеется в виду совсем другое. Если настройка изменилась на true (Autocopy включён), А если настройка изменилась на false (Autocopy выключен), |
bunda1 > 05-05-2015 22:18:11 |
Dumby |
manuk > 07-05-2015 18:18:27 |
Как сделать кнопку для вызова настроек дополнения friGate, чтобы при клике появлялось окошко скрытый текст ![]() |
HaGEN > 08-05-2015 09:12:07 |
manuk Кнопка быстрого вызова настроек расширений. URl Выделить код Код: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%3E%u0411%u044B%u0441%u0442%u0440%u044B%u0439%20%u0434%u043E%u0441%u0442%u0443%u043F%20%u043A%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%20%5BExtensions%20Options%20Menu%5D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%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%20%28new%20DOMParser%29.parseFromString%28aXML%2C%20%22application/xml%22%29%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.documentElement%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%0Afunction%20openAM%28aView%29%20%7B%0A%20%20if%20%28%22toEM%22%20in%20window%29%20%7B%0A%20%20%20%20toEM%28aView%29%3B%0A%20%20%7D%20else%20if%20%28%22openAddonsMgr%22%20in%20window%29%20%7B%0A%20%20%20%20openAddonsMgr%28aView%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20BrowserOpenAddonsMgr%28aView%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.openOption%20%3D%20function%28aId%29%20%7B%0A%20%20AddonManager.getAddonByID%28aId%2C%20function%28aAddon%29%20%7B%0A%20%20%20%20if%20%28aAddon.optionsType%20%26%26%20%28parseInt%28aAddon.optionsType%29%20%3E%201%29%29%20%7B%0A%20%20%20%20%20%20switch%20%28parseInt%28aAddon.optionsType%29%29%20%7B%0A%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%20switchToTabHavingURI%28aAddon.optionsURL%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%20openAM%28%22addons%3A//detail/%22%20+%20encodeURIComponent%28aAddon.id%29%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%20%20%20%20%20+%20%22/preferences%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20openDialog%28aAddon.optionsURL%2C%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20close%2C%20minimizable%2C%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22titlebar%2C%20toolbar%2C%20scrollbars%2C%20centerscreen%22%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Athis.setStatus%20%3D%20function%28aString%29%20%7B%0A%20%20XULBrowserWindow.setOverLink%28aString%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%20inspectExtensions%28aEvent%29%20%7B%0A%20%20switch%20%28aEvent.button%29%20%7B%0A%20%20%20%20case%200%3A%0A%20%20%20%20%20%20if%20%28aEvent.ctrlKey%29%20%7B%0A%20%20%20%20%20%20%20%20aEvent.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20return%3B%0A%20%20%20%20%20%20%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28aAddon.type%20%3D%3D%20%22extension%22%20%26%26%20aAddon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20extensions.push%28aAddon%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%7D%29%0A%20%20%20%20%20%20%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20%20%20%20%20%20%20inspectObject%28extensions%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20case%201%3A%0A%20%20%20%20%20%20var%20prefs%20%3D%20Services.prefs.getBranch%28%22custombuttons.searchAddons%22%20+%20%22.%22%29%3B%0A%20%20%20%20%20%20var%20text%20%3D%20%22%22%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20text%20%3D%20prefs.getCharPref%28%22search%22%29%3B%0A%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20query%20%3D%20custombuttons.promptBox%28%22Search%20add-ons%22%2C%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%20%20%20%20%20%20%20%20%20%20%20%22Enter%20add-on%20name%22%2C%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%20%20%20%20%20%20%20%20%20%20%20text%2C%20null%29%3B%0A%20%20%20%20%20%20if%20%28%21query%5B0%5D%29%20return%3B%0A%20%20%20%20%20%20prefs.setCharPref%28%22search%22%2C%20query%5B1%5D%29%3B%0A%20%20%20%20%20%20openAM%28%22addons%3A//search/%22%20+%20encodeURIComponent%28query%5B1%5D%29%29%3B%0A%0A%20%20%20%20default%3A%0A%20%20%7D%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%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20/*aAddon.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%22use%20strict%22%3B%0A%20%20%20%20%20%20%20%20return%20this.name%3B%0A%20%20%20%20%20%20%7D*/%0A%20%20%20%20%20%20if%20%28%28aAddon.type%20%3D%3D%20%22extension%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28aAddon.optionsURL%20%21%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20aAddon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%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%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddon.id%20%3D%3D%20aId%29%20%7B%0A%20%20%20%20%20%20%20%20aCallback%28aAddon%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%29%0A%20%20%7D%29%0A%7D%0A%0Afunction%20htmlEntities%28aString%29%20%7B%0A%20%20return%20aString.replace%28/%26/g%2C%20%22%26amp%3B%22%29.replace%28/%3C/g%2C%20%22%26lt%3B%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%3E/g%2C%20%22%26gt%3B%22%29.replace%28/%22/g%2C%20%22%26quot%3B%22%29%3B%0A%7D%0A%0Afunction%20addItem%28aNode%2C%20aId%2C%20aLabel%2C%20aURL%2C%20aIcon%2C%20aHomePage%2C%20aDesc%29%20%7B%0A%20%20let%20mi%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22GUID%22%2C%20aId%29%3B%0A%20%20%20%20%20%20mi.className%20%3D%20%22menuitem-iconic%22%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20%20%20%20%20mi.statusText%20%3D%20aURL%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22image%22%2C%20aIcon%29%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22homepage%22%2C%20aHomePage%29%3B%0A%20%20%20%20%20%20mi.tooltipText%20%3D%20aDesc%3B%0A%7D%0A%0Athis.populate%20%3D%20function%28aPopup%2C%20aExtensions%29%20%7B%0A%20%20while%20%28aPopup.lastChild%29%20aPopup.removeChild%28aPopup.lastChild%29%3B%0A%20%20if%20%28%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%26%26%20%28aExtensions.length%20%3E%2020%29%29%20%7B%0A%20%20%20%20var%20hbox%20%20%3D%20aPopup.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20var%20vbox1%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20var%20vbox2%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20let%20vbox%20%3D%20%28i%20%3C%20parseInt%28aExtensions.length%20/%202%29%29%20%3F%20vbox1%20%3A%20vbox2%3B%0A%20%20%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20%20%20addItem%28vbox%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%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%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%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%20%20%20%20%20%20%20%20%3A%20ext.reviewURL%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%20%20%20%20%20%20%20%20%20%20%3F%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%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%20%20%20%20%20%20%20%20%20%20%3A%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%20ext.name%29%2C%0A%20%20%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%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%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%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%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%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%20%20%20%20%20%20%20%20%3A%20ext.reviewURL%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%20%20%20%20%20%20%20%20%20%20%3F%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%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%20%20%20%20%20%20%20%20%20%20%3A%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%20ext.name%29%2C%0A%20%20%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%20%20%7D%0A%20%20%7D%0A%7D%0A%0Avar%20popup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Apopup.setAttribute%28%22context%22%2C%20%22cb-extensions-menu%22%29%3B%0Apopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%3B%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22this.parentNode.openOption%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22event.target.getAttribute%28%27GUID%27%29%29%3B%22%29%3B%0Apopup.setAttribute%28%22onmouseover%22%2C%20%22this.parentNode.setStatus%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22event.target.statusText%29%3B%22%29%3B%0Apopup.setAttribute%28%22onmouseout%22%2C%20%22this.parentNode.setStatus%28%27%27%29%3B%22%29%3B%0Apopup.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.addonsMgr%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22this%2C%20this.parentNode.populate%29%3B%22%29%3B%0A%0A//this.addonsMgr%28popup%2C%20this.populate%29%3B%0A%0Athis.appendChild%28popup%29%3B%0Athis.type%20%3D%20%22menu%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%20dir%20%3D%20Services.dirsvc.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%20var%20nsLocalFile%20%3D%20Components.Constructor%28%22@mozilla.org/file/local%3B1%22%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%22nsILocalFile%22%2C%20%22initWithPath%22%29%3B%0A%20%20%28new%20nsLocalFile%28dir.path%20+%20%28dir.exists%28%29%20%3F%20%22%22%20%3A%20%22.xpi%22%29%29%29.reveal%28%29%3B%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%24xml%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%3Cmenupopup%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22cb-extensions-menu%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onclick%3D%22event.stopPropagation%28%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onpopupshowing%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.checkForDOMI%28event%29%3B%22%3E%3Cmenuitem%20label%3D%22Visit%20Home%20Page%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27homepage%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.goHome%28document.popupNode.getAttribute%28%5C%27homepage%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Copy%20GUID%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.copyId%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Inspect%20Extension%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.inspect%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Browse%20Install%20Directory%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.explore%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/menupopup%3E%27%29%29%3B%0A%0A%0A/*%0A//%20%u0441%u043A%u0440%u044B%u0442%u0438%u0435%20%u0434%u0440%u043E%u043F%u043C%u0430%u0440%u043A%u0435%u0440%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438-%u043C%u0435%u043D%u044E%28%u0432%20%u0438%u043D%u0438%u0446%u0438%u0430%u043B%u0438%u0437%u0430%u0446%u0438%u044E%29%0Avar%20that%20%3D%20this%3B%0Athis.hideDropMarker%20%3D%20function%28%29%20%7B%0A%20%20var%20dropMarker%20%3D%20document.getAnonymousElementByAttribute%28that%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%20%20if%20%28dropMarker%29%20%7B%0A%20%20%20%20dropMarker.setAttribute%28%22hidden%22%2C%20%22true%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20setTimeout%28that.hideDropMarker%2C%2010%29%3B%0A%20%20%7D%0A%7D%0Athis.hideDropMarker%28%29%3B%0A*/%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%20%0Athis.tooltipText%20%3D%20this.Help%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%u0411%u044B%u0441%u0442%u0440%u044B%u0439%20%u0434%u043E%u0441%u0442%u0443%u043F%20%u043A%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%20%u0443%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0435%u0441%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%0A---------------------------------------------------------------%0A%u041B%u041A%u041C%20-%20%u0432%u044B%u0437%u043E%u0432%u0435%u0442%20%u043E%u043A%u043D%u043E%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u044F.%0A%u0421%u041A%u041C%20-%20%u043F%u043E%u0438%u0441%u043A%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439.%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Кнопка быстрого вызова настроек расширений. Инициализация Выделить код Код:/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ function $(aId) { return document.getElementById(aId); } function $xml(aXML) { return (new DOMParser).parseFromString(aXML, "application/xml") .documentElement; } 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; }) } function openAM(aView) { if ("toEM" in window) { toEM(aView); } else if ("openAddonsMgr" in window) { openAddonsMgr(aView); } else { BrowserOpenAddonsMgr(aView); } } this.openOption = function(aId) { AddonManager.getAddonByID(aId, function(aAddon) { if (aAddon.optionsType && (parseInt(aAddon.optionsType) > 1)) { switch (parseInt(aAddon.optionsType)) { case 3: switchToTabHavingURI(aAddon.optionsURL, true); break; case 2: openAM("addons://detail/" + encodeURIComponent(aAddon.id) + "/preferences"); } } else { openDialog(aAddon.optionsURL, "", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen"); } }) } this.setStatus = function(aString) { XULBrowserWindow.setOverLink(aString); } this.onclick = function inspectExtensions(aEvent) { switch (aEvent.button) { case 0: if (aEvent.ctrlKey) { aEvent.preventDefault(); if (typeof inspectObject != "function") return; AddonManager.getAllAddons(function(aAddons) { var extensions = []; aAddons.forEach(function(aAddon) { if (aAddon.type == "extension" && aAddon.isActive) { extensions.push(aAddon); } }) sort(extensions); inspectObject(extensions); }) } break; case 1: var prefs = Services.prefs.getBranch("custombuttons.searchAddons" + "."); var text = ""; try { text = prefs.getCharPref("search"); } catch(ex) { } var query = custombuttons.promptBox("Search add-ons", "Enter add-on name", text, null); if (!query[0]) return; prefs.setCharPref("search", query[1]); openAM("addons://search/" + encodeURIComponent(query[1])); default: } } this.addonsMgr = function(aPopup, aCallback) { AddonManager.getAllAddons(function(aAddons) { var extensions = []; aAddons.forEach(function(aAddon) { /*aAddon.toString = function() { "use strict"; return this.name; }*/ if ((aAddon.type == "extension") && (aAddon.optionsURL != null) && aAddon.isActive) { extensions.push(aAddon); } }) sort(extensions); aCallback(aPopup, extensions); }) } function getExtensionObject(aId, aCallback) { AddonManager.getAllAddons(function(aAddons) { aAddons.forEach(function(aAddon) { if (aAddon.id == aId) { aCallback(aAddon); return; } }) }) } function htmlEntities(aString) { return aString.replace(/&/g, "&").replace(/</g, "<") .replace(/>/g, ">").replace(/"/g, """); } function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) { let mi = aNode.appendChild(document.createElement("menuitem")); mi.setAttribute("GUID", aId); mi.className = "menuitem-iconic"; mi.setAttribute("label", aLabel); mi.statusText = aURL; mi.setAttribute("image", aIcon); mi.setAttribute("homepage", aHomePage); mi.tooltipText = aDesc; } this.populate = function(aPopup, aExtensions) { while (aPopup.lastChild) aPopup.removeChild(aPopup.lastChild); if ((navigator.platform == "Win32") && (aExtensions.length > 20)) { var hbox = aPopup.appendChild(document.createElement("hbox")); var vbox1 = hbox.appendChild(document.createElement("vbox")); var vbox2 = hbox.appendChild(document.createElement("vbox")); for (var i = 0; i < aExtensions.length; i++) { let vbox = (i < parseInt(aExtensions.length / 2)) ? vbox1 : vbox2; let ext = aExtensions[i]; addItem(vbox, 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 ? ext.reviewURL.replace(/\/reviews/, "").toString() : "http://www.google.com/search?q=" + ext.name), ext.description); } } else { 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 ? ext.reviewURL.replace(/\/reviews/, "").toString() : "http://www.google.com/search?q=" + ext.name), ext.description); } } } var popup = document.createElement("menupopup"); popup.setAttribute("context", "cb-extensions-menu"); popup.setAttribute("oncommand", "event.stopPropagation(); " + "this.parentNode.openOption(" + "event.target.getAttribute('GUID'));"); popup.setAttribute("onmouseover", "this.parentNode.setStatus(" + "event.target.statusText);"); popup.setAttribute("onmouseout", "this.parentNode.setStatus('');"); popup.setAttribute("onpopupshowing", "this.parentNode.addonsMgr(" + "this, this.parentNode.populate);"); //this.addonsMgr(popup, this.populate); this.appendChild(popup); this.type = "menu"; //--------------------------------- 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 dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.append("extensions"); dir.append(aId); var nsLocalFile = Components.Constructor("@mozilla.org/file/local;1", "nsILocalFile", "initWithPath"); (new nsLocalFile(dir.path + (dir.exists() ? "" : ".xpi"))).reveal(); } 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>')); /* // скрытие дропмаркера у кнопки-меню(в инициализацию) var that = this; this.hideDropMarker = function() { var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker"); if (dropMarker) { dropMarker.setAttribute("hidden", "true"); } else { setTimeout(that.hideDropMarker, 10); } } this.hideDropMarker(); */ // Подсказка для кнопки .......... // this.tooltipText = this.Help |
manuk > 08-05-2015 15:35:05 |
HaGEN, тоже 3 клика... Хочется один. Может bunda1 попросить... |
bunda1 > 08-05-2015 18:11:33 |
manuk пишет
Выделить код Код:openDialog("chrome://frigate2/content/pref.xul", "", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen"); 08-05-2015 18:28:13 Выделить код Код:var windows = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getEnumerator(null); while( windows.hasMoreElements() ) { var win = windows.getNext(); if ( win.name == 'friGate') { win.focus(); return; } }; var options = openDialog("chrome://frigate2/content/pref.xul", "friGate", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen"); gBrowser.addEventListener("click", function c() { this.removeEventListener("click", c ); try { options.close() } catch(e) {}; }, true ); |
manuk > 08-05-2015 19:14:21 |
bunda1, спасибо. Я в тебя верил. А сразу открывать на второй вкладке настроек (как на картинке под спойлером https://forum.mozilla-russia.org/viewto … 82#p682282) возможно? Ещё минус один клик... Или проще friGate переделать? |
bunda1 > 08-05-2015 21:01:35 |
manuk пишет
Выделить код Код:var windows = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getEnumerator(null); while( windows.hasMoreElements() ) { var win = windows.getNext(); if ( win.name == 'friGate') { win.focus(); return; } }; var options = openDialog("chrome://frigate2/content/pref.xul", "friGate", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen"); gBrowser.addEventListener("click", function c() { this.removeEventListener("click", c ); try { options.close() } catch(e) {}; }, true ); options.addEventListener("load", function s(e) { this.removeEventListener(e.type, s); e.target.getElementsByAttribute("label", "Proxys")[0].click(); }, true ) |
manuk > 08-05-2015 21:16:40 |
bunda1, открывает на вкладке "Основное". Может ещё подаманишь? |
bunda1 > 08-05-2015 21:23:15 |
manuk пишет
Упс, у меня настройки friGate на английском а код находит вкладку настроек по названию, поменяй в коде Proxys на Прокси |
manuk > 08-05-2015 21:36:36 |
bunda1, всё прекрасно. Огромное спасибо! |
Mishania > 10-05-2015 22:01:50 |
Установлена кнопка CB Mouse Gestures+, сделал команду 'DR':{name:'Обновить',cmd:function(){ gBrowser.reload() }}, |
bunda1 > 10-05-2015 22:10:30 |
Mishania пишет
Может: |
Mishania > 10-05-2015 22:27:56 |
bunda1 |
Stkvsky > 12-05-2015 21:33:26 |
Здравствуйте, подскажите если есть кнопка добавить ссылку в контекстное меню, желательно с иконкой, без подменю, что бы сразу, хочу добавить ссылки на несколько постоянно посещаемых сайтов. Спасибо. |
bunda1 > 12-05-2015 21:54:53 |
Stakhovsky пишет
А контекстное меню где должно открываться? |
Stkvsky > 12-05-2015 21:58:13 |
bunda1 пишет
При клике в любом пустом месте любой страницы. |
bunda1 > 12-05-2015 22:13:27 |
Stakhovsky |
Stkvsky > 13-05-2015 00:19:23 |
bunda1 пишет
Ясно, я пересмотрел уже все дополнения, вот нашел одно которое выполняет такую функцию (https://addons.mozilla.org/ru/firefox/addon/quick-tab), но там можно только одну ссылку указать. Вы бы не могли помочь если можно как то сделать из него кнопки в контекстное меню или что бы это дополнение модернизировать добавив еще пункты, или может как-то сделать что бы установить несколько таких дополнений переименовав их. Помогите пожалуйста. |
bunda1 > 13-05-2015 00:29:58 |
Stakhovsky |
Stkvsky > 13-05-2015 00:48:39 |
bunda1 пишет
Так быстрее всего переходить, правой кнопкой нажал и сразу под стрелкой нужные ссылки, на среднюю кнопку назначено открытие боковой панели закладок, там много папок и не удобно. Самое лучшее для меня это поместить в контекстное меню. |
Stkvsky > 13-05-2015 01:16:10 |
okkamas_knife пишет
Никто не мешает, я и пытаюсь сделать, список поиска дополнений по контекстным меню я перелопатил весь, такого как я говорю нет, мне бы было естественно легче найти готовое, чем писать на форум. |
xrun1 > 13-05-2015 01:21:02 |
Stakhovsky |
Stkvsky > 13-05-2015 01:38:29 |
okkamas_knife пишет
Спасибо, буду пробовать. Как думаете не проще будет переделать это дополнение? https://addons.mozilla.org/ru/firefox/addon/quick-tab/ 13-05-2015 01:38:57 xrun1 пишет
Спасибо, то что нужно. |
Stkvsky > 13-05-2015 13:56:26 |
okkamas_knife пишет
Дело не в хоткее, там добавляется пункт в контекстное меню. |
turbot > 13-05-2015 16:11:00 |
Stakhovsky скрытый текст ![]() Вариант 1: Выделить код Код:(function() { if ( document.getElementById("context-site-1") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "context-site-1"; menuItem.setAttribute("label", "Google"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://www.google.com')"); document.getElementById("context-searchselect").parentNode.insertBefore( menuItem, document.getElementById("context-searchselect") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu; }, false); })(); (function() { if ( document.getElementById("context-site-2") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "context-site-2"; menuItem.setAttribute("label", "Форум Mozilla Россия"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://forum.mozilla-russia.org/index.php')"); document.getElementById("context-searchselect").parentNode.insertBefore(menuItem, document.getElementById("context-searchselect")); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu; }, false); })(); Вариант 2: Выделить код Код:(function() { if ( document.getElementById("context-site-1") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "context-site-1"; menuItem.setAttribute("label", "Google"); menuItem.setAttribute("tooltiptext", 'Перейти на "Google"'); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://www.google.com')"); document.getElementById("context-navigation").appendChild( menuItem, document.getElementById("context-navigation") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu; }, false); })(); (function() { if ( document.getElementById("context-site-2") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "context-site-2"; menuItem.setAttribute("label", "Форум Mozilla Россия"); menuItem.setAttribute("tooltiptext", 'Перейти на "Форум Mozilla Россия"'); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://forum.mozilla-russia.org/index.php')"); document.getElementById("context-navigation").appendChild(menuItem, document.getElementById("context-navigation")); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu; }, false); })(); В инициализацию любой кнопки. Добавляйте свои сайты по образцу. |
Stkvsky > 13-05-2015 16:39:39 |
turbot пишет
О, спасибо большое, вариант 1 в самый раз, а я вот только хотел написать скрытый текст Я похоже нашел то что нужно, вот эта вот кнопка https://forum.mozilla-russia.org/viewtopic.php?id=57905
Название переименовую в этой строке:
Сюда вставляю код иконки base64, иконку создаю здесь: http://xaviesteve.com//pro/base64.php?
Дальше прошу помочь Один вопрос остался, возможно ли так сделать, что бы при клике ЛКМ сайт открывался в этой же вкладке, а при клике средней кнопкой (колесиком) в новой? ps. еще один, как можно регулировать расположение(подвинуть ближе к верху или опустить в самый низ)? pps.еще третий вопрос) можно ли добавить туда же пункт новая вкладка? |
turbot > 13-05-2015 17:32:45 |
Stakhovsky скрытый текст Выделить код Код:menuItem.setAttribute("oncommand", "loadURI('https://www.google.com')"); //левый клик - в текущей вкладке menuItem.setAttribute("oncontextmenu", "getBrowser().selectedTab = getBrowser().addTab('https://www.google.com')"); //правый - в новой Выделить код Код:document.getElementById("context-searchselect").parentNode.insertBefore( menuItem, document.getElementById("context-searchselect") ); - вставляет наш пукт до указанного элемента (context-searchselect). ID смотрите DOM Inspector'ом: Выделить код Код:document.getElementById("context-navigation").appendChild( menuItem, document.getElementById("context-navigation") ); - вставляет пукт последним элементом. Вставьте about:newtab, вместо адреса, и будет новая вкладка (ну или chrome://speeddial/content/speeddial.xul, если, например, спиддиалом пользуетесь) |
Stkvsky > 13-05-2015 18:01:00 |
turbot пишет
Все работает, большое спасибо за помощь!) |
bunda1 > 13-05-2015 20:34:21 |
Stakhovsky пишет
Выделить код Код:((contextMenu) => { var array = [ { lab: "Новая вкладка", url: "about:newtab", img: "https://addons.cdn.mozilla.net/user-media/collection_icons/5574/5574260.png?m=1426540508"}, { lab: "Google", url: "https://www.google.com", img: "https://www.google.lv/favicon.ico"}, { lab: "Форум Mozilla Россия", url: "https://forum.mozilla-russia.org/index.php", img: "https://forum.mozilla-russia.org/favicon.ico"} ] array.forEach(function(m,i) { var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.lab ); mItem.setAttribute("id", "link"+i ); mItem.setAttribute("url", m.url ); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.img ); mItem.addEventListener("click", openLink ); contextMenu.appendChild( mItem ); }); function openLink(e) { var url = e.target.getAttribute("url"); e.button ? gBrowser.selectedTab = gBrowser.addTab(url) : loadURI(url); }; addDestructor(()=> array.forEach(function(m,i) contextMenu.removeChild(document.getElementById('link'+i)) )); })(document.getElementById("contentAreaContextMenu") ); |
Stkvsky > 13-05-2015 23:36:34 |
Спасибо, работает |
Stkvsky > 14-05-2015 00:40:03 |
У меня еще пара вопросов: скрытый текст ![]() 2. У меня стоит разшерение New Tab Mod (https://addons.mozilla.org/ru/firefox/a … w-tab-mod/), но когда я выбираю в "Новая вкладка"(about:newtab) в контекстном меню оно не загружается, если нажать на "+" добавить новую вкладку, оно загружается. Что нужно прописать вместо about:newtab что бы оно загружалось в новой вкладке? |
turbot > 14-05-2015 01:02:43 |
Stakhovsky скрытый текст 1. Выносите на тулбар и, если не хотите, чтоб место занимала, либо прячьте стилем ( Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #custombuttons-button25 { display:none!important; } (id кнопки смотрите DOM Inspector'ом или пишите toolbarbutton[label='Название кнопки'] )), либо используйте Merge Custom Buttons |
Stkvsky > 14-05-2015 09:30:54 |
1. Кнопку переименовал в Cntxtmenu, такой вот код вставить в инициализацию кнопки? скрытый текст toolbarbutton[label='Cntxtmenu'] )) @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #custombuttons-button25 { display:none!important; } 2. В новой вкладке с этим дополнением нет такой кнопки "о сайте" скрытый текст ![]() |
turbot > 14-05-2015 17:07:34 |
Stakhovsky скрытый текст 1. либо: Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #custombuttons-button25 { display:none!important; } либо: Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); toolbarbutton[label='Cntxtmenu'] { display:none!important; } другие, если понадобится, добавлять так: Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); toolbarbutton[label='Cntxtmenu'], toolbarbutton[label='бла-бла2'], toolbarbutton[label='бла-бла3'], toolbarbutton[label='и т.д.'] { display:none!important; } Это вставлять в userChrome.css (если его нет, создаете в папке профиля браузера папку chrome, а в ней текстовый документ, который переименовываете в userChrome.css, и туда вставляете код (следите, чтобы userChrome.css.txt не вышел), сохраняете, перезапускаете браузер для применения), либо в Stylish, если пользуетесь. 2. У меня просто из-за стиля так выглядит. Щелкайте на значке глобуса. |
Stkvsky > 14-05-2015 18:42:38 |
1.Спасибо, получилось |
turbot > 14-05-2015 19:01:17 |
Stakhovsky скрытый текст Сделайте кнопку с в секции код. При нажатии увидите это окно для текущей страницы. |
Stkvsky > 14-05-2015 19:10:33 |
Получилось, страцица "about:blank", добавил в конткекстную кнопку, но открывается всеравно пустая страница, без дополнения. Можно ли назначить на кнопку именно фукцию кнопки "+"(Открыть новую вкладку)? |
turbot > 14-05-2015 19:46:32 |
Stakhovsky Как впихнуть в код bunda1, если его кнопку взяли, не знаю. |
Stkvsky > 14-05-2015 20:23:54 |
Поставил заработало, спасибо, пока стоит два кода, ваш и bunda1, смотрю как удобней, спасибо. |
bunda1 > 14-05-2015 21:51:14 |
Stakhovsky |
Stkvsky > 14-05-2015 23:09:04 |
Прекрасно, спасибо, все работает |
VORON > 15-05-2015 10:45:07 |
bunda1 |
bunda1 > 16-05-2015 23:08:53 |
VORON |
LittleMontana > 18-05-2015 12:25:46 |
Нужна кнопка, что бы по нажатию на неё (вкл/выкл) показывалась и скрывалась панель вкладок |
HaGEN > 18-05-2015 14:31:12 |
Показать / скрыть панель вкладок(и другие любые панели изменяя id) Выделить код Код:var bar = document.getElementById("TabsToolbar"); setToolbarVisibility(bar, bar.collapsed); 18-05-2015 14:33:07 Выделить код Код:this.checked = !this.checked; if ( this. checked ) this.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAm1JREFUOI2Nkt1LU3EYx59zzs45m245p5buzaUiQV0V5AIRoswSItCY0UVXdtFf0z8QRFCwC6PCEAqL7CaYzZelc7rmltvOOjvbztzO287br6tgzS187r4Pn+8HHngwaDOTN+apiYkrd69PBYMUSeIbWzuR8NLy8ta3FamVJVoXs/OLAa/X++LRw7nQ+KjfeW7AdXbY77ufSudu2Xs90ezhLtfMY83h3sIi7fH43wT8ngZNQnRgoM9KYnqqIqDbotS4FE8ciJn04fTq+5fHfzt4s6Cvr39m9ubEHoVJr0AXIpJQ35V0epq2dg339DjEhbk7g263e76584+gwGTx8bERUpFFCQF00Tb7NYrEKQL0JE3iRZ9nULh4YcTT3LE0B9M0Ecdx+y6XSx7yBIYsFM2auvaDop3nZUVhMTCYMw5bpaPAMFD5y9pXYXQkgOx2+5CBAaFbCC9JYBXMStZ/ZdJCMpnKdTzBRBD7mWZcmqapslhbrwvCoW4YrIXAyoosZD6srvGZo/x2R8HnlXCtwPFZpsDRkiRUE8kcn2e4YqlSzWdzeSVX4EoP5maqHQUAAFYr/T22l3LUajVUYFlrLL5PHFeK1c1YoluS1e1QKAT/FbwNP9N5/jgnKSpO07hIUZjYUDUolfji8tLzRit/4hMBADCccKia8USVpUlNkS9nj5jxeHwnwhayv1tZSztBkUkJypj7sbt/FLd1dYPP70OfPr572o49cQIAgGkivVrlkc1GQTB4FcplDhoN1Ti1ACGoIYRFWJaDSGQdNje3DkzT5E8tqNfryl7iYPZMjzPs7O19HY1uTHFcqdyO/QM+cS7YiGvNZgAAAABJRU5ErkJggg=="; else this.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAArVJREFUeJxtkktoVGcUx3/fd+/ceahMRum0E6vB+IKYFtpqFRFJu+imrgRdBkFoKC5cCC5cOM7GnQuXFqTSbqQWSsGFjS22Gsn4SqJJFCXJjBlnJol5mHHinbn3zj1dTKdMZA4c+M7hf37nnI+jeM8eXiLQGSMSqfGhrvEBBlqExYrLTC7M2+6jOM161Ry8uEhwU4L23Py2c/HNO7ujnT1xtKFLL++XFqaHn21c9/zsokMm0cvK+425lcS0f6Uze7nrD5n6uSrvJkWc6brbGZFiv+R++vKBc43dmR8JNep049Gx5+T+3HznuU37jn1FdL1F9QHYd+peSUOwwscHvt9dKO08rzf0HmxM3wAoT/zPQ5b1qQrYAakMggyDHgFjBNQI4qQR8lihtu6ayN5ksg4wAZJJlMHbsFa1GM4oRHwwXQh69T7KgIoJroWmEjVUeW0P6BT4ZmOFSNCZ8LXj4TwBX8CxQf8HsDXKDyOuCeL4kbD9ctUfpFL4y257vIaaQQdRfpHs3VdgzUBohuydAnivQENN67mS81H0b/D/XwHANAMjK57uEj/WRWRLG/oeSA18H0wFaz6DcoBq9emQDsbSqVQdYDQAsa0D+W8/WRotTskX0fZdW2M7viY74FIYi7K95wjiriefHnyUSGROZSfTQz9crwNW2fQvhJ0b7M9f7ZiUQq/I/BUZv3pIZO6EFH/b8cbt5/DiTaLNNbo5uDxOtbrCRLXsjPu527B8nY7EEOT/xFsuT3g2w48HVl/hqlMGkEsE7Hhoz9hCz81YdG1EIwgW8dDgd+sK2SuqDw+QlhMAqD5czzBfDFW+Md5tO4219wJ/zR/wXRUcV324zcUtAQA3HpVLPtaCFW7DCITQZtibXVKZVlqjVfLaP9Rml1b6S0uvD46NjqqnE8Xe42d+f9hK+y8c6jNrdcGm9QAAAABJRU5ErkJggg=="; const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent( this.Help )); if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET); else sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); |
LittleMontana > 18-05-2015 17:48:04 |
Я так понял, второй код надо в окошко "код" новой кнопки? Код Stylish для убирания вкладок: #TabsToolbar { visibility: collapse !important; } #main-window[sizemode="normal"] > #titlebar { upd: отключил все стили - перезагрузился - появилась панелька вкладок кнопка для скрытия панели вкладок var css = "#main-window #TabsToolbar {visibility: collapse !important;}"; css = css + "#main-window[sizemode=normal] #titlebar {-moz-appearance: none !important;}"; const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); this.onclick = function(e) { а как в коде вставить картинки? что б при работающей кнопке - одно, при не работающей - другое. щас пытаюсь тот код проанализировать, с лампочкой, но если кому не сложно, отредактируйте эту кнопку, с картинками из предыдущего сообщения. спасибо |
HaGEN > 18-05-2015 19:24:58 |
Да. А во вкладке Help нужный стиль. Init. пустая. скрытый текст URl Выделить код Код: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%3E%u041A%u043E%u043D%u0432%u0435%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0432%20base64%20-%20%u0440%u0435%u0437%u0443%u043B%u044C%u0442%u0430%u0442%20%u0432%20%u0431%u0443%u0444%u0435%u0440%u0435%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/vnd.microsoft.icon%3Bbase64%2CAAABAAEAEBAAACAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiIzWwkbMGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYoOlMQJT1iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcMkZyDCA4fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAkjO24ZRnHZGUd0/h5Ne/wVP2bLBhwuVQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAACZLc8EMITqXAAIDIBM/ZbghUID/G1B85B5Ods8XR3LbG0998SFVh/8NL0+QAAEEGylFXpcfQmnFAAAAAAAAAAAAAAAAEic9RyJSfPceRnD/ED9gnQAAAAAaKz1WDyU7ZAIRGgcURGy8H0Zw/x1PgfELHTFHAAAAAAAAAAAAAAAAAAAAAAAAAAAkWYPuLVt+7CFGbukAAwg5IzdKfBYrR4YIDxU7MVh/5xdCafgVPmXEAAAAAAAAAAAAAAAAAAAAAAAAAAAGFx4kIVF//xY6TngDChMNLVl1tT6+8f8ritv/GEButgIIDgoWPFmlHVB+/QAAAAAAAAAAAAAAAAAAAAAAAAAABBkjJyBOfP8ML0FyAAAAABpPZqhK5fv/V9X4/xk4UqUAAAAAHkFZoCBWhv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAGCAIfWYX3GlBz4RtGdOoKHDNQLmFyiiJRaJQYLUNRMVd86iBTefAjVXzQAAAAAAAAAAAAAAAAAAAAAAAAAAAGDxg0HViB8xxHcf8OO0+FAAAAABEfMlMHEyRhAAAAABBCXqYcQGn/IE916wIGDDMAAAAAAAAAAAAAAAAjRGW0EjJVpwggMTkbWH3UH0x4/xNHYcQfT2q8EkFeyBdNbtYhTXv/FlJ4swscLS8qTG+pGjdWsgAAAAAAAAAABhIfIQAAAAAAAAAAAxQZCRRUcJQeW4b5HUZw/x5Icf8fYI7vEEhkewAAAAAAAAAAAAAAAAcTIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARIXARxIYYUQPFqPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARITNQCRksXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzVNYg4nQ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAP5/AAD+fwAAuB0AAIABAADCAwAA4AcAAMAHAADEJwAAwAcAAMJDAACAAQAAsB0AAPx/AAD+fwAA/n8AAA%3D%3D%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0Avar%20filePicker%20%3D%20Cc%5B%27@mozilla.org/filepicker%3B1%27%5D.createInstance%28Ci.nsIFilePicker%29%3B%0AfilePicker.init%28window%2C%20%22%u0424%u0430%u0439%u043B%22%2C%20filePicker.modeOpen%29%3B%0AfilePicker.appendFilters%28filePicker.filterImages%29%3B%0A%0Aif%20%28filePicker.show%28%29%20%3D%3D%20filePicker.returnOK%29%20%7B%0A%0A%09var%20url%20%3D%20filePicker.fileURL.spec%3B%0A%09var%20ext%20%3D%20url.substring%28url.lastIndexOf%28%22.%22%29%20+%201%2C%20url.length%29%3B%0A%09var%20mimeType%3B%0A%0A%09var%20mimeTypes%20%3D%20%7B%0A%09%0A%09%09png%3A%20%22png%22%2C%0A%09%09jpg%3A%20%22jpeg%22%2C%0A%09%09ico%3A%20%22vnd.microsoft.icon%22%2C%0A%09%09gif%3A%20%22gif%22%2C%0A%09%09bmp%3A%20%22x-bmp%22%0A//%09%09bla%3A%20%22bla-bla-bla%22%0A%09%7D%0A%09if%20%28ext%20in%20mimeTypes%29%20mimeType%20%3D%20%22image/%22%20+%20mimeTypes%5Bext%5D%0A%09else%20mimeType%20%3D%20%22%22%3B%0A%09%0A%09var%20req%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%09req.open%28%22GET%22%2C%20url%2C%20true%29%3B%0A%09req.responseType%20%3D%20%22blob%22%3B%0A%09req.onload%20%3D%20function%28%29%20%7B%0A%0A%09%09var%20reader%20%3D%20new%20FileReader%28%29%3B%0A%09%09reader.onload%20%3D%20function%28%29%20%7B%0A%09%09%0A%09%09%09var%20result%20%3D%20%22data%3A%22%20+%20mimeType%20+%20%22%3Bbase64%2C%22%20+%20btoa%28reader.result%29%3B%0A%09%09%09gClipboard.write%28result%29%3B%0A%09%09%7D%0A%09%09reader.readAsBinaryString%28req.response%29%3B%0A%09%7D%0A%09req.send%28null%29%3B%0A%7D%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 Code Выделить код Код:var filePicker = Cc['@mozilla.org/filepicker;1'].createInstance(Ci.nsIFilePicker); filePicker.init(window, "Файл", filePicker.modeOpen); filePicker.appendFilters(filePicker.filterImages); if (filePicker.show() == filePicker.returnOK) { var url = filePicker.fileURL.spec; var ext = url.substring(url.lastIndexOf(".") + 1, url.length); var mimeType; var mimeTypes = { png: "png", jpg: "jpeg", ico: "vnd.microsoft.icon", gif: "gif", bmp: "x-bmp" // bla: "bla-bla-bla" } if (ext in mimeTypes) mimeType = "image/" + mimeTypes[ext] else mimeType = ""; var req = new XMLHttpRequest(); req.open("GET", url, true); req.responseType = "blob"; req.onload = function() { var reader = new FileReader(); reader.onload = function() { var result = "data:" + mimeType + ";base64," + btoa(reader.result); gClipboard.write(result); } reader.readAsBinaryString(req.response); } req.send(null); } 18-05-2015 19:25:49 зы. шо надобно, какую(~ие) иконку? довай кидай, сделаем. |
LittleMontana > 18-05-2015 20:27:00 |
Да нет, хотел, что бы вы изменили кнопку в последнем моем сообщении, что бы при нажатии на неё погасала или загоралась лампочка)) |
bunda1 > 18-05-2015 22:34:50 |
LittleMontana пишет
А эсли так Выделить код Код:this._handleClick = ()=> setStyleForPages(cbu.checked = !cbu.checked); var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var styleImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAArVJREFUeJxtkktoVGcUx3/fd+/ceahMRum0E6vB+IKYFtpqFRFJu+imrgRdBkFoKC5cCC5cOM7GnQuXFqTSbqQWSsGFjS22Gsn4SqJJFCXJjBlnJol5mHHinbn3zj1dTKdMZA4c+M7hf37nnI+jeM8eXiLQGSMSqfGhrvEBBlqExYrLTC7M2+6jOM161Ry8uEhwU4L23Py2c/HNO7ujnT1xtKFLL++XFqaHn21c9/zsokMm0cvK+425lcS0f6Uze7nrD5n6uSrvJkWc6brbGZFiv+R++vKBc43dmR8JNep049Gx5+T+3HznuU37jn1FdL1F9QHYd+peSUOwwscHvt9dKO08rzf0HmxM3wAoT/zPQ5b1qQrYAakMggyDHgFjBNQI4qQR8lihtu6ayN5ksg4wAZJJlMHbsFa1GM4oRHwwXQh69T7KgIoJroWmEjVUeW0P6BT4ZmOFSNCZ8LXj4TwBX8CxQf8HsDXKDyOuCeL4kbD9ctUfpFL4y257vIaaQQdRfpHs3VdgzUBohuydAnivQENN67mS81H0b/D/XwHANAMjK57uEj/WRWRLG/oeSA18H0wFaz6DcoBq9emQDsbSqVQdYDQAsa0D+W8/WRotTskX0fZdW2M7viY74FIYi7K95wjiriefHnyUSGROZSfTQz9crwNW2fQvhJ0b7M9f7ZiUQq/I/BUZv3pIZO6EFH/b8cbt5/DiTaLNNbo5uDxOtbrCRLXsjPu527B8nY7EEOT/xFsuT3g2w48HVl/hqlMGkEsE7Hhoz9hCz81YdG1EIwgW8dDgd+sK2SuqDw+QlhMAqD5czzBfDFW+Md5tO4219wJ/zR/wXRUcV324zcUtAQA3HpVLPtaCFW7DCITQZtibXVKZVlqjVfLaP9Rml1b6S0uvD46NjqqnE8Xe42d+f9hK+y8c6jNrdcGm9QAAAABJRU5ErkJggg=="; function setStyleForPages() { var css = self.Help; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent(css)); try { sss.unregisterSheet(cbu.previousUri || uri, 0) } catch(e) {}; cbu.previousUri = uri; cbu.checked && sss.loadAndRegisterSheet(uri, 0); icon.src = cbu.checked ? styleImage : self.image; }; cbu.checked && setStyleForPages(); 18-05-2015 22:36:15 |
HaGEN > 18-05-2015 22:42:27 |
LittleMontana ЯННП скрытый текст URl Выделить код Код: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%3E%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u043F%u0430%u043D%u0435%u043B%u044C.%20%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C/%u0441%u043A%u0440%u044B%u0442%u044C%202%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.checked%20%3D%20%21this.checked%3B%0A%0Aif%20%28%20this.%20checked%20%29%20%0Athis.image%20%3D%20%22data%3Aimage/x-icon%3Bbase64%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%22%3B%0Aelse%20%0Athis.image%20%3D%20%22data%3Aimage/x-icon%3Bbase64%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%22%3B%0A%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20this.Help%20%29%29%3B%0A%0Aif%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Aelse%20%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5BAlt+w%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%23main-window%20%23TabsToolbar%20%7B%0A%09visibility%3A%20collapse%20%21important%3B%0A%09%7D%0A%09%0A%23main-window%5Bsizemode%3Dnormal%5D%0A%23titlebar%20%7B%0A%09-moz-appearance%3A%20none%20%21important%3B%0A%09%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Код Выделить код Код:this.checked = !this.checked; if ( this. checked ) this.image = "data:image/x-icon;base64,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"; else this.image = "data:image/x-icon;base64,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"; const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent( this.Help )); if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET); else sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); Help Выделить код Код:#main-window #TabsToolbar { visibility: collapse !important; } #main-window[sizemode=normal] #titlebar { -moz-appearance: none !important; } |
LittleMontana > 19-05-2015 11:36:57 |
Ребят, при установке новой кнопки (через URL), диалоговое окно установки кнопки появляется 2 раза. Если нажать только один раз установить - то кнопка не появляется. С чем это может быть связанно ?Особо не мешает, но при создании новых кнопок самому, становится невозможно вытащить кнопку какую надо. кнопка var css = "#main-window #TabsToolbar {visibility: collapse !important;}"; css = css + "#main-window[sizemode=normal] #titlebar {-moz-appearance: none !important;}"; const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); this.onclick = function(e) { |
Mishania > 19-05-2015 11:46:35 |
LittleMontana |
LittleMontana > 19-05-2015 12:41:01 |
Мб в этом проблема? searchlinkfix других похожих не находил |
Dumby > 19-05-2015 13:52:25 |
LittleMontana пишет
У меня аналогично. Два раза — это минимум. Копирую URL кнопки в буфер обмена. LittleMontana пишет
Кнопка-переключалка Stylish'ного стиля. По имени стиля. скрытый текст Выделить код Код:gBrowser.currentURI.spec == "about:customizing" || (am => { var styleName = "Здесь имя стиля"; var imageStyleEnabled = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAArVJREFUeJxtkktoVGcUx3/fd+/ceahMRum0E6vB+IKYFtpqFRFJu+imrgRdBkFoKC5cCC5cOM7GnQuXFqTSbqQWSsGFjS22Gsn4SqJJFCXJjBlnJol5mHHinbn3zj1dTKdMZA4c+M7hf37nnI+jeM8eXiLQGSMSqfGhrvEBBlqExYrLTC7M2+6jOM161Ry8uEhwU4L23Py2c/HNO7ujnT1xtKFLL++XFqaHn21c9/zsokMm0cvK+425lcS0f6Uze7nrD5n6uSrvJkWc6brbGZFiv+R++vKBc43dmR8JNep049Gx5+T+3HznuU37jn1FdL1F9QHYd+peSUOwwscHvt9dKO08rzf0HmxM3wAoT/zPQ5b1qQrYAakMggyDHgFjBNQI4qQR8lihtu6ayN5ksg4wAZJJlMHbsFa1GM4oRHwwXQh69T7KgIoJroWmEjVUeW0P6BT4ZmOFSNCZ8LXj4TwBX8CxQf8HsDXKDyOuCeL4kbD9ctUfpFL4y257vIaaQQdRfpHs3VdgzUBohuydAnivQENN67mS81H0b/D/XwHANAMjK57uEj/WRWRLG/oeSA18H0wFaz6DcoBq9emQDsbSqVQdYDQAsa0D+W8/WRotTskX0fZdW2M7viY74FIYi7K95wjiriefHnyUSGROZSfTQz9crwNW2fQvhJ0b7M9f7ZiUQq/I/BUZv3pIZO6EFH/b8cbt5/DiTaLNNbo5uDxOtbrCRLXsjPu527B8nY7EEOT/xFsuT3g2w48HVl/hqlMGkEsE7Hhoz9hCz81YdG1EIwgW8dDgd+sK2SuqDw+QlhMAqD5czzBfDFW+Md5tO4219wJ/zR/wXRUcV324zcUtAQA3HpVLPtaCFW7DCITQZtibXVKZVlqjVfLaP9Rml1b6S0uvD46NjqqnE8Xe42d+f9hK+y8c6jNrdcGm9QAAAABJRU5ErkJggg=="; var imageStyleDisabled = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAm1JREFUOI2Nkt1LU3EYx59zzs45m245p5buzaUiQV0V5AIRoswSItCY0UVXdtFf0z8QRFCwC6PCEAqL7CaYzZelc7rmltvOOjvbztzO287br6tgzS187r4Pn+8HHngwaDOTN+apiYkrd69PBYMUSeIbWzuR8NLy8ta3FamVJVoXs/OLAa/X++LRw7nQ+KjfeW7AdXbY77ufSudu2Xs90ezhLtfMY83h3sIi7fH43wT8ngZNQnRgoM9KYnqqIqDbotS4FE8ciJn04fTq+5fHfzt4s6Cvr39m9ubEHoVJr0AXIpJQ35V0epq2dg339DjEhbk7g263e76584+gwGTx8bERUpFFCQF00Tb7NYrEKQL0JE3iRZ9nULh4YcTT3LE0B9M0Ecdx+y6XSx7yBIYsFM2auvaDop3nZUVhMTCYMw5bpaPAMFD5y9pXYXQkgOx2+5CBAaFbCC9JYBXMStZ/ZdJCMpnKdTzBRBD7mWZcmqapslhbrwvCoW4YrIXAyoosZD6srvGZo/x2R8HnlXCtwPFZpsDRkiRUE8kcn2e4YqlSzWdzeSVX4EoP5maqHQUAAFYr/T22l3LUajVUYFlrLL5PHFeK1c1YoluS1e1QKAT/FbwNP9N5/jgnKSpO07hIUZjYUDUolfji8tLzRit/4hMBADCccKia8USVpUlNkS9nj5jxeHwnwhayv1tZSztBkUkJypj7sbt/FLd1dYPP70OfPr572o49cQIAgGkivVrlkc1GQTB4FcplDhoN1Ti1ACGoIYRFWJaDSGQdNje3DkzT5E8tqNfryl7iYPZMjzPs7O19HY1uTHFcqdyO/QM+cS7YiGvNZgAAAABJRU5ErkJggg=="; am.getAddonsByTypes(["userstyle"], addons => { var addon = addons.find(addon => addon.name == styleName); if (!addon) { alert("«" + styleName + "»\n\nStyle Not Found"); return; } self._handleClick = () => addon.userDisabled = !addon.userDisabled; var [img] = document.getAnonymousNodes(self); function setImg() img.src = addon.userDisabled ? imageStyleDisabled : imageStyleEnabled; setImg(); var listener = {}; listener.onEnabling = listener.onDisabling = candidate => { if (candidate.type == "userstyle" && candidate.name == styleName) { addon = candidate; setImg(); } } am.addAddonListener(listener); addDestructor(() => am.removeAddonListener(listener)); }); })(AddonManager); |
HaGEN > 19-05-2015 14:19:28 |
LittleMontana пишет
Именно это я и сделал постом выше! В том(твоём) куске кода CSS-код юзаецца через переменные, а мну просто сделал его в отдельном табе и с иконкой. Работает и на PaleMoon и на FF 29-36 у мну, проверил спец. Выделить код Код:var bar = document.getElementById("TabsToolbar"); // тут id панели("nav-bar", "TabsToolbar" или другие. setToolbarVisibility(bar, bar.collapsed); чего и вам желаю! |
LittleMontana > 19-05-2015 20:05:46 |
HaGEN |
amid525 > 21-05-2015 17:11:07 |
Не подскажите, что нужно изменить в коде кнопки истории, что бы при клике по иконке, поменять ф-цию средней кнопки мыши на левую? скрытый текст Выделить код Код:var menu = document. getElementById ("goPopup"). cloneNode (true); for (var i = 0; i < menu. childNodes. length; i++) { if (menu. childNodes [i]. hasAttribute ("id")) menu. childNodes [i]. setAttribute ("hidden", "true"); } menu. setAttribute ("place", "type=0&sort=4&maxResults=37"); function delId(node) { node.removeAttribute("id"); Array.forEach(node.childNodes, delId); } delId(menu); this. appendChild (menu); //this. type = "menu"; //this. orient = "horizontal"; this. setAttribute ("popup", menu. id = "cbHistory-" + this. id); this. onclick = function (event) { var node = event. originalTarget. node; if ((event. button < 2) && node) { PlacesUIUtils. markPageAsTyped (node. uri); openUILink (node. uri, event, false, true); } else if (event. button == 1) PlacesCommandHook.showPlacesOrganizer('History'); else if (event. button == 2) { if (event. shiftKey || (event. originalTarget. nodeName != "toolbarbutton")) return; toggleSidebar ("viewHistorySidebar"); event. preventDefault (); event. stopPropagation (); } }; |
init > 22-05-2015 16:14:35 |
Я думаю так: Выделить код Код:if ((event. button == 0)) PlacesCommandHook.showPlacesOrganizer('History'); else if ((event. button < 2) && node) { PlacesUIUtils. markPageAsTyped (node. uri); openUILink (node. uri, event, false, true); } А просто циферки поменять может и не сработать. |
villa7 > 24-05-2015 11:00:46 |
bunda1 скрытый текст Выделить код Код:this._handleClick = ()=> setStyleForPages(cbu.checked = !cbu.checked); var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var styleImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAArVJREFUeJxtkktoVGcUx3/fd+/ceahMRum0E6vB+IKYFtpqFRFJu+imrgRdBkFoKC5cCC5cOM7GnQuXFqTSbqQWSsGFjS22Gsn4SqJJFCXJjBlnJol5mHHinbn3zj1dTKdMZA4c+M7hf37nnI+jeM8eXiLQGSMSqfGhrvEBBlqExYrLTC7M2+6jOM161Ry8uEhwU4L23Py2c/HNO7ujnT1xtKFLL++XFqaHn21c9/zsokMm0cvK+425lcS0f6Uze7nrD5n6uSrvJkWc6brbGZFiv+R++vKBc43dmR8JNep049Gx5+T+3HznuU37jn1FdL1F9QHYd+peSUOwwscHvt9dKO08rzf0HmxM3wAoT/zPQ5b1qQrYAakMggyDHgFjBNQI4qQR8lihtu6ayN5ksg4wAZJJlMHbsFa1GM4oRHwwXQh69T7KgIoJroWmEjVUeW0P6BT4ZmOFSNCZ8LXj4TwBX8CxQf8HsDXKDyOuCeL4kbD9ctUfpFL4y257vIaaQQdRfpHs3VdgzUBohuydAnivQENN67mS81H0b/D/XwHANAMjK57uEj/WRWRLG/oeSA18H0wFaz6DcoBq9emQDsbSqVQdYDQAsa0D+W8/WRotTskX0fZdW2M7viY74FIYi7K95wjiriefHnyUSGROZSfTQz9crwNW2fQvhJ0b7M9f7ZiUQq/I/BUZv3pIZO6EFH/b8cbt5/DiTaLNNbo5uDxOtbrCRLXsjPu527B8nY7EEOT/xFsuT3g2w48HVl/hqlMGkEsE7Hhoz9hCz81YdG1EIwgW8dDgd+sK2SuqDw+QlhMAqD5czzBfDFW+Md5tO4219wJ/zR/wXRUcV324zcUtAQA3HpVLPtaCFW7DCITQZtibXVKZVlqjVfLaP9Rml1b6S0uvD46NjqqnE8Xe42d+f9hK+y8c6jNrdcGm9QAAAABJRU5ErkJggg=="; function setStyleForPages() { var css = self.Help; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent(css)); try { sss.unregisterSheet(cbu.previousUri || uri, 0) } catch(e) {}; cbu.previousUri = uri; cbu.checked && sss.loadAndRegisterSheet(uri, 0); icon.src = cbu.checked ? styleImage : self.image; }; cbu.checked && setStyleForPages(); |
bunda1 > 24-05-2015 11:23:04 |
villa7 Выделить код Код:// ЛКМ переключить настройки кнопки и стиль .......... this._handleClick = function() setStyleForPages(void(run.value = !run.value)); // Создать настройки кнопки в about:config если они не существует .......... var s = "CB" + _id.slice(20) + ".setStyleForPage"; cbu.isPref(s, false); var previousUri = "CB" + _id.slice(20) + ".previousUri"; // Иконка для включеной кнопки .......... var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var styleImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAArVJREFUeJxtkktoVGcUx3/fd+/ceahMRum0E6vB+IKYFtpqFRFJu+imrgRdBkFoKC5cCC5cOM7GnQuXFqTSbqQWSsGFjS22Gsn4SqJJFCXJjBlnJol5mHHinbn3zj1dTKdMZA4c+M7hf37nnI+jeM8eXiLQGSMSqfGhrvEBBlqExYrLTC7M2+6jOM161Ry8uEhwU4L23Py2c/HNO7ujnT1xtKFLL++XFqaHn21c9/zsokMm0cvK+425lcS0f6Uze7nrD5n6uSrvJkWc6brbGZFiv+R++vKBc43dmR8JNep049Gx5+T+3HznuU37jn1FdL1F9QHYd+peSUOwwscHvt9dKO08rzf0HmxM3wAoT/zPQ5b1qQrYAakMggyDHgFjBNQI4qQR8lihtu6ayN5ksg4wAZJJlMHbsFa1GM4oRHwwXQh69T7KgIoJroWmEjVUeW0P6BT4ZmOFSNCZ8LXj4TwBX8CxQf8HsDXKDyOuCeL4kbD9ctUfpFL4y257vIaaQQdRfpHs3VdgzUBohuydAnivQENN67mS81H0b/D/XwHANAMjK57uEj/WRWRLG/oeSA18H0wFaz6DcoBq9emQDsbSqVQdYDQAsa0D+W8/WRotTskX0fZdW2M7viY74FIYi7K95wjiriefHnyUSGROZSfTQz9crwNW2fQvhJ0b7M9f7ZiUQq/I/BUZv3pIZO6EFH/b8cbt5/DiTaLNNbo5uDxOtbrCRLXsjPu527B8nY7EEOT/xFsuT3g2w48HVl/hqlMGkEsE7Hhoz9hCz81YdG1EIwgW8dDgd+sK2SuqDw+QlhMAqD5czzBfDFW+Md5tO4219wJ/zR/wXRUcV324zcUtAQA3HpVLPtaCFW7DCITQZtibXVKZVlqjVfLaP9Rml1b6S0uvD46NjqqnE8Xe42d+f9hK+y8c6jNrdcGm9QAAAABJRU5ErkJggg=="; // Получить настройки кнопки и css код из вкладки Справка .......... var css = self.Help; var run = Application.prefs.get(s); // Переключить css стиль для страницы .......... function setStyleForPages(reason) { if ( reason == "destructor" ) return; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent(css)); try { sss.unregisterSheet(Services[_id + "previousUri"] || uri, 0) } catch(e) {}; Services[_id + "previousUri"] = uri; run.value && !reason && sss.loadAndRegisterSheet( uri, 0 ); icon.src = run.value ? styleImage : self.image; }; addDestructor(setStyleForPages); run.value && setStyleForPages(); |
villa7 > 24-05-2015 12:51:48 |
bunda1 |
Dumby > 24-05-2015 14:14:24 |
bunda1 пишет
Прикинь, Application будет уничтожен |
bunda1 > 24-05-2015 15:54:53 |
Это плохо, опять всё переделывать. А что вместо него можно использовать если надо что типа этого: или просто что бы записать в настройку через pref.value = 'qwerty' |
Dumby > 24-05-2015 17:13:16 |
bunda1 пишет
Ну, на Nightly, можно приглядеться к Но остаётся глупая надежда, что кто-нибудь И что AMO его подпишет. |
turbot > 27-05-2015 19:15:42 |
bunda1 Выделить код Код:NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref] button.js:45:0 и на (при инициализации): Спасибо. 27-05-2015 19:24:46 |
bunda1 > 27-05-2015 19:33:38 |
turbot пишет
Да эту кнопку давно пора обновить, на днях переделаю. turbot пишет
Мистика однако |
turbot > 27-05-2015 19:41:37 |
bunda1 пишет
Спасибо. |
bunda1 > 27-05-2015 19:49:06 |
turbot пишет
Можно и не сложно, можно даже стилем сделать и то что делает Red links тоже, если использовать -moz-binding: но тут я не специалист. 27-05-2015 20:08:41 |
turbot > 27-05-2015 20:14:22 |
bunda1 |
bunda1 > 27-05-2015 20:15:27 |
Понятно. |
villa7 > 28-05-2015 19:41:16 |
Можно как то вытащить кнопки из адресной строки в отдельные кнопки? |
turbot > 28-05-2015 19:50:03 |
villa7 |
villa7 > 28-05-2015 20:39:17 |
turbot |
turbot > 28-05-2015 21:18:14 |
villa7 скрытый текст Выделить код Код:(function() { var mc = document.getElementById("notification-popup-box"); mcc = mc.cloneNode(true); mcc.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional'); document.getElementById("urlbar-wrapper").parentNode.insertBefore(mcc, document.getElementById("urlbar-wrapper")); // вместо urlbar-wrapper - id элемента, перед которым вставляем })(); Вроде, работает: (код у bunda1 стащил. спасибки - ему) |
villa7 > 28-05-2015 22:58:04 |
turbot |
turbot > 28-05-2015 23:12:15 |
villa7 |
LittleMontana > 29-05-2015 19:02:07 |
Есть ли способ в дополнение All-in-one sidebar убрать в боковой панели, точнее сделать так, что бы с помощью CB показывались прятались следующие заголовки (как их еще обозвать, не знаю) |
KOT040188 > 29-05-2015 19:06:43 |
Нужна кнопка, аналог пункта "вставить и перейти". Если в буфере ссылка, то будет переход по ней, если просто текст то поиск в поисковике по умолчанию. Результат должен открываться в текущей вкладке. Возможно ли такое? Сам в написании кнопок не силён. |
villa7 > 29-05-2015 19:32:45 |
KOT040188 |
KOT040188 > 29-05-2015 19:36:25 |
villa7 |
villa7 > 29-05-2015 21:34:28 |
KOT040188 |
turbot > 29-05-2015 23:14:09 |
KOT040188 пишет
Дешево и сердито: Выделить код Код: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%3EGo%20or%20Search%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACPklEQVQ4ja2Rv2saYRjH3zM2/0CHDtk6uLhkEXvleJ/nUDlDzmwZxOPgHFKdxEXiEs9foHHQSUfBQSVrF0vI3dZBdDUglJgO6S+KEFNCW9Kny1lU2tKhLzy8PLzP+32+n+dh7H8eAIgAgAUACycsRFT/+sk0TRdjjCFiCRHJiRkAfFjJS065sLyPjo4e/coRUUVEAoC3nPPnS3FElADgynmLbIisWbecTs82nAmSJPllWSYAsDa+CYeHh1tLgVtEnP2BUnCQblcRTNN0IaL7XwSYLMszRFw4AoJt227Hoet3CGuMkiT5nRlsIqzNIOIUXa/MQQAAMRAIzBCROOcvzs7Otle6C6vNhNU1KopyXSgUqNVqUSaTIVmWSVGUT7lc7nuz2aR8Pv9uuX7GGGO2bbsZY4xzfrC/v/+6UqnQzc0NTadTOj8/p3K5TKenpzSZTGg6nZJt2/fVavVlNBp9soZimqY7nU4vxuMxnZycUCgUIk3TqFarUTqdJk3TKBgMUjab/WFZFiWTyTeMMba1ZPF6vdvZbJZGo9F7xphLFMXFYDCg4XBIFxcX1O12SRRFAoCPlmU9HB8fP6w58Hg8T3Vdn4/HYwqHw6/8fv83zjmFw2Ha29sjzjmJokiKopBt26Tr+nxNYGdn53EwGLwsFovzTqfzudfrUb1ep0QiQalUihqNBvX7fWq3219KpdI8FApdbm5U8Pl8u4h4FYvF7gzDuDcM46uqqrqqqoF4PH5rGMa9pml3sixf+Xy+3Z/b7CADQxLi/wAAAABJRU5ErkJggg%3D%3D%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*/%0Athis.setAttribute%28%22oncommand%22%2C%20%22gURLBar.select%28%29%3B%20goDoCommand%28%27cmd_paste%27%29%3B%20gURLBar.handleCommand%28%29%3B%22%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 |
KOT040188 > 29-05-2015 23:55:21 |
turbot, спасибо, по идее то, что нужно, но есть один нюанс. У меня линукс и я привык, что все мои кнопки использующие буфер используют мышиный буфер. А эта неожиданно как назло использует обычный. Можно переделать на мышиный? |
turbot > 30-05-2015 00:10:27 |
KOT040188 ![]() Я закоренелый виндузятник. Линуксом пользуюсь только на работе, постольку-поскольку. И не смотрите на UA - это из-за лени (один нужный и дома и на работе сайт имеет раздражающую манеру сбрасывать сессию, при смене юзерагента, вместе со всеми куками настроек (коии в них и хранит)). ![]() |
KOT040188 > 30-05-2015 00:22:34 |
Вот здесь объясняли, что мышиный буфер используется из-за специальной функции. Гляньте пожалуйста ヅ
|
turbot > 30-05-2015 00:44:49 |
KOT040188 скрытый текст (А проверьте-ка, какой буфер использует команда "Paste & Go" в контекстном меню адресной строки. Если нужный, то скопируйте это значение (DOM Inspector + [CB]Attributes Inspector - в помощь) в код кнопки, вместо "gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand();". Оттуда, кстати, и вытащил (потому и "дешево и сердито" ![]() |
KOT040188 > 30-05-2015 00:50:02 |
Обычный буфер
Ну теперь понятно где собака порылась… Жаль, мне нужен именно мышиный буфер… |
bunda1 > 30-05-2015 00:53:43 |
KOT040188 пишет
|
KOT040188 > 30-05-2015 00:57:43 |
bunda1, и куда это вставлять? |
turbot > 30-05-2015 00:57:44 |
KOT040188 30-05-2015 00:59:08 KOT040188 пишет
Выделить код Код:gURLBar.select(); gClipboard.read(); goDoCommand('cmd_paste'); gURLBar.handleCommand(); Если я правильно догадался. |
KOT040188 > 30-05-2015 01:18:54 |
turbot, а это куда вставлять ? |
turbot > 30-05-2015 01:20:41 |
KOT040188 |
KOT040188 > 30-05-2015 01:23:06 |
Ладно, завтра попробую. |
bunda1 > 30-05-2015 02:16:54 |
Похоже я ошибся, gClipboard.read(); тоже общий буфер обмена. |
KOT040188 > 30-05-2015 02:18:21 |
В смысле обычный? |
bunda1 > 30-05-2015 02:22:25 |
KOT040188 пишет
В смысле общий |
KOT040188 > 30-05-2015 16:18:44 |
Выделить код Код:gURLBar.select(); gClipboard.read(); goDoCommand('cmd_paste'); gURLBar.handleCommand(); С этим кнопка вообще не работает. |
bunda1 > 30-05-2015 17:12:33 |
KOT040188 |
KOT040188 > 30-05-2015 17:15:11 |
C этим тоже. Может я что не так делаю. Кнопка: Выделить код Код: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%3EGo%20or%20Search%20%u043E%u0431%u044B%u0447%u043D%u044B%u0439%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACPklEQVQ4ja2Rv2saYRjH3zM2/0CHDtk6uLhkEXvleJ/nUDlDzmwZxOPgHFKdxEXiEs9foHHQSUfBQSVrF0vI3dZBdDUglJgO6S+KEFNCW9Kny1lU2tKhLzy8PLzP+32+n+dh7H8eAIgAgAUACycsRFT/+sk0TRdjjCFiCRHJiRkAfFjJS065sLyPjo4e/coRUUVEAoC3nPPnS3FElADgynmLbIisWbecTs82nAmSJPllWSYAsDa+CYeHh1tLgVtEnP2BUnCQblcRTNN0IaL7XwSYLMszRFw4AoJt227Hoet3CGuMkiT5nRlsIqzNIOIUXa/MQQAAMRAIzBCROOcvzs7Otle6C6vNhNU1KopyXSgUqNVqUSaTIVmWSVGUT7lc7nuz2aR8Pv9uuX7GGGO2bbsZY4xzfrC/v/+6UqnQzc0NTadTOj8/p3K5TKenpzSZTGg6nZJt2/fVavVlNBp9soZimqY7nU4vxuMxnZycUCgUIk3TqFarUTqdJk3TKBgMUjab/WFZFiWTyTeMMba1ZPF6vdvZbJZGo9F7xphLFMXFYDCg4XBIFxcX1O12SRRFAoCPlmU9HB8fP6w58Hg8T3Vdn4/HYwqHw6/8fv83zjmFw2Ha29sjzjmJokiKopBt26Tr+nxNYGdn53EwGLwsFovzTqfzudfrUb1ep0QiQalUihqNBvX7fWq3219KpdI8FApdbm5U8Pl8u4h4FYvF7gzDuDcM46uqqrqqqoF4PH5rGMa9pml3sixf+Xy+3Z/b7CADQxLi/wAAAABJRU5ErkJggg%3D%3D%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*/%0Athis.setAttribute%28%22gURLBar.value%20%3D%20gClipboard.read%28%29%3B%20gURLBar.handleCommand%28%29%3B%22%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 |
turbot > 30-05-2015 17:22:31 |
KOT040188 > 30-05-2015 23:20:22 |
Так это всё равно не мышиный буфер. |
KOT040188 > 03-06-2015 23:50:44 |
turbot пишет
Ну так что там слышно? |
Ultima2m > 04-06-2015 06:58:33 |
Привет. |
villa7 > 04-06-2015 08:26:49 |
Ultima2m скрытый текст Выделить код Код:.box-inherit.toolbarbutton-menubutton-button[label="Greasemonkey"] {-moz-appearance: none !important; display: none !important;} /*Иконка*/ #greasemonkey-tbb > .toolbarbutton-menubutton-dropmarker {-moz-appearance: none !important; list-style-image: url("data:image/png;base64,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") !important; -moz-image-region: auto !important; } |
Ultima2m > 04-06-2015 09:09:33 |
villa7 |
villa7 > 04-06-2015 09:20:23 |
Ultima2m |
turbot > 04-06-2015 12:35:47 |
KOT040188 Ultima2m Выделить код Код:document.getElementById("greasemonkey-tbb").setAttribute('type', "menu"); document.getElementById("greasemonkey-tbb").setAttribute('oncontextmenu', 'if (event.target == this && !event.ctrlKey && !event.shiftKey) {event.preventDefault(); event.stopPropagation(); doCommand();}'); В инициализацию любой кнопки. ЛКМ по кнопке greasemonkey - попап, ПКМ - вкл/выкл. Без дропмаркера. |
Ultima2m > 04-06-2015 12:45:14 |
turbot |
turbot > 04-06-2015 17:09:00 |
Ultima2m |
Dumby > 04-06-2015 18:22:01 |
turbot пишет
А так проверял ? скрытый текст Выделить код Код:var str = readFromClipboard(); if (str) { gURLBar.value = str; gURLBar.handleCommand(); } turbot пишет
Может скрытый текст Выделить код Код:document.getElementById("greasemonkey-tbb").setAttribute('oncontextmenu', 'if (event.target == this && !event.ctrlKey && !event.shiftKey) {event.preventDefault(); event.stopPropagation(); GM_util.setEnabled(!GM_util.getEnabled()); GM_BrowserUI.refreshStatus();}'); // ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ |
turbot > 04-06-2015 18:35:45 |
Dumby пишет
О, спасибо. Поправил. Dumby пишет
Э, нет. Меня куда-то совсем в другие дебри понесло. |
KOT040188 > 04-06-2015 23:26:56 |
turbot пишет
Поздно заметил. Завтра проверю… |
KOT040188 > 05-06-2015 13:00:50 |
Dumby пишет
Гениально! То что нужно! А можно добавить к этой кнопке отображение содержимого мышиного буфера при наведении на неё? |
Dumby > 06-06-2015 00:57:08 |
KOT040188 пишет
Разве что попробую вслепую. В Инициализацию. скрытый текст Выделить код Код:(() => { var header = "Содержимое мышиного буфера:\n\n"; var readFromSelectionClipboard = eval("(" + String.replace(readFromClipboard, /else\n.+\n/, "") + ")"); self.onmouseenter = () => self.tooltipText = header + (readFromSelectionClipboard() || ""); })(); |
KOT040188 > 07-06-2015 14:47:45 |
Dumby, спасибо работает. |
Kiril__777 > 12-06-2015 12:46:53 |
https://forum.mozilla-russia.org/viewtopic.php?pid=663560#p663560 |
bunda1 > 12-06-2015 14:42:20 |
Kiril__777 пишет
Иконки вкладок? |
Kiril__777 > 12-06-2015 14:45:44 |
bunda1 пишет
иконки кнопки |
manuk > 13-06-2015 18:43:21 |
Можно ли сделать кнопку "Вкл-Выкл. автообновление активной (или всех) вкладки через 5 минут? |
turbot > 13-06-2015 18:46:11 |
manuk |
manuk > 13-06-2015 19:06:12 |
turbot, спасибо. Поиском сам не нашёл. |
bunda1 > 13-06-2015 23:03:40 |
manuk пишет
|
turbot > 13-06-2015 23:39:33 |
bunda1 пишет
Упс, я как-то ее пропустил. bunda1 пишет
У меня не реагирует... 13-06-2015 23:59:56 |
manuk > 14-06-2015 11:29:41 |
bunda1, благодарю. Эта кнопка удобней. |
LittleMontana > 15-06-2015 14:40:49 |
Дублирую сообщение под номером 832. Помогите пожалуйста Есть ли способ в дополнение All-in-one sidebar убрать в боковой панели, точнее сделать так, что бы с помощью CB показывались (и прятались) следующие заголовки (как их еще обозвать, не знаю) |
villa7 > 15-06-2015 16:06:33 |
LittleMontana |
manuk > 15-06-2015 16:11:54 |
Снова не нашёл... Может есть кнопка, которая листает вперёд страницы в поисковике (Яндекс, Гугл)? Аддон https://addons.mozilla.org/ru/firefox/a … xt/?src=ss какой-то кривоватый. |
turbot > 15-06-2015 16:56:21 |
manuk |
manuk > 15-06-2015 19:55:35 |
turbot, там немного не то, кроме SpaceNext. А он не очень. Кнопку бы кликабельную для поисковиков (для сочетаний клавиш пальцев маловато). |
LittleMontana > 20-06-2015 13:10:53 |
villa7 пишет
Спасибо большое. Все работает |
Stkvsky > 29-06-2015 16:30:36 |
Здраствуйте. У встроеного html плеера firefox есть в контекстном меню выбор скорости воспроизведения видео - 0.5х 1х 1.5х 2х. Помогите пожалуйста сделать три кнопки (1х,1.5х,2х) на панель навигации. |
Violantius > 01-07-2015 19:41:17 |
Здраствуйте. Помогите создать кнопку, которая будет при ее нажатии копировать и передавать (запуская саму программу) ссылку из адресной строки в программу "4kvideodownloader" а та сама собой будет анализировать эту ссылку (youtube). |
turbot > 01-07-2015 19:46:45 |
Violantius |
Violantius > 01-07-2015 20:05:20 |
turbot пишет
Спасибо, почти то что нужно, но это подходит если плеер запускать. Да я поменял путь к программе и она запускается, но вот только нужно что бы еще и ссылку копировала из буфера и вставляла. Проще говоря нужно так как это реализовано в проге "Freemake Video Downloader" при нажатии кнопки запускается прога и предлагает в каком качестве скачать видео с трубы. |
turbot > 01-07-2015 20:16:30 |
Violantius |
Violantius > 01-07-2015 20:18:09 |
turbot |
Kiril__777 > 02-07-2015 13:47:00 |
https://forum.mozilla-russia.org/viewtopic.php?pid=534793#p534793 |
lokiju > 02-07-2015 14:02:29 |
Kiril__777, UserScriptLoader[работа со скриптами Greasemonkey] | Форум Mozilla Россия. Код из первого поста у меня работает. |
Kiril__777 > 03-07-2015 13:23:54 |
lokiju |
turbot > 05-07-2015 01:38:26 |
bunda1 Еще хотелка: впиндюрить обсервер. В ночнушках теперь можно переключать дефолтный поисковик (с browser.search.showOneOffButtons;true) ctrl+стрелками вверх/вниз (с alt - временно), прямо из поисковой строки, и несколько смущает несменяющаяся с переключением иконка. (Опять-таки, не утверждаю, что именно так нужно, но у меня работает: Выделить код Код:var pref = "browser.search.defaultenginename"; function toggleImage() { self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var uri = Services.search.currentEngine.iconURI.spec; src = self.image = PlacesUtils.getImageURLForResolution(window, uri); }; toggleImage(); gPrefService.addObserver(pref, toggleImage, false); addDestructor(function() gPrefService.removeObserver(pref, toggleImage));
|
bunda1 > 06-07-2015 22:43:30 |
turbot пишет
Спасибо turbot пишет
Не проблема, на днях сделаю.
Выделить код Код:var pref = "browser.search.defaultenginename"; function toggleImage() { self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var uri = Services.search.currentEngine.iconURI.spec; src = self.image = PlacesUtils.getImageURLForResolution(window, uri); }; toggleImage(); gPrefService.addObserver(pref, toggleImage, false); addDestructor(function() gPrefService.removeObserver(pref, toggleImage)); Спасибо, это пригодится в кнопке, только нужно просто self.image |
foxboy > 07-07-2015 07:39:01 |
Можно ли сделать кнопку для https://addons.mozilla.org/ru/firefox/addon/export-cookies/?src=api |
becool > 11-07-2015 11:44:03 |
Можно ли сделать так, чтобы закладки из боковой панели открывались в новой активной вкладке ЛКМ? |
bunda1 > 11-07-2015 12:14:26 |
becool пишет
|
firepox > 17-07-2015 12:07:34 |
Подскажите способ, чтобы кнопки имели квадратный вид. (рамку вокруг иконки) |
turbot > 17-07-2015 15:48:49 |
firepox |
becool > 17-07-2015 17:38:15 |
firepox, https://userstyles.org/styles/45355/fir … ton-styles |
oleg953 > 18-07-2015 15:19:30 |
Всем добрый. В теме "готовые кнопки" была кнопка link master теперь её нет.Может кто продублирует здесь? Спасибо. |
voqabuhe > 18-07-2015 15:44:35 |
oleg953 пишет
Да она просто практически перестала работать, вот её наверное и ликвидировали за ненадобностью. |
villa7 > 18-07-2015 15:52:39 |
oleg953 скрытый текст Выделить код Код:var this_=this; if(vislink42==1){ var newSS, styles=':link, :link * { color: yellow ! important; background: red ! important; text-decoration: none ! important; font-weight: bold ! important; } :visited, :visited * { color: red ! important; background: yellow ! important; text-decoration: blink ! important; font-weight: bold ! important; }'; newSS=content.document.createElement('link'); newSS.rel='stylesheet'; newSS.href='data:text/css,'+escape(styles); content.document.getElementsByTagName("head")[0].appendChild(newSS); vislink42=2; } else{ if (vislink42==2){ var newSS, styles=':link, :link * { color: red ! important; background: yellow ! important; text-decoration: blink ! important; font-weight: bold ! important; } :visited, :visited * { color: red ! important; background: yellow ! important; text-decoration: blink ! important; font-weight: bold ! important; }'; newSS=content.document.createElement('link'); newSS.rel='stylesheet'; newSS.href='data:text/css,'+escape(styles); content.document.getElementsByTagName("head")[0].appendChild(newSS); vislink42=3; } else{ if (vislink42==3){ BrowserReload(); vislink42=1; } } } Инициализация скрытый текст Выделить код Код:var this_=this; var folderpath="C:\\SAVEDURLS";// папка для сохранения ярлыков var profilepath='C:\\myffprofiles\\profile01'; // Путь до папки с другим профилем Firefox var firefox="C:\\Program Files\\Mozilla Firefox\\firefox.exe"; // путь до Firefox по-умолчанию, // если намерены использовать другую версию для "Открыть в другом профиле Firefox" то укажите свой путь. this.tooltipText="Link Master (Context menu)-Расширенное контекстное меню при клике на ссылку.\nЛКМ-сделать ссылки видимыми > Очень видимыми > Вернуть исходный вид(обновляет страницу)\nи так по кругу.\nПКМ-меню кнопки,настройки меню в секции Инициализация\nНе забудьте перезапустить Firefox после внесения изменений!\nСКМ - открывает пост с кнопкой на http://forum.mozilla-russia.org"; vislink42=1; var lmicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAJkAAP8AMwAAZgAAAAAAmQD////7HhmTAAAAB3RSTlP///////8AGksDRgAAAAFiS0dEBmFmuH0AAAAJcEhZcwAACxMAAAsTAQCanBgAAABSSURBVHjaY2BLYwOhBAa2tDQQgw3IYGMAIQYwFyrClgBSw8AGVZwGBQyCUIAQSVIGksnGaQxOymZpacZGagxAXmiwMVAKyDAFM+BSEMVGaXDtADaGHx7bD2cMAAAAAElFTkSuQmCC"; var bbicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAKAAAP+gAAD/oAAA/6AAAP+gAAD/AAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAACgAAD///////////+gAAD/oAAA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAoAAA/////////////////6AAAP8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAACAAP8AgAD/AIAA/6AAAP////////////////+gAAD/AAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAgAD///////////+gAAD/////////////////oAAA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAIAA////////////oAAA/6AAAP+gAAD/oAAA/6AAAP8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAACAAP////////////////8AgAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAgAD/////////////////AIAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAIAA/wCAAP8AgAD/AIAA/wCAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD///+sQQPArEEDwKxBP/ysQT4MrEE+DKxBPgysQTAMrEEwDKxBMAysQTB8rEEwfKxBMHysQT/8rEEDwKxBA8CsQQ=="; var htmicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAKAAAP+gAAD/oAAA/6AAAP+gAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAACgAAD///////////+gAAD/oAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAoAAA/////////////////6AAAP8AAAAAAAAA/wAAAP8AAAAAAAAA/wAAAP8AAAAAAAAAAACAAP8AgAD/AIAA/6AAAP////////////////+gAAD/AAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAgAD///////////+gAAD/////////////////oAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAIAA////////////oAAA/6AAAP+gAAD/oAAA/6AAAP8AAAAAAAAAAAAAAP8AAAD/AAAAAAAAAP8AAAD/AAAAAACAAP////////////////8AgAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AgAD/////////////////AIAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AIAA/wCAAP8AgAD/AIAA/wCAAP8AAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf//rEHzz6xB5+esQc4DrEHOA6xBngmsQTAMrEFwDqxBMAysQZB5rEHAc6xBwHOsQefnrEHzz6xB//+sQQ=="; var txticon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAP+gAAD/oAAA/6AAAP+gAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAD///////////+gAAD/oAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAA/////////////////6AAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAP8AgAD/AIAA/6AAAP////////////////+gAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAD///////////+gAAD/////////////////oAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA////////////oAAA/6AAAP+gAAD/oAAA/6AAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAP////////////////8AgAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAD/////////////////AIAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA/wCAAP8AgAD/AIAA/wCAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAP8AAAAAAAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAA/wAAAAAAAAD/AAAA/wAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+CsQf/grEH/4KxB/wCsQf8ArEH/AKxB/wesQf8HrEH/B6xB//+sQbRHrEGFX6xBtN+sQbVfrEGER6xB//+sQQ=="; var lnkicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADy8vL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZpnM/zNmmf8zZmb/ZmaZ/zNmZv8zZmb/M2Zm/zNmmf8zZmb/b29v/wAAAAAAAAAAAAAAAAAAAAAAAAAAM5nM/zOZzP9mzMz/Zsz//2bM//9mzP//Zsz//2bM//9mzP//M8zM/zOZmf9vb2//AAAAAAAAAAAAAAAAAAAAADOZzP9mzMz/Zsz//5nM//9mzP//Zsz//2bM//+ZzP//Zsz//2bMzP8zmcz/b29v/wAAAAAAAAAAAAAAAAAAAAAzmcz/M5n//5n///+Z////Zv///5n///+Z////mf///5n///9mzP//M5nM/29vb/8AAAAAAAAAAAAAAAAAAAAAM5nM/2bMzP+ZzP//mf///8z////M////M5kz/5n///+Z////mcz//zOZzP9vb2//AAAAAAAAAAAAAAAAAAAAADOZzP9mzP//ZszM/2aZzP9mzMz/ZpnM/wDMAP8zzDP/ZpnM/zOZzP8zmcz/AAAAAAAAAAAAAAAAAAAAAAAAAAAzmcz/mf///5n///+Z////mf///wDMM/8A/wD/AMwz/8z/zP8zmZn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmczM/5nM///M////zP///zOZM/8AzAD/AMwz/wDMM/8AzAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5nM/zOZZv8AzAD/AMwz/wDMAP8AzDP/M/8z/wDMM/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmTP/AMwz/wDMAP8AzDP/M8wz/2bMZv9m/2b/Zsxm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQD/AMwz/wDMAP8AzDP/AMwz/zP/Zv9m/5n/mcyZ/2bMmf+ZzJn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzmTP/AJkA/wDMM/9mzGb/mcyZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5kz/wDMM/8AzAD/ZsyZ/5n/mf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZM/8AzAD/AMwz/5nMmf9mzGb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzmTP/AJkz/wDMM/9mzJn/Zsxm/wAAAAAAAAAAAAAAAAAAAAAAAAAA7/+sQeAHrEHAA6xBwAOsQcADrEHAA6xBwAesQcAPrEHAH6xB8A+sQfgHrEHwA6xB/B+sQfwfrEH8H6xB/B+sQQ=="; var gtlnkicon="data:image/gif;base64,R0lGODlhEAAQALMOAMz//8zM/5nM/2ZmzGZmmZmZzMyZzMzMmZmZ/5mZmQAAAP///2Zm/wD/AP///wAAACH5BAHoAw4ALAAAAAAQABAAAARw0EkJgghgajlIMQUxjMZmeNIhiYSGEEmwOUQrIUMiKXy/EYpJkOcIajob4izBTBR2xk1hQU20lJvEQrHQAo2BsERLrfJGCIYtwdsq2ER1yZFo2O26iXzMaygaeQ4BQHMEd3Y1BGo1hYmJAQsHKgRzEQA7"; var gticon="data:image/gif;base64,R0lGODlhEAAQALMMAMz//8zM/5nM/2ZmzGZmmZmZzMyZzJmZ/8zMmZmZmQAAAGZm/////wAAAAAAAAAAACH5BAHoAwwALAAAAAAQABAAAARbkEkJgghgajlIMQUxjMZmeBIiiYR2EEmwMUQrHUMiKXy/EYpJkMcIajob4qyWNP6cO+gEqVEGrhxCSagYHRa2ka3oA28DrK3GrKmJ1GiFmoFm1cC1+UQmQ6g0EQA7"; var gicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7PT7/3zF6/9Ptu//RbHx/0227/+Tzvb/9vv5/97h0f9JeBz/NHoA/z98Av9AfAD/PHsA/0F6AP8AAAAA/vz7/1+33/8Mp+z/FrHw/xWy8f8bs/T/Hqrx/3zE7v////7/t8qp/zF2A/87gwH/P4ID/z59AP8+egD/Q3kA/97s8v8botj/ELn3/wy58f8PtfL/D7Lw/xuz9P8vq+f/8/n///779v9KhR3/OYYA/0GFAv88hgD/QIAC/z17AP/0+/j/N6bM/wC07/8Cxf7/CsP7/wm+9v8Aqur/SrDb//7+/v///P7/VZEl/zSJAP87jQD/PYYA/0OBBf8+fQH///3//9Dp8/84sM7/CrDf/wC14/8CruL/KqnW/9ns8f/8/v//4OjX/z+GDf85kAD/PIwD/z2JAv8+hQD/PoEA/9C7pv/97uv////+/9Xw+v+w3ej/ls/e/+rz9///////+/z6/22mSf8qjQH/OJMA/zuQAP85iwL/PIgA/zyFAP+OSSL/nV44/7J+Vv/AkG7/7trP//7//f/9//7/6/Lr/2uoRv8tjQH/PJYA/zuTAP87kwD/PY8A/z2KAP89hAD/olkn/6RVHP+eSgj/mEgR//Ho3//+/v7/5Ozh/1GaJv8tlAD/OZcC/zuXAv84lAD/O5IC/z2PAf89iwL/OIkA/6hWFf+cTxD/pm9C/76ihP/8/v//+////8nav/8fdwL/NZsA/zeZAP83mgD/PJQB/zyUAf84jwD/PYsB/z6HAf+fXif/1r6s//79///58u//3r+g/+3i2v/+//3/mbiF/yyCAP87mgP/OpgD/zeWAP85lgD/OpEB/z+TAP9ChwH/7eHb/////v/28ej/tWwo/7tUAP+5XQ7/5M+5/////v+bsZn/IHAd/zeVAP89lgP/O5MA/zaJCf8tZTr/DyuK//3////9////0qmC/7lTAP/KZAT/vVgC/8iQWf/+//3///j//ygpx/8GGcL/ESax/xEgtv8FEMz/AALh/wAB1f///f7///z//758O//GXQL/yGYC/8RaAv/Ojlf/+/////////9QU93/BAD0/wAB//8DAP3/AAHz/wAA5f8DAtr///////v7+/+2bCT/yGMA/89mAP/BWQD/0q+D///+/////P7/Rkbg/wEA+f8AA/z/AQH5/wMA8P8AAev/AADf///7/P////7/uINQ/7lXAP/MYwL/vGIO//Lm3P/8/v//1dT2/woM5/8AAP3/AwH+/wAB/f8AAfb/BADs/wAC4P8AAAAA//z7/+LbzP+mXyD/oUwE/9Gshv/8//3/7/H5/zo/w/8AAdX/AgL6/wAA/f8CAP3/AAH2/wAA7v8AAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAA=="; var yicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAsAAAAUwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAADjBwcEAwcHBAMHBwQDBwcEAAAAAUbq6uurExMT/xMTE/8TExP/ExMT/xMTE/8TExP/ExMT/xMTE/8TExP9ubm6QAAAALcTExADExMQAxMTEAAAAAFrHx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/vr6+7h4eHmQAAAAQx8fHAMfHxwAAAABXy8vL/8vLy/+UlM3/AADU/4+Pzv/Ly8v/g4PO/wwM0//Ly8v/y8vL/8vLy/+kpKS6AAAAM8vLywDLy8sAAAAAU9DQ0P/Q0ND/0NDQ/05O2f8dHd3/y8vQ/4eH1f8MDN7/0NDQ/9DQ0P/Q0ND/0NDQ/2VlZXsAAAAk0NDQAAAAAE/U1NT/1NTU/9TU1P/Fxdb/FBTq/3Bw3/+Jidz/DAzr/9TU1P/U1NT/1NTU/9TU1P/JycnkDw8PUwAAAAcAAABL2dnZ/9nZ2f/Z2dn/2dnZ/4WF5f8KCvb/ODjv/w0N9f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/6ioqKYAAAAqAAAASOLi4v/i4uL/4uLi/6io6v8LC/7/QkL2/zo69/8NDf3/4uLi/+Li4v/i4uL/4uLi/+Li4v/g4OD7AAAARgAAAETx8fH/8fHx//Hx8f81Ovz/bG/5//Hx8f+fovb/GB3+//Hx8f/x8fH/8fHx//Hx8f/x8fH/7+/v+wAAAEIAAABA9vb2//b29v/29vb/HSz//7K3+f/29vb/qK35/yUz/v/29vb/9vb2//b29v/29vb/9vb2/8jIyKMAAAAkAAAAPPn5+f/5+fn/+fn5/z5U/v+osvv/+fn5/6+4+/80TP//+fn5//n5+f/5+fn/+fn5//Dw8OMXFxdBAAAABgAAADj7+/v/+/v7//v7+/+Ro/3/UG7+/7/J/P+crf3/Q2P///v7+//7+/v/+/v7//v7+/+Tk5NnAAAAGfv7+wAAAAA1/f39//39/f/9/f3/9vj9/4yk/v9Td///QWn//05z///9/f3//f39//39/f/c3NysAAAAH/39/QD9/f0AAAAAMv7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/5+fnpPj4+PgAAAAn+/v4A/v7+AAAAACn39/fi////////////////////////////////////////////////tbW1cgAAABf///8A////AP///wAAAAAVAAAAKAAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAABv///8A////AP///wD///8AAA8AAAAHAAAAAwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAADAAAABwAAAA8AAA=="; var nicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaWlv88PDz/PDw8/93d3f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqamr//v7+//r6+v9qamr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PDz/cnJy/zw8PP88PDz/lpaW/wAAAAC5ubn/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZ/3t7e/9mZmb/vr6+/wAAAAAAAAAAAAAAAAAAAAAAAAAAPDw8/wAAAAAAAAAA7+/v/wAAAAAAAAAAAAAAAFBQUP8AAAAAAAAAAEdHR/8ICwj/Aj4C/0dHR/8ICwj/5ubm/zw8PP8AAAAAAAAAAISEhP/z8/P/AAAAAAAAAAA8PDz/Ei8S/wBCAP/4+Pj/R0dH/xgoGP/4+Pj/R0dH/zw8PP/ExMT/AAAAAAAAAAAAAAAAPDw8/wAAAADx8fH/QEtA/xGAEf8NRQ3//Pz8//j4+P+urq7/+Pj4//j4+P+ZmZn/AAAAAAAAAAAAAAAAAAAAAHh4eP9JSUn/RERE/wlHCf8A4gD/AVoB//j4+P/4+Pj/UmVS//j4+P/4+Pj/pqam/wAAAAAAAAAAAAAAAAAAAABnZ2f/AAAAAAAAAAADQAP/AOMA/wDUAP8FbQX/EYAR/wDTAP8DpAP/AlIC/zw8PP8AAAAAPDw8/wAAAAAAAAAAAAAAADw8PP88PDz/R1pH/wDhAP8A4gD/AOIA/wDiAP8A4gD/AOAA/yFIIf88PDz/PT09/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PP8AoQD/AOMA/wDjAP8A4wD/AOMA/wB+AP84ODj/AAAAAAAAAAA8PDz/AAAAAAAAAAAAAAAAAAAAAGRkZP9HR0f/JUgl/wDVAP8A4gD/AOIA/wCfAP8dIR3/r6+v/zw8PP9XV1f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQRn/AJYA/wBrAP88PDz/V1dX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMjP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjIz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIyM/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w8AAP8PAAD+CwAA8PsAAHYDAAAwAwAAoAcAAIAHAACwBQAAwAMAAPANAADgAwAA/B8AAP7/AAD+/wAA/v8AAA=="; var fficon="data:image/gif;base64,R0lGODlhFAAUAIcAANLOxsXBu4ifs1aVunu/11umx0yRvGGFprOvs8/KwmuTq5vY5YSEZaGIVeSVS1NTeB5yqrurfoK4vmm50HKyvp+RaPjLL/C/OM2zktTLu+B4H+KBKNOWZH3K2jFWj1BMSvbZKfC4F9HBs95zGspWFK+DVn6QkGCwzFmhwIafjvauBrikUr65td2kZt14J9qicjl+qBZWifGzIdm7DaOdj+SLNt5yFXuhoRhKfAc5bfzbRvbGGZSAXKktCnuBhjhumg0rYAgiVykvWfbEJGhYOtRcF7c0B3N1hE1/r19+lURqogYaTgcQRkpHYvO0M/jUBNJUFtdKBrx1OwMINVJabPnbNubLW2dhXMpyWtloEeJkDMpJDJYpDY4zIzUvOko3SLdxK/bKCPzgU62VR4iEg8y2sMo9D6ZXJyANc1A0IttwH+eXCPbHR/7yLVZGI7hQQNByKuWNCaeLFqw0HrkYCMY1E9pnHM6eBkM3Lca2pLIDAroRCr0gC6ZuCrSuo5JoYZgYC68iEH0uE5eSi3xza21oZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUIAIYALAAAAAAUABQAAAj/AA0JHGgIgEEABBMSNCihQIcCBRQYVCiQ4QkCBBYsICCAQYWJC1s8gFAggoSNEyhUsMBGBMiCGxw42MAB44QOBDx8ALEDA0KBGTQIdQGlhIkJSFEUSKFixU8ALzbYGDHCxQsBBWDEgDEghYwZNCrWmEp1w40CBnDkwAGDgY4hFYBu0DACSg8fCgag+AEkiJAGIIYQqViEbg8jR5AgSaJkCZMmTp6A+FMRytQoUWxIceGCx5QpVKqEsHKlIhYtI7Jo2cKli5fPX8CEETMmbEUzWUbYsHHmCxomadSsYdPGTYCBAN6YUZNltxo4aqjGaSOn0M+Kc/jUqVPEzgg1NuI8N7mDp0xCAGXm6NmzR/uWLHH64GFxHTmAP10A7QnUQ1CaK/RRVFEAgxBSCCE0BPCSgAw26CBBAQEAOw=="; var fdmicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAADAUlEQVR42nWTW0zTBxSH/23IfJyJLDNGB8M1XiIu2YPZImZmi7qH2WVkdJsmyoaYuQ0Rh9uMikZl4yK2sNZeaCxdtYUi6sRLi7WlUJFaBRUK1QJtoRYo1hEetiWbfD6gUSY+fA8nOb/v5ZyfAAjPc+agka2WQbIaEmRZE2zWhKmTHeD/e0+ZNhxQuVEFHnEuCqdCj1Df+pc9tr/5Qj3ON8fG8B6x8lLBzxY/lvAkf0QnUV3o5dAxByWaS1QabC8gP26nRN+Kuu7GVHiR9k1y2vvQBCf5vqoZRY0TpdHOtwVFyLKyppGbm4vZYsV3Z4ASnX1KIDWW82tXgsOd/5Fd5uKI3kFVjY3vds4ssNRa6eyJUKpvQnjdkIa03sv2lr/YdP4fZIecyA1OVEY7BT8V83V29jR25OfTcPos3XejlB93IGy8KmVddSOZtQ9Zr5sgc6+DKmMzatNlLjZ3EImNEr7/jFB0hL5IjED/MBWGKwj7urYhqVzDh0o/Hxx+wCc/XkZ1ogW7+zauNj8e312u3+7nlj+C/959gqERQkNj9EXiyI0uhALfBtJq55BR1s7KwmGkO5tQm1txeLpp8Qa41hHkZneIrsAQgf5hBgbjDMYSDAyNUWlyIaSbkvnIthTJL5+zLMfDx3l2dHVtuNt7udYRpN7roMh5FJX3BP1PwrH4OJHYQ5RmN8LbyuWssqaw4kwy8zWv8f7+QqobWmi7eY8bdwbQeaz84NvF1p6vkNq+JDb6J/HEBNGRcX476Z4643vlIpbUJPGZ/V12+bIp692NJlyCKabCHNdSProX2dBqlvYls7Yng7HEBLH4OIrfXVOCHQoZyzSzWagX85ZJjKRezKJzSSxumoXEnURau4jUThELekTMC4pY0pFKkeIseXvUz37aqVazQrGc+cokUg1iUsxiUk6LSbkgIvWKiDc8IuY6XyFdn46+sJAZywQIvXI5jY2NaLVaSktL2VKcwzs6CWmGV/m0OJOrFRW8tI0zMbxtM6dc9VSbqwlrNC+08TGX6c1kBSwiFwAAAABJRU5ErkJggg=="; var dosicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEwD65fLxHPXy8R0F8vEdBfLxHQXy4R0F8vEdBfLhHQXy4R0F8vEdBfLxHQXy8R0F8uEdBfLxHQWy4RzkIjCYl3VUT/LyQg/zAlIP8wJSD/MCUg/zAlIf8wJSH/MCUh/zAlIf8wJSH/MCUh/zAlIf8wJSH/LyUg/3M9Iv9GJAm4Y01C/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9fLhf/RiQJuWNNQv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Xy4X/0YkCbljTUL/////////////////AAAA/wAAAP8AAAD//////wAAAP8AAAD//////////////////////18uF/9GJAm5Y01C//////8AAAD/AAAA/wAAAP//////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/wAAAP9fLhf/RiQJuWNNQv//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/Xy4X/0YkCbljTUL//////wAAAP8AAAD/AAAA//////8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/18uF/9GJAm5Y01C/////////////////wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9fLhf/RiQJuWNNQ/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Xy8X/0YkCbnYlD//0Z1J/9GdSf/RnEn/0ZxJ/9GdSf/RnEn/0ZxJ/9GcSf/RnUn/0qtl/9KlWf/Rq2b/tJx8/7FtO/9FJAi3zGUU/+V+HP/mfh3/5n4c/+Z+HP/mfh3/5n4c/+Z+Hf/mfhz/5n4d//aoWv/xljz/86hc/5qAj/+uVij+RiQIgXc+BW6vXSussV4srbFeLK2xXiytsV4srbFeLK2xXiytsV4srbFeLK2wXCmtsV0qrbBcKa2vXCascj4LbUUpCBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf//rEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxB//+sQQ=="; var uticon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////YP///8D/////////////////////////wP///2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8g////0P/////////////////////z9+//z+C/////////////////0P///yAAAAAAAAAAAAAAAAD///8g////8P////+ryY//VpQf//P37///////h7Jf/z+FAP9KjA//q8mP///////////w////IAAAAAAAAAAA////0P////+Hsl//P4UA/4eyX///////5/Df/z+FAP8/hQD/P4UA/z+FAP+Hsl///////////9AAAAAA////YP////+30Z//P4UA/z+FAP/P4L///////8PZr/9uoz//bqM//z+FAP8/hQD/P4UA/7fRn///////////YP///8D/////VpQf/z+FAP9WlB//////////////////2+jP//P37//D2a//P4UA/1aUH/9uoz///////////8D/////2+jP/z+FAP8/hQD/n8J////////z9+//bqM//z+FAP9imy//8/fv/8PZr////////////////////////////8/gv/8/hQD/P4UA/+fw3///////n8J//z+FAP8/hQD/P4UA/4eyX///////5/Df/2KbL//P4L/////////////P4L//P4UA/2KbL////////////1aUH/8/hQD/P4UA/z+FAP+30Z///////4eyX/8/hQD/z+C/////////////2+jP/z+FAP+30Z///////8PZr/8/hQD/P4UA/z+FAP9KjA///////+fw3/8/hQD/P4UA/9voz///////////wP////9WlB//h7Jf/7fRn/9uoz//P4UA/z+FAP8/hQD/n8J///////+Hsl//P4UA/1aUH///////////wP///2D/////w9mv/z+FAP8/hQD/P4UA/z+FAP8/hQD/P4UA/5O6b//D2a//P4UA/z+FAP/D2a///////////2AAAAAA////0P////+Hsl//P4UA/z+FAP8/hQD/P4UA/z+FAP8/hQD/P4UA/z+FAP+Hsl///////////9AAAAAAAAAAAP///yD////w/////8PZr/9WlB//P4UA/z+FAP8/hQD/P4UA/1aUH//D2a////////////D///8gAAAAAAAAAAAAAAAA////IP///9D//////////9voz//P4L//z+C//9voz////////////////9D///8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////YP///8D/////////////////////////wP///2AAAAAAAAAAAAAAAAAAAAAA8A+sQcADrEGAAaxBgAGsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBgAGsQYABrEHAA6xB8A+sQQ=="; var dticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAM7SURBVDiNfZNfTFN3FMe/vbd/L22hgBRavNiytPxbivxxTFM0EUmcRN389zKC0Wjiw9zetibzVfawh2XLjI8mTRamif8ejIGgiBoT/swWqzCwRS+scKGWXihtve39/faw0aAmfp/OyTn5nD85R0UpxYbiqynns/DCJTmn2J22kvPV9pL7ocjirxo1K7r5Lb8DSOA9qTYAjd29TouJGzyyt5kXRIlxbS1dUDMq/T+xNdN6RlZ37aob2NlQ1fk+QL3JnieEWDUsywDA9FysYnPii1nRXVig73bzpY/Sb3NJE6dbzncQmIleF8SV8lgi+dnfQowxcjoc8tbDWVGMdDaHydlF3P8rApZl5AK9Rmlwlo/ta3V1AsiwdwTujq3M8sXT6Sgfk1IqADh7sA1Wiwm/XH0IRSHQatTwfFKBaExip4RljSAmqmr4sudFRkOIMRp0Xr1WwwIABVBs5sBbi3BtaAK3H7/AyOQc9myvxo3hEE51tcLM6VBi5iSjQTsOAGyhu705PL/krttmZUwGHRRK4fU4MDg+g44WF7477gUARKJxZGQFfLkFA2Mzep1G3SglM1km4PcdFeNrzr6BsWGGoZgXE5CSGchZBW31fH6Jk6+XQEHR5LJDzubQNxjwTgnLPQwABPw+AcCPD8anUVlmRv/oNL7a/SlGJ+cg5xSc+/k6HgTCMOq10KpZyDkFclaB0aC1MRsVAn7fw+aaqkQkuoKbwyGkMjK0GhZxKQXbFjO+9DaguaYSE+EFZHMKis0cvB6HL38HZ3v/OFq9tbxoNfUGhFBc9A+i6/M6rKUzuNDT8d8Yr0RcvvUEclaBtJZGJBp35AHjU8K3tQ4bCCGQcwoIobg2NIE/7wVhLzVjPSNDXEmCEApCKWKrKYTCCyfzAIXQH/r6RweOdbQYhoOzaKmxQwUKSlUIzS5iaWUdhFJUlhWili8FoUg57SWPVJufqbG794C5QH/zULvn9ePgy28i0TceAGcO72503h19CUIoDrfXv7raP/KbmmWEsSvf334H8D+kMuD3zW/yW1tr+ZFF6S2SaRlfdzbdPd21Y/8H3/gxNfX89LytweHidNrg+RN7TvNWS3Aj9i/DpXFvat/iQgAAAABJRU5ErkJggg=="; var winicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAzwAAAEAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkgP8RcY//AxQanwAAABAAAAAAAAAA/7+/v/+/wL//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkUHj/F634/x287/8MUGbvAAAA/8nJyf/n6Of//////8nKyf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzs7z6/G6P8fnPL/HcH9/xeVv/8/X2n/wMDA////////////0NDQ/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA7OzvPw97t/x+b8v8Upvj/Gr7//w5qj/+ZoKP////////////S0tL/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1paWv/F5e//M7T4/w2Q8v8Srv3/EJzf/yVWb//ExMT//////9DQ0P8AAAD/AAAAAAAAAAAAAAAAAAAA/8fIx/+DjpH/OGJw/+P4//9J0f//EZr0/wqW+P8NqP//CX2//3iGjv//////ysvK/wAAAP8AAAAAAAAA/8PEw///////QGl5/xq///9Eyf//4vb//0XL//8VrPr/CIz0/waa/f8Hnv//doqX//////+/wL//AAAA/wAAAP/c3dz//////0lfdf9ClvH/E4Lx/zGO8f/h8P3/M8D//xa3//8LkPT/AYb4/zpfev//////v7+//wAAAP8AAAAAAAAA/+Dh4P+0tLT/fn5+/9Ll7/9NxP//Nbv//zGm9/9Vvf3/Va7f/0mOvP9DVmf/ycrJ/wAAAP8AAAAAAAAAAAAAAAAAAAD/4+Pj//////9ra2v/n5+f/5XZ//8Znvr/AWrp/wSM7f8BHjD/pqam/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/j4+P//////7W1tf9eXl7/wdTf/0Sr+v8Dben/DZzt/wIXIu8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+Pj4////////////3N0c/+AgID/gbfq/xmJ7/8Vm8//AxIXrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4OHg///////k5OT/tLS0/yQkJN+fq7z/S630/xBkgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/c3dz/w8TD/wAAAP8AAAAAAAAAUFVVVe9CUl7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAQAAAAjwAAAAAAAAAAnn8AAIQ/AACAHwAAgA8AAIAHAADAAwAAgAEAAAAAAAAAAAAAgAEAAMADAADgAwAA8AMAAPgDAAD8IwAA/nP//w=="; var vlcicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFy0ZABYxf8AWMX/AFjF/wBYxf8AWMX/AFjF/wBYxf8AWMX/AFjF/wBYxf8AWMX/AFjF/whmvmYAAAAAAAAAADa5+4oatf//GrX//xqs//8aoP//GqD//xqe//8an///GqP//xqj//8arv//Grr//xq9//8zxv+PAAAAAAAAAABzv+8yAJD4/wCN+P8Ad+//AGrn/wBm6P8AZer/AGvu/wBz8P8Adu7/AHvx/wCS+v8Amvv/fc72OAAAAAAAAAAAg7/mAxOM8dsAZ97/AErB/wBa2f8AYuP/AWbn/wJw7P8Ace//AF7h/wBEu/8AYNb/D4nu4YjG6QUAAAAAAAAAAAAAAAAxk+qSAFjV/w5Msv9ikcn/nbTL/7O+yv+0wcz/m7TK/16Mw/8ORaf/AD+7/yNy0ZoAAAAAAAAAAAAAAAAAAAAAYKbiPAJj5fNge6L+z8Oz/9TNxP/X0Mb/2NHI/9DIv//Bt6b/X3CQ/gBDxfM4eLxCAAAAAAAAAAAAAAAAAAAAAAAAAABTnd0Rgo2TgcS6rv/OzMf/xsnN/8fLzv/IxsH/uK+i/3+GioUqa68RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaOhi5SgLb/IH7j/wx17v8MgvL/HoPo/0t0r/+Vj4czAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmWZYDAE652wBv5/8AcPH/AH/2/wB07v8ARbTgKFuYBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhPq5QAa+T/AHDy/wB/+P8Aauj/B0enmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxYZxGd6DK/6jB2v+oxNn/c5fC/zBdmU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl5GJDMS7r+3l3dP/4tnP/72ypvCXkooQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyq6Gu4dzU/93Xzv+vppu1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATHSiYC2L6f8rjOr/S3KiZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFWpBwAcOf/AHLr/w1QoyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGfQfARl0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFhq4ABAACAAVTQgAEAX8ADcm/AA3Rh4AdyYfAPa2vwD2xj+B9jb/gfZXj4H3J0/D8AAPw/QkD8PwAB/n8ABA=="; var opicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAFgAAABoAAAAWAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEBGAABpgAkDm5kJA5uZAABpgAAAOk0AAAAwAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANykIA5+zDgbM/xAG0v8LBLv/CwS7/w4GzP8OBsz/CAOeswAAI0AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAXRoJBLHZDAXD/wIBmP8EAKX/BgCzzwYAs78EAKf/AgGW/wwFwf8KBLXyAAA7TQAAABMAAAAAAAAAAAAAAAAIA7OzCQS8/wAAmP8EAKj/BgCleQAAAAAAAAAABgCzcAQApv8AAJH/CAOy/wgDqtkAAAAtAAAAAAAAAAAAAKkwCwTI/wAApf8AAKP/BgCy/wAAABAAAAAAAAAAAAAAAAAGALH/AACZ/wAAmP8MBcX/AABxgAAAAAoAAAAABQLEgAcDx/8AALX/AQCz/wYAq9kAAAANAAAAAAAAAAAAAAAABgCzzwEAp/8AAKT/AwGr/wcDrL8AAAAWAAAAAAcD2b8AAM7/AADL/wIAw/8GAKjMAAAADQAAAAAAAAAAAAAAAAYAs78CALX/AAC0/wAAsv8JA8TmAAAAGgAAAAAJA+y/AADp/wAA5f8CANf/BgCozAAAAA0AAAAAAAAAAAAAAAAGALO/AgDF/wAAyf8AAMb/BQLN/wAAABoAAAAACAf9vwUF/v8EBP3/BALq/wYAqMwAAAANAAAAAAAAAAAAAAAABgCzvwIA2f8AAOP/AADg/wEB3v8AAAATAAAAABUV/58VFf//ExP//w4N7P8GAKjMAAAAEwAAAAAAAAAAAAAAAAYAs88FA+v/AwP9/wIC+/8BAenMAAAABgAAAAAlJf9QJSX//yMj//8fH/r/BgCz/wAAACMAAAAAAAAAAAAAAAAGALP/FBT//xIS//8QEP//DAzreQAAAAAAAAAAAAAAADQ0/98zM///MTH//w4Jwf8EAHBmAAAAEwAAAAAGALNADAfB/yMj//8iIv//Hx//7xgY/xAAAAAAAAAAAAAAAAA/P/8wQkL/70FB//8uLOf/BgCx8gUAm6YGAKScBgCz7yoo7P8zM///MTH//y0t/2AAAAAAAAAAAAAAAAAAAAAAAAAAAE1N/zBQUP/fT0///0VE9v8qJ9n/KSbZ/0A/9v9FRf//Q0P/7z09/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWVn/EFlZ/2BYWP+vV1f/v1ZW/79UVP+vUVH/cE5O/xAAAAAAAAAAAAAAAAAAAAAA/B+sQfAHrEHgA6xBwAGsQcGBrEGBwKxBgcCsQYHArEGBwKxBgcCsQYHArEGBwaxBwIGsQcADrEHgB6xB8A+sQQ=="; var faricon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAzQEBAfkBAQKZAQECyQEBAskBAQLJAQECyQEBAskBAQLJAQECyQEBAskBAQLJAQECyQEBAskBAQLJAQECyAAAA/3V1Gf91dRv/AAAA/3NzIP9yciL/AAAA/3BwJv9vbyj/AAAA/25uK/9tbSz/AAAA/21tLf9tbS3/QEBAssDAwP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0BAQLLw8CT/7u4o/+zsLf/q6jL/6Og2/+bmO//k5D//4uJD/+HhSP/f30v/3t5P/9zcUv/b21X/2tpY/9nZWv9AQECy8vIf/9IGBv/MBgb/xgcH/8AICP+6CAj/tAkJ/+TkP/+qCwv/pAsL/6AMDP+bDAz/lw0N/5MNDf/a2lj/QEBAsvT0G//YBQX/0gYG/8wGBv/GBwf/wAgI/7oICP/m5jv/rwoK/6oLC/+kCwv/oAwM/5sMDP+XDQ3/29tV/0BAQLL19Rb/3QQE/9gFBf/SBgb/zAYG/8YHB//ACAj/6Og2/7QJCf+vCgr/qgsL/6QLC/+gDAz/mwwM/9zcUv9AQECy9/cS/+MEBP/09Bv/8vIf//DwJP/u7ij/xgcH/+rqMv+6CAj/tAkJ/68KCv+qCwv/pAsL/6AMDP/e3k//QEBAsvn5D//oAwP/4wQE/90EBP/YBQX/0gYG/8wGBv/s7C3/wAgI/7oICP+0CQn/rwoK/6oLC/+kCwv/399L/0BAQLL6+gv/7AIC//f3Ev/19Rb/9PQb//LyH//SBgb/7u4o/8YHB//q6jL/6Og2/+bmO//k5D//qgsL/+HhSP9AQECy/PwI//ECAv/sAgL/6AMD/+MEBP/dBAT/2AUF//DwJP/MBgb/xgcH/8AICP+6CAj/tAkJ/68KCv/i4kP/QEBAsv39Bf/1AQH/+voL//n5D//39xL/9fUW/90EBP/y8h//0gYG/+7uKP/s7C3/6uoy/+joNv+0CQn/5OQ//0BAQLL+/gL/+QEB//UBAf/xAgL/7AIC/+gDA//jBAT/9PQb/9gFBf/SBgb/zAYG/8YHB//ACAj/uggI/+bmO/9AQECy//8A//wAAP8G/v7/Cv7+/w79/f8T/f3/6AMD//X1Fv/dBAT/J/r6/y35+f8z+fn/Ofj4/8AICP/o6Db/QEBApv//AP//AAD//AAA//kBAf/1AQH/8QIC/+wCAv/39xL/4wQE/90EBP/YBQX/0gYG/8wGBv/GBwf/6uoy/0BAQH7//wD///8A////AP/+/gL//f0F//z8CP/6+gv/+fkP//f3Ev/19Rb/9PQb//LyH//w8CT/7u4o/+zsLf9AQEAzAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="; var domicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAB3RJTUUH2wwDCBcOj0D8igAAAflJREFUeJx90DuIVGcYxvHfd86Z2eOM626ExULJohJBwcUkRkFQsZGEYMTOLhgIGLQQVDCxNpciBIJaKCqohVh5wVKxCBhQsqAokkVQsDCI6F5mnMs550sxSdhC8m/fh5f/8wR8tNLosFiJlRiNNNVSkcB0W7+QpBASk1MC7v5i/QZmaTDk0R/+mpYkqsq2CRbTos+w7ftkmG0rZvVaHj30oufURc9eSKj48gsTa6xdYmRYRr+UIUmkNMbsOeTVc7f3WLWUDrl9Vxw85/aPtn4i9gUyxEjm7n0fjLiwxaoxndfSRPnWiZ1iNDll9QpjiyFBVdG0+3tfj1s3rtdWT6VBPdV57eQupy+7NUlTWUkMiEYXahfKUgj+Ix3S61mQG6oRGShB8GZOI5OmysGikUq5RB7Mzer2CP8qhUBh64Splk5XVlOUypqiIX9u8rGP11o6JvaEIBmspOXsUb/+6bsb+ol6U21U/X2/X/LZGR9utGm1UMxXSvRn7FzntydO3TO+SNGR1V1YYWba4eOKGYe/ktfmddD18zcM2/uDsw/UM73C1SPW3PTTZd+e915Dqyvg1jGb1yvmBGKUN0n/+dOdM7TIgeNOXFNUDC77d1i2XEaWy3LzyXIKn24X33r4VLcvw53H2pRtaeKd9Aufb3L9jpcz7w78H38DmNm0vZpYVTMAAAAASUVORK5CYII="; var ieicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChZiRN0pM+3dKVQfPMj0HQpWgjcIZRGyNsPxZFaD0WaWc/FWlnQhZgYkQZO1Q5FyFdRBkVa1EbCoBVKwMAAAAB3KJM2ZVeHJwAAAAAAAAAALJ1K8CNViDQYzkW41g0FOhVMxXnRyoT4UQpEdZbQhq3aFAeXllAGh5gSiAMSUkkBOukLOCKVh1wZj0UK2s+FJOAShrtwnwx/N6UO//qqEb/8LRT/9+yY/6nhEz5Vjod7UMpEtdoUB6CWD8ZH2ZNGgrppzLemmEf11YwEOG1cyb855g2//CbOP/vlzb/75o2//KnPP/3vVH/+tR2/+rKif5wVC/yQCYR1mxOHGJgQBoa2Zw7z92YLP25eSX58qY2/+ubMf/nky7/55Av/7JsJf64cCb65pUw//SxQf/71Gv/9NiT/mBBI+VbOhWzZEEXOr2DNV72tTz/86wz/+qgLv/llir/2ooo/3lHGOkAAAAAAAAAALVrJGPUhjH/9Kg7//zRbf/Tr3DnXz0WwmtCF0ZrURsK2J4yvvS0Nf/ooCr/4pUl/6NlHf1CJA/vTy4R11EuEc9lORXZgEkZ54FMGuqIVB7rhVss5l02FMVvQheBAAAAAIJiI0b0vD3+7ast/+WdJv/Qfyv/0H8r/9B/K//Qfyv/0H8r/9B/K//Qfyv/0H8r/9B/K/9MLBTdaDwWiH9XISAAAAAA1KhBdvTEQv/srC3/5Z8m/96WJ//glSj/35Iq/NqNKe/nky3/6ZUx//CaOf/toUH/VC8U2loyFF2EXScWtpFOuwAAAADhvEuv9cZB/7aAI/lfOhPsAAAAAAAAAACDURikv4Mt/+iWLf/umzT/zok0/FozEr1TMRM/AAAAALycVazpyYXmAAAAAOvMVIPfrTX5ZEMY7UAmEN5XNhPYtHYg+uaYKf/nlyz/8aQ4/55lJPJkOxRoXjkTEwAAAAAAAAAAy7Fqj+LDe+PYuFc/7Mxit+GxOf61fyL8zY4j/uWgKP/knCf/6qAt/+mlOP50RhWoZDwTMAAAAAAAAAAAAAAAAJh3NTjh0Iqz9duK8PLViNLm02T79tFG//G3Mf/trCr/7q0v/+ilNf6SXRypkWIhcKV9QDCaczUQAAAAAAAAAAAAAAAAjWsqMNG5bq/w2oTS+umA//vpav/0zET/+M9K/9uuRO+Zczy+g1wnSQAAAADcsFWwoXk8TAAAAAAAAAAAAAAAAAAAAAB6VBoBhWAiMJZxL1KZayZ1lGEaeb2LML7pwFW45Llg07yaUqO3jTtV06dPsZpvNT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtoMtD7SKRj/htli1269ZmqBzNFcAAAAAAACsQTAArEEAAKxBAACsQQAArEEBgKxBAACsQYAArEFAAKxBIYCsQZAArEHAAaxBwACsQeAErEHwAKxB/8GsQQ=="; var drwebicon="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AAAA/wAAAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AvwD/AP8A/wD/AP8A/wD/AP8A/wAAAP8AAAD/AP8A/wD/AP8A/wD/AL8A/wB/AP8A/wD/AP8A/wD/AP8A/wD/AL8A/wA/AP8A/wD/AP8A/wD/AP8AAAD/AAAA/wD/AP8A/wD/AL8A/wAAAP8A/wD/AP8A/wC/P/8/vz//AP8A/wD/AP8AAAD/AL8A/wD/AP8A/wD/AAAA/wAAAP8A/wD/AP8A/wA/AP8AAAD/AP8A/wA/AP8AAAD/AAAA/wAAAP8AvwD/AH8A/wAAAP8AvwD/AP8A/wAAAP8AAAD/AP8A/wC/AP8APwD/AH8A/wA/AP8AAAD/f39//39/f/8AAAD/AAAA/wC/AP8AAAD/AL8A/wD/AP8AAAD/AAAA/wD/AP8AfwD/AP8A/wD/AP8AAAD/AAAA/39/f/9/f3//Pz8//wAAAP8AfwD/AP8A/wC/AP8AvwD/AAAA/wAAAP8AfwD/AD8A/wA/AP8AvwD/AD8A/39/f/+/////v7+//7+/v/8AAAD/AL8A/wB/AP8APwD/AH8A/wAAAP8AAAD/AP8A/wC/AP8A/wD/AP8A/wD/AP8//z//Pz8//z8/P/8/vz//AP8A/wD/AP8A/wD/AP8A/wD/AP8AAAD/AAAA/wD/AP8APwD/AAAA/wA/AP8A/wD/AAAA/wC/AP8AvwD/AD8A/wB/AP8AfwD/AAAA/wAAAP8A/wD/AAAA/wAAAP8A/wD/AH8A/wD/AP8A/wD/AD8A/wB/AP8AAAD/AAAA/wA/AP8AfwD/AL8A/wD/AP8AvwD/AP8A/wAAAP8AAAD/AP8A/wD/AP8A/wD/AD8A/wB/AP8A/wD/AP8A/wD/AP8A/wD/AL8A/wAAAP8A/wD/AP8A/wD/AP8AAAD/AAAA/wD/AP8A/wD/AP8A/wB/AP8AvwD/AP8A/wD/AP8A/wD/AP8A/wC/AP8AfwD/AL8A/wD/AP8A/wD/AAAA/wAAAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="; var mnusav="Ярлык "+folderpath; (function LinkMasterMenu(){ const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var contextMenu = document.getElementById("contentAreaContextMenu"); var separator = document.getElementById("context-bookmarklink"); var eventTarget = null; var menu = document.createElementNS(kXULNS, "menu"); menu.id = "LinkMasterMenu"; menu.setAttribute("label", "Link Master>"); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", lmicon); menu.hidden = true; contextMenu.insertBefore(menu, separator ); var menuPopup = document.createElementNS(kXULNS, "menupopup"); menu.appendChild(menuPopup); var lst = [ { label:"Открыть ссылку в VLC", command:command18, image:vlcicon }, { label:"Копировать текст ссылки", command:command1, image:txticon }, { label:"Копировать HTML код", command:command2, image:htmicon }, { label:"Копировать BB код", command:command3, image:bbicon }, { label:mnusav, command:command4, image:lnkicon }, { label:"separator" }, { label:"Искать в Google", command:command6, image:gicon }, { label:"Искать в Nigma", command:command5, image:nicon }, { label:"Искать в Yandex", command:command7, image:yicon }, { label:"separator" }, { label:"separator" }, { label:"Проверить Dr.Web", command:command10, image:drwebicon }, { label:"Открыть в DOM ", command:command11, image:domicon }, { label:"separator" }, { label:"Открыть в Firefox", command:command12, image:fficon }, { label:"Открыть в IE", command:command13, image:ieicon }, { label:"Открыть в Opera", command:command14, image:opicon }, { label:"separator" }, { label:"Открыть в µTorrent", command:command17, image:uticon }, { label:"separator" }, { label:"Ping домена в ссылке", command:command21, image:dosicon }, { label:"Trace домена в ссылке", command:command22, image:dosicon } ]; for(var i = 0, m; m = lst[i]; i++){ if (m.label=="separator"){ var menuItem = document.createElementNS(kXULNS, "menuseparator"); menuItem.id = "context-Demo-Menu-" + m.label.toString(); menuPopup.appendChild(menuItem); } else{ var menuItem = document.createElementNS(kXULNS, "menuitem"); menuItem.setAttribute("label", m.label); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", m.image); menuItem.setAttribute("type", "m.radio"); menuItem.addEventListener("command", m.command, false); menuItem.id = "context-Demo-Menu-" + m.label.toString(); menuPopup.appendChild(menuItem); } } contextMenu.addEventListener("popupshowing", setMenuDisplay, false); function setMenuDisplay(aEvent) { if (gContextMenu.onLink) { document.getElementById("LinkMasterMenu").hidden = false; } else document.getElementById("LinkMasterMenu").hidden = true; } //------------------------------------------------------------------------- //----------------------------------------------------- function command1(){ var urltxt=gContextMenu.linkText(); const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(urltxt) } //------------------------------------------------------ //----------------------------------------------------- function command2(){ var urllink=gContextMenu.linkURL; var urltxt=gContextMenu.linkText(); var txthtm='<a href="'+urllink+'">'+urltxt+'</a>' const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(txthtm) } //------------------------------------------------------ //----------------------------------------------------- function command3(){ var urllink=gContextMenu.linkURL; var urltxt=gContextMenu.linkText(); var txtbb='[url='+urllink+']'+urltxt+'[/url]' const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]. getService(Components.interfaces.nsIClipboardHelper); gClipboardHelper.copyString(txtbb) } //------------------------------------------------------ //----------------------------------------------------- function command4(){ var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(folderpath); if( !file.exists() || !file.isDirectory() ) { file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);} var savetodir=folderpath+"\\"; var urllink=gContextMenu.linkURL; var urltxt=gContextMenu.linkText(); var out= urltxt.replace(/\"/g, "_"); var out= out.replace(/\+/g, "_"); var out= out.replace(/\%20/g, "_"); var out= out.replace(/\=/g, "_"); var out= out.replace(/\[/g, "_"); var out= out.replace(/\]/g, "_"); var out= out.replace(/\:/g, "_"); var out= out.replace(/\;/g, "_"); var out= out.replace(/\?/g, "_"); var out= out.replace(/\</g, "_"); var out= out.replace(/\>/g, "_"); var out= out.replace(/\*/g, "_"); var out= out.replace(/\|/g, "_"); var out= out.replace(/\«/g, "_"); var out= out.replace(/\//g, "_"); var out= out.replace(/\%/g, "_"); var out= out.replace(/\@/g, "_"); var out= out.replace(/\&/g, "_"); var out= out.replace(/\{/g, "_"); var out= out.replace(/\}/g, "_"); var out= out.replace(/\^/g, "_"); var out= out.replace(/\$/g, "_"); var out= out.replace(/\s/g, "_"); var out= out.replace(/\_+/g, "_"); var out= out.slice(0,128) var filename=savetodir+out+'.url'; var data="[InternetShortcut]\r\nURL="+urllink+"\r\n"; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(filename); Components.utils.import("resource://gre/modules/NetUtil.jsm"); Components.utils.import("resource://gre/modules/FileUtils.jsm"); var ostream = FileUtils.openSafeFileOutputStream(file); var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "UTF-8"; var istream = converter.convertToInputStream(data); NetUtil.asyncCopy(istream, ostream, function(status) { if (!Components.isSuccessCode(status)) { return; } }); custombuttons.alertSlide("Ярлык сохранён в:",filename) } //------------------------------------------------------ //----------------------------------------------------- function command5(){ var urltxt=gContextMenu.linkText(); var nigma1='http://www.nigma.ru/index.php?s='; urltxt =encodeURIComponent(urltxt); var srchurl=nigma1+'"'+urltxt+'"'; getBrowser (). selectedTab = getBrowser (). addTab (srchurl) } //------------------------------------------------------ //----------------------------------------------------- function command6(){ var urltxt=gContextMenu.linkText(); var google1='http://www.google.com/search?sclient=psy-ab&hl=en&site=&source=hp&q="'; var google2='"&btnG=Search'; urltxt =encodeURIComponent(urltxt); var srchurl=google1+urltxt+google2; getBrowser (). selectedTab = getBrowser (). addTab (srchurl) } //------------------------------------------------------ //----------------------------------------------------- function command7(){ var urltxt=gContextMenu.linkText(); var yandex1='http://yandex.ru/yandsearch?text="'; var yandex2='"&lr=213'; urltxt =encodeURIComponent(urltxt); var srchurl=yandex1+urltxt+yandex2; getBrowser (). selectedTab = getBrowser (). addTab (srchurl) } //------------------------------------------------------ //----------------------------------------------------- function command8(){ var urltxt=gContextMenu.linkText(); var gtr1='http://translate.google.com/?sl=auto&tl=ru&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&text="'; var gtr2='"&fil'; urltxt =encodeURIComponent(urltxt); var trurl=gtr1+urltxt+gtr2; var sizex = screen.width/1.2; var sizey = screen.height/1.2; var wnd = window.open(trurl, this.name, 'resizable=yes,scrollbars=yes,width=' + sizex + ',height=' +sizey); if (wnd.focus) wnd.focus(); } //------------------------------------------------------ //----------------------------------------------------- function command9(){ var urllink= encodeURIComponent(gContextMenu.linkURL); var urltr="http://translate.google.com/?sl=auto&tl=ru&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&text="+urllink; getBrowser (). selectedTab = getBrowser (). addTab (urltr); } //------------------------------------------------------ //----------------------------------------------------- function command10(){ var urllink=gContextMenu.linkURL var chkurl="http://online.us.drweb.com/result?firefoxplugin=1&url="+urllink; var sizex = screen.width/1.5; var sizey = screen.height/1.5; var wnd = window.open(chkurl, this.name, 'resizable=yes,scrollbars=yes,width=' + sizex + ',height=' +sizey); if (wnd.focus) wnd.focus(); } //------------------------------------------------------ //----------------------------------------------------- function command11(){ try{inspectDOMNode(gContextMenu.target)} catch(e){ if (window.confirm('DOM Inspector не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("https://addons.mozilla.org/firefox/addon/6622"); } } } //------------------------------------------------------ //----------------------------------------------------- function command12(){ var urllink=gContextMenu.linkURL; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(profilepath); if( !file.exists()|| !file.isDirectory() ) { if (window.confirm('Папка профиля:'+profilepath+' не найдена!\nОткрыть адрес в новой вкладке?\n\n\nЧтобы указать правильный путь до папки с профилем\n1 ПКМ по кнопке-Редактировать-Вкладка Инициализация\n2 найти в коде строку var profilepath= и в ней изменить путь до профиля.')==true){ getBrowser (). selectedTab = getBrowser (). addTab (urllink); } } else{ function startProces(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Файл не найден", path); }; startProces(firefox,["-no-remote","-profile",profilepath,urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command13(){ var urllink=gContextMenu.linkURL; var pleerpath="C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE" startProcess(pleerpath,[urllink]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Internet Explorer не найден!8-O"); }; } //------------------------------------------------------ //----------------------------------------------------- function command14(){ var urllink=gContextMenu.linkURL; var operapath="C:\\Program Files\\Opera\\opera.exe" startProcess(operapath,[urllink]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Упс!","Браузер Opera не установлен..\n (и это правильно;)!Используйте программы с открытым кодом!)"); }; } //------------------------------------------------------ //----------------------------------------------------- function command15(){ var urllink=gContextMenu.linkURL; var fdmpath="C:\\Program Files\\Free Download Manager\\fdm.exe" var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(fdmpath); if( !file.exists() ) { if (window.confirm('Free Download Manager не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("http://www.freedownloadmanager.org/download.htm"); } } else{ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("файл не найден", path); }; startProcess(fdmpath,[urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command16(){ var urllink=gContextMenu.linkURL+"/"; var farpath="C:\\Program Files\\FAR\\Far.exe"; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(farpath); if( !file.exists() ) { if (window.confirm('Far Manager не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("http://www.farmanager.com/download.php?l=ru"); } } else{ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("файл не найден", path); }; startProcess(farpath,[urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command17(){ var urllink=gContextMenu.linkURL; var utpath="C:\\Program Files\\uTorrent\\utorrent.exe"; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(utpath); if( !file.exists() ) { if (window.confirm('µTorrent не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("http://www.utorrent.com/downloads"); } } else{ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("файл не найден", path); }; startProcess(utpath,[urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command18(){ var urllink=gContextMenu.linkURL; var pleerpath="C:\\Program Files\\VideoLAN\\VLC\\vlc.exe"; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(pleerpath); if( !file.exists() ) { if (window.confirm('VLC плеер не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("http://www.videolan.org/"); } } else{ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("файл не найден", path); }; startProcess(pleerpath,[urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command19(){ var urllink=gContextMenu.linkURL; var pleerpath="C:\\Program Files\\Winamp\\winamp.exe" var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(pleerpath); if( !file.exists() ) { if (window.confirm('Winamp не установлен!\nПерейти на страницу загрузки?')==true){ getBrowser (). selectedTab = getBrowser (). addTab ("http://www.winamp.com/media-player/ru"); } } else{ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("файл не найден", path); }; startProcess(pleerpath,[urllink]); }; } //------------------------------------------------------ //----------------------------------------------------- function command20(){ var urllink=gContextMenu.linkURL; var chkpoint='/'; var arrayOfStrings = urllink.split(chkpoint); var site=arrayOfStrings[2]; var sizex = screen.width/1.2; var sizey = screen.height/1.2; var chkurl="http://www.domaintools.com/go/?service=whois&q="+site; var wnd = window.open(chkurl, this.name, 'resizable=yes,scrollbars=yes,width=' + sizex + ',height=' +sizey); if (wnd.focus) wnd.focus(); } //------------------------------------------------------ //----------------------------------------------------- function command21(){ var urllink=gContextMenu.linkURL var tracepath="C:\\Windows\\system32\\cmd.exe" var chkpoint='/'; var arrayOfStrings = urllink.split(chkpoint); var site=arrayOfStrings[2]; startProcess(tracepath,["/k","echo","------------------------------","&&","echo","LinkMaster","Button","by","(c)okkamas_knife","&&","echo","------------------------------","&&","ping.exe","-t",site]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("URL не найден", path); }; } //------------------------------------------------------ //----------------------------------------------------- function command22(){ var urllink=gContextMenu.linkURL var tracepath="C:\\Windows\\system32\\cmd.exe" var chkpoint='/'; var arrayOfStrings = urllink.split(chkpoint); var site=arrayOfStrings[2]; startProcess(tracepath,["/k","echo","------------------------------","&&","echo","LinkMaster","Button","by","(c)okkamas_knife","&&","echo","------------------------------","&&","tracert.exe",site]); function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("URL не найден", path); }; } //------------------------------------------------------ //------------------------------------------------------------------------- })(); this.onclick = function(event) { if(event.button == 1) { getBrowser (). addTab ("http://forum.mozilla-russia.org/viewtopic.php?pid=533522#p533522"); }; }; |
oleg953 > 18-07-2015 15:55:35 |
voqabuhe пишет
В 38.0.5 cyberfox работала удалил случайно 18-07-2015 15:57:00 villa7 пишет
ай спасибо! ай молдца! |
Quartz1t > 27-07-2015 11:40:28 |
Подскажите по кнопке CB code 2 link, делала активными ссылки custombutton://... Не могу найти, похоже удалили. Раньше была в по адресу тык |
Quartz1t > 27-07-2015 19:14:17 |
Нашёл кнопку в другом браузере |
amid525 > 29-07-2015 14:34:15 |
Как добавить в контекстное меню "Копировать текст как BBCode"? |
voqabuhe > 29-07-2015 15:30:59 |
amid525 пишет
В меню не видел, а вот просто кнопка есть Quote+ Bookmarklets and buttons for Firefox and old Opera |
turbot > 29-07-2015 16:47:37 |
amid525 Выделить код Код:// ПКМ по пункту контекстного меню "Копировать" - копирует выделенный текст как цитату document.getElementById('context-copy').setAttribute("oncontextmenu", "event.preventDefault(); event.stopPropagation(); document.getElementById('" + this.id + "').copyTextAsBBcode(); hidePopup();"); // Получить выделенный текст из страницы или из буфера обмена, если нет текста получить 'false' .......... function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля .... if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста .... if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '') ? false : selection; }; this.copyTextAsBBcode = function() { gClipboard.write('[quote]'+ getSelect() +'[/quote]') }; (частично потырено у bunda1, за что ему спасибо |
amid525 > 29-07-2015 17:37:43 |
turbot 29-07-2015 17:42:33
voqabuhe пишет
Это не то. Тут просто цитирование. |
turbot > 29-07-2015 17:52:33 |
amid525 пишет
29-07-2015 17:55:02 amid525 пишет
А как вам еще надо текст копировать? Как ссылку? Как картинку? |
amid525 > 29-07-2015 17:57:14 |
Или меня не так поняли, или я не так попросил. Мне не нужно копировать цитированием. Мне нужно копировать выделенный текст с превращением в ссылку! |
turbot > 29-07-2015 18:07:35 |
amid525 Выделить код Код:// ПКМ по пункту контекстного меню "Копировать" - копирует выделенный текст как ссылку на текущую страницу document.getElementById('context-copy').setAttribute("oncontextmenu", "event.preventDefault(); event.stopPropagation(); document.getElementById('" + this.id + "').copyTextAsBBcode(); hidePopup();"); // Получить выделенный текст из страницы или из буфера обмена, если нет текста получить 'false' .......... function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля .... if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста .... if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '') ? false : selection; }; this.copyTextAsBBcode = function() { gClipboard.write('[url=' + content.location.href + ']'+ getSelect() + '[/url]') }; |
amid525 > 29-07-2015 18:14:50 |
turbot |
turbot > 29-07-2015 18:36:28 |
amid525 Выделить код Код:// ЛКМ по пункту контекстного меню "Copy Text as BBCode Link/Quote" - копирует выделенный текст как ссылку на текущую страницу // ПКМ по пункту контекстного меню "Copy Text as BBCode Link/Quote" - копирует выделенный текст как цитату if ( document.getElementById("context-copy-bb") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "context-copy-bb"; menuItem.setAttribute("label", "Copy Text as BBCode Link/Quote"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAABkSURBVHjaYvj//z8DNTAD1Q2qrGk4XFnT8B8LLq6saWDAhbEZhM2QBihdQqlBDEiGUWRQaWVNQxoUU+wivGFHikF4w45Sg+BhR6lBcExTgw5TyyBceBgbdBiPQUdoV4xQigEDAOLOHqeJF4QiAAAAAElFTkSuQmCC"); menuItem.setAttribute("oncommand", "document.getElementById('" + this.id + "').copyTextAsBBcodeUrl();"); menuItem.setAttribute("oncontextmenu", "event.preventDefault(); event.stopPropagation(); document.getElementById('" + this.id + "').copyTextAsBBcodeQuote(); hidePopup();"); document.getElementById("context-copy").parentNode.insertBefore( menuItem, document.getElementById("context-copy") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.isTextSelected; }, false); const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Получить выделенный текст из страницы или из буфера обмена, если нет текста получить 'false' .......... function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля .... if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста .... if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '') ? false : selection; }; this.copyTextAsBBcodeQuote = function() { gClipboard.write('[quote]'+ getSelect() +'[/quote]'); var notification = 'Выделенный текст скопирован как цитата'; alertsService.showAlertNotification(menuItem.image, menuItem.label, notification, false, "", null, "") }; this.copyTextAsBBcodeUrl = function() { gClipboard.write('[url=' + content.location.href + ']'+ getSelect() + '[/url]'); var notification = 'Выделенный текст скопирован как ссылка'; alertsService.showAlertNotification(menuItem.image, menuItem.label, notification, false, "", null, "") }; UPD: чуть поправил |
turbot > 29-07-2015 19:17:18 |
amid525 |
amid525 > 29-07-2015 20:23:01 |
turbot, спасибо! |
firepox > 05-08-2015 14:57:43 |
Сделайте пожалуйста кнопку "Озвучивание слов и фраз на английском". ps |
turbot > 05-08-2015 16:17:52 |
firepox |
firepox > 05-08-2015 16:52:53 |
turbot |
Ultima2m > 11-08-2015 16:04:44 |
Привет всем. |
turbot > 11-08-2015 16:20:43 |
Ultima2m 11-08-2015 16:24:35
- был бы очень благодарен. (В смысле, чтобы в этом случае срабатывало просто "вставить") |
Ultima2m > 11-08-2015 16:53:12 |
turbot пишет
Вставлять приходится в разные программы (ворд, бэт...), так что только копирование поможет. |
bunda1 > 11-08-2015 20:12:44 |
Ultima2m пишет
Кажется была такая старая кнопка на http://www.smileyfaze.tk/CustomButtons2%20Database.htm или http://odyseus.github.io/CustomButtons/ … abase.html, поискал но не нашел. |
LittleMontana > 15-08-2015 14:46:47 |
Такая проблема. Закинул это в инициализацию, раньше работало. Убирает подсказки при наведении на какое либо меню (ну там, наводишь на крестик - закрыть вкладку показывает). Как сделать так, что бы оно заработало вновь. без пояснений /*Спрятать подсказки*/ (function() { function onPS(e) { if (e.originalTarget.nodeName != "tooltip" || window.__attributesInspector) return; var node = e.originalTarget.ownerDocument.tooltipNode; for (; node && !(node instanceof HTMLAnchorElement); node = node.parentNode); !node && e.preventDefault(); } const observer = { observe: function(win) win.addEventListener("load", this, false), handleEvent: function(e) { var doc = e.target; var win = doc.defaultView; win.removeEventListener("load", this, false); if (doc.location.href == "chrome://browser/content/browser.xul" || win.cbttp) return; win.cbttp = true; win.addEventListener("popupshowing", onPS, true); win.addEventListener("unload", function onUL() { win.removeEventListener("unload", onUL, false); win.removeEventListener("popupshowing", onPS, true); }, false) } } addEventListener("popupshowing", onPS, true); Services.obs.addObserver(observer, "domwindowopened", false); addDestructor(function() Services.obs.removeObserver(observer, "domwindowopened")); |
turbot > 15-08-2015 18:31:51 |
LittleMontana в конце не хватает. в начале - лишняя. |
LittleMontana > 15-08-2015 22:32:57 |
еще раз спасибо!) |
Kiril__777 > 19-08-2015 17:52:05 |
есть способ с помощью кнопок разрешить копирование текста на этом сайте? |
voqabuhe > 19-08-2015 19:17:19 |
Kiril__777 пишет
Может стиль подойдёт? Тогда вот http://forum.ru-board.com/topic.cgi?for … rt=4900#13 |
Kiril__777 > 20-08-2015 03:41:02 |
voqabuhe |
jars > 24-08-2015 22:13:22 |
Подскажите с кнопкой. Есть кнопка добавляющая пункт с подменю куда вписываю программы для запуска в них ссылок. Вот такая функция для скачивания по ссылке во wget: скрытый текст Выделить код Код:function wget(){ var urllink=gContextMenu.linkURL var pleerpath="c:\\Program Files\\UnixUtils\\bin\\wget.exe" var param="-xc -nc" // путь к папке куда сохранять прописан во .wgetrc , тут можно его переопределить -P <нужный путь> startProcess(pleerpath,param,[urllink]); function startProcess(path, param, args) { var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("URL не найден", path); }; } ... и есть сайты где генерятся списки файлов(*.txt или *.m3u) на странице(сериалов. например экс.юа или фс.то ). Как добавить сюда что бы сначала скачался этот файл(куда угодно хоть в профиль) и передать его wget-у как еще один параметр -i <путь_где_скачанный_файл> |
jars > 25-08-2015 13:32:13 |
... ниччё не придумал, сделал по тупому-прямому - черз батнег. скрытый текст Выделить код Код:var icomnu = "data:image/vnd.microsoft.icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OK04ODj/ODg4/zg4OK0AAAAAODg4rTg4OP84ODj/ODg4rQAAAAA4ODitODg4/zg4OP84ODitAAAAAAAAAAA8PDz/PDw8/zw8PP88PDz/AAAAADw8PP88PDz/PDw8/zw8PP8AAAAAPDw8/zw8PP88PDz/PDw8/wAAAAAAAAAAQEBA/0BAQP9AQED/QEBA/wAAAABAQED/QUFB/0FBQf9BQUH/AAAAAEFBQf9BQUH/QUFB/0FBQf8AAAAAAAAAAEVFRa1FRUX/RUVF/0VFRa0AAAAARUVFrUVFRf9FRUX/RUVFrQAAAABFRUWtRUVF/0VFRf9FRUWtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk5OrU1NTf9NTU3/Tk5OrQAAAABOTk6tTU1N/01NTf9OTk6tAAAAAE5OTq1NTU3/TU1N/05OTq0AAAAAAAAAAFJSUv9SUlL/UlJS/1JSUv8AAAAAUlJS/1JSUv9SUlL/UlJS/wAAAABSUlL/UlJS/1JSUv9SUlL/AAAAAAAAAABWVlb/VlZW/1ZWVv9WVlb/AAAAAFZWVv9WVlb/VlZW/1ZWVv8AAAAAVlZW/1ZWVv9WVlb/VlZW/wAAAAAAAAAAWlparVpaWv9aWlr/WlparQAAAABaWlqtWlpa/1paWv9aWlqtAAAAAFpaWq1aWlr/Wlpa/1paWq0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiYmKtYmJi/2JiYv9iYmKtAAAAAGJiYq1iYmL/YmJi/2JiYq0AAAAAYmJirWJiYv9iYmL/YmJirQAAAAAAAAAAZ2dn/2dnZ/9nZ2f/Z2dn/wAAAABnZ2f/Z2dn/2dnZ/9nZ2f/AAAAAGdnZ/9nZ2f/Z2dn/2dnZ/8AAAAAAAAAAGtra/9ra2v/a2tr/2tra/8AAAAAa2tr/2tra/9ra2v/a2tr/wAAAABra2v/a2tr/2tra/9ra2v/AAAAAAAAAABwcHCtcHBw/3BwcP9wcHCtAAAAAHBwcK1wcHD/cHBw/3BwcK0AAAAAcHBwrXBwcP9wcHD/cHBwrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIQhAACEIQAAhCEAAIQhAAD//wAAhCEAAIQhAACEIQAAhCEAAP//AACEIQAAhCEAAIQhAACEIQAA//8AAA=="; var wgetico = "data:image/vnd.microsoft.icon;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFBQUFxMTE2kWFhZwFhYWcBYWFnAWFhZwFhYWcBYWFnAWFhZwFhYWcBYWFnAWFhZwFhYWcBMTE3ETExNQFBQUADc3N843Nzf/LCws3S0tLeEtLS3hLS0t4S0tLeEtLS3hLS0t4S0tLeEtLS3hLS0t4SwsLN84ODjsOTk5/zY2Nq00NDT/FBQURgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMACYmJqw0NDT/NTU1/wgICC4AAAAAAAAAAAAAAAABAQEFAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAgICCQAAAAAdHR2VNzc3/zU1Nf8JCQkxBgYGBgwMDEIGBgYSAAAAAAAAAAAICAgoCwsLOAoKCjQLCws5BAQEEwAAAAAAAAAAHx8fmzY2Nv81NTX/CAgILwsLCwk3NzfWNDQ05wsLCx0AAAAAKSkpxTU1Nf8xMTH4Nzc3/xQUFF0AAAAAAAAAAB4eHpo2Njb/NTU1/woKCjQAAAAACQkJAjExMcs1NTXnDg4OGQAAAAICAgIKAQEBCAEBAQkAAAADAAAABAAAAAAeHh6aNjY2/zU1Nf8KCgo0AAAAABMTEyc0NDTjLi4uwAgICA0AAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQUAAAAAHh4emjY2Nv82Njb/CAgIMBAQEBU2NjbhLS0twwUFBQUAAAAAAQEBBQAAAAMAAAADAAAABAAAAAMBAQEHAAAAAB8fH5s2Njb/NTU1/wcHBycAAAAAAQEBCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR2VNzc3/zQ0NP8SEhJbBwcHJwkJCS8KCgozCgoKNAoKCjIKCgoyCgoKMgoKCjIKCgoyCgoKMgoKCjYGBgYiIiIirjY2Nv8yMjL+NDQ0/zU1Nf80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zMzM/8yMjL/NTU1+TQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP81NTX/NTU18CgoKFkoKCjOKCgoyygoKMsoKCjMKCgozCgoKMwoKCjMKCgozCgoKMwoKCjMKCgozCgoKMooKCjQKCgorygoKC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//4AAAABAAAAAAAAP/wAADn0AAAGDAAAAgwAACAEAAAh9AAAAgQAAC/8AAAAAAAAAAAAAAAAAAAAAAAA//8AAA=="; (function openLinkAsMenu(){ const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var contextMenu = document.getElementById("contentAreaContextMenu"); var separator = document.getElementById("context-bookmarklink"); var eventTarget = null; var menu = document.createElementNS(kXULNS, "menu"); menu.id = "openLinkAsMenu"; menu.setAttribute("label", "Открыть в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", icomnu); menu.hidden = true; contextMenu.insertBefore(menu, document.getElementById("context-sep-open")); var menuPopup = document.createElementNS(kXULNS, "menupopup"); menu.appendChild(menuPopup); var lst = [ { label:"Wget [ Url download ]", command:wgeturl, image:wgetico }, { label:"Wget -i [ Загрузить по списку ]", command:wgetlist, image:wgetico } ]; for(var i = 0, m; m = lst[i]; i++){ var menuItem = document.createElementNS(kXULNS, "menuitem"); menuItem.setAttribute("label", m.label); menuItem.setAttribute("class", "menuitem-iconic"); // +1 menuItem.setAttribute("image", m.image); // +2 menuItem.setAttribute("type", "m.radio"); menuItem.addEventListener("command", m.command, false); menuItem.id = "context-Demo-Menu-" + m.label.toString(); menuPopup.appendChild(menuItem); } contextMenu.addEventListener("popupshowing", setMenuDisplay, false); function setMenuDisplay(aEvent) { document.getElementById("openLinkAsMenu").hidden = false; } function setMenuDisplay(aEvent) { if (gContextMenu.onLink) { document.getElementById("openLinkAsMenu").hidden = false; } else document.getElementById("openLinkAsMenu").hidden = true; } // ========================================================================== function wgeturl(){ var url = gContextMenu.linkURL; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\wget\\wget.cmd"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, ["-cN", url], 2); } //-------------------------------------------------------------------------------- function wgetlist(){ var url = gContextMenu.linkURL; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\wget\\wget.cmd"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, ["-cNi", url], 2); } // ================ end ================================ })(); ... а рядом с wget.exe положил батник wget.cmd (кот. запускает кнопка) и в нем уже выставляю параметры куда-и-как качать. И оказывается wget сам понимает что в ссылке файл-список и подхватует его. блеск. скрытый текст Выделить код Код:@echo off @cd /d "%~dp0" "%~dp0wget.exe" --content-disposition -P C:\0l0\WgetDl\%RANDOM% %* pause @exit Тянет списками и с экс-а и фс.то. мая довольна. |
foxboy > 27-08-2015 17:05:18 |
Была такая кнопка, то есть, добавляет в меню вкладки "Перезагружать вкладку". Время задается в самой кнопке в инициализации. В FF28 и PM работает, а в FF35 и FF38 нет. Можно как-то поправить или может есть рабочая? |
jars > 27-08-2015 17:47:44 |
foxboy картинка 55kb. погадаю |
Ultima2m > 27-08-2015 18:53:05 |
В дополнении Tab Mix Plus есть такая функция |
jars > 28-08-2015 09:30:52 |
Вот есть кнопка Copy Links Выделить код Код:// Copy links - При нажатии ЛКМ копирует ссылки из выделенного текста, а если ничего не выделено, то и вообще все ссылки, в буфер обмена (≈ расширению Multi Links). var win = document.commandDispatcher.focusedWindow, doc = win.document; var sel = doc, winSel = win.getSelection(); if(winSel.toString()){ sel = doc.createElement('div'); sel.appendChild(winSel.getRangeAt(0).cloneContents()); }; var str = '', links = sel.getElementsByTagName('a'); for(var i = 0, lnk; lnk = links[i]; i++) { if(lnk.href)str += lnk.href + '\r\n' }; gClipboard.write(str); ... из неё переделал кнопку Copy image addr Выделить код Код:// скопировть адреса изображений на странице var win = document.commandDispatcher.focusedWindow , doc = win.document; var str = '', links = doc.getElementsByTagName('img'); for(var i = 0, lnk; lnk = links[i]; i++) { if(lnk.src)str += lnk.src + '\r\n' }; gClipboard.write(str); ... а можно сделать еще одну кнопку для копирования всех "источников" на странице. Тех что лежат в src= и href= ? А может уже есть, поделитеся. |
oleg953 > 30-08-2015 12:36:54 |
Всем добрый.Чтоб не плодить сущности спрошу здесь.Нужна кнопка скрывающая панель меню |
Ultima2m > 30-08-2015 13:39:21 |
Панель меню отключается как и другие панели или в CTR |
oleg953 > 30-08-2015 13:55:16 |
Ultima2m пишет
да,но она не работает на 40 пункты меню не активны |
rey > 11-09-2015 19:22:11 |
прошу помощи по кнопке. вроде бы все перерыл, но везде не совсем в ту сторону варианты: нужна замена кнопки Новая вкладка с функциями вставки буфера, а везде зачем то кнопки связанные с адрессной строкой лежат.. |
Dumby > 12-09-2015 16:34:11 |
bunda1 пишет
скрытый текст Выделить код Код:alert( [...document.querySelectorAll('[onclick^="checkForMiddleClick("]')] .map(node => node.nodeName + (node.id ? "\t\t#" + node.id : "")) .sort().join("\n") ); |
bunda1 > 12-09-2015 16:53:29 |
Dumby пишет
Мда |
oleg953 > 12-09-2015 20:04:31 |
Всем добрый.Как в этой кнопке Выделить код Код:/*Initialization Code*/ this.tooltipText = "Left => Перезагрузить \nMiddle => Закрыть \nRight => Меню"; this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(Components.interfaces.nsIAppStartup); appStartup.quit(appStartup.eForceQuit | appStartup.eRestart); } else if(event.button == 1 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов goQuitApplication(); } }; зделать так чтобы Fox закрывался пкм а не колёсиком.Спасибо |
bunda1 > 12-09-2015 21:12:08 |
oleg953 Выделить код Код:// Настройка функций кликов мыши для кнопки ................. this.onclick = function(e) { if ( e.button == 0 ) Application.restart(); // ЛКМ if ( e.button == 1 ) gShowPopup(this); // СКМ if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); goQuitApplication(); } }; this.tooltipText = "Л: Перезагрузить \nС: CB Меню \nП: Закрыть"; |
oleg953 > 12-09-2015 21:19:24 |
bunda1 пишет
спасибо |
Stkvsky > 13-09-2015 12:52:01 |
https://forum.mozilla-russia.org/viewto … 68#p694168 |
LittleMontana > 13-09-2015 13:42:53 |
Прошу помощи с кнопкой, которая показывает какая раскладка на данный момент включена ( у меня пуск сворачивается, и данное окно постоянно теряется из виду). Необходим выбор между - русской и английской раскладкой. (просто показывать, что на данный момент, без возможности переключения данной кнопкой) |
bunda1 > 13-09-2015 14:45:00 |
LittleMontana пишет
Неплохо бы ссылку на кнопку добавить. |
Dumby > 13-09-2015 18:29:45 |
bunda1 пишет
Да, неплохо бы. И, заодно, описание как именно «просто показывать». скрытый текст Выделить код Код: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%3EKL%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAl0lEQVR42mNkoAwwAvH////J1AwEg0T/0/vWmXePMfBMmG6RL82wvX+P136wEkXl21FfVFtfMsCkCOv3Pn5CddEXoLhVnOXREG6Gk5cZSdAfx12w6CVCMxCQoh8B0qpdZpozkK+fgUF82yZdT5L1O+r9D/sKYZPlf5TwB3OfQPQjAaAdhWL49COcg4g//PoHOv1Rop8SAACkKJ0R5kMP6wAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BgBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%20%7C%7C%20%28%28%5Bimg%5D%29%20%3D%3E%20%7B%0A%0A%09var%20interval%20%3D%20500%3B%20//%20ms%0A%0A%09var%20imgEN%20%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAlElEQVR42mNkoAwwAvH////J1AwEg0T/57XW+5YcQ5VOM10/kxcqDmJLAcVOpm/smAXjkqCfgcF+m3+BJ0H9MHtgANlc6Yr/JgzE268wwak/nwFFPM20guE0OfoVJmjIF9w4iOI1UtwPMkvtZqDXU0L6kYGVxpSjUifg+vN5oYFHtn4GhmcTGE8fxKZ/oNMfJfopAQDmnKYRpM4nUAAAAABJRU5ErkJggg%3D%3D%22%3B%0A%09var%20imgRU%20%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAjklEQVR42mNkoAwwAvH////J1AwEg0L/CYagTnTJmMkMQdIMT9cx5C5hYFBgmNzHIM0A4zIwlK9jMMevH6KHgST9KHaCFcmQb789w7p8ct2vEMPQFwRikKYf6H7pNQydB7H4BcI9OREsCzUOq/8ZGIpyGR7Awk/6KYyLxXWEwg+qDtUIuNcGUfqjTD8lAABRE34RggBENwAAAABJRU5ErkJggg%3D%3D%22%3B%0A%09var%20imgERR%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAc0lEQVR42mNkoAwwAvH////J1AwEg0n/nYnWqgXHoJJp2/7P9MQliE3/9nRGr1nIxltNuH1UrRuLYL4KFv1Q7SB5760QK9O2bWPwwhSEOwG7/+EORnYsVkEs+onXjFU/VCWyJ3EI0ib+KbV/oN1Pln5KAACv6I0Rg3TeKQAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0A%09var%20data%20%3D%20%7B67699721%3A%20imgEN%2C%2068748313%3A%20imgRU%7D%3B%0A%0A%09var%20%7Bctypes%7D%20%3D%20Cu.import%28%22resource%3A//gre/modules/ctypes.jsm%22%2C%20%7B%7D%29%3B%0A%09var%20lib%20%3D%20ctypes.open%28%22user32.dll%22%29%3B%0A%09var%20method%20%3D%20lib.declare%28%22GetKeyboardLayout%22%2C%20ctypes.winapi_abi%2C%20ctypes.uint32_t%2C%20ctypes.uint32_t%29%3B%0A%0A%09var%20currentLayout%2C%20layout%3B%0A%09function%20tick%28%29%20%7B%0A%09%09if%20%28%28layout%20%3D%20method%280%29%29%20%3D%3D%20currentLayout%29%20return%3B%0A%09%09currentLayout%20%3D%20layout%3B%20img.src%20%3D%20data%5Blayout%5D%20%7C%7C%20imgERR%3B%0A%09%7D%0A%09tick%28%29%3B%20var%20id%20%3D%20setInterval%28tick%2C%20interval%29%3B%0A%09addDestructor%28%28%29%20%3D%3E%20clearInterval%28id%29%20%7C%7C%20lib.close%28%29%29%3B%0A%0A%09this._handleClick%20%3D%20%28%29%20%3D%3E%20alert%28method%280%29%29%3B%0A%0A%7D%29%28document.getAnonymousNodes%28this%29%29%3B%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 |
LittleMontana > 13-09-2015 23:42:50 |
спасибо |
becool > 15-09-2015 19:35:57 |
Пользуюсь Edit Bookmark Plus. Нельзя ли сделать так, чтобы при добавлении закладки фокус был на строке названия закладки? |
nafanja333 > 17-09-2015 13:19:48 |
Здравствуйте. Есть ли такая кнопка открытия конкретной заложенной в нее закладки? |
jars > 17-09-2015 13:32:46 |
Выделить код Код:var url = "http://нужный_адресс"; // --------- в фоновой вкладке // gBrowser.addTab(url); // --------- в активной вкладке getBrowser (). selectedTab = getBrowser (). addTab(url); |
nafanja333 > 17-09-2015 13:49:33 |
jars пишет
Супер. Огромное спасибо, все работает. Только вопросик. Можно сделать открытие этой ссылки рядом с открытой страницей если открытая страница находится в средине группы вкладок? |
jars > 17-09-2015 19:34:37 |
Выделить код Код:var url = "http://нужный_адресс"; // ----------- во вкладке рядом с текущей gBrowser.moveTabTo( gBrowser.addTab( url ), gBrowser.mCurrentTab._tPos +1); |
nafanja333 > 20-09-2015 12:56:22 |
jars пишет
Спасибо. Еще бы если открывало ее как активную То есть с переходом на нее. |
jars > 20-09-2015 17:00:58 |
Выделить код Код:// -------------- в активной вкладке рядом с текущей var url = "http://нужный_адресс" tpos = gBrowser.selectedTab._tPos+1; gBrowser.moveTabTo(getBrowser().selectedTab = getBrowser().addTab(url),tpos); 20-09-2015 17:10:31 Выделить код Код:// Открыть - закрыть страницу в бок.панели if (document.getElementById("sidebar-title").value) { toggleSidebar(); } else { openWebPanel("Облако Bix 16GB", "https://bix.com/"); // Первый - произвольный заголовок для панели, Второе - нужный адресс } |
zhe540 > 21-09-2015 15:30:11 |
Прошу помощи с совмещением функций двух кнопок. Существует кнопка (набор кнопок) Save+ (https://forum.mozilla-russia.org/viewto … 40#p493040). В ней есть кнопка сохранения ярлыка страницы с иконкой (иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\). Можно ли добавить эту функцию к кнопке "Сохранить как..." что бы сохранять другие файлы с иконкой сайта? Например html,mht,maff. |
bunda1 > 21-09-2015 16:01:09 |
zhe540 пишет
Нет нельзя, слишком сложно это. |
becool > 24-09-2015 08:51:13 |
https://forum.mozilla-russia.org/viewto … 01#p688401 |
AlexCondor > 24-09-2015 13:01:40 |
Прошу подправить кнопочку. |
bunda1 > 25-09-2015 00:37:33 |
AlexCondor пишет
Выделить код Код: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%3EAutocopy+3%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy+3%20%u043E%u0442%2024.09.2015.%20...............%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20%21cbu.getPrefs%28%22Autocopy%22%29%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u0441%u0442%u0440%u043E%u043A%20%u0432%20%27about%3Aconfig%27%20%u0438%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20...............%0Aif%20%28%20%21cbu.isPref%28%22Autocopy.saveWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%5B%22Autocopy%22%2C%20%22Autocopy.reset%22%2C%20%22Autocopy.selectingTextBlink%22%2C%20%22Autocopy.selectWithDoubleClick%22%2C%0A%20%20%20%20%20%20%22Autocopy.copyWithDoubleClick%22%2C%20%22Autocopy.saveWithDoubleClick%22%5D.forEach%28function%28pref%29%20cbu.setPrefs%28pref%2C%20false%29%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0432%u044B%u0434%u0435%u043B%u044F%u0435%u0442%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%27%2C%20value%3A%20%27Autocopy.selectWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20mItem.onclick%20%3De%3D%3E%20%7B%20e.stopPropagation%28%29%3B%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%20%7D%3B%20%20%0A%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20CB%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28%20document.createElement%28%22menu%22%29%20%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0AmenuPopup.lastChild.appendChild%28%20document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%20%29%3B%0AmenuPopup.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20...............%0Aconst%20s%20%3D%20%22Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%0A%0A%0A%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20cbu.getPrefs%28%22Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22Autocopy%22%2C%20false%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A//addDestructor%28function%28%29%20%7B%20Services.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%20%29%20%7D%29%3B%20%20%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target%20instanceof%20Ci.nsIDOMNSEditableElement%20%29%20return%3B%0A%20%20%20var%20win%20%3D%20e.target.ownerDocument.defaultView%3B%0A%20%20%20if%20%28%20win.top%20%21%3D%20content%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%29%20autocopy.lastSelection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%20%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%21%3D%3D%20%27mouseup%27%20%29%20return%3B%20%0A%20%20%20%0A%20%20%20var%20selection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy%22%29%20%26%26%20selection%20%26%26%20selection%20%21%3D%3D%20autocopy.lastSelection%20%29%20%7B%0A%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20%20%20%20%20%20if%20%28%20%21cbu.getPrefs%28%22Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%20%3D%3E%20window.content.focus%28%29%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0AaddEventListener%28%22mousedown%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20...............%0Afunction%20middleMousePaste%28e%29%20%7B%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20cbu.getPrefs%28%27middlemouse.paste%27%29%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.commandDispatcher.getControllerForCommand%28%22cmd_paste%22%29%20%29%20%7B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20commandDispatcher%20%3D%20%28%20this.document%20%7C%7C%20document%20%29.commandDispatcher%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20controller%20%3D%20commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20gClipboard.read%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%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%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%20%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20...............%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20content.document%3B%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28%20doc%2C%20%28%20%28doc.location.protocol%29.slice%280%2C4%29%20%3D%3D%20%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%29%20%7B%20%0A%20%20%20%20%20%20%20%20gClipboard.write%28%20content.location%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20%20%20%20%20%20document.getElementById%28%22identity-box%22%29.setAttribute%28%22style%22%2C%20%22background%3A%20red%3B%22%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%20%3D%3E%20document.getElementById%28%22identity-box%22%29.removeAttribute%28%22style%22%29%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20true%2C%20document.getElementById%28%22identity-box%22%29%20%29%3B%0A%0A%20%20%20%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20handleDblClick%28e%29%20%7B%3B%0A%0A%20%20var%20node%20%3D%20e.target%3B%0A%20%20var%20editor%20%3D%20node.editor%3B%0A%20%20%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%20....%0A%20%20if%20%28%20e.button%20%3D%3D%200%20%26%26%20custombuttons.getPrefs%28%22Autocopy.selectWithDoubleClick%22%29%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28%20/input%7Ctextbox%7Ctextarea/.test%28%20node.localName%20%29%20%29%20%21editor%20%3F%20node.select%28%29%20%3A%20editor.selectAll%28%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20....%20%20%20%20%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.saveWithDoubleClick%22%29%20%26%26%20node.localName%20%3D%3D%20%27img%27%20%29%20%7B%0A%20%20%20%20%20%20%20saveImageURL%28%20gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%20%29%3B%0A%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%2C%2020%29%3B%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.copyWithDoubleClick%22%29%20%26%26%20%21/findbar%7Ctabbrowser/.test%28%20node.localName%20%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%21editor%20%3F%20goDoCommand%28%22cmd_copy%22%29%20%3A%20editor.copy%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28%20node.textbox%20%7C%7C%20node%20%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28%20box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20catch%28e%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043E%u043A%u043E%u043D%20%u0430%u0434%u0440%u0435%u0441%u0430%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%20%u0432%20%u043A%u043E%u0434%u0435%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u043C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20...............%0Avar%20observer%20%3D%20%7B%20%20%0A%20%20%20%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20%20%20var%20href%20%3D%20doc.location.href%3B%20%0A%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0430%20Custom%20Buttons%20....%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20href.substring%280%2C%2041%29%20%3D%3D%20%22chrome%3A//custombuttons/content/editor.xul%22%20%29%20%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20Services.obs.removeObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%20%7D%29%3B%20%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20+%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 |
AlexCondor > 25-09-2015 09:44:32 |
bunda1 |
amid525 > 25-09-2015 10:45:10 |
bunda1, можно сделать, что-бы окно-библиотека "История", при клике по адресу само закрывалось? |
bunda1 > 25-09-2015 17:31:12 |
amid525 пишет
Выделить код Код:function observer(subject) { subject.addEventListener("load", function l(e) { subject.removeEventListener("load", l); if ( subject.location == 'chrome://browser/content/places/places.xul' ) { var win = e.target.defaultView; win.addEventListener("click", function c(e) { if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) ) e.target.onclick && e.button < 2 && setTimeout(()=> win.close(), 50); win.addEventListener("unload", function u() { win.removeEventListener("unload", u); win.removeEventListener("click", c); }) }) } }); }; Services.ww.registerNotification(observer); addDestructor(function() Services.ww.unregisterNotification(observer) ); |
amid525 > 25-09-2015 18:47:10 |
bunda1 |
bunda1 > 25-09-2015 21:16:35 |
amid525 пишет
Выделить код Код:function observer(subject) { subject.addEventListener("load", function l(e) { subject.removeEventListener("load", l); if ( subject.location == 'chrome://browser/content/places/places.xul' ) { var win = e.target.defaultView; win.addEventListener("click", function c(e) { if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) ) (e.target.onclick || /open|open/.test(e.target.id)) && e.button < 2 && setTimeout(()=> win.close(), 250); win.addEventListener("unload", function u() { win.removeEventListener("unload", u); win.removeEventListener("click", c); }) }) } }); }; Services.ww.registerNotification(observer); addDestructor(function() Services.ww.unregisterNotification(observer) ); 25-09-2015 21:19:18 amid525 пишет
У меня открывается без проблем, проверял на разных версиях. Может проверь на чистом профиле. |
amid525 > 25-09-2015 21:42:28 |
Разобрался. Я делал один клик по ссылке. Тогда окно закрывается и перехода небыло.. |
jars > 26-09-2015 17:02:51 |
Привет, подмогните с кнопкой. В конт. меню страниц есть пункт(создается расширением) с известным id = "mediasniffer" У него по умолчнию одно действо - в туттипе выводит адресс и по ЛКМ он копирует этот адресс. Хочу повесить на него доп. обработку кликов мыши ЛКМ - ПКМ. Сделал вот такую функцию и она работает правильно, все запускается и "получается" то что нужно: скрытый текст Выделить код Код:// var gid = document.getElementById("mediasniffer"); // gid.addEventListener("click", function(e) { - пробовал , вроде не оно, не работает вообще. help! addEventListener("click", function(e) { var file = Services.dirsvc.get('ProfD', Ci.nsIFile); var gid = document.getElementById("mediasniffer"); if ( e.button == 0 ) { var file = Services.dirsvc.get('ProfD', Ci.nsIFile); // скачать во wget видео var url = ('"' + gid.getAttribute("tooltiptext") + '"'); var lab = gBrowser.mCurrentTab.label; file.initWithPath(file.path + "\\Soft\\wget\\wgetfile.cmd"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url, lab], 2); } if ( e.button == 2 ) { // Открыть в Smplayer var url = gid.getAttribute("tooltiptext"); file.initWithPath("C:\\0l0\\MyPROG\\FM\\TC\\SOFT\\MEDIA\\SMplayer\\smplayer.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url], 1 ); } }, false); ... но понятно что ежели закинуть это в Инициализацию, то работает она глобально для бравзера, всего ![]() Как повесить это все именно на нужный пункт с id = "mediasniffer" ![]() |
Dumby > 26-09-2015 17:57:55 |
jars скрытый текст Выделить код Код:addEventListener("click", function(e) { if (e.target.id != "mediasniffer") return; // ... }, false, document.getElementById("contentAreaContextMenu")); |
jars > 26-09-2015 18:29:04 |
Не пробовал, потому как не додумался |
bunda1 > 26-09-2015 18:54:43 |
amid525 пишет
Выделить код Код:function observer(subject) { subject.addEventListener("load", function l(e) { subject.removeEventListener("load", l); if ( subject.location == 'chrome://browser/content/places/places.xul' ) { var win = e.target.defaultView; win.addEventListener("click", function c(e) { if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) && e.button < 2 ) { (e.target.onclick || /open/.test(e.target.id)) && setTimeout(()=> win.close(), 250); if ( e.button == 0 ) { var target = e.originalTarget; var tree = target.parentNode; var box = tree.treeBoxObject; var row = box.getRowAt(e.clientX, e.clientY); var node = tree.view.nodeForTreeIndex(row); gBrowser.selectedTab = gBrowser.addTab(node.uri); } } win.addEventListener("unload", function u() { win.removeEventListener("unload", u); win.removeEventListener("click", c); }) }) } }); }; Services.ww.registerNotification(observer); addDestructor(function() Services.ww.unregisterNotification(observer) ); |
amid525 > 26-09-2015 21:11:52 |
bunda1 26-09-2015 21:22:19 |
bunda1 > 26-09-2015 22:09:41 |
amid525 пишет
Выделить код Код:this.setAttribute('oncommand', "PlacesCommandHook.showPlacesOrganizer('History'); CustomizableUI.hidePanelForNode(this);"); addEventListener("TabOpen", function(e) { var newTab = e.target; if ( newTab.label.substring(0, 16) == "custombutton://%") setTimeout(function() { gBrowser.removeTab( newTab ) }, 500); }, false, gBrowser.tabContainer ); function observer(subject) { subject.addEventListener("load", function l(e) { subject.removeEventListener("load", l); if ( subject.location == 'chrome://browser/content/places/places.xul' ) { var win = e.target.defaultView; win.addEventListener("click", function c(e) { if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) && e.button < 2 ) { (e.target.onclick || /open/.test(e.target.id)) && setTimeout(()=> win.close(), 150); if ( e.target.onclick && e.button == 0 ) { var target = e.originalTarget; var tree = target.parentNode; var box = tree.treeBoxObject; var row = box.getRowAt(e.clientX, e.clientY); var node = tree.view.nodeForTreeIndex(row); gBrowser.selectedTab = gBrowser.addTab(node.uri); } } win.addEventListener("unload", function u() { win.removeEventListener("unload", u); win.removeEventListener("click", c); }) }) } }); }; Services.ww.registerNotification(observer); addDestructor(function() Services.ww.unregisterNotification(observer) ); |
amid525 > 26-09-2015 22:23:34 |
Все то-же самое. В первый раз нормально, одна вкладка. Второй раз - две одинаковые одновременно, третий - три, и так далее... 26-09-2015 22:26:08 |
bunda1 > 27-09-2015 11:39:38 |
amid525 пишет
Наверно ты положил мой код в вкладку Код а не в вкладку Инициализация |
amid525 > 27-09-2015 12:20:07 |
Хм. Заработал уже тут. В самом начале пробовал в инициализации - ни какой совсем реакции не было. мистика |
Mishania > 27-09-2015 14:37:20 |
День добрый. Есть кнопочка для включения прокси Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E2.0.7.5%3C/Cb2Ver%3E%0A%20%20%3Cname%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%200%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27network.proxy.type%27%3B%0Athis.onImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg%3D%3D%27%3B%0Athis.offImage%3Dthis.image%3B%0A%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getIntPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D1%29%7B%0A%20%20this.image%3Dthis.onImage%3B%0A%20%20this.checked%3Dtrue%3B%0A%20%7Delse%7B%0A%20%20this.image%3Dthis.offImage%3B%0A%20%20this.checked%3Dfalse%3B%0A%20%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%0A%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/proxy-button-yan.html%27%29%3B%5D%5D%3E%3C/initcode%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%3C/custombutton%3E Она включает ручную настройку прокси. А как сделать что-бы включалась URL автоматической настройки? |
sonyas75 > 27-09-2015 16:05:33 |
у меня такая Proxy стоит, переделанная мною тут в ней меняется параметр network.proxy.type с 1 на 0 и обратно. Я сменил на 2 и 5. скрытый текст // Proxy от 11.12.2013. // Настройка функций кликов мыши для кнопки ................................ // Проверить наличие строк в about:config и создать если не существует ................................ // Подсказка для кнопки ................................ // Создать меню для кнопки ................................ var menuPopup = self.appendChild( document.createElement("menupopup") ); // добавить стандартное контекстное меню .... // Функция открывает настройки прокси в окне ................................ // добавить атрибут "prefwindow" // Функция открывает настройки прокси в вкладке ................................ // Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................ // Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ................................ // Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................................ if ( lab == undefined || i !== undefined || i == 0 ) return; tooltip.showPopup( gBrowser, posX, posY ); |
Mishania > 27-09-2015 17:02:57 |
sonyas75 |
sonyas75 > 27-09-2015 17:09:12 |
Mishania > 27-09-2015 18:11:01 |
sonyas75 |
bunda1 > 27-09-2015 18:19:28 |
Mishania пишет
Замени 1 на 2 в cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 1 ) ? 0 : 1 ); в начале кода инициализации. |
Mishania > 27-09-2015 19:28:38 |
bunda1 Выделить код Код:custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E2.0.7.5%3C/Cb2Ver%3E%0A%20%20%3Cname%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%200%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27network.proxy.type%27%3B%0Athis.onImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg%3D%3D%27%3B%0Athis.offImage%3Dthis.image%3B%0A%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getIntPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D1%29%7B%0A%20%20this.image%3Dthis.onImage%3B%0A%20%20this.checked%3Dtrue%3B%0A%20%7Delse%7B%0A%20%20this.image%3Dthis.offImage%3B%0A%20%20this.checked%3Dfalse%3B%0A%20%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%0A%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/proxy-button-yan.html%27%29%3B%5D%5D%3E%3C/initcode%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%3C/custombutton%3E нельзя изменить. Понимаю что смысл тот-же, но кнопка по функционалу. |
bunda1 > 27-09-2015 19:55:14 |
Mishania Выделить код Код: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%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..................%0Athis._handleClick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22network.proxy.type%22%2C%20%28cbu.getPrefs%28%22network.proxy.type%22%29%20%3D%3D%202%20%29%20%3F%200%20%3A%202%20%29%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u0432%20%27about%3Aconfig%27%20..................%0Avar%20s%20%3D%20%22network.proxy.type%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%28cbu.getPrefs%28s%29%20%3D%3D%200%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg%3D%3D%27%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28function%28%29%20gPrefService.removeObserver%28s%2C%20toggleImage%2C%20false%29%20%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 |
Mishania > 27-09-2015 21:08:31 |
bunda1 |
LittleMontana > 28-09-2015 12:01:12 |
есть кнопка (в готовых брал), которая показывает название вкладки и фавикон сайта. можно ли сделать доп. функционал - при нажатии на название вкладки, которая эта кнопка показывает или на фавикон ЛКМ - копировался адрес в адресной строке (ну или другими словами URL данной страницы). скрытый текст const iconSize = 16; const buttonWidth = 700; const defaultFavicon = ""; if (gBrowser.currentURI.spec == "about:customizing") return; const labMarginLeft = 7; var [img, lab] = document.getAnonymousNodes(this); var mo = new MutationObserver(() => lab.value = self.tooltipText = document.documentElement.getAttribute("title").split('- Mozilla Firefox')[0]); var pl = {}, df = defaultFavicon || PlacesUtils.favicons.defaultFavicon.spec; //addDestructor(() => { for(var node of [self, img, lab]) node.removeAttribute("style") }); /*Спрятать подсказки*/ upd: появилась мысль, не знаю, трудная ли в исполнении... вот есть эта кнопка - показывает название вкладки, можно ли сделать что бы при наведении на нее показывалась адресная строка - с возможностью ввода адресов, правки и т.п. (ну как обычная адресная строка, только без выпадающего списка) |
jars > 30-09-2015 20:02:31 |
Есть ли в Mozilla возможность работать с XButton`s мыши ? У мну одна кнопка XButton на мыше Logitec и сейчас она делает что-то не понятное. То возврат назад по истории посещений, то подъём "вверх" по сайту. 30-09-2015 20:14:02 Выделить код Код:this.onclick = function(с) {if ( с.button == 0 ) gClipboard.write( content.location );} по ЛКМ будет копировать адресс. |
LittleMontana > 01-10-2015 22:24:11 |
спасибо! |
Baron_ > 03-10-2015 20:35:05 |
Есть вот такая кнопка google-translate от Lex1 https://forum.mozilla-russia.org/viewtopic.php?pid=591530#p591530 |
jars > 04-10-2015 04:13:14 |
Добавь в конец: Выделить код Код:addEventListener('dblclick', function(d){ if ( d.button == 2 ) { d.preventDefault(); d.stopPropagation(); ujs_google_translate('auto|ru'); document.getElementById("contentAreaContextMenu").hidePopup(); } }, false, gBrowser); |
Baron_ > 04-10-2015 22:50:35 |
Спасибо. |
zhe540 > 19-10-2015 12:23:27 |
Помогите пожалуйста с кнопкой. Есть кнопка (набор кнопок) Save+ (https://forum.mozilla-russia.org/viewto … 40#p493040). В ней есть кнопка "Сохранить ярлык страницы как.." Можно ли добавить ее в контекстное меню, чтобы сохранять адресс ссылки при клике на ней правой кнопкой, а при клике просто на странице сохранять адресс страницы? |
KOMMEHTATOP > 23-10-2015 15:47:22 |
Доброго времени. |
Coroner > 23-10-2015 16:33:30 |
KOMMEHTATOP |
KOMMEHTATOP > 23-10-2015 16:50:13 |
Coroner пишет
У меня этой панели с лева НЕТ!!!,размер я увеличивал.(-1на100) |
Coroner > 23-10-2015 17:23:05 |
KOMMEHTATOP пишет
Куда же Вы тогда не можете кнопки перетащить ? В чём проблема ? Не можете перетащить или панели нет ? |
jars > 23-10-2015 18:01:04 |
KOMMEHTATOP |
KOMMEHTATOP > 23-10-2015 18:11:45 |
Coroner пишет
Если честно перешел недавно с Opera.Поэтому установив эту кнопку,не пойму что и куда.Панель вроде есть ,но когда перехожу в режим "изменить - панели нет. |
villa7 > 23-10-2015 18:22:49 |
KOMMEHTATOP |
KOMMEHTATOP > 23-10-2015 19:17:58 |
villa7 |
villa7 > 23-10-2015 19:28:48 |
KOMMEHTATOP |
KOMMEHTATOP > 23-10-2015 21:00:53 |
KOMMEHTATOP пишет
Вот еще вопрос интересует.Либо кнопку ибо расширение? |
villa7 > 24-10-2015 00:11:29 |
KOMMEHTATOP |
Coroner > 24-10-2015 00:36:29 |
KOMMEHTATOP пишет
Вы про VT ? Я всё-таки в пользу расширения решил. Удобнее, если оформление под себя подгоняешь. Но расход ресурсов чуть больше. Про ту-же кнопку спрошу : будучи установленной в style: "-moz-appearance: none; display: -moz-box; height: 50%; position: fixed; min-width: 40px; top:200px" не решит проблему, так как панели в |
KOMMEHTATOP > 26-10-2015 14:15:53 |
Доброго времени. |
oleg953 > 26-10-2015 14:35:36 |
у меня с этой №40 чуть отредактированой так |
villa7 > 26-10-2015 15:10:44 |
KOMMEHTATOP скрытый текст Выделить код Код:this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ function startProcess(path, args) { var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); if(file.exists()) { var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); } else custombuttons. alertBox ("Файл не найден", path); }; startProcess("C:\\Program Files\\Radiocent\\Radiocent.exe",[""]); } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath("C:\\WINDOWS\\system32\\taskkill.exe"); var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); var args = ["/F", "/IM","Radiocent.exe"]; process.run(false, args, args.length) } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов event.preventDefault(); event.stopPropagation(); } }; |
KOMMEHTATOP > 26-10-2015 15:27:48 |
villa7 Для Mozilla Firefox Есть похожее в Элементы яндекса: Радио,нет только громкости,но есть редактор радиостанций.Но элементы яндекс: напичкано лишнего -город,погода,почта,радио и т.д.А мне нужно только радио. |
oleg953 > 26-10-2015 15:37:26 |
101.ру портбельная с записью http://rghost.ru/6dQP652mF скрытый текст Выделить код Код: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%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u043D%u0435%u0448%u043D%u0438%u0435%20win%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u044F%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMAAwQAKCImDyo4IWkYaBzFQ6xI8FG/V/VCq0jcGGQbkwAQACQAAAAAAAIAAwAAAAAAAAAAAAAAAAEAAAIAAgIAQy4iYp9YOuZUah3/QMJQ/nfxgP97+Yb/f/+L/m/7ev87v0L1BzwIawAAAAAAAgADAAAAAAEAAAIAAAAAQR4Ki7pwNP//tG79aXQg/CGwM/tL3lP+SeJU/krmVf5I5lT8ROZQ/SjIMf8DQgWFAAAAAAACAAMAAAAAMRoKX5hKHP/qoVT69JtU/WVsGP8RmyP/LMAz/ynHM/4ozTP8Jc4w+x/KK/sbxyn7Daoa/wAlA1QAAAEAAgAAA2o5G9GhVyT/z305/N54Nv9eWxTyAnMR6Qp+DvsIig//CpQR/wucE/8KnQ//CpkG/QedAf8FZADWAwIACigYIklrMln7h0VB/6dcJPvBaCz/XC8RlgABAAACDgAlABUANAAfAUsAKABeAz8RlAhfUvkDZnP/CFtw+gcXKklSLEeVlUiB/6VamPykYGD7o1wl/2A4H5YAAAAAAgEBBAAAAAAAAQMEAAAAAAUoVmcHcfT/AIL5+QCK//8BOZ2rXjJRsJtOhf/SgLr9zoK++5hbW/9AKhaGAAAAAAICAQYAAQACAAMDBwAAAAABLlprD4///wqh9/oJsf//Al7M1FsxT6ucUYf/1Iq//Oyd1vzYkMf/X0FVhQAAAAADAgMEAAAAAAACBAQBAAAAAC1aYRSQ//8lpPr6Irj//wtt1t5GJT2DmlCF/82Juvz2reH/8Kbb/eej1P9jR1t+AAAAAAMCAwQBAwUGAAAAAAYkV2wjkv//PLP7+jzE//8VaMXMHhAaP5FLff+4d6b++rno//iz5P/3suP88rLg/2hPYn8AAAAAAQAAAAgPYW1bXeD/PJL0/1DB/fxSy///EkiRlwAAAABqOFzBp16S/+ev2Pz/we///b7s//u86vr7wev/dFxfcgAJYmhxeP//lJH+/juS+/5q0f/+V7n4/AASODwAAAAAHA4YP5NMgP+6fKj9/Mzw/f3H8/7/y/X/7LvU811Ywd54gPv8r6z//puZ/P1Akff5g+L//y5hmZ8AAAAAAgECAwAAAAA1Gy5vmlGG/8iOuP3/1vX/8sfe811YxNZ6g/f5ubb9/a6u+/uvrfz8TZPt/1GFvMcAAQwNAQAAAAAAAAACAQEDAAAAACoVJVh/QW3umWuP7V5fzeSMk/j9zcn//7+//v7Av///o6Pz+yU2XH0AAwYKAQAAAAAAAQEAAAAAAAAAAAEBAQMAAAAADwkHFAcCKUsJGb3VO0vn9lRf5/RdZMzXRkmTmw4OKTUAAAAAAgIDAwABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A//this.type%20%3D%20%22menu%22%3B%0A%20%0A%20%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20................................%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%20%20%7B%20label%3A%20%22IE%22%2C%20value%3A%20%22c%3A/Program%20files/Internet%20Explorer/iexplore.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADp//8Aye/+AJXW/AeX0fsekc/8CpPR+QHGspoBxJ6BALeXhADFooQAupqCAMSjhAC+n4MAvp+DA8OjgwG8nYIAuJuCAM7//gB62/4mCq7+oBGn/mwIp/8xCKHzAoBWKhKdRgBVnFACh6xeAJWgVACHlEoAV3cxABZrJwAAfTcAAm4rAAFlJQAA0f/+AFHX/qg0tv6PRq7rAE2RrwGNdEhdx30V4eGWIf/spS3+7acx/+2mLv7kmyb/zYMX5pZSCmqFRAcCeTwGAXI2BQHE//0BRNP9u0au/1+fcWIAtlYAb9qBCv/ooCj+7607/fi2RP/2tUL/+LZC//CtOv7rpS/93ZAa/6RcBo1wNAEAbzMBAbr//gJb3/2wGbT/gpJuOiPUfQj64qIx//O2R/z2u0z+0I81r76AMnK7fjGS8bBE6ve1Qf/uqDL93I0X/5ZPBGd9PgMAsv/+AX3z/oQjwf/Osok/t+aWG//utUj8+8NW/7Z0J3VhLwcAn2EjA3g7DwCOThsz1pk91uKhOebWkCfstWsQwIpHBAqf//4Alf/8SjPW/+uIoon//K4s+/jNYf/iqUjKgywGAJpaHAC5cyQAtG0gAHk2DAB/OAUJjkgID4dECQ2KSQoQjUoGApz9/QCh//wPaPH/tiy98//Uwm/8/9xm/+vCY+XeqU6s5K9SsNyoTq/cpkuv4KhHsdicPa3SkDKqyoQgq7hsDKudUwdcR/7+A0D//wBv8N9iTtr1/0zE4v314n3//+qD//7riv//5oX//+WD///gff/+2nT//dNp//vFV//wrjf+1IUR/6ldB5xraUMCZGZFAJFmLS612qL1MN7//2/Q3P/yymjPrWYnNrh5MkK4di1Bu3swRbJuJTHSmECl+8pc/+moNfrNghP6oVoNa6A6AQGgOgEAmz0CBN2gNsqs9c//Ktj//3K+xPS5ZBk2pVEMAKtlIwOeTxMAbSoEDue1Us/7yl3/5qUw/8x4CuemTwAekUQLAJJGDAOMPQgAs2gXYffPX/+l9+D6K9n//3C+wujIgjRpyII0KrBuLUHUpE/B/9tw/++8T/jkmx//o3kxjXRxYABACgIAQQsCAD0IAQBJEwUB0I4tpv7db/+t+N36Md3//V3M4f/n3Yv1/+x9+/3ogP/zzWT96bVC/9Z8BclFnKwbGrX/AzQAAAA1AQAAMAAAAUIMAgClWRgJzo8xnfnSZf/L+8j/UOn//zzQ9/+12679/tlm+fu5O/vafQuxpGwqETCq5R0iqv8nOwUEADwGBAA3AgMASRMHAahcGgGeUhYBv38tStyjRavc04rdhOHd6j3R//drxc3/jquPrXeKexJSutYSLrn/cC+n+CEpAAAAKgEAACUAAAA4CQAAoU4IAZxLBQKvYxQAdCoGALVbCQ3ErGcYevb9O1Lo/4gv2v61Jdf/vCXI/7QmrPpWSZPnAJyBgQCcgYEAmoCBAKOIggDTrowA0ayLANy6lAPCoYsC2raTAN7YvQC++f4AwPr9ALr2+wuq7fsmpOf9F57a/ACrzfMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Explorer%22%2C%20value%3A%20%22c%3A/windows/explorer.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQEBAQABAQEAAgICAgICAgMAAAAANzc3Q5mZmbTDw8PiwsLC66urq9hvb2+VFhYWHwAAAAgBAQEFAAAAAAAAAAADAwMMAQEBBgAAAAICAgIEAAAAADY2NkPKysr/1tbW/uDg4P/Y2Nj/1dXV/sXFxf+Jh4feBQUFRQAAACgBAQEMCAgIEHRzc9ZdXV3TSkpKvjs7O4YBAgIeMTExQb29vf/DwsL/xcPC/ra0s/6Xlpb9jpCR/5yio/Q0NTVsAAAAIgEBARAWFhYlrqam95KRkf+Xl5f+j4+O8n99fd4KCgk8HyAgW3h8fciWnqD8iZOW/5SanP+vqKf+w6ml/7aysewPEBAUAAAAABgXFyi4rq73kpGR/5eXl/2goqL/oayt/36DhtZ6dnjRh3Jy65VnZf6gVU7/s01A/7U1JP+0JBD/wamm/yMpKSoAAAAAFxYWKbGoqPmjoqL/r7Gx/pqSk/6GSUT+lTw2/5IkHP+SEQX/mgYA/6sZC/+8NyP/wz4q/8k+KP3Pq6X/NTw9RAAAAAATEhMopZ2e+bCvr/+8v7/+rqGi/48bFP+LFAv9igsC/ZoPAf6oEQD/w0Eu/9puXP/fbVn/42ZP++CxqP9HT1FeAAAAAA8QDyaOkIz0tbS0/8HCwf66uLj/nEdC/6A7Mv+ZFAb/qBQB/7gTAP/aZFD/7JSE/++RgP/0jXn777mv/11kZn0AAAAABwcHImluaPXEw8T/wsHB/r/AwfyoZmL+pzwx/6AOAP+2GQH/yx0A/+2Qf//5tqn/+7Sk//6yoPv7yLr/c3h5mAAAAAAAAAAIVVRVgbq7u9DX19f53+Tl/7N+ev6mIxX/sxUA/84dAP/oMxD//r2w///Qw//+0MH//tPC+//YyP+LjI21AAAAAAAAAAAAAAAABQUFASgnJyBweXpprnZx9qQMAP+/HwX81xgA/PFTNfv+4tv7/uDW+//j2P3+5tv9/+bY/6upqNAAAAAAAAAAAAEBAQQBAQECAAAAAAkSEgGWZ2bYrQUA/8ocBP3oHAD//oBm///t5f//3dH//N3R//DXzfzv2dD2raurvgMDAwUAAAAAAAAAAAEBAQADAgIEAAIDAJSDgrSpY1vynGVcy5VrY7OGcm2YbmZkeFdTUV09PT0/KiwsKRkbHRIJCgoEAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAAPT8/FRcjJQsACQsAAAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAADAwICBAQDAwQDAwMEAwMDAwICAgICAgIBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20separator%3A%22%22%20%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Cmd%20Prompt%22%2C%20value%3A%20%22C%3A/windows/system32/cmd.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP8AAAD///////////8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD///////////8AAAD/l5KP/5eSj/8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD//////wAAAP8AAAD/AAAA/wAAAP8AAAD/l5KP/5eSj/8AAAD/AAAA////////////AAAA/wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5KP/5eSj//NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/5eSj/+Xko//4NnT/+DZ0//g2dP/4NnT/+DZ0//g2dP/4NnT/+DZ0//g2dP/kXhn/+DZ0/+ReGf/4NnT/5F4Z/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEH//6xB//+sQQ%3D%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Media%20Player%22%2C%20value%3A%20%22C%3A/Program%20Files/Windows%20Media%20Player/wmplayer.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAACzs7QACgsLDQAAAC4BAQIxAAABMQAAATEAAAIxAAEDMQIAATEFAAAxBQAAMQUAADEFAAAxBgEBMQIAAC4LCgoNs7OzAC0tLQpEPjqSj31t44x4Z92LeGjeinVl3oVtYd6FaVzec3Jv3lt5g95bdn/eWHiB3ld4gN5Vd3/dWnmB4zU9QJIvLi0KMjY4MrOMcvXvllT//ali/v+vZf//r2b/+JdW//9uK/+Jjo3/DMb//ynJ/P8v0v//LNP//yzS/v4iyPf/Upaq9TozMTI0Oj43pnhc+NyCRf/lllf8+adh/f+lWv30oWb9+qN6/by5s/1yzuz9SMzv/SPT/v0u0v39Lsbx/CPC8v89i6P4PTIvNzU8Pzeidl75xm87/9+ETP76iEr/8LyY//fz8P/8/////v/+///++v/48en/lczY/yTB9f8pvOn+ILXj/0OLovk9MzA3OD5AN5tvW/m2XjH/4Gg3/vGylP/9//////7+///////9////+v/8//z99P//5M7/m7G5/x2v4f4eqtf/RYif+T41Mjc5P0E3lGtc+apIIv/Ld1T+++fX///67//lwKj/36yQ//vn2f///e///u7d//rTwP/6r5T/VJy2/hCh0v9Jhpv5PzYzNzk+QTeVa1j5oUAS/9WTdv7/1b///+jU/7+IbP+MOhX/rWJA/8+Vef/3yrP/+cWu//mihf+Yi47+C53Y/0yJo/k/NzM3Oz4+N4Fnavl0PUH/0JB8/vy8nf//0rb/unhc/3snCP+CMRL/gSwM/448Hf/XkHT/9pt//6x7bv4VkJv/TYiN+UA3NzdAPjI3U2K3+RE68v+xiaL+/rqV//zMtv/XmHj/uGQ3/7FYKv+oUSb/vndV/+ajhf/0mIL/p3xR/gyMAP9JhT75QDhCNz48MDdWZLj5M1j//6GXzf7/0rb/++DX//TMs//usor/7bua//rWu///27//98Ch//aeif+Sk13+J6ci/02IRPk/N0A3OzkuN2BuvPlad///f4/w/u7Y0///8eb/+ung//zq3v//8uX//+bS//rRtP//waP/2ZqB/2OvU/5EtTj/W5JU+T01Pjc5Ny03ZXO5+XGI//+Alf3+p7Dw//nz7v////v///33///06v/+7N7//93K/+eznP+CtGj/WsNT/k+5Qv9flln5PDQ8Nzc2LTZrd7T4hZn//5im+/6Wpv7/qrX0/9rd8P/x7/H/9vDr/+3j1v/Kyqr/h8d4/2rRY/9nw13+WcJO/2GWW/g7NDw2NTMsNHR9sfidrv/+o7H9+6q4//ysuv/8rLr+/LS+//ypxcr8qd6d/JTekPyA23f8eNRt/HHRaftk0Fr+Yphc+DoyOzRiYV4TbXKP3ZCc5P+VoOL9maTi/56o4v+hreL/o6zq/5Gtsv+YyY3/lcSQ/4PAev9zvWr/brxm/We6YP9ig1/dZGBkE9/f3wCUlJQwkJCTgouMjn+NjY9/jY2Pf42Nj3+NjZB/jY6Of42PjH+PkI5/j5COf42QjX+Mj4t/kZSQgpWVlTDf398AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Task%20Manager%22%2C%20value%3A%20%22C%3A/windows/system32/taskmgr.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGQkP96eHj/kZCQ/wAAAAAAAAAAAAAAALu8vP+7vLz/tLW1/5ucnP+bnJz/n6Cg/6CgoP8AAAAAAAAAAAAAAAC4ubr/lJSU/6aoqf8AAAAAAAAAAAAAAAAAAAAAyMnJ/8TGxv+5urr/qqur/6CgoP8AAAAAAAAAAAAAAAAAAAAAq6ys/7+/v/+lpaX/AAAAAAAAAAAAAAAAAAAAAAAAAAC5urr/ioqK/5ubnP8AAAAAAAAAAAAAAAAAAAAAAAAAAK6vr//R0dH/q6ur/8XKzP/AwcH/vr+//7u8vP+4ubn/tba2/6qqqv+oqKj/pqam/6SkpP+ioqL/oKCg/7Cztf+trq7/0dHR/6urq//Nz8//zc/P/83Oz//Mzs7/y83N/8rMzP/Hycn/xsnJ/8bJyf/FyMj/xcjI/8THx/+goKD/ra6u/9HR0f+rq6v/ztDQ/62urv8AAAD/AgIC/wAAAP8CAgL/CgoK/xcXF/8YGBj/Ghoa/xMTE//FyMj/oaGh/66vr//R0dH/rKys/8/R0f+rrKz/FxcX/xgYGP8LCwv/EBAQ/yUlJf8rgin/IaYe/0JCQv8rKyv/xMfH/6Ojo/+XvqX/APJH/2HCgv/P0dH/qamp/ycnJ/8aGhr/Dg4O/xUVFf8xWjD/Jbkh/yyfKv84jjb/QkJC/8XIyP+lpaX/q6ys/0dDQv96eHj/0dLS/6Ojo/8O8gn/EKQN/xISEv8aHhr/GtMW/11dXf9ZWVn/Jckh/w/wCv/Hysr/q6ur/8LFx/++vr7/wMLD/9DS0v+ioqL/ICAg/xF3D/8WexT/FbMS/1p1Wf9oaGj/ZmZm/2hoaP9gYGD/x8rK/62urv8AAAAAAAAAAAAAAADR0tP/oKCg/xEREf8XFxf/FqgS/yJpIP91dXX/cnJy/3R0dP92dnb/a2tr/8jKy/+wsbH/AAAAAAAAAAAAAAAA0dLT/6CgoP8SEhL/HR0d/ycnJ/8zMzP/aGho/2BgYP9fX1//XFxc/1VVVf/Jy8v/srOz/wAAAAAAAAAAAAAAANHS0/+goKD/oKCg/6CgoP+ioqL/pKSk/62urv+wsLD/srOz/7W2tv+4ubn/ycvM/7W2tv8AAAAAAAAAAAAAAADM0NP/0dLT/9HS0//R0tP/0NLS/9DR0v/O0ND/zc/P/83Pz//Mzs7/y83N/8rMzP++wsT///+sQf//rEEcB6xBHg+sQR8frEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxB4ACsQeAArEHgAKxB4ACsQQ%3D%3D%22%7D%2C%20%0A%20%20%20%20%20%20%7B%20label%3A%20%22Control%20Panel%22%2C%20value%3A%20%22C%3A/windows/system32/control.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+QkmS9vr7/tLS1/6usrf+foKD/kJGS/5CSk/+PkJJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2t7j/1dTU/+fn6P/o6Oj/1NTU/7Kzs/+QkJD/j5CS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPkJJkpKSk/+Xk5P/08/T/7u7v/93e3v/FxMP/nZyc/4KBgv+PkJJkAAAAAAAAAAAAAAAAnnZKZKl9SP+kdkP/oHNB/55wQP+urq7/8O/v/+ro6P/d3Nv/vby6/5OTk/+db0D/nW9A/51vQP+fd0v/nnZKZK+BRP/01qf/7s6W/+zIjv/sxIj/l5eW/7a2tv/CwsH/vLu7/5mZmf+NiIH/5a5i/+WpXv/lplz/4qRc/552Sv+wgUD/8dGc/9qtYv/Yqlz/1aVX/8ObV/+ljWb/lolz/5KHdP+hh13/uok//8OGLf/DfSb/w3Qi/+KjWP+edEf/s4RB//DSov/br2T/2Kxe/9GbSf/PmEX/zJI+/86ZQ//KlD7/x484/8WMNP/EhzD/w4Ao/8N5I//ipFn/nnRH/7eHQ//x1Kf/3K9m/9OfT//////////////////OlUL/y5ZA/8iROv/HjTb/xIkx/8OELP/DeyX/4qRa/550R/+8jUb/992x/9ekV///////zo8//82NPP/Lizn//////8yUP//Jkzz/////////////////w34n/+KmXP+edEf/vo9G//rku//frV3//////9CTQv8ap///YbDX/2zA9P/NlUH/ypU//8iPOf/HjDT/xIgx/8OBKf/iqWL/nnRH/8CRSP/65L7/4K1d///////XmEj/XrHb/xqn//8ap///zqJY/82YQ//////////////////DhSz/4q1m/550R//ClEn/+ebB/+3Cdv/hrV3//////27B9f8ap///0bR3/9qiTf/bpU3/2aBH/9WaQf/SlTz/0JE4/+27dP+id0r/xJVJ//nmw//txHj/78N2/9+sXP/bpVL/3atc/+KvW//irln/3qlR/9yjS//Zn0X/15tB/9WXPf/xwX7/pHlL/8eYUf/25L//+u3P//vtz//77M3/++nI//rmwv/647z/+eC1//jcr//32an/99aj//bUnf/1zpb/4bJr/6N6Tv+edkpkwplV/76TT/+6j03/topK/7GFSP+tgUf/qHtF/6R3RP+hdEL/nnFB/55xQf+ecUH/nnFB/6F5Tf+edkpk//+sQfAPrEHwD6xB4AesQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20separator%3A%22%22%20%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Notepad%22%2C%20value%3A%20%22c%3A/windows/notepad.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Calculator%22%2C%20value%3A%20%22C%3A/windows/system32/calc.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/Io//Dmlr/uo9N/7WJSv+vg0j/qn1G/6V4RP+hdEL/nnFB/55xQf+keUz/y7Sa/wAAAAAAAAAAAAAAAAAAAADIoF7/9eLA/+TCj//kwY7/5MOR/+TElP/lx5j/5cic/+bNpf/04cL/9efQ/6R5TP8AAAAAAAAAAAAAAAAAAAAAyJxW//Tfu//gtnb/6+vt/9+0cv/r6+3/37l+/+vr7f/kyJ7/AJLw//bo0f+ecUH/AAAAAAAAAAAAAAAAAAAAAMmeWP/14b//4buD/9+2ef/guYD/4byG/+G+jP/hwZH/5s2p/wCS8f/26dX/nnFB/wAAAAAAAAAAAAAAAAAAAADLoFr/9eTH/+TBj//r6+3/4sCO/+vr7f/iwpT/6+vt/+TMpv8AkvD/9ejS/55xQf8AAAAAAAAAAAAAAAAAAAAAzKJd//jq0//p0Kr/6M2l/+jOpv/nzqf/586o/+fOqP/nz63/8N28//Ljy/+ecUH/AAAAAAAAAAAAAAAAAAAAAM2jX//5793/zalr//Tjxf/NqWv/9OPI/82pa//y4sj/zalr/+/buf/x4cn/oHNC/wAAAAAAAAAAAAAAAAAAAADOpWL/+e/g//blyv/04MH/8+DB//LgwP/x37//8d6///Ddvf/t2bb/8eLK/6J1Q/8AAAAAAAAAAAAAAAAAAAAAz6dk/+bQqv/kyZz/4sWX/+LFlv/hw5X/4MOU/+DBkv/fwJH/3sCQ/+HInv+leET/AAAAAAAAAAAAAAAAAAAAANCoZv/m0Kz//Pjz//369P/9+vT//fn0//z58//8+fP//Pjy//z38f/hyZ//p3tF/wAAAAAAAAAAAAAAAAAAAADRqWn/5tCs//369f/99u//+/Dj//rq1//448r/9t29//XXsv/8+PL/4cqg/6t+Rv8AAAAAAAAAAAAAAAAAAAAA0qtr/+bRrf/9+vb//vr1//z06//77t//+efS//fhxf/227n//Pjz/+LKof+ugkf/AAAAAAAAAAAAAAAAAAAAANKsbf/m0a7//fr1//79+//9+PL//PLn//rs2//45c7/99/B//z59P/iyqP/sYZJ/wAAAAAAAAAAAAAAAAAAAADTrW//5dGv/0iy/P86rf3/Oq39/zqt/f86rf3/Oq39/zqt/f8/r/3/48yl/7WJSv8AAAAAAAAAAAAAAAAAAAAA1rN5//Xu4v/z6tn/8+rb//ft4P/48OP/+O/i//ft3//169r/8ujV//Lo1v/AmmH/AAAAAAAAAAAAAAAAAAAAAOjUtP/Vsnj/0qxt/9Gqaf/Qp2X/zqVh/8yiXf/Kn1r/yJxW/8SZU//HoWX/38qr/wAAAAAAAAAAwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQQ%3D%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Virtual%20Keyboard%22%2C%20value%3A%20%22C%3A/windows/system32/OSK.exe%22%2C%20image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAACAgIDAAAAAC0tLU5EREWrMjMzkUFBQYlJSUmFT09Ph09PT4dKSkqFQkJBiTMzM5FFRUarLS0tTgAAAAACAgIDAgICBAAAAAAkJCRMNzg4lltcXMZ7e33/VlZX/TExMf8vLy//VVZX/X+Agv9dXl/GOzs7liQkJEwAAAAAAgICBAAAAAAAAAAAAAAAAAAAAAAHBgUDDAsLAUNCQ7MZGBj/FhUU/0FAQbMMCwwBBwYGAwAAAAAAAAAAAAAAAAAAAAAMDQ0OBgwNDgcNDhAJDhATBwwOEwAAAABBRUaAMTc6/yYsLv8/QkSAAAAAAAYLDRMIDQ8TBgsNEAYKDQ4MDQ0OYFtZ8Vk/N/FgRT3xX0Q88V9EPPJiRz7yWT41+jsgF/84HRT/WT42+oRrYfKJcGbyiW9m8Y51avFtVkrxXVdV8WFBNf/OIAD/4SUB/9wkAP/dJAD/3SQA/90lAf/iKwb/4ywH/94nAv/jLQj/5S4J/+UuCf/pLgj/0iUA/2JBNf9mRTn+1CAA/uYkAf7hIwD+4iMA/uIkAP7kIAD+4hgA/+AYAP/lHAD+4hkA/t8YAP7gGQD+5SEB/tMfAP5oRjr+ZUQ4/8cdAP/XIAH/0x8A/9MgAf/XGwD/wTQc/6RgVP+oYVX/pk09/6dXSf+nYlb/pVpN/8wkB//KHAD/ZkU6/2REOP/AHQD/zyAB/8sfAP/LIQP/zhQA/7xdTP/K3eH/197h/6empf+9w8X/1eDi/8PKzP+/LxX/wxkA/2VGO/9kRDj/ux0A/8kgAf/GHwD/xiID/8kVAP/BXUv/z9LV/+Tc2f+4qKL/xby4/+Db2v/Tycn/vy8V/78ZAP9lRjv/ZEU4/78fAP/NIgX/yiEE/8ojBf/IFQD/tU8+/6yxs/+7t7//nIqT/6Capf+7trz/tKuo/7ssEf++GwD/ZUY6/2VFOP/HLQD/1jQB/9QxAP/JOAv/oHlv/52HgP+NgYX/cWaW/4eDpv+Afqr/eGiS/5WGgf+hiIL/l2JT/2NEOP9lRjj/0z8A/+RIAv/jRAD/0E4S/9PR0f/t7Or/x8PO/52Yuf/07+P/39vc/5yYvf/c19n/6+/x/7qknf9eQTb/Z0g6/+ZTAP/5YAP/+FsA/+RjFv/Bv7//09XV/8HBzv+Wlbj/1NXL/9TT1v+Zlr7/xcXK/93h5P+3oJn/YUQ4/2BCNP/aUAD/7l4C/+taAP/fXQv/q4x8/7Cajv+pi4P/gmWJ/5KFof+Qgqf/iWiE/6yQgP+zn5b/pHVe/14/Mv9mX1z/YEI0/2hIOv9mRzn/Zkc4/2RGN/9jRjj/Y0U2/2BCPP9XP0L/VT5B/15COv9hRTj/YEU6/1s/Mv9mXl3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%7D%2C%0A%20%20%20%20%20%20%7B%20label%3A%20%22Character%20table%22%2C%20value%3A%20%22C%3A/windows/system32/charmap.exe%22%2C%20image%3A%20%22data%3Aimage/png%3Bbase64%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%3D%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%20%20%20%20%20%0A%20%20%20%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22value%22%2C%20m.value%29%3B%0A%20%20%20%20%20%20mItem.addEventListener%28%22command%22%2C%20function%28e%29%20%7B%20startProcess%28%20m.value%20%29%20%7D%2C%20false%29%3B%0A%20%20%20%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0A%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u0442%20win%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u044F%2C%20%u0432%u044B%u0431%u043E%u0440%20%u0437%u0430%u0432%u044B%u0441%u0438%u0442%20%u043E%u0442%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%27value%27%20%u0432%20%u043C%u0430%u0441%u0441%u0438%u0432%u0435%20................................%0Afunction%20startProcess%28%20path%20%29%20%7B%0A%20%20%20%20%20%20var%20file%20%3D%20Cc%5B%27@mozilla.org/file/local%3B1%27%5D.createInstance%28Ci.nsILocalFile%29%3B%0A%20%20%20%20%20%20file.initWithPath%28%20path.replace%28/%5C//g%2C%27%5C%5C%5C%5C%27%29%20%29%3B%20%0A%20%20%20%20%20%20file.launch%28%29%3B%0A%7D%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%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E/*CODE*/ инициализация скрытый текст Выделить код Код:// Настройка функций кликов мыши ................................ this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; //this.type = "menu"; // Создать меню ................................ var array = [ { label: "Плеер", value: "c:/Program files/DAUM/PotPlayer/PotPlayerMini.exe", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADp//8Aye/+AJXW/AeX0fsekc/8CpPR+QHGspoBxJ6BALeXhADFooQAupqCAMSjhAC+n4MAvp+DA8OjgwG8nYIAuJuCAM7//gB62/4mCq7+oBGn/mwIp/8xCKHzAoBWKhKdRgBVnFACh6xeAJWgVACHlEoAV3cxABZrJwAAfTcAAm4rAAFlJQAA0f/+AFHX/qg0tv6PRq7rAE2RrwGNdEhdx30V4eGWIf/spS3+7acx/+2mLv7kmyb/zYMX5pZSCmqFRAcCeTwGAXI2BQHE//0BRNP9u0au/1+fcWIAtlYAb9qBCv/ooCj+7607/fi2RP/2tUL/+LZC//CtOv7rpS/93ZAa/6RcBo1wNAEAbzMBAbr//gJb3/2wGbT/gpJuOiPUfQj64qIx//O2R/z2u0z+0I81r76AMnK7fjGS8bBE6ve1Qf/uqDL93I0X/5ZPBGd9PgMAsv/+AX3z/oQjwf/Osok/t+aWG//utUj8+8NW/7Z0J3VhLwcAn2EjA3g7DwCOThsz1pk91uKhOebWkCfstWsQwIpHBAqf//4Alf/8SjPW/+uIoon//K4s+/jNYf/iqUjKgywGAJpaHAC5cyQAtG0gAHk2DAB/OAUJjkgID4dECQ2KSQoQjUoGApz9/QCh//wPaPH/tiy98//Uwm/8/9xm/+vCY+XeqU6s5K9SsNyoTq/cpkuv4KhHsdicPa3SkDKqyoQgq7hsDKudUwdcR/7+A0D//wBv8N9iTtr1/0zE4v314n3//+qD//7riv//5oX//+WD///gff/+2nT//dNp//vFV//wrjf+1IUR/6ldB5xraUMCZGZFAJFmLS612qL1MN7//2/Q3P/yymjPrWYnNrh5MkK4di1Bu3swRbJuJTHSmECl+8pc/+moNfrNghP6oVoNa6A6AQGgOgEAmz0CBN2gNsqs9c//Ktj//3K+xPS5ZBk2pVEMAKtlIwOeTxMAbSoEDue1Us/7yl3/5qUw/8x4CuemTwAekUQLAJJGDAOMPQgAs2gXYffPX/+l9+D6K9n//3C+wujIgjRpyII0KrBuLUHUpE/B/9tw/++8T/jkmx//o3kxjXRxYABACgIAQQsCAD0IAQBJEwUB0I4tpv7db/+t+N36Md3//V3M4f/n3Yv1/+x9+/3ogP/zzWT96bVC/9Z8BclFnKwbGrX/AzQAAAA1AQAAMAAAAUIMAgClWRgJzo8xnfnSZf/L+8j/UOn//zzQ9/+12679/tlm+fu5O/vafQuxpGwqETCq5R0iqv8nOwUEADwGBAA3AgMASRMHAahcGgGeUhYBv38tStyjRavc04rdhOHd6j3R//drxc3/jquPrXeKexJSutYSLrn/cC+n+CEpAAAAKgEAACUAAAA4CQAAoU4IAZxLBQKvYxQAdCoGALVbCQ3ErGcYevb9O1Lo/4gv2v61Jdf/vCXI/7QmrPpWSZPnAJyBgQCcgYEAmoCBAKOIggDTrowA0ayLANy6lAPCoYsC2raTAN7YvQC++f4AwPr9ALr2+wuq7fsmpOf9F57a/ACrzfMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Explorer", value: "c:/windows/explorer.exe", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQEBAQABAQEAAgICAgICAgMAAAAANzc3Q5mZmbTDw8PiwsLC66urq9hvb2+VFhYWHwAAAAgBAQEFAAAAAAAAAAADAwMMAQEBBgAAAAICAgIEAAAAADY2NkPKysr/1tbW/uDg4P/Y2Nj/1dXV/sXFxf+Jh4feBQUFRQAAACgBAQEMCAgIEHRzc9ZdXV3TSkpKvjs7O4YBAgIeMTExQb29vf/DwsL/xcPC/ra0s/6Xlpb9jpCR/5yio/Q0NTVsAAAAIgEBARAWFhYlrqam95KRkf+Xl5f+j4+O8n99fd4KCgk8HyAgW3h8fciWnqD8iZOW/5SanP+vqKf+w6ml/7aysewPEBAUAAAAABgXFyi4rq73kpGR/5eXl/2goqL/oayt/36DhtZ6dnjRh3Jy65VnZf6gVU7/s01A/7U1JP+0JBD/wamm/yMpKSoAAAAAFxYWKbGoqPmjoqL/r7Gx/pqSk/6GSUT+lTw2/5IkHP+SEQX/mgYA/6sZC/+8NyP/wz4q/8k+KP3Pq6X/NTw9RAAAAAATEhMopZ2e+bCvr/+8v7/+rqGi/48bFP+LFAv9igsC/ZoPAf6oEQD/w0Eu/9puXP/fbVn/42ZP++CxqP9HT1FeAAAAAA8QDyaOkIz0tbS0/8HCwf66uLj/nEdC/6A7Mv+ZFAb/qBQB/7gTAP/aZFD/7JSE/++RgP/0jXn777mv/11kZn0AAAAABwcHImluaPXEw8T/wsHB/r/AwfyoZmL+pzwx/6AOAP+2GQH/yx0A/+2Qf//5tqn/+7Sk//6yoPv7yLr/c3h5mAAAAAAAAAAIVVRVgbq7u9DX19f53+Tl/7N+ev6mIxX/sxUA/84dAP/oMxD//r2w///Qw//+0MH//tPC+//YyP+LjI21AAAAAAAAAAAAAAAABQUFASgnJyBweXpprnZx9qQMAP+/HwX81xgA/PFTNfv+4tv7/uDW+//j2P3+5tv9/+bY/6upqNAAAAAAAAAAAAEBAQQBAQECAAAAAAkSEgGWZ2bYrQUA/8ocBP3oHAD//oBm///t5f//3dH//N3R//DXzfzv2dD2raurvgMDAwUAAAAAAAAAAAEBAQADAgIEAAIDAJSDgrSpY1vynGVcy5VrY7OGcm2YbmZkeFdTUV09PT0/KiwsKRkbHRIJCgoEAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAAPT8/FRcjJQsACQsAAAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAADAwICBAQDAwQDAwMEAwMDAwICAgICAgIBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { separator:"" }, { label: "GPU-Z", value: "C:/Program Files/GPU-Z 0.8.3 RePack by loginvovchyk.exe", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP8AAAD///////////8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD///////////8AAAD/l5KP/5eSj/8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD//////wAAAP8AAAD/AAAA/wAAAP8AAAD/l5KP/5eSj/8AAAD/AAAA////////////AAAA/wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/5eSj/+Xko//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Xko//l5KP/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5KP/5eSj//NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/83Myv/NzMr/zczK/5eSj/+Xko//4NnT/+DZ0//g2dP/4NnT/+DZ0//g2dP/4NnT/+DZ0//g2dP/kXhn/+DZ0/+ReGf/4NnT/5F4Z/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/5eSj/+Xko//l5KP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEH//6xB//+sQQ=="}, { label: "101.RU", value: "C:/CyberfoxPortable/101.RU/101.RU.exe", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAACzs7QACgsLDQAAAC4BAQIxAAABMQAAATEAAAIxAAEDMQIAATEFAAAxBQAAMQUAADEFAAAxBgEBMQIAAC4LCgoNs7OzAC0tLQpEPjqSj31t44x4Z92LeGjeinVl3oVtYd6FaVzec3Jv3lt5g95bdn/eWHiB3ld4gN5Vd3/dWnmB4zU9QJIvLi0KMjY4MrOMcvXvllT//ali/v+vZf//r2b/+JdW//9uK/+Jjo3/DMb//ynJ/P8v0v//LNP//yzS/v4iyPf/Upaq9TozMTI0Oj43pnhc+NyCRf/lllf8+adh/f+lWv30oWb9+qN6/by5s/1yzuz9SMzv/SPT/v0u0v39Lsbx/CPC8v89i6P4PTIvNzU8Pzeidl75xm87/9+ETP76iEr/8LyY//fz8P/8/////v/+///++v/48en/lczY/yTB9f8pvOn+ILXj/0OLovk9MzA3OD5AN5tvW/m2XjH/4Gg3/vGylP/9//////7+///////9////+v/8//z99P//5M7/m7G5/x2v4f4eqtf/RYif+T41Mjc5P0E3lGtc+apIIv/Ld1T+++fX///67//lwKj/36yQ//vn2f///e///u7d//rTwP/6r5T/VJy2/hCh0v9Jhpv5PzYzNzk+QTeVa1j5oUAS/9WTdv7/1b///+jU/7+IbP+MOhX/rWJA/8+Vef/3yrP/+cWu//mihf+Yi47+C53Y/0yJo/k/NzM3Oz4+N4Fnavl0PUH/0JB8/vy8nf//0rb/unhc/3snCP+CMRL/gSwM/448Hf/XkHT/9pt//6x7bv4VkJv/TYiN+UA3NzdAPjI3U2K3+RE68v+xiaL+/rqV//zMtv/XmHj/uGQ3/7FYKv+oUSb/vndV/+ajhf/0mIL/p3xR/gyMAP9JhT75QDhCNz48MDdWZLj5M1j//6GXzf7/0rb/++DX//TMs//usor/7bua//rWu///27//98Ch//aeif+Sk13+J6ci/02IRPk/N0A3OzkuN2BuvPlad///f4/w/u7Y0///8eb/+ung//zq3v//8uX//+bS//rRtP//waP/2ZqB/2OvU/5EtTj/W5JU+T01Pjc5Ny03ZXO5+XGI//+Alf3+p7Dw//nz7v////v///33///06v/+7N7//93K/+eznP+CtGj/WsNT/k+5Qv9flln5PDQ8Nzc2LTZrd7T4hZn//5im+/6Wpv7/qrX0/9rd8P/x7/H/9vDr/+3j1v/Kyqr/h8d4/2rRY/9nw13+WcJO/2GWW/g7NDw2NTMsNHR9sfidrv/+o7H9+6q4//ysuv/8rLr+/LS+//ypxcr8qd6d/JTekPyA23f8eNRt/HHRaftk0Fr+Yphc+DoyOzRiYV4TbXKP3ZCc5P+VoOL9maTi/56o4v+hreL/o6zq/5Gtsv+YyY3/lcSQ/4PAev9zvWr/brxm/We6YP9ig1/dZGBkE9/f3wCUlJQwkJCTgouMjn+NjY9/jY2Pf42Nj3+NjZB/jY6Of42PjH+PkI5/j5COf42QjX+Mj4t/kZSQgpWVlTDf398AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Task Manager", value: "C:/windows/system32/taskmgr.exe", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGQkP96eHj/kZCQ/wAAAAAAAAAAAAAAALu8vP+7vLz/tLW1/5ucnP+bnJz/n6Cg/6CgoP8AAAAAAAAAAAAAAAC4ubr/lJSU/6aoqf8AAAAAAAAAAAAAAAAAAAAAyMnJ/8TGxv+5urr/qqur/6CgoP8AAAAAAAAAAAAAAAAAAAAAq6ys/7+/v/+lpaX/AAAAAAAAAAAAAAAAAAAAAAAAAAC5urr/ioqK/5ubnP8AAAAAAAAAAAAAAAAAAAAAAAAAAK6vr//R0dH/q6ur/8XKzP/AwcH/vr+//7u8vP+4ubn/tba2/6qqqv+oqKj/pqam/6SkpP+ioqL/oKCg/7Cztf+trq7/0dHR/6urq//Nz8//zc/P/83Oz//Mzs7/y83N/8rMzP/Hycn/xsnJ/8bJyf/FyMj/xcjI/8THx/+goKD/ra6u/9HR0f+rq6v/ztDQ/62urv8AAAD/AgIC/wAAAP8CAgL/CgoK/xcXF/8YGBj/Ghoa/xMTE//FyMj/oaGh/66vr//R0dH/rKys/8/R0f+rrKz/FxcX/xgYGP8LCwv/EBAQ/yUlJf8rgin/IaYe/0JCQv8rKyv/xMfH/6Ojo/+XvqX/APJH/2HCgv/P0dH/qamp/ycnJ/8aGhr/Dg4O/xUVFf8xWjD/Jbkh/yyfKv84jjb/QkJC/8XIyP+lpaX/q6ys/0dDQv96eHj/0dLS/6Ojo/8O8gn/EKQN/xISEv8aHhr/GtMW/11dXf9ZWVn/Jckh/w/wCv/Hysr/q6ur/8LFx/++vr7/wMLD/9DS0v+ioqL/ICAg/xF3D/8WexT/FbMS/1p1Wf9oaGj/ZmZm/2hoaP9gYGD/x8rK/62urv8AAAAAAAAAAAAAAADR0tP/oKCg/xEREf8XFxf/FqgS/yJpIP91dXX/cnJy/3R0dP92dnb/a2tr/8jKy/+wsbH/AAAAAAAAAAAAAAAA0dLT/6CgoP8SEhL/HR0d/ycnJ/8zMzP/aGho/2BgYP9fX1//XFxc/1VVVf/Jy8v/srOz/wAAAAAAAAAAAAAAANHS0/+goKD/oKCg/6CgoP+ioqL/pKSk/62urv+wsLD/srOz/7W2tv+4ubn/ycvM/7W2tv8AAAAAAAAAAAAAAADM0NP/0dLT/9HS0//R0tP/0NLS/9DR0v/O0ND/zc/P/83Pz//Mzs7/y83N/8rMzP++wsT///+sQf//rEEcB6xBHg+sQR8frEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxB4ACsQeAArEHgAKxB4ACsQQ=="}, { label: "Firefox ESR", value: "D:/core/firefox.exe", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+QkmS9vr7/tLS1/6usrf+foKD/kJGS/5CSk/+PkJJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2t7j/1dTU/+fn6P/o6Oj/1NTU/7Kzs/+QkJD/j5CS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPkJJkpKSk/+Xk5P/08/T/7u7v/93e3v/FxMP/nZyc/4KBgv+PkJJkAAAAAAAAAAAAAAAAnnZKZKl9SP+kdkP/oHNB/55wQP+urq7/8O/v/+ro6P/d3Nv/vby6/5OTk/+db0D/nW9A/51vQP+fd0v/nnZKZK+BRP/01qf/7s6W/+zIjv/sxIj/l5eW/7a2tv/CwsH/vLu7/5mZmf+NiIH/5a5i/+WpXv/lplz/4qRc/552Sv+wgUD/8dGc/9qtYv/Yqlz/1aVX/8ObV/+ljWb/lolz/5KHdP+hh13/uok//8OGLf/DfSb/w3Qi/+KjWP+edEf/s4RB//DSov/br2T/2Kxe/9GbSf/PmEX/zJI+/86ZQ//KlD7/x484/8WMNP/EhzD/w4Ao/8N5I//ipFn/nnRH/7eHQ//x1Kf/3K9m/9OfT//////////////////OlUL/y5ZA/8iROv/HjTb/xIkx/8OELP/DeyX/4qRa/550R/+8jUb/992x/9ekV///////zo8//82NPP/Lizn//////8yUP//Jkzz/////////////////w34n/+KmXP+edEf/vo9G//rku//frV3//////9CTQv8ap///YbDX/2zA9P/NlUH/ypU//8iPOf/HjDT/xIgx/8OBKf/iqWL/nnRH/8CRSP/65L7/4K1d///////XmEj/XrHb/xqn//8ap///zqJY/82YQ//////////////////DhSz/4q1m/550R//ClEn/+ebB/+3Cdv/hrV3//////27B9f8ap///0bR3/9qiTf/bpU3/2aBH/9WaQf/SlTz/0JE4/+27dP+id0r/xJVJ//nmw//txHj/78N2/9+sXP/bpVL/3atc/+KvW//irln/3qlR/9yjS//Zn0X/15tB/9WXPf/xwX7/pHlL/8eYUf/25L//+u3P//vtz//77M3/++nI//rmwv/647z/+eC1//jcr//32an/99aj//bUnf/1zpb/4bJr/6N6Tv+edkpkwplV/76TT/+6j03/topK/7GFSP+tgUf/qHtF/6R3RP+hdEL/nnFB/55xQf+ecUH/nnFB/6F5Tf+edkpk//+sQfAPrEHwD6xB4AesQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="}, { separator:"" }, { label: "cpu-z", value: "C:/Program Files/cpu-z_1.73-32bits-ru/cpuz_x32_ru.exe", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Bandicam", value: "C:/Program files/Bandicam/bdcam.exe", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN/Io//Dmlr/uo9N/7WJSv+vg0j/qn1G/6V4RP+hdEL/nnFB/55xQf+keUz/y7Sa/wAAAAAAAAAAAAAAAAAAAADIoF7/9eLA/+TCj//kwY7/5MOR/+TElP/lx5j/5cic/+bNpf/04cL/9efQ/6R5TP8AAAAAAAAAAAAAAAAAAAAAyJxW//Tfu//gtnb/6+vt/9+0cv/r6+3/37l+/+vr7f/kyJ7/AJLw//bo0f+ecUH/AAAAAAAAAAAAAAAAAAAAAMmeWP/14b//4buD/9+2ef/guYD/4byG/+G+jP/hwZH/5s2p/wCS8f/26dX/nnFB/wAAAAAAAAAAAAAAAAAAAADLoFr/9eTH/+TBj//r6+3/4sCO/+vr7f/iwpT/6+vt/+TMpv8AkvD/9ejS/55xQf8AAAAAAAAAAAAAAAAAAAAAzKJd//jq0//p0Kr/6M2l/+jOpv/nzqf/586o/+fOqP/nz63/8N28//Ljy/+ecUH/AAAAAAAAAAAAAAAAAAAAAM2jX//5793/zalr//Tjxf/NqWv/9OPI/82pa//y4sj/zalr/+/buf/x4cn/oHNC/wAAAAAAAAAAAAAAAAAAAADOpWL/+e/g//blyv/04MH/8+DB//LgwP/x37//8d6///Ddvf/t2bb/8eLK/6J1Q/8AAAAAAAAAAAAAAAAAAAAAz6dk/+bQqv/kyZz/4sWX/+LFlv/hw5X/4MOU/+DBkv/fwJH/3sCQ/+HInv+leET/AAAAAAAAAAAAAAAAAAAAANCoZv/m0Kz//Pjz//369P/9+vT//fn0//z58//8+fP//Pjy//z38f/hyZ//p3tF/wAAAAAAAAAAAAAAAAAAAADRqWn/5tCs//369f/99u//+/Dj//rq1//448r/9t29//XXsv/8+PL/4cqg/6t+Rv8AAAAAAAAAAAAAAAAAAAAA0qtr/+bRrf/9+vb//vr1//z06//77t//+efS//fhxf/227n//Pjz/+LKof+ugkf/AAAAAAAAAAAAAAAAAAAAANKsbf/m0a7//fr1//79+//9+PL//PLn//rs2//45c7/99/B//z59P/iyqP/sYZJ/wAAAAAAAAAAAAAAAAAAAADTrW//5dGv/0iy/P86rf3/Oq39/zqt/f86rf3/Oq39/zqt/f8/r/3/48yl/7WJSv8AAAAAAAAAAAAAAAAAAAAA1rN5//Xu4v/z6tn/8+rb//ft4P/48OP/+O/i//ft3//169r/8ujV//Lo1v/AmmH/AAAAAAAAAAAAAAAAAAAAAOjUtP/Vsnj/0qxt/9Gqaf/Qp2X/zqVh/8yiXf/Kn1r/yJxW/8SZU//HoWX/38qr/wAAAAAAAAAAwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQcADrEHAA6xBwAOsQQ=="}, { label: "ВиртКлав", value: "C:/CyberfoxPortable/ВиртКлав/ВиртКлав.exe", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAACAgIDAAAAAC0tLU5EREWrMjMzkUFBQYlJSUmFT09Ph09PT4dKSkqFQkJBiTMzM5FFRUarLS0tTgAAAAACAgIDAgICBAAAAAAkJCRMNzg4lltcXMZ7e33/VlZX/TExMf8vLy//VVZX/X+Agv9dXl/GOzs7liQkJEwAAAAAAgICBAAAAAAAAAAAAAAAAAAAAAAHBgUDDAsLAUNCQ7MZGBj/FhUU/0FAQbMMCwwBBwYGAwAAAAAAAAAAAAAAAAAAAAAMDQ0OBgwNDgcNDhAJDhATBwwOEwAAAABBRUaAMTc6/yYsLv8/QkSAAAAAAAYLDRMIDQ8TBgsNEAYKDQ4MDQ0OYFtZ8Vk/N/FgRT3xX0Q88V9EPPJiRz7yWT41+jsgF/84HRT/WT42+oRrYfKJcGbyiW9m8Y51avFtVkrxXVdV8WFBNf/OIAD/4SUB/9wkAP/dJAD/3SQA/90lAf/iKwb/4ywH/94nAv/jLQj/5S4J/+UuCf/pLgj/0iUA/2JBNf9mRTn+1CAA/uYkAf7hIwD+4iMA/uIkAP7kIAD+4hgA/+AYAP/lHAD+4hkA/t8YAP7gGQD+5SEB/tMfAP5oRjr+ZUQ4/8cdAP/XIAH/0x8A/9MgAf/XGwD/wTQc/6RgVP+oYVX/pk09/6dXSf+nYlb/pVpN/8wkB//KHAD/ZkU6/2REOP/AHQD/zyAB/8sfAP/LIQP/zhQA/7xdTP/K3eH/197h/6empf+9w8X/1eDi/8PKzP+/LxX/wxkA/2VGO/9kRDj/ux0A/8kgAf/GHwD/xiID/8kVAP/BXUv/z9LV/+Tc2f+4qKL/xby4/+Db2v/Tycn/vy8V/78ZAP9lRjv/ZEU4/78fAP/NIgX/yiEE/8ojBf/IFQD/tU8+/6yxs/+7t7//nIqT/6Capf+7trz/tKuo/7ssEf++GwD/ZUY6/2VFOP/HLQD/1jQB/9QxAP/JOAv/oHlv/52HgP+NgYX/cWaW/4eDpv+Afqr/eGiS/5WGgf+hiIL/l2JT/2NEOP9lRjj/0z8A/+RIAv/jRAD/0E4S/9PR0f/t7Or/x8PO/52Yuf/07+P/39vc/5yYvf/c19n/6+/x/7qknf9eQTb/Z0g6/+ZTAP/5YAP/+FsA/+RjFv/Bv7//09XV/8HBzv+Wlbj/1NXL/9TT1v+Zlr7/xcXK/93h5P+3oJn/YUQ4/2BCNP/aUAD/7l4C/+taAP/fXQv/q4x8/7Cajv+pi4P/gmWJ/5KFof+Qgqf/iWiE/6yQgP+zn5b/pHVe/14/Mv9mX1z/YEI0/2hIOv9mRzn/Zkc4/2RGN/9jRjj/Y0U2/2BCPP9XP0L/VT5B/15COv9hRTj/YEU6/1s/Mv9mXl3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}, { label: "Днс", value: "D:/порташки/DnsJumper/DnsJumper.exe", image: "data:image/png;base64,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"} ]; var menuPopup = self.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image); mItem.setAttribute("value", m.value); mItem.addEventListener("command", function(e) { startProcess( m.value ) }, false); menuPopup.appendChild(mItem); }); menuPopup.setAttribute("onclick", "event.stopPropagation()"); // Функция запускает win приложения, выбор завысит от параметра 'value' в массиве ................................ function startProcess( path ) { var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); file.initWithPath( path.replace(/\//g,'\\\\') ); file.launch(); };/*Initialization Code*/ так правильно. |
KOMMEHTATOP > 26-10-2015 16:08:03 |
oleg953 |
KOMMEHTATOP > 28-10-2015 10:03:33 |
Доброго времени. |
Ultima2m > 28-10-2015 10:32:00 |
Наверное нужно раскомментировать (//) нужные панели в коде. |
KOMMEHTATOP > 28-10-2015 10:45:01 |
Ultima2m пишет
Вот раскомментировал -панель закладок(убрал //): Не работает. скрытый текст toggleToolbars([ // "toolbar-menubar", // панель меню // "aios-toolbar", // All-in-One Sidebar (AiOS) "PersonalToolbar", // панель закладок // "TabsToolbar", // панель вкладок "nav-bar", // панель навігації // "FindToolbar", // стрічка пошуку "addon-bar", // панель додатків (стрічка стану) "Моя панель закладок", "Панель кнопок 1", "Панель кнопок 2", "Панель кнопок 3" // ,"Панель кнопок 4" Скрин -что делаю не так? ![]() |
Ultima2m > 28-10-2015 20:14:11 |
KOMMEHTATOP пишет
Если стоит Classic Theme Restorer, то он может менять названия панелей. |
KOMMEHTATOP > 28-10-2015 22:27:08 |
Ultima2m пишет
У меня стандартная, Speed Start 1.8.6. Может работает только на Firefox 10 +.? P.S. |
bunda1 > 28-10-2015 22:40:15 |
KOMMEHTATOP пишет
А если так: Выделить код Код:var bar = document.getElementById("PersonalToolbar"); setToolbarVisibility(bar, bar.collapsed); |
KOMMEHTATOP > 28-10-2015 22:45:41 |
bunda1 P.S. скрытый текст var bar = document.getElementById("PersonalToolbar"); setToolbarVisibility(bar, bar.collapsed); Уж больно нужная кнопка. |
bunda1 > 28-10-2015 23:59:19 |
KOMMEHTATOP пишет
В теме Готовые кнопки для Custom Buttons не получится, потому что автор заблокировал тему |
KOMMEHTATOP > 29-10-2015 00:15:00 |
bunda1 пишет
Плохо что заблокировали. |
Coroner > 31-10-2015 15:05:29 |
Нет-ли в природе кнопочки, отслеживающей адрес открытой страницы и в соответствии с настройками блокирующей работу ту или иной кнопки СВ ? |
rbfyec > 31-10-2015 22:58:35 |
Coroner пишет
А если в начале кода нужной кнопки просто написать: Конечно нужно чтоб это было обёрнуто в функцию, иначе будет давать ощибку. |
Coroner > 01-11-2015 16:41:15 |
rbfyec |
rbfyec > 01-11-2015 19:52:06 |
Coroner пишет
Так вот return как раз и прерывает работу функции. Т. е. если в самом начале функции проверить адрес и условие окажется верно, то весь дальнейший код просто не будет выполняться. Я так думаю © |
Coroner > 01-11-2015 20:12:27 |
rbfyec пишет
Спасибо за идею ! |
zhe540 > 05-11-2015 13:52:03 |
Помогите пожалуйста добавить в конекстное меню кнопку "Сохранить ярлык страницы как.." из набора кнопок Save+ (https://forum.mozilla-russia.org/viewto … 40#p493040). |
KOMMEHTATOP > 06-11-2015 12:20:34 |
Доброго времени. |
Coroner > 06-11-2015 12:49:30 |
KOMMEHTATOP KOMMEHTATOP пишет
https://forum.mozilla-russia.org/viewto … 25#p697725 KOMMEHTATOP пишет
Это отключение кэша ? Такой не встречал, есть для очистки кэша и flash cookies. Но мне кажется такую сваять нетрудно. Можно попробовать. UDP : Ну как-то примерно так. За страшенный код прошу прощения скрытый текст Выделить код Код:/*Initialization Code*/ var c = "browser.cache.disk.enable"; var val = true; this.onclick = function(e) { if ( e.button == 0 ) { custombuttons.setPrefs(c, !custombuttons.getPrefs(c)); } }; function toggleIcon() { pref = Application.prefs.get(c); var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); icon.src = (pref.value == val) ? self.image : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAf9JREFUOE990s1LVFEcxvGn2riUMHIYpcFep1KHUnPE8oXSsoG0TVBZjIuobBNEL7OIIaJFBGGLtgPRIkISeiFidBVtok3t+wMi2lUQhk/fc+8dUykHPpwz55zfc8+956zxIUnGb/zC8l9FCwzMq7hsOIx9Q2hDgA+iH93IL6rzgL54P/aoDnIr9iKHZqRXBoSwfUlQty64qAWPI0e/nfHH2L1awGEmjyYheX3wI9kV5Oj3Ml7FrtUChpkcQ6e6XNC831AcDNDv19j/AiZZUGLrJR/QtIfRq4++R2E1cZu2U599XM/dwvwOVXj/EibDR5z1aRbc0XfYdxMvaV8nXtCWcRU3cAXtSGs2BIyQ/NY3k+2GwlDwFE8Sof8qCXtGewpZatIaiY+xR20c35wvMTGFh//wgLFbKERPnnOKmugYBxG+cIey7tO7KD28ykphh4NoVpXCbCiOA0aToxuiPaEJdmJfw/Ulwv/L2B49vcNNcXEcMI4zOIsJ3eeV7Is4h2LS8q19HrkooFAr/hsQQoIj+gSzE3sIec6/D6P0T6ILKU1BNfHtiq3lHjjaQXiNrL46oxm2O+Mt9MNcDxr13htZn5Cn+RNb7zYWtOqnt3JpWnQM8iY00U8xtpm5Rv1wg9ZBgbxzUYYbZm9TmYB6FmtJQNhyPU8tewNrGpSpBfwBp2K7FWnMf0EAAAAASUVORK5CYII='; }; toggleIcon(); gPrefService.addObserver( c, toggleIcon, false ); addDestructor(function() { gPrefService.removeObserver( c, toggleIcon, false ) }); |
KOMMEHTATOP > 06-11-2015 19:28:50 |
Coroner скрытый текст /*Initialization Code*/ var c = "browser.cache.disk.enable"; var val = true; this.onclick = function(e) { function toggleIcon() { toggleIcon(); Тест показал успех! |
1fesFFFF > 10-11-2015 04:37:24 |
На 42 версии скрытый текст Выделить код Код:/* ---------------------------------------------------------------------------- Options Button by LouCypher (aka Zoolcar9) Original code is Options Dialog Options extension for Firefox http://loucypher.wordpress.com/projects/extensions/#options-dialog-options ---------------------------------------------------------------------------- */ this.openPrefs(); Инициализация: скрытый текст Выделить код Код:var brand = document.getElementById("bundle_brand"); var appName = brand.getString("brandShortName"); this.tooltipText = appName + " " + this.label; var appInfo = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); var is20 = (appInfo.version >= "2.0") && (appInfo.version != "2.0b1"); this.openPrefs = function(aEvent) { if(aEvent) var paneID = aEvent.target.id; var features = "chrome,titlebar,toolbar,centerscreen,minimizable,resizable"; var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var win = wm.getMostRecentWindow("Browser:Preferences"); if(win) { win.focus(); if(paneID) { var pane = win.document.getElementById(paneID); win.document.documentElement.showPane(pane); } } else openDialog("chrome://browser/content/preferences/preferences.xul", "Preferences", features, paneID); } var cloneCBcontext = { cloneItems: function(aNode, aID, aSeparate) { var menupopup = document.getElementById(aID).cloneNode(true); var menuitems = menupopup.childNodes.length; for(var i = 0; i < menuitems; i++) aNode.appendChild(menupopup.firstChild); if(aSeparate) aNode.appendChild(document.createElement("menuseparator")); }, makeMenu: function(aNode) { var m = aNode.appendChild(document.createElement("menu")); m.setAttribute("label", "Custom Button"); m.setAttribute("oncommand", "event.stopPropagation()"); var mp = m.appendChild(document.createElement("menupopup")); cloneCBcontext.cloneItems(mp, "custombuttons-contextpopup"); aNode.insertBefore(document.createElement("menuseparator"), m); } } function addItem(aNode, aID, aLabel) { mItem = aNode.appendChild(document.createElement("menuitem")); mItem.id = aID; mItem.setAttribute("label", aLabel); } var panes = is20? ["Main", "Tabs", "Content", "Applications", "Privacy", "Security", "Advanced"]: ["General", "Privacy", "Content", "Tabs", "Downloads", "Advanced"]; const popupID = "cbContext-prefsButton"; var test = document.getElementById(popupID); if(test) test.parentNode.removeChild(test); var main = document.getElementById("mainPopupSet"); var cPopup = main.appendChild(document.createElement("popup")); cPopup.id = popupID; cPopup.setAttribute("oncommand", "event.stopPropagation(); document.popupNode.openPrefs(event);") for(var i = 0; i < panes.length; i++) { addItem(cPopup, "pane" + panes[i], panes[i]); } cloneCBcontext.makeMenu(cPopup); this.setAttribute("context", popupID); Что нужно прописать сейчас, чтобы открывалась новая вкладка с настройками? |
villa7 > 10-11-2015 04:55:26 |
1fesFFFF |
KOMMEHTATOP > 14-11-2015 11:56:08 |
Вот попалась кнопочка : скрытый текст Выделить код Код: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%3Cname%3EWebRTC%20ON/OFF%3C/name%3E%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNQTFRFR0dH////lJSUhISER0dHbtlzhoaGh4eHiIiIioqKi4uLjIyMjY2Nj4+PkJCQkZGRkpKSk5OTlJSUl5eXn5+fz8/P1tbW2NjY2tra29vb3Nzc3t7e4ODg4uLi4+Pj5eXl5ubm5+fn6Ojo6enp6+vr7Ozs7e3t8fHx8vLy8/Pz9vb29/f3+fn5+/v7/f39/v7+////DXu3NgAAAAR0Uk5TAACZ5cNwQT4AAACaSURBVBgZBcExTsNAFAXA+Y4tkaQIKS1okOi4/2FSUSBEhSggYLB3HzNVAKmh0jNSt4lMf/kpanSeZvD8jV3GmmbgWhTDaQYcE0mGADw8YewDSGttbfscZQz61iX9fphefke0bWtJ69fp9Gm39pt1XdZta+3m8P6l6jzNeL3D2/qhSh14dEmyhZFcHVwWQBXsswAMIAuAKgDAP60zTjfSoH4UAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%3Cmode%3E0%3C/mode%3E%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20s%3D%27media.peerconnection.enabled%27%3Bvar%20pref%3DApplication.prefs.get%28s%29%3Bthis.onclick%3Dfunction%28e%29%7Bif%28e.button%3D%3D0%29%7Bpref.value%3D%28pref.value%3D%3Dtrue%29%3Ffalse%3Atrue%3BBrowserReload%28%29%3B%7D%7D%3Bfunction%20toggleImage%28%29%7Bvar%20icon%3Dself.ownerDocument.getAnonymousElementByAttribute%28self%2C%22class%22%2C%22toolbarbutton-icon%22%29%3Bicon.src%3D%28pref.value%3D%3Dtrue%29%3Fself.image%3A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAI1QTFRF4lpS////lJSUhoaGh4eHiIiIioqKi4uLjIyMjY2NkZGRkpKSk5OTlJSUwUdBz8/P1k9J1tbW2NjY2tra29vb3Nzc3t7e39/f4ODg4uLi4+Pj5eXl5ubm5+fn6Ojo6enp6+vr7Ozs7e3t8fHx8vLy8/Pz9PT09fX19vb29/f3+/v7/Pz8/f39/v7+////frFrRgAAAAN0Uk5TAACZc6XvPgAAAJdJREFUGNNNzrEKwkAURNH71piQKMFSRWLl//9OWsXOLojG7Nsdm0Sc7sDADLaEHbDDDNtIiBKGNmO2XZ8A4AaZIdhiOghPQrOYW4aWoD/vyW0AQO7pyGHqGAoB2R3Z/vPevqwAPHqSUsqli1Wa6imOU4ye6uYx/n5cz8A9PjHDKrjQS5KgAI1U9HFeNwMotZj5x89z4y9fln1GV8ZmHdIAAAAASUVORK5CYII%3D%27%3B%7D%3BtoggleImage%28%29%3BgPrefService.addObserver%28s%2CtoggleImage%2Cfalse%29%3BaddDestructor%28function%28%29%7BgPrefService.removeObserver%28s%2CtoggleImage%2Cfalse%29%7D%29%3B%5D%5D%3E%3C/initcode%3E%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%3Cattributes/%3E%3C/custombutton%3E |
LittleMontana > 18-11-2015 11:35:51 |
использую дополнение Smart pause for youtube, единственное, что раздражает - невозможность отлючения\включения функционала дополнения посредством вывода соответствующей кнопки на какую либо панель, то есть включать авто паузу и отключать можно лишь в меню дополнений. |
Inko7 > 18-11-2015 11:50:51 |
LittleMontana LittleMontana пишет
есть переключатель в контекстном меню на странице |
LittleMontana > 18-11-2015 11:53:03 |
Ох, точно. Не заметил, так как обычно не пользуюсь данным меню во время просмотра youtube. Спасибо! |
foxboy > 20-11-2015 17:45:52 |
Можно ли сделать, чтобы открывался кукименеджер с куками текущей вкладки. Кнопка открывает менеджер. Выделить код Код:var wm = Components. classes["@mozilla.org/appshell/window-mediator;1"]. getService (Components. interfaces. nsIWindowMediator); var win = wm. getMostRecentWindow ("Browser:Cookies"); if (win) win. focus (); else openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null); |
bunda1 > 20-11-2015 19:47:53 |
foxboy Выделить код Код:var win = Services.wm.getMostRecentWindow("Browser:Cookies"); win && win.close(); var win = openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null); win.addEventListener("load", function s(e) { win.removeEventListener("load", s, false); var host = content.location.host, arr = host.split('.'); if ( arr.length > 2 ) host = arr[1] + "." + arr[2]; var filter = win.document.getElementById("filter"); filter.value = host; setTimeout(function() filter.doCommand(), 0); }, false); |
foxboy > 20-11-2015 20:38:10 |
bunda1 Все отлично, спасибо! |
foxboy > 21-11-2015 20:31:40 |
Возможно ли сделать кнопку для расширения или вообще заменить его кнопкой? https://addons.mozilla.org/en-US/firefox/addon/cookie-watcher/ |
difabor > 02-12-2015 00:23:11 |
Насчёт кнопки: Baron_ пишет
Можно ли добавить в кнопку следующую функциональность: |
KOMMEHTATOP > 08-12-2015 13:40:47 |
Для Отключения кэша использую код скрытый текст Выделить код Код:/*Initialization Code*/ var c = "browser.cache.disk.enable"; var val = true; this.onclick = function(e) { if ( e.button == 0 ) { custombuttons.setPrefs(c, !custombuttons.getPrefs(c)); } }; function toggleIcon() { pref = Application.prefs.get(c); var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); icon.src = (pref.value == val) ? self.image : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAf9JREFUOE990s1LVFEcxvGn2riUMHIYpcFep1KHUnPE8oXSsoG0TVBZjIuobBNEL7OIIaJFBGGLtgPRIkISeiFidBVtok3t+wMi2lUQhk/fc+8dUykHPpwz55zfc8+956zxIUnGb/zC8l9FCwzMq7hsOIx9Q2hDgA+iH93IL6rzgL54P/aoDnIr9iKHZqRXBoSwfUlQty64qAWPI0e/nfHH2L1awGEmjyYheX3wI9kV5Oj3Ml7FrtUChpkcQ6e6XNC831AcDNDv19j/AiZZUGLrJR/QtIfRq4++R2E1cZu2U599XM/dwvwOVXj/EibDR5z1aRbc0XfYdxMvaV8nXtCWcRU3cAXtSGs2BIyQ/NY3k+2GwlDwFE8Sof8qCXtGewpZatIaiY+xR20c35wvMTGFh//wgLFbKERPnnOKmugYBxG+cIey7tO7KD28ykphh4NoVpXCbCiOA0aToxuiPaEJdmJfw/Ulwv/L2B49vcNNcXEcMI4zOIsJ3eeV7Is4h2LS8q19HrkooFAr/hsQQoIj+gSzE3sIec6/D6P0T6ILKU1BNfHtiq3lHjjaQXiNrL46oxm2O+Mt9MNcDxr13htZn5Cn+RNb7zYWtOqnt3JpWnQM8iY00U8xtpm5Rv1wg9ZBgbxzUYYbZm9TmYB6FmtJQNhyPU8tewNrGpSpBfwBp2K7FWnMf0EAAAAASUVORK5CYII='; }; toggleIcon(); gPrefService.addObserver( c, toggleIcon, false ); addDestructor(function() { gPrefService.removeObserver( c, toggleIcon, false ) }); Но после перезагрузки браузера -приходиться каждый раз включать кнопку,может можно как то зафиксировать? |
voqabuhe > 08-12-2015 14:15:05 |
KOMMEHTATOP пишет
Поместить код во вкладку Инициализация. KOMMEHTATOP пишет
|
KOMMEHTATOP > 08-12-2015 14:42:38 |
voqabuhe |
tom911 > 08-12-2015 19:29:37 |
Подскажите, почему две кнопки создается при добавлении? |
bunda1 > 08-12-2015 22:03:24 |
tom911 пишет
А ты при втором запросе на установку кнопки нажми - отмена. |
tom911 > 09-12-2015 00:11:28 |
bunda1 пишет
Спасибо, попробую! Уважаемый автор, у вас есть кнопка CB drag and go. Если там возможность сохранения изображения в заданный каталог? Если есть, то что добавить в инициализацию кнопки для этого? |
villa7 > 11-12-2015 19:29:38 |
У кого нибудь сохраняет эта кнопка? У меня полный молчок. http://forum.mozilla-russia.org/viewtop … 82#p630282 |
difabor > 11-12-2015 20:07:39 |
villa7 пишет
У меня сохраняет скриншот (ФФ-28): |
villa7 > 11-12-2015 20:25:57 |
difabor |
oleg.sgh > 11-12-2015 20:29:18 |
villa7 Скрин всей страницы штатными средствами. скрытый текст ![]() Сохраняется в папку загрузки. |
difabor > 11-12-2015 21:12:44 |
villa7 пишет
Тут я ничего сказать не могу, увы |
villa7 > 11-12-2015 23:25:43 |
oleg.sgh |
bunda1 > 12-12-2015 00:36:54 |
oleg.sgh пишет
Странно, но я в инспекторе на FF43 такую возможность не вижу. |
oleg.sgh > 12-12-2015 08:03:22 |
bunda1
Есть. Настройки инспектора, поставить галку. |
villa7 > 12-12-2015 11:17:25 |
А нет ли кнопки переключающей параметр в about:config. Нужно быстро отключать/включать на некоторых сайтах browser.display.background_color. но после установки Fast Dial не могу убрать это бельмо. Или может кто знает как стилем изменить цвет. |
bunda1 > 12-12-2015 12:23:53 |
oleg.sgh пишет
Да есть, я проглядел, но большие страницы не сохраняет. 12-12-2015 12:25:47 villa7 пишет
Нет. |
Kiril__777 > 15-12-2015 01:48:36 |
Снова прошу кнопку "Цитата" преимущественно для forum.ru-board.com |
foxboy > 15-12-2015 16:34:22 |
bunda1 скрытый текст Выделить код Код:var win = Services.wm.getMostRecentWindow("Browser:Cookies"); win && win.close(); var win = openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null); win.addEventListener("load", function s(e) { win.removeEventListener("load", s, false); var host = content.location.host, arr = host.split('.'); if ( arr.length > 2 ) host = arr[1] + "." + arr[2]; var filter = win.document.getElementById("filter"); filter.value = host; setTimeout(function() filter.doCommand(), 0); }, false); Можно в этой кнопке сделать: ЛКМ - открыть куки текущей вкладки, ПКМ - открыть кукименеджер. |
bunda1 > 15-12-2015 21:19:47 |
foxboy пишет
Выделить код Код:this.onclick =e=> { if ( e.button == 0 ) { var win = Services.wm.getMostRecentWindow("Browser:Cookies"); win && win.close(); var win = openDialog("chrome://browser/content/preferences/cookies.xul", "", "resizable,dialog=yes,centerscreen", null); win.addEventListener("load", function s() { win.removeEventListener("load", s); var host = content.location.host, arr = host.split('.'); if ( arr.length > 2 ) host = arr[1] + "." + arr[2]; var filter = win.document.getElementById("filter"); filter.value = host; setTimeout(function() filter.doCommand(), 0); }); } if ( e.button == 1 ) gShowPopup(this); if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); var win = Services.wm.getMostRecentWindow("Browser:Permissions"); win && win.close(); openDialog("chrome://browser/content/preferences/permissions.xul", "", "centerscreen, resizable=1", { blockVisible: 1, sessionVisible: 1, allowVisible: 1, prefilledHost: content.location.host, permissionType: "cookie", windowTitle: "Управление cookies", introText: "" }); } }; this.tooltipText = "Л: Открыть куки текущей вкладки \nС: CB Меню \nП: Открыть кукименеджер"; |
Kiril__777 > 19-12-2015 03:48:22 |
Неужели никто не поделится кодом? |
xrun1 > 19-12-2015 12:20:01 |
Kiril__777 |
Kiril__777 > 19-12-2015 13:30:16 |
xrun1 |
DroG > 24-12-2015 12:06:02 |
Что-то стал дурить Custom Buttons. Я не спец в скриптах. Где-то нашел простой скрипт для запуска программы и вывел запуск клавиатуры: Код: Инициализация пустая. Работал нормально до последнего времени. А сейчас при нажатии выдает "Не удалось запустить экранную клавиатуру". Я недавно перешел на Win10x64 и версия FF поменялась до 43.0.2. Кто из них виноват и как подправить? |
bunda1 > 24-12-2015 18:20:14 |
DroG пишет
Да есть такое и не понятно почему. Может скопируй osk.exe в другое место, измени сответствено код и попробуй запускать. |
Mishania > 25-12-2015 20:44:22 |
Здравствуйте, есть кнопка Выделить код Код: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%3E%u0418%u043D%u0434%u0438%u043A%u0430%u0446%u0438%u044F%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0440%u0430%u0441%u043A%u043B%u0430%u0434%u043A%u0438%20%u0444%u043E%u043D%u043E%u043C%20%u043F%u043E%u043B%u044F%20%u0432%u0432%u043E%u0434%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjUlEQVR42p2SQRLAMARFuZX7r9xKh6mMKtLUJtr4T74EAUDgDmG2FYnKPIfuoepy8ReA/meWfwAXW35qIYoXYOqa8yh+AHYWKnEL8NxtdWKrk26n8XwE2IlHgFvw0DIifAD1uwR450rgsBYQj10BIvgFyJ6rji2gGlh3ggg3QDftCbBmAPZW6qvyLtMtXHnJyXkUQIobAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20BGcolorEN%3D%22%23f5f5ff%22%3B//%u0446%u0432%u0435%u0442%20%u0444%u043E%u043D%u0430%20%u043F%u043E%u043B%u044F%20%u0432%u0432%u043E%u0434%u0430%20%u043F%u0440%u0438%20%u043B%u0430%u0442%u0438%u043D%u0441%u043A%u043E%u0439%20%u0440%u0430%u0441%u043A%u043B%u0430%u0434%u043A%u0435%0Avar%20BGcolorRU%3D%22%23fff5f5%22%3B//%u0446%u0432%u0435%u0442%20%u0444%u043E%u043D%u0430%20%u043F%u043E%u043B%u044F%20%u0432%u0432%u043E%u0434%u0430%20%u043F%u0440%u0438%20%u0440%u0443%u0441%u0441%u043A%u043E%u0439%20%u0440%u0430%u0441%u043A%u043B%u0430%u0434%u043A%u0435%20%0A%0Avar%20bgorig%3B%0Avar%20trgt%3B%0A%0Afunction%20blurry%28e%29%7B%0Atrgt.style.background%3Dbgorig%3B%0Atrgt.removeEventListener%28%22keyup%22%2C%20checkKeyb%2C%20true%29%3B%0Atrgt.removeEventListener%28%22blur%22%2C%20blurry%2C%20true%29%3B%0A%7D%3B%0A%0Afunction%20checkKeyb%28e%29%7B%0Avar%20fkey%3De.keyCode%3B%0Aif%20%28fkey%3D%3D16%20%7C%7C%20fkey%3D%3D17%20%7C%7C%20fkey%3D%3D18%29%7B%20//%20%u043F%u0440%u043E%u0432%u0435%u0440%u043A%u0430%20%u043D%u0430%u0436%u0430%u0442%u0438%u0439%20alt%20ctrl%20shift%20%u0434%u043B%u044F%20%u043F%u0440%u043E%u0432%u0435%u0440%u043A%u0438%20%u0441%u0442%u0430%u0442%u0443%u0441%u0430%20%u043F%u0440%u0438%20%u0441%u043C%u0435%u043D%u0435%20%u0440%u0430%u0441%u043A%u043B%u0430%u0434%u043A%u0438%20%u0435%u0441%u043B%u0438%20%u043D%u0430%u0434%u043E%20%u0434%u043E%u0430%u0432%u044C%u0442%u0435%20%u0441%u0432%u043E%u0438%20%u043A%u043E%u0434%u044B%0Avar%20curlang%3Dkb.getLangNameAbr%28%29%3B%0Aif%20%28curlang%3D%3D%27ru%27%29%7Btrgt.style.backgroundColor%3DBGcolorRU%3B%7D%0Aif%20%28curlang%3D%3D%27en%27%29%7Btrgt.style.backgroundColor%3DBGcolorEN%3B%7D%09%0A%7D%3B%0A%7D%3B%0A%0Afunction%20checkNode%28e%29%20%7B%0A%09var%20trg%20%3D%20e.originalTarget%3B%0A%09var%20ln%20%3D%20trg.localName%3B%0A%09if%28ln%20%26%26%20%28ln%20%3D%3D%20%22input%22%20%7C%7C%20ln%20%3D%3D%20%22textarea%22%29%29%7B%0Abgorig%3Dtrg.style.backgroundColor%3B%0Atrgt%3Dtrg%3B%0Atrg.addEventListener%28%22blur%22%2C%20blurry%2C%20true%29%3B%0Avar%20curlang%3Dkb.getLangNameAbr%28%29%3B%0Aif%20%28curlang%3D%3D%27ru%27%29%7Btrg.style.backgroundColor%3DBGcolorRU%3B%7D%0Aif%20%28curlang%3D%3D%27en%27%29%7Btrg.style.backgroundColor%3DBGcolorEN%3B%7D%09%0Atrg.addEventListener%28%22keyup%22%2C%20checkKeyb%2C%20true%29%3B%0A%7D%0A%7D%0A%0A//----------------code%20by%20Infocatcher---------------------------------------%0Avar%20kb%20%3D%20%7B%0AGetKeyboardLayout%3A%20null%2C%0AGetLocaleInfoW%3A%20null%2C%0Ainit%3A%20function%28%29%0A%7B%0Athis.init%20%3D%20function%28%29%20%7B%7D%3B%0AComponents.utils.import%28%22resource%3A//gre/modules/ctypes.jsm%22%2C%20this%29%3B%0Alet%20ctypes%20%3D%20this.ctypes%3B%0Alet%20a%20%3D%20Cc%5B%22@mozilla.org/xre/app-info%3B1%22%5D.getService%28Ci.nsIXULRuntime%29%3B%0Alet%20abi%20%3D%20a.XPCOMABI.indexOf%28%22x86_64%22%29%20%3D%3D%20-1%20%3F%20ctypes.winapi_abi%20%3A%20ctypes.default_abi%3B%0Athis.GetKeyboardLayout%20%3D%20ctypes.open%28%22user32.dll%22%29.declare%28%22GetKeyboardLayout%22%2C%20abi%2C%20ctypes.uintptr_t%2C%20ctypes.uint32_t%29%3B%0Athis.GetLocaleInfoW%20%3D%20ctypes.open%28%22kernel32.dll%22%29.declare%28%22GetLocaleInfoW%22%2C%20abi%2C%20ctypes.int32_t%2C%20ctypes.uint32_t%2C%20ctypes.uint32_t%2C%20ctypes.jschar.ptr%2C%20ctypes.int32_t%29%3B%0A%7D%2C%0AgetLangNameAbr%3A%20function%28%29%0A%7B%0Athis.init%28%29%3B%0Atry%0A%7B%0Alet%20ctypes%20%3D%20this.ctypes%3B%0Alet%20lcid%20%3D%20ctypes.UInt64.lo%28ctypes.UInt64%28%220x%22%20+%20this.GetKeyboardLayout%280%29.toString%2816%29%29%29%20%26%200xFFFF%3B%0Alet%20bufferLength%20%3D%20this.GetLocaleInfoW%28lcid%2C%2089%2C%20ctypes.jschar.ptr%280%29%2C%200%29%3B%0Aif%20%28bufferLength%20%3D%3D%200%29%0Areturn%3B%0A%20%0Alet%20buffer%20%3D%20ctypes.jschar.array%28bufferLength%29%28%29%3B%0Aif%20%28this.GetLocaleInfoW%28lcid%2C%2089%2C%20ctypes.cast%28buffer.address%28%29%2C%20ctypes.jschar.ptr%29%2C%20bufferLength%29%20%21%3D%200%29%0Areturn%20buffer.readString%28%29%3B%0A%7D%0Acatch%28e%29%7B%7D%3B%0A%7D%0A%7D%3B%0A//-------------------------------------------------------%0A%0A//%20Windows%20watcher%2C%20based%20on%20code%20from%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/CB_Editor_Toggle_on_Top%0A%20%0Aconst%20watcherId%20%3D%20%22customButtonsWindowsWatcher_%22%20+%20this.id%3B%0Avar%20%7BApplication%2C%20Components%7D%20%3D%20window%3B%20//%20Prevent%20garbage%20collection%20in%20Firefox%203.6%20and%20older%0Avar%20watcher%20%3D%20Application.storage.get%28watcherId%2C%20null%29%3B%0Aif%28%21watcher%29%20%7B%0Awatcher%20%3D%20%7B%0AREASON_STARTUP%3A%201%2C%0AREASON_SHUTDOWN%3A%202%2C%0AREASON_WINDOW_LOADED%3A%203%2C%0AREASON_WINDOW_CLOSED%3A%204%2C%0A%20%0Aget%20obs%28%29%20%7B%0Adelete%20this.obs%3B%0Areturn%20this.obs%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A.getService%28Components.interfaces.nsIObserverService%29%3B%0A%7D%2C%0Aget%20ww%28%29%20%7B%0Adelete%20this.ww%3B%0Areturn%20this.ww%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/window-watcher%3B1%22%5D%0A.getService%28Components.interfaces.nsIWindowWatcher%29%3B%0A%7D%2C%0Aget%20wm%28%29%20%7B%0Adelete%20this.wm%3B%0Areturn%20this.wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D%0A.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%7D%2C%0Ainit%3A%20function%28reason%29%20%7B%0Athis.obs.addObserver%28this%2C%20%22quit-application-granted%22%2C%20false%29%3B%0Avar%20ws%20%3D%20this.wm.getEnumerator%28null%29%3B%0Awhile%28ws.hasMoreElements%28%29%29%0Athis.initWindow%28ws.getNext%28%29%2C%20reason%29%3B%0Athis.ww.registerNotification%28this%29%3B%0A%7D%2C%0Adestroy%3A%20function%28reason%29%20%7B%0Athis.obs.removeObserver%28this%2C%20%22quit-application-granted%22%29%3B%0Avar%20ws%20%3D%20this.wm.getEnumerator%28null%29%3B%0Awhile%28ws.hasMoreElements%28%29%29%0Athis.destroyWindow%28ws.getNext%28%29%2C%20reason%29%3B%0Athis.ww.unregisterNotification%28this%29%3B%0A%7D%2C%0AinitWindow%3A%20function%28window%2C%20reason%29%20%7B%0A//%20Do%20something%20with%20window%0Awindow.addEventListener%28%22focus%22%2C%20checkNode%2C%20true%29%3B%0A%7D%2C%0AdestroyWindow%3A%20function%28window%2C%20reason%29%20%7B%0Aif%28reason%20%3D%3D%20this.REASON_WINDOW_CLOSED%29%0Awindow.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%20//%20Window%20can%20be%20closed%20before%20%22load%22%20event%0A//%20Cleanup%0Awindow.removeEventListener%28%22focus%22%2C%20checkNode%2C%20true%29%3B%0A%7D%2C%0Aobserve%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0Aif%28topic%20%3D%3D%20%22quit-application-granted%22%29%0Athis.destroy%28%29%3B%0Aelse%20if%28topic%20%3D%3D%20%22domwindowopened%22%29%0Asubject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0Aelse%20if%28topic%20%3D%3D%20%22domwindowclosed%22%29%0Athis.destroyWindow%28subject%2C%20this.REASON_WINDOW_CLOSED%29%3B%0A%7D%2C%0AhandleEvent%3A%20function%28e%29%20%7B%0Aswitch%28e.type%29%20%7B%0Acase%20%22load%22%3A%20this.loadHandler%28e%29%3B%20break%3B%0A%7D%0A%7D%2C%0AloadHandler%3A%20function%28e%29%20%7B%0Avar%20window%20%3D%20e.currentTarget%3B%0Awindow.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0Athis.initWindow%28window%2C%20this.REASON_WINDOW_LOADED%29%3B%0A%7D%0A%7D%3B%0AApplication.storage.set%28watcherId%2C%20watcher%29%3B%0Awatcher.init%28watcher.REASON_STARTUP%29%3B%0A%7D%0Afunction%20destructor%28reason%29%20%7B%0Aif%28reason%20%3D%3D%20%22update%22%20%7C%7C%20reason%20%3D%3D%20%22delete%22%29%20%7B%0Awatcher.destroy%28watcher.REASON_SHUTDOWN%29%3B%0AApplication.storage.set%28watcherId%2C%20null%29%3B%0A%7D%0A%7D%0Aif%28%0Atypeof%20addDestructor%20%3D%3D%20%22function%22%20//%20Custom%20Buttons%200.0.5.6pre4+%0A%26%26%20addDestructor%20%21%3D%20%28%22addDestructor%22%20in%20window%20%26%26%20window.addDestructor%29%0A%29%0AaddDestructor%28destructor%2C%20this%29%3B%0Aelse%0Athis.onDestroy%20%3D%20destructor%3B%20%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%5Bokkamas_knife%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Нужна для индикации языка ввода. Перестала работать с тёмным полем для ввода на FF42, а может и раньше обновлял с 33 сразу на 42. |
bunda1 > 25-12-2015 23:19:37 |
Mishania Выделить код Код: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%3EKL%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAl0lEQVR42mNkoAwwAvH////J1AwEg0T/0/vWmXePMfBMmG6RL82wvX+P136wEkXl21FfVFtfMsCkCOv3Pn5CddEXoLhVnOXREG6Gk5cZSdAfx12w6CVCMxCQoh8B0qpdZpozkK+fgUF82yZdT5L1O+r9D/sKYZPlf5TwB3OfQPQjAaAdhWL49COcg4g//PoHOv1Rop8SAACkKJ0R5kMP6wAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BgBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%20%7C%7C%20%28%28%5Bimg%5D%29%20%3D%3E%20%7B%0A%0A%09var%20interval%20%3D%20500%3B%20//%20ms%0A%0A%09var%20imgEN%20%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAlElEQVR42mNkoAwwAvH////J1AwEg0T/57XW+5YcQ5VOM10/kxcqDmJLAcVOpm/smAXjkqCfgcF+m3+BJ0H9MHtgANlc6Yr/JgzE268wwak/nwFFPM20guE0OfoVJmjIF9w4iOI1UtwPMkvtZqDXU0L6kYGVxpSjUifg+vN5oYFHtn4GhmcTGE8fxKZ/oNMfJfopAQDmnKYRpM4nUAAAAABJRU5ErkJggg%3D%3D%22%3B%0A%09var%20imgRU%20%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAjklEQVR42mNkoAwwAvH////J1AwEg0L/CYagTnTJmMkMQdIMT9cx5C5hYFBgmNzHIM0A4zIwlK9jMMevH6KHgST9KHaCFcmQb789w7p8ct2vEMPQFwRikKYf6H7pNQydB7H4BcI9OREsCzUOq/8ZGIpyGR7Awk/6KYyLxXWEwg+qDtUIuNcGUfqjTD8lAABRE34RggBENwAAAABJRU5ErkJggg%3D%3D%22%3B%0A%09var%20imgERR%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAIAAAB2uKNyAAAAc0lEQVR42mNkoAwwAvH////J1AwEg0n/nYnWqgXHoJJp2/7P9MQliE3/9nRGr1nIxltNuH1UrRuLYL4KFv1Q7SB5760QK9O2bWPwwhSEOwG7/+EORnYsVkEs+onXjFU/VCWyJ3EI0ib+KbV/oN1Pln5KAACv6I0Rg3TeKQAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0A%09var%20data%20%3D%20%7B67699721%3A%20imgEN%2C%2068748313%3A%20imgRU%7D%3B%0A%0A%09var%20%7Bctypes%7D%20%3D%20Cu.import%28%22resource%3A//gre/modules/ctypes.jsm%22%2C%20%7B%7D%29%3B%0A%09var%20lib%20%3D%20ctypes.open%28%22user32.dll%22%29%3B%0A%09var%20method%20%3D%20lib.declare%28%22GetKeyboardLayout%22%2C%20ctypes.winapi_abi%2C%20ctypes.uint32_t%2C%20ctypes.uint32_t%29%3B%0A%0A%09var%20currentLayout%2C%20layout%3B%0A%09function%20tick%28%29%20%7B%0A%09%09if%20%28%28layout%20%3D%20method%280%29%29%20%3D%3D%20currentLayout%29%20return%3B%0A%09%09currentLayout%20%3D%20layout%3B%20img.src%20%3D%20data%5Blayout%5D%20%7C%7C%20imgERR%3B%0A%09%7D%0A%09tick%28%29%3B%20var%20id%20%3D%20setInterval%28tick%2C%20interval%29%3B%0A%09addDestructor%28%28%29%20%3D%3E%20clearInterval%28id%29%20%7C%7C%20lib.close%28%29%29%3B%0A%0A%09//this._handleClick%20%3D%20%28%29%20%3D%3E%20alert%28method%280%29%29%3B%0A%0A%7D%29%28document.getAnonymousNodes%28this%29%29%3B%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 |
Mishania > 26-12-2015 08:37:48 |
bunda1 |
bunda1 > 26-12-2015 14:47:05 |
Mishania пишет
А ты замени изображения imgEN, imgRU, imgERR в коде инициализации кнопки на цветные и все дела. |
Mishania > 26-12-2015 15:56:33 |
bunda1 |
bunda1 > 27-12-2015 15:07:03 |
Mishania |
Mishania > 27-12-2015 15:10:15 |
bunda1 |
Kiril__777 > 03-01-2016 03:04:55 |
Есть у кого актуальная кнопка с таким описанием?
У меня уже не работает скрытый текст addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ for(var i = 0, l = pres.length; i < l; ++i) { // Special "codes" var icon; a.appendChild(doc.createTextNode(tc)); box.innerHTML = ""; } Спасибо |
bunda1 > 03-01-2016 21:02:49 |
Kiril__777 пишет
Проверил на FF44, работает. |
Mishania > 03-01-2016 23:17:16 |
Есть две разные кнопки для добавления в закладки скрытый текст Выделить код Код:this.tooltipText = "L=Bookmarks Manager"; this. onclick = function (event) { if (event. button == 0) toggleSidebar('viewBookmarksSidebar'); if (event. button == 2) PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.toolbarFolderId); if (event. button == 1) PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title); }; |
Kiril__777 > 04-01-2016 07:18:09 |
bunda1 |
bunda1 > 04-01-2016 13:31:23 |
Mishania пишет
А что там удобней? 04-01-2016 13:44:12 Выделить код Код:this.onclick =e=> { e.button == 0 && toggleSidebar('viewBookmarksSidebar'); if ( e.button == 1 ) { PlacesCommandHook.bookmarkPage(gBrowser, undefined, true); var panel = document.getElementById("editBookmarkPanel"); addEventListener("popupshown", function c() { removeEventListener("popupshown", c); panel.moveTo(e.screenX, e.screenY); document.getElementById('editBMPanel_foldersExpander').click(); }); } }; this.tooltipText = "Л: Переключить боковую панель \nС: Добавить закладку \nП: CB Меню"; |
Mishania > 04-01-2016 15:35:12 |
bunda1
Появляется окошко не в углу, а посредине экрана, возможность добавить описание, краткое имя, галочка "загружать в боковой панели". Из минусов - не появлется "удалить закладку" если такая уже существует. Мне бы хотя-бы в моей поделке сделать чтоб меню кнопки открывалось по ктрл+пкм, или шифт+пкм и нормально. Раньше помнится были ссылки на примеры, а теперь всё куда-то делось. |
bunda1 > 04-01-2016 21:09:43 |
Mishania пишет
Упс Выделить код Код:this.onclick =e=> { e.button == 0 && toggleSidebar('viewBookmarksSidebar'); if ( e.button == 1 ) { PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.toolbarFolderId); var panel = document.getElementById("editBookmarkPanel"); addEventListener("popupshown", function c() { removeEventListener("popupshown", c); panel.moveTo(e.screenX, e.screenY); document.getElementById('editBMPanel_foldersExpander').click(); }); } }; this.tooltipText = "Л: Переключить боковую панель \nС: Добавить закладку \nП: CB Меню"; 04-01-2016 21:13:53 Mishania пишет
Выделить код Код:this.onclick =e=> { e.button == 0 && toggleSidebar('viewBookmarksSidebar'); e.button == 1 && PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title); if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.toolbarFolderId); } }; this.tooltipText = "Л: Переключить боковую панель \nС: Добавить закладку \nП: Добавить закладку"; 04-01-2016 21:20:57 Mishania пишет
можно при нажатии СКМ автоматически удалить уже существующии закладки: Выделить код Код:this.onclick =e=> { e.button == 0 && toggleSidebar('viewBookmarksSidebar'); if ( e.button == 1 ) { BookmarkingUI._itemIds.forEach((id,i)=> setTimeout(()=> PlacesUtils.bookmarks.removeItem(id), 10*i) ); PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title); } }; this.tooltipText = "Л: Переключить боковую панель \nС: Добавить закладку \nП: Добавить закладку"; |
bunda1 > 04-01-2016 22:21:48 |
Mishania пишет
Выделить код Код:this.onclick =e=> { e.button == 0 && toggleSidebar('viewBookmarksSidebar'); if ( e.button == 1 ) { PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, content.location.href, content.document.title); function observer(subject) { Services.ww.unregisterNotification(observer); subject.addEventListener("load", function c(e) { subject.removeEventListener("load", c); var doc = e.target; doc.getElementById('editBMPanel_foldersExpander').click(); if ( BookmarkingUI.status == 0 ) return; var but = doc.createElement("button"); but.setAttribute("label", "Удалить существующие закладки"); doc.getElementById('bookmarkproperties').appendChild(but); but.onclick =()=> { but.remove(); BookmarkingUI._itemIds.forEach((id,i)=> setTimeout(()=> PlacesUtils.bookmarks.removeItem(id), 10*i) ); }; }); }; Services.ww.registerNotification(observer); } }; this.tooltipText = "Л: Переключить боковую панель \nС: Добавить закладку \nП: CB Меню"; |
Mishania > 04-01-2016 22:47:37 |
bunda1 |
difabor > 05-01-2016 20:53:49 |
Уважаемый Infocatcher, |
Mishania > 16-01-2016 13:31:23 |
Плотно я занялся браузерам и опять с просьбой. Выделить код Код: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%3ELinkification%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANtJREFUeNrskz0Lg0AMhpN6i6B/z0lcnOyki47iqDg4SHVxESd/nOAHCIKcvdCDtmg7uJVmuASeNx/k7pBzDmfsAiftBwowcdR1fbs7540VlmVdv3Esy5KgaZqwrisRRVGgaRoSPcSHHNM05bZtQ1VVBDVNA1VVd8ed5xmmaaJY5rBhGKDrOhA+iiKM45g/d5MmuuZ5DkEQYBiGXOawvu+pqvCu6/JlWcDzvP2FMUYaEcscMUGRZZnj+z7ouk7CcRwhSZKXHRxxFE/ZMIzdLbdtS7fwieP/L8AmwABkrYI7KtvK5gAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*//*%0A%20%20%20%20Linkification%0A%20%20%20%20Original%20script%20by%20Misha%20Splurov%0A%20%20%20%20http%3A//userscripts.org/scripts/show/67744%0A*/%0A%0A//%20%28c%29%20http%3A//data.iana.org/TLD/tlds-alpha-by-domain.txt%0Avar%20domains%20%3D%20%5B%0A%20%20%22ac%22%2C%20%22ad%22%2C%20%22ae%22%2C%20%22aero%22%2C%20%22af%22%2C%20%22ag%22%2C%20%22ai%22%2C%20%22al%22%2C%20%22am%22%2C%20%22an%22%2C%20%22ao%22%2C%20%22aq%22%2C%0A%20%20%22ar%22%2C%20%22arpa%22%2C%20%22as%22%2C%20%22asia%22%2C%20%22at%22%2C%20%22au%22%2C%20%22aw%22%2C%20%22ax%22%2C%20%22az%22%2C%20%22ba%22%2C%20%22bb%22%2C%20%22bd%22%2C%0A%20%20%22be%22%2C%20%22bf%22%2C%20%22bg%22%2C%20%22bh%22%2C%20%22bi%22%2C%20%22biz%22%2C%20%22bj%22%2C%20%22bm%22%2C%20%22bn%22%2C%20%22bo%22%2C%20%22br%22%2C%20%22bs%22%2C%0A%20%20%22bt%22%2C%20%22bv%22%2C%20%22bw%22%2C%20%22by%22%2C%20%22bz%22%2C%20%22ca%22%2C%20%22cat%22%2C%20%22cc%22%2C%20%22cd%22%2C%20%22cf%22%2C%20%22cg%22%2C%20%22ch%22%2C%0A%20%20%22ci%22%2C%20%22ck%22%2C%20%22cl%22%2C%20%22cm%22%2C%20%22cn%22%2C%20%22co%22%2C%20%22com%22%2C%20%22coop%22%2C%20%22cr%22%2C%20%22cu%22%2C%20%22cv%22%2C%20%22cx%22%2C%0A%20%20%22cy%22%2C%20%22cz%22%2C%20%22de%22%2C%20%22dj%22%2C%20%22dk%22%2C%20%22dm%22%2C%20%22do%22%2C%20%22dz%22%2C%20%22ec%22%2C%20%22edu%22%2C%20%22ee%22%2C%20%22eg%22%2C%0A%20%20%22er%22%2C%20%22es%22%2C%20%22et%22%2C%20%22eu%22%2C%20%22fi%22%2C%20%22fj%22%2C%20%22fk%22%2C%20%22fm%22%2C%20%22fo%22%2C%20%22fr%22%2C%20%22ga%22%2C%20%22gb%22%2C%0A%20%20%22gd%22%2C%20%22ge%22%2C%20%22gf%22%2C%20%22gg%22%2C%20%22gh%22%2C%20%22gi%22%2C%20%22gl%22%2C%20%22gm%22%2C%20%22gn%22%2C%20%22gov%22%2C%20%22gp%22%2C%20%22gq%22%2C%0A%20%20%22gr%22%2C%20%22gs%22%2C%20%22gt%22%2C%20%22gu%22%2C%20%22gw%22%2C%20%22gy%22%2C%20%22hk%22%2C%20%22hm%22%2C%20%22hn%22%2C%20%22hr%22%2C%20%22ht%22%2C%20%22hu%22%2C%0A%20%20%22id%22%2C%20%22ie%22%2C%20%22il%22%2C%20%22im%22%2C%20%22in%22%2C%20%22info%22%2C%20%22int%22%2C%20%22io%22%2C%20%22iq%22%2C%20%22ir%22%2C%20%22is%22%2C%20%22it%22%2C%0A%20%20%22je%22%2C%20%22jm%22%2C%20%22jo%22%2C%20%22jobs%22%2C%20%22jp%22%2C%20%22ke%22%2C%20%22kg%22%2C%20%22kh%22%2C%20%22ki%22%2C%20%22km%22%2C%20%22kn%22%2C%20%22kp%22%2C%0A%20%20%22kr%22%2C%20%22kw%22%2C%20%22ky%22%2C%20%22kz%22%2C%20%22la%22%2C%20%22lb%22%2C%20%22lc%22%2C%20%22li%22%2C%20%22lk%22%2C%20%22lr%22%2C%20%22ls%22%2C%20%22lt%22%2C%0A%20%20%22lu%22%2C%20%22lv%22%2C%20%22ly%22%2C%20%22ma%22%2C%20%22mc%22%2C%20%22md%22%2C%20%22me%22%2C%20%22mg%22%2C%20%22mh%22%2C%20%22mil%22%2C%20%22mk%22%2C%20%22ml%22%2C%0A%20%20%22mm%22%2C%20%22mn%22%2C%20%22mo%22%2C%20%22mobi%22%2C%20%22mp%22%2C%20%22mq%22%2C%20%22mr%22%2C%20%22ms%22%2C%20%22mt%22%2C%20%22mu%22%2C%20%22museum%22%2C%0A%20%20%22mv%22%2C%20%22mw%22%2C%20%22mx%22%2C%20%22my%22%2C%20%22mz%22%2C%20%22na%22%2C%20%22name%22%2C%20%22nc%22%2C%20%22ne%22%2C%20%22net%22%2C%20%22nf%22%2C%20%22ng%22%2C%0A%20%20%22ni%22%2C%20%22nl%22%2C%20%22no%22%2C%20%22np%22%2C%20%22nr%22%2C%20%22nu%22%2C%20%22nz%22%2C%20%22om%22%2C%20%22org%22%2C%20%22pa%22%2C%20%22pe%22%2C%20%22pf%22%2C%0A%20%20%22pg%22%2C%20%22ph%22%2C%20%22pk%22%2C%20%22pl%22%2C%20%22pm%22%2C%20%22pn%22%2C%20%22pr%22%2C%20%22pro%22%2C%20%22ps%22%2C%20%22pt%22%2C%20%22pw%22%2C%20%22py%22%2C%0A%20%20%22qa%22%2C%20%22re%22%2C%20%22ro%22%2C%20%22rs%22%2C%20%22ru%22%2C%20%22rw%22%2C%20%22sa%22%2C%20%22sb%22%2C%20%22sc%22%2C%20%22sd%22%2C%20%22se%22%2C%20%22sg%22%2C%0A%20%20%22sh%22%2C%20%22si%22%2C%20%22sj%22%2C%20%22sk%22%2C%20%22sl%22%2C%20%22sm%22%2C%20%22sn%22%2C%20%22so%22%2C%20%22sr%22%2C%20%22st%22%2C%20%22su%22%2C%20%22sv%22%2C%0A%20%20%22sy%22%2C%20%22sz%22%2C%20%22tc%22%2C%20%22td%22%2C%20%22tel%22%2C%20%22tf%22%2C%20%22tg%22%2C%20%22th%22%2C%20%22tj%22%2C%20%22tk%22%2C%20%22tl%22%2C%20%22tm%22%2C%0A%20%20%22tn%22%2C%20%22to%22%2C%20%22tp%22%2C%20%22tr%22%2C%20%22travel%22%2C%20%22tt%22%2C%20%22tv%22%2C%20%22tw%22%2C%20%22tz%22%2C%20%22ua%22%2C%20%22ug%22%2C%20%22uk%22%2C%0A%20%20%22us%22%2C%20%22uy%22%2C%20%22uz%22%2C%20%22va%22%2C%20%22vc%22%2C%20%22ve%22%2C%20%22vg%22%2C%20%22vi%22%2C%20%22vn%22%2C%20%22vu%22%2C%20%22wf%22%2C%20%22ws%22%2C%0A%20%20%22ye%22%2C%20%22yt%22%2C%20%22yu%22%2C%20%22za%22%2C%20%22zm%22%2C%20%22zw%22%0A%5D%3B%0A%0A//%20%28c%29%20http%3A//yellow5.us/firefox/linkification/%0Avar%20tagsForSkip%20%3D%20%5B%0A%20%20%22a%22%2C%20%22applet%22%2C%20%22area%22%2C%20%22embed%22%2C%20%22frame%22%2C%20%22frameset%22%2C%20%22head%22%2C%20%22iframe%22%2C%0A%20%20%22img%22%2C%20%22map%22%2C%20%22meta%22%2C%20%22noscript%22%2C%20%22object%22%2C%20%22option%22%2C%20%22param%22%2C%20%22script%22%2C%0A%20%20%22select%22%2C%20%22style%22%2C%20%22textarea%22%2C%20%22title%22%0A%5D%3B%0A%0Avar%20inArray%20%3D%20function%28value%2C%20items%29%20%7B%0A%20%20for%20%28var%20i%20%3D%200%3B%20items%5Bi%5D%20%26%26%20value%20%21%3D%20items%5Bi%5D%3B%20i++%29%3B%0A%20%20return%20value%20%3D%3D%20items%5Bi%5D%3B%0A%7D%0A%0Avar%20urlsRegExp%20%3D%20/%28%5E%7C%5B%5Cs%28%29%5C%5B%5C%5D_%3A%7E+@*%22%27%3E%5D%29%28%28%3F%3Ahttps%3F%7Cftp%7Circ%29%3A%5C/%5C/%29%3F%28%5B-a-z%5Cd%3B%3A%26%3D+%24%2C%25_.%21%7E*%27%28%29%5D+@%29%3F%28%28%3F%3A%28%3F%3A25%5B0-5%5D%7C2%5B0-4%5D%5Cd%7C%5B01%5D%3F%5Cd%5Cd%3F%29%5C.%29%7B3%7D%28%3F%3A25%5B0-5%5D%7C2%5B0-4%5D%5Cd%7C%5B01%5D%3F%5Cd%5Cd%3F%29%7C%28%3F%3A%28www%7Circ%7Cftp%29%5C.%29%3F%28%3F%3A%28%3F%3A%5Ba-z%5Cd%5D%7C%5Ba-z%5Cd%5D%5Ba-z%5Cd-%5D*%5Ba-z%5Cd%5D%29%5C.%29+%28%5Ba-z%5D%7B2%2C6%7D%29%29%28%3A%5Cd+%29%3F%28%5C/%28%3F%3A%5B-%5Cw.%21%7E*%27%28%29%25%3A@%26%3D+%24%2C%3B%5C/%5D*%5B%5Cw%7E*%25@%26%3D+%24%5C/%5D%29%3F%28%3F%3A%5C%3F%28%3F%3A%5B-%5Cw%3B%5C/%3F%3A@%26%3D+%24%2C.%21%7E*%27%28%29%25%5C%5B%5C%5D%7C%5D*%5B%5Cw%5C/@%26%3D+%24%7E*%25%5D%29%3F%29%3F%28%3F%3A%23%28%3F%3A%5B-%5Cw%3B%5C/%3F%3A@%26%3D+%24%2C.%21%7E*%27%28%29%25%5D*%5B%5Cw%5C/@%26%3D+%24%7E*%25%5D%29%3F%29%3F%7C%5Cb%29/i%0A%0Avar%20linksCounter%20%3D%200%3B%0A%0Avar%20current%20%3D%20content.document.body%3B%0Awhile%20%28current%29%20%7B%0A%20%20if%20%28current.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20%28match%20%3D%20current.nodeValue.match%28urlsRegExp%29%29%20%26%26%20inArray%28match%5B6%5D%2C%20domains%29%29%20%7B%0A%20%20%20%20var%20url%3B%0A%20%20%20%20if%20%28match%5B3%5D%20%26%26%20%21%20match%5B2%5D%20%26%26%20%21%20match%5B5%5D%20%26%26%20%21%20match%5B8%5D%20%26%26%20%28match%5B3%5D.indexOf%28%22%3A%22%29%20%3D%3D%20-1%20%7C%7C%20match%5B3%5D.indexOf%28%22mailto%3A%22%29%20%3D%3D%200%29%29%20%7B%0A%20%20%20%20%20%20url%20%3D%20%28match%5B3%5D.indexOf%28%22mailto%3A%22%29%20%3D%3D%20-1%20%3F%20%22mailto%3A%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20+%20match%5B3%5D%0A%20%20%20%20%20%20%20%20%20%20+%20match%5B4%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20%7B%0A%20%20%20%20%20%20url%20%3D%20%28match%5B2%5D%20%3F%20match%5B2%5D%20%3A%20%28%21%20match%5B5%5D%20%7C%7C%20match%5B5%5D%20%3D%3D%20%22www%22%20%3F%20%22http%22%20%3A%20match%5B5%5D%29%20+%20%22%3A//%22%29%0A%20%20%20%20%20%20%20%20%20%20+%20%28match%5B3%5D%20%3F%20match%5B3%5D%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20+%20match%5B4%5D%0A%20%20%20%20%20%20%20%20%20%20+%20%28match%5B7%5D%20%3F%20match%5B7%5D%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20+%20%28match%5B8%5D%20%3F%20match%5B8%5D%20%3A%20%22%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28url%29%20%7B%0A%20%20%20%20%20%20var%20range%20%3D%20content.document.createRange%28%29%3B%0A%20%20%20%20%20%20range.setStart%28current%2C%20match.index%20+%20match%5B1%5D.length%29%3B%0A%20%20%20%20%20%20range.setEnd%28current%2C%20match.index%20+%20match%5B0%5D.length%29%3B%0A%20%20%20%20%20%20var%20a%20%3D%20content.document.createElement%28%22a%22%29%3B%0A%20%20%20%20%20%20a.setAttribute%28%22href%22%2C%20url%29%3B%0A%20%20%20%20%20%20a.setAttribute%28%22target%22%2C%20%22_blank%22%29%3B%0A%20%20%20%20%20%20a.setAttribute%28%22class%22%2C%20%22linkified%22%29%3B%0A%20%20%20%20%20%20a.appendChild%28range.extractContents%28%29%29%3B%0A%20%20%20%20%20%20range.insertNode%28a%29%3B%0A%20%20%20%20%20%20range.detach%28%29%3B%0A%20%20%20%20%20%20linksCounter++%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20if%20%28current.tagName%20%26%26%20%21inArray%28current.tagName.toLowerCase%28%29%2C%20tagsForSkip%29%20%26%26%20current.firstChild%29%20%7B%0A%20%20%20%20current%20%3D%20current.firstChild%3B%0A%20%20%7D%0A%20%20else%20if%20%28current.nextSibling%29%20%7B%0A%20%20%20%20current%20%3D%20current.nextSibling%3B%0A%20%20%7D%0A%20%20else%20%7B%0A%20%20%20%20do%20%7B%0A%20%20%20%20%20%20current%20%3D%20current.parentNode%3B%0A%20%20%20%20%7D%20while%20%28%21current.nextSibling%20%26%26%20current.parentNode%29%3B%0A%20%20%20%20current%20%3D%20current.nextSibling%3B%0A%20%20%7D%0A%7D%0A%0A/*%0Aif%20%28linksCounter%20%3E%200%29%20%7B%0A%20%20var%20style%20%3D%20content.document.createElement%28%22style%22%29%3B%0A%20%20style.type%20%3D%20%22text/css%22%3B%0A%20%20style.appendChild%28content.document.createTextNode%28%22a.linkified%3Abefore%20%7Bcontent%3A%20%22%7E%22%3B%20color%3A%20%23e00%3B%7D%22%29%29%3B%0A%20%20content.document.getElementsByTagName%28%22head%22%29%5B0%5D.appendChild%28style%29%3B%0A%7D%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 Кнопка по нажатию делает текстовые ссылки кликабельными. А как сделать чтоб была всегда включена? Пробовал в инициализацию код перенести - не помогает. |
VORON > 16-01-2016 16:26:10 |
Mishania |
Mishania > 16-01-2016 17:14:39 |
VORON |
firepox > 19-01-2016 19:53:53 |
где данная тема теперь находится? |
bunda1 > 19-01-2016 20:12:26 |
firepox пишет
Автор okkamas_knife эту тему удалил |
firepox > 19-01-2016 20:19:41 |
понятно, и тем самым испортил себе карму... |
voqabuhe > 19-01-2016 20:37:24 |
bunda1 пишет
Так восстановите, положительный опыт ведь уже есть. |
firepox > 19-01-2016 20:54:57 |
Возможно, кто то знает в чем причина. |
bunda1 > 19-01-2016 23:43:28 |
voqabuhe пишет
Думаю не нужно, как нибудь обойдёмся. |
firepox > 19-01-2016 23:46:55 |
где узнавать о новых версиях кнопок? |
bunda1 > 19-01-2016 23:48:14 |
firepox пишет
Что значит пропадает, удаляются на совсем или переходят в настройку панелей(Customize)? 19-01-2016 23:50:48 firepox пишет
Про свои кнопки я сообщу в теме кнопки если для кнопки есть отдельная тема или в теме Custom Buttons | Форум Mozilla Россия |
firepox > 20-01-2016 02:17:17 |
переходят в настройку панелей(Customize) |
firepox > 20-01-2016 20:40:52 |
Привет всем! Очень хочется иметь кнопочку, при нажатии на которую, ОТКРЫТАЯ страница https://site.com/w12345 открывается как https://XX.site.com/Zw12345 https://site.com/ должно подменяться на https://XX.site.com/Z или типа того) Спасибо! p.s. У меня есть 100 рублей на webmoney, готов отдать за помощь |
Kiril__777 > 22-01-2016 16:22:40 |
На вот таком сайте, если залогиниться, работает контекстное меню ПКМ и на него накладывается обычное контекстное меню страницы. Последнее можно для этого сайта как-то отключить? |
Uxapb > 22-01-2016 17:21:14 |
Имеется кнопка для очистки поля адреса и поиска прокруткой колесика мышки. скрытый текст Выделить код Код:// Очистить панель поиска прокруткой колёсиком мыши .................................................................................................... (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; addEventListener('DOMMouseScroll', function(){searchbar.textbox.value = '';}, false, searchbar ); })(); // Очистить панель адреса прокруткой колёсиком мыши .................................................................................................... (function () { var urlbar = document.getElementById("urlbar"); if ( !urlbar ) return; addEventListener('DOMMouseScroll', function(){urlbar.value = '';}, false, urlbar ); })(); А можно как нить повесить на прокрутку очистку любого поля для ввода текста на любой странице ? Допускается даже не просто наведение, а перенос фокуса или выделение имеющегося в поле текста. |
Ultima2m > 24-01-2016 08:12:03 |
Uxapb пишет
Есть такое дополнение. Не помню только название. |
KOT040188 > 28-01-2016 17:25:13 |
Есть код: Выделить код Код:--------------------------------------------------------------------------- Открывать любую новую вкладку справа от текущей --------------------------------------------------------------------------- */ // Открывать любую новую вкладку справа от текущей, от 24.10.2014. ................................ addEventListener("TabOpen", function(e) { var newTab = e.target; var lab = newTab.label; var tabpos = gBrowser.selectedTab._tPos; var newTabLab = gBrowser.mStringBundle.getString("tabs.emptyTabTitle"); if ( tabpos == 0 && lab == newTabLab ) return; // если восстановление сессии if ( tabpos == 0 && lab == '' ) return; // если восстановление сессии с Bookmarks Tab if ( new Error().stack.indexOf("openContainer") !== -1 ) return; // если открыть всё во вкладках из папки закладок if ( /handleLinkClick/.test(new Error().stack) ) return; // если открыть ссылку по СКМ gBrowser.moveTabTo( e.target, tabpos + 1 ); // автоматически закрывать "custombutton" вкладку if ( lab.startsWith("custombutton://%") ) setTimeout(function() gBrowser.removeTab( newTab ), 0); }, false, gBrowser.tabContainer ); В 44 лисе перестал работать. Как исправить? |
becool > 28-01-2016 17:41:17 |
KOT040188, https://addons.mozilla.org/ru/firefox/a … s/reviews/ |
KOT040188 > 28-01-2016 17:46:34 |
ecool, и как эту версию установить, если она не проверена? |
villa7 > 28-01-2016 17:50:06 |
KOT040188 |
KOT040188 > 28-01-2016 18:03:28 |
Всем спасибо. |
becool > 03-02-2016 11:29:36 |
Подскажите, пожалуйста, а вот это нельзя сотворить с помощью СВ? |
KOT040188 > 04-02-2016 19:00:52 |
Разобрался как в этой кнопке делать свои категории. Сложновато. А может есть более простая в редактировании кнопка для вставки символов, слов и словосочетаний с категориями? И ещё подскажите есть ли кнопка добавляющая в контестное меню изображений пункт сохранить? И ещё, возможно ли сделать две кнопки: первая по нажатию показывает выподающее из неё окно с загруженным любым адресом, вторая оповещает о новых письмах загружая их заголовки и по нажатию открывает страницу почты? |
bunda1 > 04-02-2016 22:11:26 |
KOT040188 пишет
А если так: Выделить код Код: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%3E%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEADQ0AAAEAIAAAAwAAFgAAACgAAAANAAAAGgAAAAEAIAAAAAAA2AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAVwAAACMAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAPAAAAEoAAAAMAAAAQgAAAOQAAACiAAAAAgAAABcAAABKAAAAVwAAADsAAAAHAAAAGwAAANcAAAC7AAAAFwAAAAsAAACHAAAA8QAAAJ0AAACeAAAA/QAAAP8AAADvAAAAhAAAAL8AAADrAAAAXwAAAAQAAAAAAAAABgAAAJMAAAD/AAAA7AAAAKUAAACHAAAAvQAAAPcAAAD/AAAAYQAAAAAAAAAAAAAAAwAAAAsAAACXAAAA9gAAAF8AAAAAAAAAAQAAAAwAAACOAAAA+QAAAGAAAAAAAAAAAwAAAAAAAAA1AAAA5gAAAK8AAAACAAAABgAAAA4AAAAAAAAAJQAAAOAAAAC1AAAADwAAAAAAAAAAAAAASwAAAPMAAACIAAAAAAAAAAkAAAAAAAAABgAAAAMAAAC8AAAAzgAAACQAAAAAAAAAAAAAAEAAAADuAAAAnAAAAAAAAAALAAAACgAAAAMAAAARAAAAzwAAAMEAAAAXAAAAAAAAAAAAAAAUAAAArwAAAOMAAAA8AAAAAAAAAAgAAAAAAAAAYQAAAP8AAAB+AAAAAgAAAAAAAAAEAAAAAQAAAHwAAAD/AAAAzAAAAG4AAABZAAAAggAAAOMAAAD/AAAASgAAAAAAAAAFAAAAAAAAAFIAAADlAAAAygAAAMYAAAD/AAAA+AAAAP8AAAC8AAAA3AAAAMoAAAApAAAAAAAAADoAAADjAAAAyQAAACEAAAAuAAAAeAAAAH8AAABqAAAAIQAAAD8AAADqAAAAvQAAAB4AAAA4AAAAhQAAADoAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAWQAAAIUAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20...........%0Athis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0430%u0435%u043C%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%27%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0434%u043E%u043C%u0435%u043D%u0430%u043C%u0438%20..............%0Avar%20sep%20%3D%20%22%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%22%3B%0Avar%20array%20%3D%20self.Help.split%28sep%29.filter%28%28host%29%3D%3E%20/%5CS/.test%28host%29%29.map%28%28host%29%3D%3E%20host.trim%28%29%29%3B%20%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...........%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28symbol%29%3D%3E%20%7B%20%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20symbol%20%29%3B%0A%20%20%20%20%20menuItem.style.fontSize%20%3D%20%2216px%22%3B%20//%20%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertText%2C%20false%29%3B%20%0A%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A//%20%u0421%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0Afunction%20insertText%28%29%20%7B%20%0A%20%20%20var%20text%20%3D%20this.label%3B%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Ci.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%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%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%28%28%29%3D%3E%20%7B%20%7D%29%28%29%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%28function%20%28%29%20%7B%20%7D%29%28%29%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0Atry%20%7B%20%7D%20catch%28e%29%20%7B%20%20%7D%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0AsetTimeout%28%28%29%3D%3E%20%7B%20%u0437%u0434%u0435%u0441%u044C%3D%3E%3C%3D%u0437%u0434%u0435%u0441%u044C%20%7D%2C%20500%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A.getAttribute%28%27%u0437%u0434%u0435%u0441%u044C%3D%3E%3C%3D%u0437%u0434%u0435%u0441%u044C%27%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0Adocument.getElementById%28%27%u0437%u0434%u0435%u0441%u044C%3D%3E%3C%3D%u0437%u0434%u0435%u0441%u044C%27%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0Adocument.getAnonymousElementByAttribute%28tab%2C%20%22class%22%2C%20%22tab-icon-image%22%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%u0420%u0430%u0437%u043E%u0431%u0440%u0430%u043B%u0441%u044F%20%u043A%u0430%u043A%20%u0432%20%u044D%u0442%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u0434%u0435%u043B%u0430%u0442%u044C%20%u0441%u0432%u043E%u0438%20%u043A%u0430%u0442%u0435%u0433%u043E%u0440%u0438%u0438.%20%u0421%u043B%u043E%u0436%u043D%u043E%u0432%u0430%u0442%u043E.%0A%u0410%20%u043C%u043E%u0436%u0435%u0442%20%u0435%u0441%u0442%u044C%20%u0431%u043E%u043B%u0435%u0435%20%u043F%u0440%u043E%u0441%u0442%u0430%u044F%20%u0432%20%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u0434%u043B%u044F%20%u0432%u0441%u0442%u0430%u0432%u043A%u0438%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%2C%20%u0441%u043B%u043E%u0432%20%u0438%20%u0441%u043B%u043E%u0432%u043E%u0441%u043E%u0447%u0435%u0442%u0430%u043D%u0438%u0439%20%u0441%20%u043A%u0430%u0442%u0435%u0433%u043E%u0440%u0438%u044F%u043C%u0438%3F%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A123456%0A098765%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%20%20%20%u0424%u043E%u0440%u0443%u043C%u044B%0A%20%20%20%20%20%BB%20%u0421ustom%20Buttons%0A%20%20%20%20%20%BB%20%u041E%u0431%u0441%u0443%u0436%u0434%u0435%u043D%u0438%u0435%20%u043A%u043D%u043E%u043F%u043E%u043A%20CB%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Свой текст складывай в вкладку Справка 04-02-2016 22:13:04 KOT040188 пишет
Куда сохранить? |
KOT040188 > 04-02-2016 22:19:25 |
bunda1 |
bunda1 > 04-02-2016 22:21:48 |
KOT040188 пишет
Там нет категорий зато кнопка более простая. |
KOT040188 > 04-02-2016 22:22:35 |
bunda1 пишет
Через диалог… 04-02-2016 22:23:13 bunda1 пишет
Ну я же писал, что категории нужны… |
bunda1 > 04-02-2016 22:30:31 |
KOT040188 пишет
В контекстном меню изображений уже есть пункт сохранить через диалог - Save Image As… или Сохранить изображение как… 04-02-2016 22:31:14 KOT040188 пишет
Такую кнопку не знаю. |
KOT040188 > 04-02-2016 22:37:56 |
bunda1 пишет
Что, правда?! Вот я слоупок… Ну а если в определённую папку? |
bunda1 > 04-02-2016 23:11:17 |
KOT040188 пишет
Ну а если двойным правым кликом мыши сохранить изображение без запроса в указанную папку - var path = 'C:\\qwerty'; Выделить код Код:// Двойным правым кликом мыши сохранить изображение без запроса в указанную папку .............. addEventListener("dblclick", (e, targ = e.target)=> { if ( e.button == 2 && targ.localName == 'img' ) { var path = 'C:\\qwerty'; var {get} = Application.prefs, run = get("browser.download.folderList"), dwnPath = get("browser.download.dir"), p, r; if ( dwnPath ) p = dwnPath.value, dwnPath.value = path; else Application.prefs.setValue("browser.download.dir", path); r = run.value, run.value = 2; saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); run.value = r; if (dwnPath) dwnPath.value = p; setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 20); } }, true, gBrowser ); |
KOT040188 > 04-02-2016 23:56:57 |
bunda1 пишет
А если изображения является ссылкой? Мне надо в меню. |
bunda1 > 05-02-2016 11:32:25 |
KOT040188 пишет
Выделить код Код:// Сохранять изображение без запроса в указанную папку .............. ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; var arr = path.split("\\"); var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в указанную папку: " + arr[arr.length-1]); addDestructor(()=> menuItem.remove() ); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var {get} = Application.prefs, run = get("browser.download.folderList"), dwnPath = get("browser.download.dir"), p, r; if ( dwnPath ) p = dwnPath.value, dwnPath.value = path; else Application.prefs.setValue("browser.download.dir", path); r = run.value, run.value = 2; saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); run.value = r; if (dwnPath) dwnPath.value = p; } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo")); |
KOT040188 > 05-02-2016 15:08:20 |
bunda1 и она перестаёт работать. Почему? 05-02-2016 15:11:50 KOT040188 пишет
Возможно ли такое? |
bunda1 > 05-02-2016 15:14:20 |
KOT040188 пишет
там нужна , 05-02-2016 15:14:56 05-02-2016 15:15:54 KOT040188 пишет
А вот не знаю |
KOT040188 > 05-02-2016 15:56:53 |
bunda1 пишет
Вот спасибо, в упор не видел…
Так а с этим что делать? |
bunda1 > 05-02-2016 16:01:32 |
KOT040188 пишет
Отключи в настройках Firefox Всегда выдавать запрос на сохранение файлов |
KOT040188 > 05-02-2016 16:28:18 |
bunda1 пишет
А по другому никак? Тогда flashgot перестанет работать… |
bunda1 > 06-02-2016 21:01:52 |
KOT040188 пишет
Выделить код Код:// Сохранять изображение без запроса в указанную папку из контекстного меню, от 06.02.2016. ............... ((contextMenu, viewimage) => { var path = '/home/kot/'; // путь к папке для сохранения изображений var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в папку: " + path.split("\/")[path.split("\/").length-2] ); //path.slice(path.indexOf("\\")+1) addDestructor(()=> menuItem.remove() ); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var run = cbu.getPrefs("browser.download.folderList"), use = cbu.getPrefs("browser.download.useDownloadDir"), dir = gPrefService.getComplexValue("browser.download.dir", Ci.nsISupportsString).data; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path) ); saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir) ); } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo")); |
KOT040188 > 06-02-2016 21:08:29 |
bunda1 |
bunda1 > 06-02-2016 21:23:58 |
KOT040188 пишет
немного подправил Сегодня 21:01:52 |
KOT040188 > 06-02-2016 22:03:14 |
Ну я переписал на всякий случай, хотя и так работало… |
tom911 > 06-02-2016 22:32:52 |
bunda1 А можете сделать с сохранением функции "Всегда выдавать запрос на сохранение файлов" только для жестов с путем к папке для сохранения изображений? |
bunda1 > 06-02-2016 22:35:27 |
tom911 пишет
Ты про FireGestures? |
tom911 > 06-02-2016 22:39:43 |
Есть ваш вот такой код скрытый текст if ( direction == "L" ) { // сохранить ссылку или изображение без запроса на место сохранения в папке загрузки или на диск C: var path = путь сохранения var {get} = Application.prefs, run = get("browser.download.folderList"), dwnPath = get("browser.download.dir"), p, r; if ( dwnPath ) p = dwnPath.value, dwnPath.value = path; else Application.prefs.setValue("browser.download.dir", path); r = run.value, run.value = 2; saveImageURL( img, 0, 0, 0, 1, null, content.document ); run.value = r; if (dwnPath) dwnPath.value = p; } return; } но он не работает с функцией "Всегда выдавать запрос на сохранение файлов". Хотелось чтобы он заработал с этой функцией. |
bunda1 > 06-02-2016 22:53:24 |
tom911 пишет
Выделить код Код:var path = 'C:\\qwerty'; var run = cbu.getPrefs("browser.download.folderList"), use = cbu.getPrefs("browser.download.useDownloadDir"), dir = gPrefService.getComplexValue("browser.download.dir", Ci.nsISupportsString).data; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path) ); saveImageURL(img, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir) ); |
tom911 > 07-02-2016 00:27:18 |
bunda1 |
firepox > 07-02-2016 09:51:47 |
Помогите с кнопкой быстрой замены текста RU > EN |
bunda1 > 07-02-2016 12:43:38 |
firepox пишет
|
Mishania > 08-02-2016 15:19:19 |
bunda1 |
bunda1 > 08-02-2016 19:43:57 |
Mishania пишет
У меня без проблем работает на FF24 и FF45, не понятно в чём тут дело. На какой панели у тебя кнопка? Может попробуй переместить кнопку на другое место, поэкспериментируй с этим. |
Mishania > 08-02-2016 21:06:50 |
bunda1 |
tom911 > 09-02-2016 17:41:32 |
скрытый текст bunda1 пишет
А почему когда прописываешь свой путь к папке сохранения в контекстном меню отображается "сохранить в папке:undefined"? |
bunda1 > 09-02-2016 17:46:57 |
tom911 пишет
Потому что там для linux, для win будет так: Выделить код Код:// Сохранять изображение без запроса в указанную папку из контекстного меню, от 06.02.2016. ............... ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; // путь к папке для сохранения изображений var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в папку: " + path.slice(path.indexOf("\\")+1)); addDestructor(()=> menuItem.remove() ); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var run = cbu.getPrefs("browser.download.folderList"), use = cbu.getPrefs("browser.download.useDownloadDir"), dir = gPrefService.getComplexValue("browser.download.dir", Ci.nsISupportsString).data; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path) ); saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir) ); } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo")); |
tom911 > 09-02-2016 17:49:33 |
bunda1 В который раз спасибо |
Vvld > 12-02-2016 11:19:54 |
Помогите |
voqabuhe > 12-02-2016 14:25:37 |
Vvld пишет
№8996 или уже исправленное custombuttons@xsms.org.7z |
Vvld > 12-02-2016 16:50:47 |
voqabuhe |
voqabuhe > 12-02-2016 17:38:47 |
Vvld пишет
А что такое эта твая APS? Но если она "верещит" на CB, то её надо в топку Vvld пишет
Скрин в студию. Vvld пишет
Откуда же я знаю, что там у тебя в .xpi. Я выкладывал 7z архив вот с этой распакованной уже версией CB Download custombuttons-0.0.5.9pre1-20140622.xpi (119.6 kB) custombuttons - Browse Files at SourceForge.net, в которую, как уже выше указывал, внёс изменения от Dumby №8996 |
Vvld > 12-02-2016 19:37:46 |
voqabuhe |
KOT040188 > 12-02-2016 23:03:53 |
Есть код: Выделить код Код:// Открывать любую новую вкладку справа от текущей, от 24.10.2014. ................................ addEventListener("TabOpen", function(e) { var newTab = e.target; var lab = newTab.label; var tabpos = gBrowser.selectedTab._tPos; var newTabLab = gBrowser.mStringBundle.getString("tabs.emptyTabTitle"); if ( tabpos == 0 && lab == newTabLab ) return; // если восстановление сессии if ( tabpos == 0 && lab == '' ) return; // если восстановление сессии с Bookmarks Tab if ( new Error().stack.indexOf("openContainer") !== -1 ) return; // если открыть всё во вкладках из папки закладок if ( /handleLinkClick/.test(new Error().stack) ) return; // если открыть ссылку по СКМ gBrowser.moveTabTo( e.target, tabpos + 1 ); // автоматически закрывать "custombutton" вкладку if ( lab.startsWith("custombutton://%") ) setTimeout(function() gBrowser.removeTab( newTab ), 0); }, false, gBrowser.tabContainer ); На первой слева вкладке почему-то не работает. Как это починить не сломав ничего другого. И ещё, открытие нескольких ссылок подряд со странице идёт так: первая ссылка справа от вкладки, вторая ссылка справа от уже открытой вкладки и т.д. Вкладки открываются в фоне. Но открытие закладок из избранного открытого во вкладке происходит иначе: каждая закладка открывается рядом с избранным и фокус переходит на на них. Как изменить поведение открытия закладок на поведение открытия ссылок? |
oleg.sgh > 13-02-2016 10:00:47 |
KOT040188 |
KOT040188 > 13-02-2016 15:48:59 |
oleg.sgh KOT040188 пишет
Мне бы всё-таки поправить мою кнопку. |
bunda1 > 14-02-2016 13:48:13 |
KOT040188 пишет
Переключи в about:config browser.tabs.loadBookmarksInBackground |
KOT040188 > 14-02-2016 19:53:08 |
bunda1 |
bunda1 > 15-02-2016 13:38:53 |
KOT040188 пишет
А как должно быть с ссылками и избранным? |
KOT040188 > 15-02-2016 16:00:43 |
KOT040188 пишет
Обыкновенное стандартное лисье поведение. Сколько раз ещё процитировать? |
bunda1 > 15-02-2016 20:42:32 |
KOT040188 пишет
Выделить код Код:// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|openLinkIn/.test(err) ) return; /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer ); |
KOT040188 > 15-02-2016 20:54:39 |
bunda1 |
bunda1 > 15-02-2016 21:08:35 |
KOT040188 пишет
Выделить код Код:// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer ); |
KOT040188 > 15-02-2016 21:15:25 |
bunda1 |
bunda1 > 15-02-2016 21:54:29 |
KOT040188 пишет
Ну тогда не знаю |
KOT040188 > 15-02-2016 22:14:59 |
bunda1 пишет
Так и у меня рядом. Вы так и не поняли про порядок открытия? Как мне ещё объяснить? |
bunda1 > 15-02-2016 22:24:00 |
KOT040188 пишет
Другими словами и лаконично. Может просто напиши что надо открывать сразу справа от текущей вкладки а что оставить как есть. |
KOT040188 > 15-02-2016 22:25:41 |
Нашёл ссылку где описывается схема http://opennet.ru/openforum/vsluhforumID3/47886.html:
Так открываются ссылки со страницы. Я хочу так же открывать закладки из библиотеки и fvd. Раньше в официальной вики картинку видел, но теперь не найду ссылку. |
bunda1 > 15-02-2016 22:40:36 |
KOT040188 пишет
Понятно, я пока не знаю как такое сделать. |
KOT040188 > 15-02-2016 22:42:27 |
bunda1 пишет
Понятно, спасибо за терпение. |
Kpacomka > 16-02-2016 08:36:53 |
Как в выбор форматов сохранения страниц по "Save Page As..." (Text Files, Web Page...) добавить Microsoft Word, установленный на компьютере? |
Dumby > 16-02-2016 10:07:41 |
bunda1 пишет
Может так скрытый текст Выделить код Код:... if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if (gBrowser.currentURI.spec == places && err.includes(places)) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } ... |
bunda1 > 16-02-2016 11:30:42 |
Dumby пишет
Вроде работает если открыть библиотеку в вкладке. Спасибо KOT040188 Выделить код Код:// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if (gBrowser.currentURI.spec == places && err.includes(places)) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer ); |
KOT040188 > 16-02-2016 14:51:50 |
Dumby |
bunda1 > 17-02-2016 13:31:45 |
KOT040188 пишет
Выделить код Код:// Открывать любую новую вкладку справа от текущей ............ addEventListener("TabOpen", (e)=> { var newTab = e.target, tabpos = gBrowser.selectedTab._tPos, err = new Error().stack; // если восстановление сессии, открыть ссылки или открыть всё во вкладках из папки закладок if ( /ssi_restore|openContainer|handleLinkClick|nsContextMenu/.test(err) ) return; var places = "chrome://browser/content/places/places.xul"; if ( err.includes("fvd.speeddial") || (gBrowser.currentURI.spec == places && err.includes(places))) { var tab = gBrowser._lastRelatedTab || gBrowser.selectedTab; gBrowser.moveTabTo(newTab, tab._tPos + 1); gBrowser._lastRelatedTab = newTab; return; } /undoCloseTab/.test(err) ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки : gBrowser.moveTabTo(newTab, tabpos + 1); }, false, gBrowser.tabContainer ); |
Dumby > 17-02-2016 15:52:31 |
bunda1 пишет
Смотри, скрытый текст если из fvd-вкладки открыть несколько других вкладок, а затем, не сходя с fvd-вкладки, открыть вкладку из закладок, то эта вкладка откроется после последней вкладки, Я не знаю противоречит ли это концепции кнопки. |
bunda1 > 17-02-2016 16:04:21 |
Dumby пишет
Спасибо, наверно это противоречит концепции кнопки, поэтому положил в код err.includes("fvd.speeddial"). |
KOT040188 > 17-02-2016 17:27:51 |
bunda1 Dumby |
KOT040188 > 17-02-2016 21:53:45 |
Этот код заставляет восстанавливать закрытые вкладки после текущей. Это удобно |
KOT040188 > 18-02-2016 21:18:10 |
А можно ли сделать так, что при наборе текста выскакивала полноценная панель поиска и не пряталась сама по себе? Можно ли сделать добавление закладки через звёздочку в последнюю выбранную папку, а не неподшитые закладки? А во всплывпющей из звёхдочки панели выбор папки был сразу развёрнут? |
KOT040188 > 24-02-2016 05:16:32 |
KOT040188 пишет
Может кто поможет? |
broker > 26-02-2016 21:03:26 |
Здравствуйте, есть кнопка "Открыть страницу или выделенную ссылку в другом браузере" как сделать чтоб при наведении на кнопку открывалось меню той кнопки? Выделить код Код:// Настройка функций кликов мыши ................. this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; // Объявляем настройки и переменные для этой вкладки ................. var autoClose = true; // true => автоматически закрывать меню var dropmarker = false; // true => добавлять дропмаркер у кнопки const pref = Application.prefs; if ( dropmarker ) this.type = "menu"; const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Проверить наличие строки в about:config и если не существует записать пути к браузерам по умолчанию ................. const allPath = "C:\\Program Files\\Internet Explorer\\iexplore.exe,C:\\Documents and Settings\\Администратор\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe,C:\\Program Files\\Opera\\Opera.exe,C:\\Program Files\\Maxthon\\Bin\\Maxthon.exe,C:\\Program Files\\SeaMonkey\\seamonkey.exe"; if ( !pref.getValue("CB.OpenWith.pathToBrowser", 0) ) { pref.setValue("CB.OpenWith.pathToBrowser", allPath ); pref.setValue("CB.OpenWith.removeMenuitem", ""); }; // Создать меню для кнопки ................. var array = [ { label: "Internet Explorer", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAv5JREFUeNqk0n1MTWEcB/Dvee655957dDv3VjepuUJohRHd0YSsoVHG2IwhsxUbxlrYbOafsmHzOsbGGNPQojEvxai8TBSSNKu8leqme+q+nvfjr27hT9+/nu3ZPvs9z+9L6bqO/wnBf4YeOlAU9e+tKZKl2QgHBVCyIHkQ+uVNcpBxWxabNq+ZacwzEZipoSeMBMwOZ0bs9KxCLjFlvslqiw3JDEVEj2fdmLKW3VM/pcmdqv3mM+1Zj1cf/BugYtJyShLmrdprjIwmKgzwiiymj+1FafZ1JHubUP7chWMP1doXVZWLaKiWPwD7jCVH47PWF+m0BbqZg0BsyJvWhsN5N+D97Efx/TWo64xFgvAdntd3rwgd1SfDf8DEOLNts5YVCZoRMEdhgFdRkN2M0hX1eHytoamwPDfIjx47h6ME8BJBYlrmhj7leyAMEGfajhBhYTTb4Fds2Jh0Sy/NC1GPGv3dW845D7p73vTTbvUQFuVnqAYruvvb4bXPnBMGBEtsujugQLNw2JrdgeO5nVRl20Tsbt7jMBaMKo+XZKKIAVkUBfh4QAoy0E1xKfTwylirRuyYn9qDM8su4cmXWdhavx+qRtGsCaCtAFFtRj0gQTdYoPkHIfX/ZIYBWQ86ooSIslVX0VrrUdYf6qkWuBKFYzTC2UyIYAiEoCDwfsUgCSKlen1E+drCDwN9XQ1HM7tz4ro6sMl9g/T1HrinVJ0/PTCyV8mzl9pX7ipWewNEDXyFroiNYWAu+/TOxhhDzsG6bXgfnULG7ys7ZXh31uVvqKnQNMicK32Jde3OwpDEMgNN3ZDe1kFueVAT7sHdYlPF1PiElVk/SmGwTgI7ORUxC8xgWEAngKgD3i+Ar9UDX9sH8A/O10ovr+WEJ1g8wby86ELXid7QRbgyl2+PdkoG8WMSApwdEk1D9KmQ3YPAj08Qay7fk19dzwcQHC4SoYySoLSPbq+ulNVmRuEXrrZMckXDMYXIVCRE3oOB1vq+/pe3y0Lfmo8A8ADA7wEATrdVy5ywgXEAAAAASUVORK5CYII=" }, { label: "Google Chrome", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAzZJREFUeNpsk01oHAUYhp+Z2dnd7Mxmt7vJmqTJttk03QRCq6BSa4xYzMEg9mBEeymIRvSg3oqCBIUKgoI3vVjxoqAoBSvF4kG0jdg/WluLqZqkSdls9n9ndmdmZ3Z+PLQqVD94b9/7nN5H4D8nk5SS2cmwsW9YFHYhIBRcf33Z6f+57tf+BBMI/vkW/i2KqPSkn+1LvHUwFjmUQU4RQNf36NCl5Fr6d2b3+KdG903dt2+AewcgGt393OT4h++66gFD70BYRZRCmI5DrdmgYzcQ0LmGv37Ukp/e9NtnwUcCkGQ5Pf3CvScnd07te7iuElcGSI3k8dUUoqrSm8iAHcJum2xzmsmc7M4uIX/VDXxdAsjv3/nG7PMPzlcFuMvIMjqwi48CmffS2/lCjFF0NSLZLEVfoFYtM+LZSWG7HPul5X0jiZKUuv/JiQ/kISuxe2+Slf5BTlYVygcfZWThcS7kZji+uYNu6hLzr6excgHXSy1iYS93qRN8JsZT6lRPOpI1TYO4otKfdzgliiSmp5jcBsNjEMrfw5ViHxPZEPMv5Xjl2A4ee7E3NZIU9oQSaTUTT8WoN6pUmx3iEYF20+HzC5Acg9IaBCZEe8cIpApoBWKixwN7FZJxvV+URNHOjg7R0i3WbpTRcMiN1tn48irXTkDlIrB6kbmJP1B6LXBMfMelZYFhB1Zo62ZlRSuapt/1YtVyDTFa4O7ZUaQfv+Xc6Stk+xye2LPBkadCoK2CrYHvstUM7LWic11yHbfhicz0ZOSxtmESBAGu4KLXdGbjBY69ajO3XyDc2QR9HVcrIylhPvm6debET/r7EuDXC1p5MJ95puMZotG20C8bzCkui4dlFFmHxk2C1gauXkKO9rBeDLsLb6+83LL8ZQnAdbwVvWT4g/n+A/WWxXTI4uiCh2iWCbQtvHYFr2MR7h2g0lI4dOTy4q9r1sfArSUCdDT7dG1V76SH4vc11FA05VhMZEQEKYwYSYDUx6mldvPwa2cXzy0b7/yPTISAceARZUSZCfeFJ2fGldRDw7FAa3ar35+v/HbmansJ+AH4HejeCfgbIgIyEAeU2+4aQJtbCnq3EwD8NQCjhmvoeRBJAQAAAABJRU5ErkJggg==" }, { label: "Opera", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAADNklEQVQ4jV2RS2hcVRzGf+fcO5OZTBJokiYZW0gEMQljUWuxlRH7IBmkVrEBd6JCqLoJ1kWqXYgL0Y2gRRfaheDCnTZxoZE2EAQfFEkrYRRTNU0ymslkHkm1mcmde865fxfRjd/+9z34lIgwPz9PeWNDtcTjurq97RKJBMP796f7e/v2ARQ2SsXFYnG9vrMj3a2tnnEu6ujokGw2ixIRcrkcs7OzHkq5k5l7Hp08fmLyYHf3g6ZYbBNjie3tbuSr1fl3vv/u3enFXz5HRGcymSifz6MBtFIacB+cHnv7y6ef+epYe/uJ0rX57dLQ3S9v3Hdg4s8fr29mlXpkajQ3/cnI6EUgUrsCEfEeOnqUF4eGz8q5V8WceaG5cuy4LF26lBMRRITlK1eO/Hr/Qbtz8rFQnhyT1wcG3hgYHEREPA244T17+s73D7zmbt5E1tbi9Zi/mM7l5hCJY21y38jI1aC35wcpFGKNwop7yY+dO9zWNliPIqebwONdXaf6tjY7m7Vq0/xRgM7O3xNtbRYRRKkophRef//PQWEVu7VlUrVqfCwWeyoQQXvAITjiSiWoVDDFNXQqVVMAIgoRALyurvLtep2dMFRVYxjS+nBSa3wf6Kw30s1aFYUQ3P4b0bq5y+/CACrREmw5R9w5AmNoEelLAj5AwxrXsBZxjsBFCCj+L0HVAN9aAmtJGusE8B3wm7HLSWtxxkjgHB1BkNyNVfw3wW5vJ6uAMobQOUJrCocArYBvwvDrsnNUjNEVoFEu7/3XQFC7Zerr633rQDEMZQO4bu1cBPga+NbZGQeLd4bh0CbAjRuDUq8naW21EkVaAcWFhQNloNWYxC0oXRP5rAXQgPeXSPMjmLwVhlQ9z/60ujqwNjV1SilltO8HtZmZkRv5/ANKKdseCbNwvgJVHzwfcCmtvSX44lOln39C8WGohcsTExcfXloa9uJxc/XChbNKKXp937+MemUhch/f63lawCEijI6OAnh4Hj1w+llYfBPMeyDvg7wFdhxW7oDn0BrAy2QyRFG0e+P4+DjZbNalEgm/LjItMNej1F09fqwTUBVrt4xEy2egmlLKD8LQptNplFL8A026qgDDLrhmAAAAAElFTkSuQmCC" }, { label: "Maxthon", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBw8BAS1q932nAAAAB3RJTUUH1gcPAQIYwmgJNwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAwBQTFRFHUSfHk+qG1OvH1OtHWC7I0SeIUehJ0+nI0+oKUynI1KqIVGsIlauJlKpJ1WsK1CqKlKoKlSqKVetKletLVSrLVWrL1yvIVixI121I163JFmyJluyJF61Ll2xLF60M1esNlarNVqwOFqyO1q0ImG6IWO9JWG5JmC4LGC2KWW5L2W5LWm9N2++PmO2P2O2O2m5Hm7JI23GJmjAJW/HKmzDL23AI3TNLnDFKHTKK3XKLnnOI3jRI3nTJnrSKX7VLH/SMHXJOn3MQmK6Q2a5R2u6SWq9T3u/U3a3T2/AV3fHL4HVMYbXOYjXeJ2sfJypbaW8eai8QYbRVYrMXo3PXpTSXZrVa4vGbI7IaJfPYpXSZZzWbprTb5vVcpzVd5/UaKvHba/Kbqrbd63EeKzCcavbc6nYea3becPjeMTkg6OwgqWzhJ3OgqDQhKTUgqrahK/di6fVgbLGgbLHjLfKgLHfhLDeirTekbPBmLvJkbffpLjBq77Fg8nmiczom8jnmcnpvsjNr8fmqsnnv+T0yNXa1trb29zcxuPvyeDjyuPmzODizODjyODpyeTuzebwz+fwyu7yzer3ze7yz+/yx/b9xvj+yPj+yfj+y/j+2OHj2ebr3ubq0Ofx0ujx0unx0+ny1+vz2ezz2O302uz03u713+/11Pr+3PDy2vv+2/v+/8D/4Obn4vDz4PD24fD25fD25PL34/L65/P44/v+6fT46vT57vf68Pj68P3/9/n69fr89fv99/z9+Pv9+v7/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNJ5gQAAAKt0Uk5T//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Atyo9bAAAAQNJREFUeNpjWAUCHROWrVw+E8xkAOLuaVPrS0qbduxpgwhMmpZob2NtZmhasHs2SKBrSqitl4+3nYWRevjGBqDA9FQrx6CIkEAHbQ3ZnJ5VDJ0zLA127d21bdPahXMZRSdWM0yuMzbcu3/v9i3rFs/jYK+sYFiRb26ya6+7m470wrkC8nHFDJvzVFm2bdfcuoFpwRwG/ugihjWNapKbtqhsWMozv49VKS2ZYfU+fbm167SWLBbr71XwqM1iWLUzm5tZXEJGiouNUzkyAeiO1vVhvHxCwoIiik7B6b4gp89alOuiq+fs6hmV4Q/xXEt7c1lsTEpNvB/Ut6tWVZUXJgVkgpkAR0RyCIGXtksAAAAASUVORK5CYII=" }, { label: "SeaMonkey", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAABAXYNFBQcVxERCUQCAgEf////Avz8/urz8/nG6+vypP//fOMAAAAAAAAAAAAAAAAB////AAAAAAAAAAAAERGRXB0dDJAPDwgT/f3/AP39/gD9/f8A/f3+APz8/wD9/f775ub1jvHxCX3//2b7AAAAAAH///8AAAAAABMTkHwjIxKDAwMBAP39/wD8/P4A/f3+AP39/wAgIRAAV28/ABcgEwC0pM0AoY/Dt/Ly2E///5n7AgAAAAANDZBSHh4Pgv7+/wD4+PwA+Pj8APn5/AD5+f0A/v7/AF54RAAXIBQA1OoAAOXZ6QAGBgNJBwckjAAAAAACAQGACBUVCZL//wAB+fn8APn5/QD4+PwA+Pj9APj4/AA4PiAA/g4OANLp/gD//fsAVFssAPv7/gABAQJsAQGILwILCw5QCQkDG/j4/AD4+P0A+Pj8APn5/QD5+fwA+Pj9AB80IgDn9AEA6PQAAP///wAWJxkAMDAWAP///wIFBQJpAgoKBkICAgMADg4LAA0NCAAKCgcA/Pz/APj4/QACAgAAECYbANzuAADq9QAA/f8BAAEAAAAXHREABgYDABAQDEIESUk4IT0+MQAAAAEA9vb1AO/u7gD5+foA8fH7AB4nCQDW8QYA+v0AAAoE/wAKBQAA+P0AADw5KgA0LzsA5+bsIATm5wgA1NQBAAEB/wDz8wUABAQVACYmBwAcHQIA+ikAAP/yAQAIBP8AEwf9AA8H/wAOBwIAwb4SAAEBBgD5+QMBBMPC6uXOzRMA+/v/APn5/wD9/QAAAQEAAG19EAD5HgoAFQv/APX4+wARCP8AHA4BANHF+gDOzvUABAT1APn57uQC+fnnwPLy/QD19f8A+/sAAP7+AAA2OgYACDgJABgL/wAHAPsAKxX/ACgUAADm3P0Ano/0AAgIAAAICAEA/v71wAQAAOWt/PzqjAEBFxMCAgAAJSYDADlvEQASCf0AHw79AAoGAQAA9wEAwaj4ALeu9wAAAAAACAgBAAAA+gDs7NubAf///wABAalkBQU2my0uCgA/dxMAJRL+AAz2/QDU0fwA49j7ANHP+wABAQAABQUAAAQEAQAFBQAA5+fWpd/fQFwB////AAAAAABodNrDHEMjPNy08wC9svcABAQBAAUFAAAFBQEABAQAAAUFAQAFBQAABAQAAOrq3sba2sRG//909QHh8P9GxeH+ffr9APy2isvAwsANdgwMEgoEBAAABQUBAAUFAAAEBAEABQUBAP7+9v/p6dyf3t7Dbf//gPYAAAAAAdbq/3AkFQDHBQAAyQAAAAABAYoaExMsZwwMFEcGBgUgAwMAAQIC/uv5+fLD4uLYmvr6ac8AAAAAAAAAAAAAAAB08Ygz9inangAAAABJRU5ErkJggg==" }, ]; // получить массив с ненужными пунктами меню и восстановливать меню при обнавлении кнопки var hideItems = pref.getValue("CB.OpenWith.removeMenuitem", 0).split(","); addDestructor(function(reason) { if (reason == 'update') pref.setValue("CB.OpenWith.removeMenuitem", "") }); var menuPopup = self.appendChild( document.createElement("menupopup") ); array.forEach(function( m, i ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image ); mItem.setAttribute("value", i++ ); mItem.hidden = hideItems.indexOf(m.label) !== -1; // прятать ненужные пункты меню menuPopup.appendChild( mItem ); }); menuPopup.addEventListener("click", setMenuClick, false); // Настройка функций кликов мыши для пунктов меню ................. function setMenuClick(e) { var mItem = e.target; var value = mItem.getAttribute("value"); var label = mItem.getAttribute("label"); var image = mItem.getAttribute("image"); // ЛКМ запускает другой браузер .... if ( e.button == 0) openWith( value ); // СКМ удаляет пункты меню и записывает выбор в 'about:config' .... if ( e.button == 1 ) { e.preventDefault(); mItem.hidden = true; pref.setValue("CB.OpenWith.removeMenuitem", pref.getValue("CB.OpenWith.removeMenuitem", 0) + label +',' ); } // ПКМ устанавливает новый путь к нужному браузеру .... if ( e.button == 2 ) { e.preventDefault(); menuPopup.hidePopup(); setPathToBrowser( value, image, label ); } }; // Получить выделенную ссылку, иначе отдаст 'false' ................. function getSelectLink() { var links = window.content.document.links; if ( !(document.commandDispatcher.focusedWindow.getSelection() == '') ) { for ( i=0; i<links.length; ++i ) { if ( window.content.getSelection().containsNode(links[i], true) ) { var link = links[i]; } } return ( link == undefined ) ? false : link; } else { return false }; }; // Открыть страницу или ссылку в другом браузере, аргумент 'value' определяет нужный элемент массива с путями ................. function openWith( value ) { // получить адрес ссылки или страницы, в 'Punycode' если это .рф домен .... var loc = content.document.location; var link = getSelectLink(); var loc = link ? link : loc; var url = ( loc.host.slice(-3) == '.рф') ? Services.io.newURI( loc.href, null, null).asciiSpec : loc; var path = pref.getValue("CB.OpenWith.pathToBrowser", 0); var pathToBrowser = path.split(",")[value]; // получить путь из 'about:config' var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath( pathToBrowser ); if ( !file.exists() ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Файл не существует', false, "", null, ""); return; } var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); try { var args = [url]; process.init( file ); process.run( false, args, args.length ); } catch(e) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Не удалось выполнить', false, "", null, "") }; }; // Установить новый путь к браузеру, и записать выбор в 'about:config' ................. function setPathToBrowser( value, image, label ) { var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init( window, "Укажите путь к нужному браузеру!", fp.modeOpen ); fp.appendFilters( fp.filterApps ); if ( fp.show() == fp.returnCancel ) return; else { // получить из 'about:config' массив с путями к браузерам var arr = pref.getValue("CB.OpenWith.pathToBrowser", 0).split(","); // заменить нужный элемент массива на новый путь и записать var newPath = fp.file.path; arr[value] = newPath; pref.setValue("CB.OpenWith.pathToBrowser", arr.toString() ); alertsService.showAlertNotification( image, "Путь к браузеру: " + label, newPath, false, "", null, ""); } }; // Автоматически закрывать меню при ухода курсора с меню ................. if ( autoClose ) { menuPopup.setAttribute("onmouseleave", "this.mo = false; setTimeout(function(mp) { if ( !mp.mo ) mp.hidePopup() }, 800, this)"); menuPopup.setAttribute("onmouseover", "this.mo = true"); }; // Подсказка кнопки ................. this.tooltipText = "Открыть страницу или выделенную ссылку в другом браузере" +"\n"+"\n"+ "Функции кликов мыши для пунктов меню" +"\n"+ "Л: Открыть страницу или ссылку" +"\n"+ "С: Удалить пункт меню" +"\n"+ "П: Изменить путь к нужному браузеру"; |
bunda1 > 26-02-2016 21:20:54 |
broker пишет
Выделить код Код:self.onmouseleave =()=> self.mo = true; self.onmouseover =()=> { self.mo = false; setTimeout(()=> !self.mo && menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft"), 800) }; В инициализацию кнопки. |
broker > 26-02-2016 22:23:21 |
bunda1 |
Mishania > 29-02-2016 14:04:16 |
День добрый. А можно кнопочку поправить, в 43 |
Mishania > 29-02-2016 15:52:43 |
bunda1 Насколько помню вы и делились. Сейчас я жму на кнопку, открывается боковая панель, но чтоб закрыть надо нажимать крестик. Может можно сделать чтоб закрывалось тоже по кнопке и тогда предыдущая совсем не нужна. |
bunda1 > 29-02-2016 16:02:01 |
Mishania пишет
Выделить код Код:this._handleClick =()=> document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", "about:downloads"); |
Mishania > 29-02-2016 17:02:22 |
bunda1 |
KOT040188 > 02-03-2016 18:35:13 |
KOT040188 пишет
Ну ведь можно же как-то? |
bunda1 > 02-03-2016 19:53:35 |
KOT040188 пишет
В инициализацию: Выделить код Код:function onFind() { gFindBar.onFindCommand() }; messageManager.addMessageListener("Findbar:Keypress", onFind); addDestructor(()=> messageManager.removeMessageListener("Findbar:Keypress", onFind)); 02-03-2016 20:03:54 KOT040188 пишет
В инициализацию: Выделить код Код:addEventListener("popupshown", ()=> { document.getElementById('editBMPanel_foldersExpander').click(); }, true, document.getElementById("editBookmarkPanel")); |
KOT040188 > 02-03-2016 20:24:20 |
bunda1 |
bunda1 > 02-03-2016 20:43:31 |
KOT040188 пишет
Наверно можно и не сложно, но я не знаю что за функция Firefox добаляет закладки через звёздочку |
Stkvsky > 02-03-2016 21:08:08 |
Ув.разработчики подскажите пожалуйста код для закрытия вкладки по двойному клику правой кнопкой в любом месте на открытой странице. |
bunda1 > 02-03-2016 21:12:04 |
Stakhovsky пишет
В инициализацию: Выделить код Код:addEventListener("dblclick", e=> e.button > 1 && gBrowser.removeCurrentTab(), false, gBrowser); |
Stkvsky > 02-03-2016 22:03:12 |
Большое спасибо. |
KOT040188 > 02-03-2016 22:05:02 |
bunda1 пишет
Жаль |
Dumby > 02-03-2016 23:48:23 |
bunda1 пишет
|
KOT040188 > 03-03-2016 01:41:13 |
Dumby |
Stkvsky > 03-03-2016 02:42:56 |
bunda1 пишет
bunda1, после закрытия вкладки, на следующей остается открытым контекстное меню, можно ли это поправить? |
bunda1 > 03-03-2016 08:20:14 |
Stakhovsky пишет
Выделить код Код:addEventListener("dblclick", e=> { e.button > 1 && gBrowser.removeCurrentTab(); setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 20); }, false, gBrowser); 03-03-2016 08:27:29 Dumby пишет
Dumby, насчёт BookmarkingUI.onComman я конешно был курсе, но эта команда запускает PlacesCommandHook.bookmarkCurrentPage а та PlacesCommandHook.bookmarkPage а та: Выделить код Код:function () { "use strict"; let result = aTask; if (aTask && typeof(aTask) == "function") { if (aTask.isAsyncFunction) { throw new TypeError( "Cannot use an async function in place of a promise. " + "You should either invoke the async function first " + "or use 'Task.spawn' instead of 'Task.async' to start " + "the Task and return its promise."); } try { // Let's call into the function ourselves. result = aTask.apply(this, arguments); } catch (ex) { if (ex instanceof Task.Result) { return Promise.resolve(ex.value); } return Promise.reject(ex); } } if (isGenerator(result)) { // This is an iterator resulting from calling a generator function. return new TaskImpl(result).deferred.promise; } // Just propagate the given value to the caller as a resolved promise. return Promise.resolve(result); А с этим кодом я уже не знаю что делать, не понятно как он добавляет закладку. |
Stkvsky > 03-03-2016 10:11:30 |
Спасибо. |
Dumby > 03-03-2016 10:55:55 |
bunda1 пишет
Ну, вот так бы сразу и сказал. скрытый текст Мне и самому не нравится такое отображение в DOM Inspector'е. Но, если интересно, то открой Я, кстати, не смог понять что хочет Кот. Выделить код Код:(({panel}, prefName) => { cbu.isPref(prefName, PlacesUtils.unfiledBookmarksFolderId); addDestructor(reason => reason == "delete" && Services.prefs.clearUserPref(prefName)); var popupshownFolderId = Services.prefs.getIntPref(prefName); var handler = e => { if (e.target != panel) return; var id = PlacesUtils.bookmarks.getFolderIdForItem(StarUI._itemId); if (e.type == "popupshown") { popupshownFolderId = id; return; } if (StarUI._actionOnHide || popupshownFolderId == id) return; Services.prefs.setIntPref(prefName, id); } for(var type of ["popupshown", "popuphiding"]) addEventListener(type, handler, false, panel); var src = BookmarkingUI.onCommand.toString(); var res = src.replace("e(isBookmarked", `$&, isBookmarked || Services.prefs.getIntPref("${prefName}")`); var func = eval(`(${res})`).bind(BookmarkingUI); addEventListener("command", e => { e.stopPropagation(); func(e); }, true, document.getElementById("bookmarks-menu-button")); })(StarUI, "CB.lastEditBookmarkPanelFolderId"); |
bunda1 > 03-03-2016 14:09:57 |
Dumby пишет
Красивый код. Мне показалось, что Кот пишет про папку закладок в которую добавляли закладки не только нажатием звёздочки. Ну ладно там видно будет. |
KOT040188 > 03-03-2016 15:34:09 |
KOT040188 пишет
По умолчанию добавляет в неподшитые, а я хочу в ту которую выбирал в прошлый раз. Не знаю как ещё проще объяснить. |
voqabuhe > 03-03-2016 15:54:25 |
Dumby пишет
Как я понял, он хочет чтобы было как в Add Bookmark Here²
KOT040188, так? |
bunda1 > 03-03-2016 16:22:39 |
KOT040188 пишет
Попробуй: Выделить код Код:(({panel}, prefName) => { cbu.isPref(prefName, PlacesUtils.unfiledBookmarksFolderId); addDestructor(reason => reason == "delete" && Services.prefs.clearUserPref(prefName)); var popupshownFolderId = Services.prefs.getIntPref(prefName); var handler = e => { if (e.target != panel) return; var id = PlacesUtils.bookmarks.getFolderIdForItem(StarUI._itemId); if (e.type == "popupshown") { popupshownFolderId = id; return; } if (StarUI._actionOnHide || popupshownFolderId == id) return; Services.prefs.setIntPref(prefName, id); } for(var type of ["popupshown", "popuphiding"]) addEventListener(type, handler, false, panel); var src = BookmarkingUI.onCommand.toString(); var res = src.replace("e(isBookmarked", `$&, isBookmarked || Services.prefs.getIntPref("${prefName}")`); var func = eval(`(${res})`).bind(BookmarkingUI); addEventListener("command", e => { e.stopPropagation(); func(e); }, true, document.getElementById("bookmarks-menu-button")); })(StarUI, "CB.lastEditBookmarkPanelFolderId"); |
KOT040188 > 03-03-2016 16:34:06 |
voqabuhe |
voqabuhe > 03-03-2016 16:44:45 |
bunda1 пишет
В |
KOT040188 > 03-03-2016 21:42:15 |
bunda1 пишет
Спасибо, работает. И выбор папки развёрнут. Бонусом ещё и меню выскакивает после первого нажатия. Может так и лучше… |
Dumby > 04-03-2016 10:07:25 |
voqabuhe пишет
Может скрытый текст Выделить код Код://var res = src.replace("e(isBookmarked", `$&, isBookmarked || Services.prefs.getIntPref("${prefName}")`); var showPopup = true; var res = src.replace("true", `${showPopup || "isBookmarked"}, isBookmarked ? undefined : Services.prefs.getIntPref("${prefName}")`); bunda1 Я тебе насоветовал искать PlacesCommandHook в chrome://browser/content/browser.js а в Nightly он переехал в chrome://browser/content/browser-places.js |
FMRUser > 04-03-2016 10:32:09 |
Dumby пишет
..в 45b9 уже там обнаружил. скрытый текст Как плохо, что browser.js не оптимизируется, 18 строчек ломаются.. |
bunda1 > 04-03-2016 10:44:25 |
Dumby пишет
Спасибо |
voqabuhe > 04-03-2016 15:08:03 |
Dumby пишет
Спасибо, теперь работает. Только почему-то вот такого у меня нет? KOT040188 пишет
bunda1 |
KOT040188 > 04-03-2016 15:38:16 |
voqabuhe Выделить код Код:addEventListener("popupshown", ()=> { document.getElementById('editBMPanel_foldersExpander').click(); }, true, document.getElementById("editBookmarkPanel")); |
voqabuhe > 04-03-2016 17:00:56 |
KOT040188 пишет
|
KOT040188 > 04-03-2016 17:02:06 |
voqabuhe |
voqabuhe > 04-03-2016 17:07:26 |
KOT040188 пишет
Ясно. Тогда может как всегда bunda1 или Dumby помогут. |
KOT040188 > 07-03-2016 22:42:44 |
voqabuhe пишет
Присоединяюсь к просьбе. Или это лучше увеличить стилем? |
KOT040188 > 10-03-2016 19:53:59 |
По поводу кода: Выделить код Код:function onFind() { gFindBar.onFindCommand() }; messageManager.addMessageListener("Findbar:Keypress", onFind); addDestructor(()=> messageManager.removeMessageListener("Findbar:Keypress", onFind)); При нажатии буквы выскакивает панель с этой буквой, но она выделена. Как убрать выделение? |
voqabuhe > 12-03-2016 18:08:47 |
bunda1 |
bunda1 > 12-03-2016 19:43:35 |
voqabuhe пишет
Выделить код Код:addEventListener("dblclick", e=>{ e.button > 1 && gBrowser.removeCurrentTab(), document.getElementById("contentAreaContextMenu").hidePopup() }, false, gBrowser); |
voqabuhe > 12-03-2016 23:26:49 |
bunda1 |
bunda1 > 13-03-2016 10:31:29 |
voqabuhe пишет
Выделить код Код:addEventListener("dblclick", e=>{ e.button > 1 && gBrowser.removeCurrentTab(), setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 50) }, false, gBrowser); |
voqabuhe > 13-03-2016 13:39:21 |
bunda1 |
voqabuhe > 13-03-2016 15:00:07 |
bunda1 |
bunda1 > 13-03-2016 21:47:42 |
KOT040188 пишет
Выделить код Код:function onFind() { gFindBar.onFindCommand(); setTimeout(()=> gFindBar._findField.selectionStart = 2, 0) }; messageManager.addMessageListener("Findbar:Keypress", onFind); addDestructor(()=> messageManager.removeMessageListener("Findbar:Keypress", onFind)); |
KOT040188 > 14-03-2016 15:54:42 |
bunda1 voqabuhe пишет
Или это увеличить стилем? |
bunda1 > 14-03-2016 21:24:00 |
KOT040188 пишет
Лучше стилем, в Add Bookmark там довольно большой код. |
turbot > 14-03-2016 22:48:45 |
KOT040188 пишет
|
KOT040188 > 14-03-2016 22:50:22 |
turbot |
turbot > 14-03-2016 22:51:38 |
KOT040188 |
KOT040188 > 14-03-2016 22:53:29 |
turbot пишет
Темы малость не та. Я-то думал, что стилем растягивание сделать нельзя… |
turbot > 14-03-2016 22:55:30 |
KOT040188 |
KOT040188 > 14-03-2016 22:58:36 |
А изменение сохранится после перезапуска лисы? |
turbot > 14-03-2016 23:00:53 |
Нет. |
KOT040188 > 15-03-2016 01:38:49 |
Ну тогда не пойдёт. Прошлый стиль гарантирует стабильность, а если надо поменять высоту я это и в стиле сделаю. |
difabor > 15-03-2016 01:38:51 |
turbot пишет
А если по клику запомнить параметры этого диалогового окна в about:config? |
turbot > 15-03-2016 03:51:43 |
difabor скрытый текст Мой гомункулус Выделить код Код:var s = "CB.BTH", bt = document.getElementById('editBMPanel_folderTree'), mo = new MutationObserver(() => cbu.setPrefs(s, cbu.getPrefs(s)) = bt.getAttribute('height')); cbu.isPref(s, 200); mo.observe(bt, {attributes: true, attributeFilter: ['height']}); mo.mutationCallback(addDestructor(() => mo.disconnect())); addEventListener('popupshowing', function() { bt.getAttribute('height') = cbu.getPrefs(s); }, false, document.getElementById('editBookmarkPanel')); ругается на "invalid assignment left-hand side". И я даже догадываюсь, о чем это он, но как сделать правильно - не знаю. Может кто, крепкий духом, отважится заглянуть под спойлер и укажет, как надо. ![]() |
KOT040188 > 15-03-2016 15:46:42 |
А ещё с этим стилем не работает панель прокрутки, хотя сама прокрутка работает. |
bunda1 > 16-03-2016 22:33:57 |
turbot пишет
Может так: Выделить код Код:// Ctrl + колесиком мыши на диалоге добавления вкладки звездочки редактировать высоту поля выбора вкладок, от 16.03.2016. ........... addEventListener('popupshown', (e, panel = e.target)=> { document.getElementById('editBMPanel_foldersExpander').click(); var tree = document.getElementById('editBMPanel_folderTree'); var s = 'CB.treeHeight'; cbu.isPref(s, 150); tree.height = cbu.getPrefs(s) + 'px'; panel.onwheel =e=> { if ( !e.ctrlKey ) return; var step = 2, i = cbu.getPrefs(s), i = e.deltaY > 0 ? i + step : i - step; cbu.setPrefs(s, i); setTimeout(()=> tree.height = i + 'px', 0); }; }, true, document.getElementById('editBookmarkPanel')); |
voqabuhe > 17-03-2016 00:37:24 |
bunda1 пишет
У меня чего-то не растягивает. Это из-за |
bunda1 > 17-03-2016 01:06:47 |
voqabuhe пишет
Я проверил на |
turbot > 17-03-2016 01:19:09 |
bunda1 Я своего гомункулуса довел до вменяемого состояния: Выделить код Код:var tree = document.getElementById('editBMPanel_folderTree'), h = 'CB.treeHeight', w = 'CB.treeWidth', mo = new MutationObserver(()=> {cbu.setPrefs(h, tree.height); cbu.setPrefs(w, tree.width)}); // mo = new MutationObserver(()=> {setTimeout(cbu.setPrefs(h, tree.height),1000); setTimeout(cbu.setPrefs(w, tree.width),1000)}); tree.setAttribute('style', 'resize: both !important; overflow: hidden !important;'); cbu.isPref(h, 150); cbu.isPref(w, 150); mo.observe(tree, {attributes: true, attributeFilter: ['height', 'width']}); mo.mutationCallback(addDestructor(() => mo.disconnect())); addEventListener('popupshown', function() { tree.height = cbu.getPrefs(h); tree.width = cbu.getPrefs(w); document.getElementById('editBMPanel_foldersExpander').click(); }, false, document.getElementById('editBookmarkPanel')); Но! При изменении размеров, панель сильно дергается. Если выставить таймауты (заком. строка) для записи в конфиг, то ситуация исправляется, но кнопка не инициализируется после рестарта, пока ее не отредактируешь. Где тут собака, я не понял... UPD: Черт, что-то теперь и так и так, до редактирования, не инициализируется. |
bunda1 > 17-03-2016 01:57:44 |
turbot пишет
Проблема в: после рестарта/старта его не существует он создаётся при открытие диалога звёздочки. |
voqabuhe > 17-03-2016 02:06:14 |
bunda1 пишет
А да работает. Это у меня просто Volumouse перехватывает, на те же клавиши настроен. 17-03-2016 02:12:19 turbot пишет
А он в паре со стилем должен работать? И после него вариант от bunda1 отказался работать, пришлось резервным prefs.js воспользоваться. |
turbot > 17-03-2016 02:15:26 |
bunda1 17-03-2016 02:16:38 voqabuhe пишет
Там он ужо. Выделить код Код:tree.setAttribute('style', 'resize: both !important; overflow: hidden !important;'); 17-03-2016 02:20:30 voqabuhe пишет
EULA: Прочитав эти строки, вы отказались от каких либо претензий к автору. |
bunda1 > 17-03-2016 02:23:51 |
turbot пишет
Все в листенер запихивать, а обсервер не нужен, можно использовать popuphidden который срабатывает только если закрыть диалог звёздочки: Выделить код Код:addEventListener('popupshown', ()=> { document.getElementById('editBMPanel_foldersExpander').click(); var tree = document.getElementById('editBMPanel_folderTree'); tree.setAttribute('style', 'resize: both !important; overflow: hidden !important;'); var h = 'CB.treeHeight', w = 'CB.treeWidth'; cbu.isPref(h, 150); cbu.isPref(w, 150); tree.height = cbu.getPrefs(h); tree.width = cbu.getPrefs(w); addEventListener('popuphidden', function c() { removeEventListener('popuphidden', c); cbu.setPrefs(h, tree.height); cbu.setPrefs(w, tree.width); }); }, true, document.getElementById('editBookmarkPanel')); |
turbot > 17-03-2016 02:37:17 |
bunda1 |
becool > 17-03-2016 18:56:19 |
Тоже забрал, спасибо! Edit Bookmark Plus благополучно удален... |
voqabuhe > 19-03-2016 23:31:06 |
bunda1 |
bunda1 > 19-03-2016 23:44:23 |
voqabuhe пишет
Наверно не смогу, это код от Dumby. |
voqabuhe > 19-03-2016 23:50:14 |
bunda1 пишет
Понятно, тогда только остаётся надеется, что Dumby заметит и очередной раз поможет. |
turbot > 20-03-2016 01:20:50 |
del. Невнимательно прочел, что требуется. |
ifln > 20-03-2016 23:27:43 |
bunda1 Методом тыка заменил в Help <TEXTAREA></TEXTAREA> на <textarea rows="50"></textarea> и теперь в этой вкладке работает букмарклет Preview для предпросмотра от Lex1 Есть ли у этой вкладки адрес? Хочу применить к ней стиль, что бы панель закладок на ней всегда была раскрыта. |
turbot > 21-03-2016 00:01:18 |
ifln скрытый текст Адрес - это содержимое вкладки справка в base64: Выделить код Код:@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url("data:text/html;base64,PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48dGl0bGU+Tm90ZXBhZDwvdGl0bGU+CjxURVhUQVJFQSBpZD0ndGEnPjwvVEVYVEFSRUE+Cgo8c3R5bGU+Cmh0bWwgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNudG50YmcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KdGV4dGFyZWEgewogIGJhY2tncm91bmQ6IHZhcigtLWRya2hkcmJnKTsKICBvdmVyZmxvdy15OiBhdXRvOwogIHBvc2l0aW9uOiBmaXhlZDsKICByZXNpemU6IG5vbmU7CiAgdG9wOiAwOwogIGxlZnQ6MDsKICBib3R0b206MDsKICByaWdodDowOwogIHdpZHRoOiBjYWxjKDEwMCUgLSA4MHB4KTsKICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDYwcHgpOwogIG1hcmdpbjogYXV0bzsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyOiAuNXB4IHNvbGlkIHZhcigtLWhkcmJyZHIpOwogIGNvbG9yOiB2YXIoLS1sZ2h0dHh0Y2xyKTsKICBmb250OiA2MDAgMTRweCAiSGFjayI7Cn0KdGV4dGFyZWE6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogdmFyKC0tZnJtZmNzYnJkcik7Cn0KPC9zdHlsZT4=") { } И у вас он отличатся будет, ибо я правил содержимое справки. Выделить код Код:@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url-prefix("data:text/html;base64") { } Или еще проще: |
difabor > 21-03-2016 00:57:53 |
ifln пишет
bunda1, |
turbot > 21-03-2016 01:04:20 |
difabor скрытый текст Сделать закладку, изменить и: ![]() - проще всего. ![]() |
difabor > 21-03-2016 01:10:59 |
turbot пишет
У меня почему-то этот чекбокс не открывает закладку в сайдбаре. |
turbot > 21-03-2016 01:27:51 |
difabor пишет
У меня открывает. Нажимать надо не кнопку, а именно созданную закладку. На всяк уточнил. |
difabor > 21-03-2016 01:45:16 |
turbot пишет
У меня тоже раньше открывало, но где-то полгода (или больше) как не открывает. |
difabor > 21-03-2016 03:03:46 |
Нашёл как открывать в сайдбаре: |
turbot > 21-03-2016 06:45:21 |
difabor |
ifln > 21-03-2016 08:00:24 |
turbot, спасибо. |
difabor > 21-03-2016 11:09:30 |
turbot пишет
Кнопку я уже нашёл |
voqabuhe > 30-03-2016 14:35:53 |
|
rbfyec > 30-03-2016 15:05:05 |
А можно как-то в кнопке вызывать функцию, объявленную в другой кнопке? А я хочу чтобы myFunction можно было вызывать и из другой кнопки тоже. |
foxboy > 30-03-2016 19:57:09 |
Существует ли кнопка, открывающая исходный код страницы с уже включенным поиском? |
Infocatcher > 30-03-2016 20:06:09 |
rbfyec пишет
Прямо вот так – нельзя. Выделить код Код:// В первой кнопке this.myFunction1 = function() { alert(1); }; window.myFunction2 = function() { // Тут надо задать уникальное имя, а то конфликты будут alert(2); }; Выделить код Код:// Во второй кнопке document.getElementById("custombuttons-button1").myFunction1(); myFunction2(); |
difabor > 30-03-2016 23:40:29 |
Infocatcher, а нельзя ли создать типа библиотеки функций, которую можно импортировать? |
Infocatcher > 31-03-2016 01:20:23 |
difabor пишет
В расширении можно... Из кнопок не особо удобно. difabor пишет
При особом желании можно подключать скрипты, лежащие в какой-нибудь папке профиля. difabor пишет
По сравнению с чем? Выделить код Код:var button = document.getElementById("custombuttons-button1"); button.myFunction1(); |
rbfyec > 31-03-2016 01:54:17 |
Infocatcher пишет
Спасибо Infocatcher. Я сделал, работает. |
difabor > 31-03-2016 01:58:37 |
Infocatcher пишет
Спасибо! Выделить код Код:var MyFunctions = { fun1: function(p1,p2) {...}, fun2: function(...) {...}, ... funN: function(){...} } то я могу их вызывать в другой кнопке Выделить код Код:var button = document.getElementById("custombuttons-button1"); button.MyFunctions.fun1(10,20); //и т.д.? Должен ли я определить MyFunctions в custombuttons-button1 как this.MyFunctions? |
Infocatcher > 31-03-2016 11:32:29 |
rbfyec пишет
Ну да, свойства кнопки никому не смогут помешать. Если только переопределить какие-нибудь изначальные, тогда поломается конкретно эта кнопка. difabor пишет
Да, видно будет только то, что было добавлено в свойства объекта кнопки. |
beggrr > 31-03-2016 14:13:38 |
ifln пишет
Хочу спросить по поводу этого букмарклета Preview. Для его корректной работы (не с кнопкой Блокнот в вкладке, а вообще) надо там что то переделать? И как его использовать? А то я пробую его на форуме - ссылки отображаются просто текстом с тегами, они некликабельны. |
ifln > 31-03-2016 21:11:58 |
beggrr пишет
Ничем. Поддерживает только основные теги. Просто на некоторых сайтах нет предпросмотра. А в Блокноте в вкладке, где удобно составлять большие тексты, другого выбора нет. |
beggrr > 31-03-2016 21:36:31 |
ifln |
Артик > 03-04-2016 21:05:47 |
Здравствуйте, нуждаюсь в кнопке открыть и закрыть Панель Меню, а так же кнопке открыть закрыт панель дополнений (если можно, чтобы эта панель открывалась наверху браузера под вкладками). Спасибо! |
voqabuhe > 03-04-2016 21:21:43 |
Артик пишет
|
Артик > 03-04-2016 21:27:20 |
voqabuhe пишет
сенк ю |
ifln > 04-04-2016 12:56:02 |
Вопрос о кнопке Блокнот в вкладке. |
bunda1 > 04-04-2016 14:44:08 |
ifln пишет
Кнопка Блокнот в вкладке такое делать не может, это у тебя какое то расширение шалит. |
ifln > 04-04-2016 16:18:32 |
bunda1 пишет
Кнопка Quote+ от Lex1 хулиганила. Не, по прежнему конфликтуют. Даже при обычном копировании, когда не жму на Quote+. |
ifln > 04-04-2016 20:28:34 |
Разобрался. |
bunda1 > 05-04-2016 00:03:26 |
ifln пишет
Ну а если так: Выделить код Код: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%3E%u0411%u043B%u043E%u043A%u043D%u043E%u0442%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28notepad%29%3B%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043F%u043E%u043C%u043D%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20%20%20%20%20%20var%20clip%20%3D%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20window.content.focus%28%29%3B%0A%20%20%20%20%20%20%20%20goDoCommand%28%22cmd_copy%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20%20%20%20%20%20%20var%20browser%20%3D%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28notepad%29%29%3B%20%0A%20%20%20%20%20%20%20%20browser.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.document.getElementsByTagName%28%22textarea%22%29%5B0%5D.value%20%3D%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20clip%20%26%26%20gClipboard.write%28clip%29%3B%20//%20%u0432%u0435%u0440%u043D%u0443%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0431%u0443%u0444%u0435%u0440%20%u043E%u0431%u043C%u0435%u043D%u0430%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%2050%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Aif%20%28%20content.window.location%20%3D%3D%20notepad%20%29%20%7B%0A%20%20%20%20%20var%20val%20%3D%20content.document.getElementsByTagName%28%22textarea%22%29%5B0%5D.value%3B%0A%20%20%20%20%20loadURI%28notepad%29%3B%0A%20%20%20%20%20setTimeout%28%28%29%3D%3E%20content.document.getElementsByTagName%28%22textarea%22%29%5B0%5D.value%20%3D%20val%2C%20500%29%3B%20%20%20%20%20%0A%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%0A//%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%u043D%u0443%u044E%20%u0441%u0442%u0440%u043E%u043A%u0443%20%u0432%20%u043A%u043B%u0430%u0434%u043A%u0435%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20...........%0AaddEventListener%28%22TabAttrModified%22%2C%20%28%29%3D%3E%20content.location%20%3D%3D%20notepad%20%26%26%20gURLBar.reset%28%29%20%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0430%u0435%u043C%20%u0430%u0434%u0440%u0435%u0441%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20%u043A%u0430%u043A%20base64%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20...........%0Avar%20notepad%20%3D%20%22data%3Atext/html%3Bbase64%2C%22%20+%20window.btoa%28%20self.Help.replace%28%27selfImage%27%2C%20self.image%29%20%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.tooltipText%20%3D%20%22%u0411%u043B%u043E%u043A%u043D%u043E%u0442%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%5Cn%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%u0441%20%u0442%u0435%u043A%u0441%u0442%u043E%u043C%28%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u043C%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%29%20%5Cn%u041F%3A%20CB%20%u043C%u0435%u043D%u044E%22%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%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3Dutf-8%22/%3E%3Ctitle%3ENotepad%3C/title%3E%0A%3Chead%3E%0A%20%3Clink%20rel%3D%22shortcut%20icon%22%20href%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22type%3D%22image/x-icon%22%3E%0A%3C/head%3E%0A%0A%3CTEXTAREA%3E%3C/TEXTAREA%3E%0A%3Cstyle%3E%0A%0Ahtml%20%7B%0A%20%20background-color%3A%20black%3B%0A%20%20overflow%3A%20hidden%3B%0A%7D%0Atextarea%20%7B%0A%20%20background%3A%20%23383838%3B%0A%20%20overflow-y%3A%20auto%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20border-radius%3A%202px%3B%0A%20%20border%3A%202px%20inset%20white%3B%0A%20%20color%3A%20white%3B%0A%7D%0A%3C/style%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
ifln > 05-04-2016 07:56:30 |
bunda1 пишет
Отлично все работает. |
hartumov > 05-04-2016 10:55:46 |
Как можно открыть новую вкладку и вставить свой html код? А, и еще один вопрос. Вот кусочек кода. Выделить код Код:...... тут какой то код <div class="word-sub-header"> <div class="title-block"> <h2> Definition of <i>copper</i> </h2> </div> <div class="popularity-block"></div> ...... и дальше какой то код Как составить регулярку, чтобы она захватила от первого <div class= до первого </div> учитывая все переносы и любые сивмолы? |
bunda1 > 05-04-2016 12:03:11 |
hartumov пишет
Может установи Блокнот в вкладке и положи свой html код в вкладку Справка и открывай. |
difabor > 05-04-2016 12:17:52 |
hartumov пишет
Выделить код Код:var trytext = ' ...... тут какой то код\n<div class=\"word-sub-header\"\n <div class=\"title-block\">\n <h2>\n Definition of <i>copper</i>\n </h2>\n </div>\n <div class=\"popularity-block\"></div>\n...... и дальше какой то код'; var div0 = trytext.split("</div>")[0].split("<div class=");//"<div class=" var div1 = div0.shift(); alert(div0.join("<div class=")); Если же Вам нужно присутствие первого <div class=, то ещё проще: вместо удаления 0-го элемента шифтом var div1 = div0.shift(); сделайте его очистку: div0[0]=''; |
turbot > 05-04-2016 23:53:26 |
Опять вру, оба работают. Причина в том, что если добавить в ids (nodes) несуществующие id (от аддонов, которые отключены), то оба варианта перестают работать. Можно это как-то поправить? |
bunda1 > 06-04-2016 19:38:45 |
turbot пишет
Выделить код Код: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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0Aif%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%7D%0Avar%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Avar%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29.filter%28id%3D%3E%20%7Breturn%20%28id%20%21%3D%3D%20null%29%7D%29%3B%0Avar%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0Avar%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0Afunction%20appendMenus%28parent%29%20%7B%0A%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09menu._placesView.uninit%28%29%3B%0A%09%09delete%20menu._placesView%3B%0A%09%7D%0A%7D%0Athis.textContent%20%3D%20%22%22%3B%0Avar%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Apopup.position%20%3D%20%22after_start%22%3B%0Apopup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0Apopup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0Apopup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0Apopup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09appendMenus%28menubar%29%3B%0A%7D%2C%20false%29%3B%0A%0AappendMenus%28popup%29%3B%0Apopup.openPopup%28this%29%3B%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 |
turbot > 06-04-2016 19:47:49 |
bunda1 |
hartumov > 07-04-2016 10:42:17 |
difabor bunda1, мы видимо не поняли друг друга. |
Mishania > 20-04-2016 14:49:04 |
День добрый. На ff42 пользовался кнопочкой GrabScroll, обновился до ff45 и работать перестала. Можно поправить? Выделить код Код: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%3EGrabScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAACUklEQVQ4jaWUzUsbQRjGn8nHhE1J0ICuEbOY2s0HBETxHoJHlVw8+Be4YtCTh5CLNESSowFzkMXiCtVeIpqWEA8t9FoW91a855TkD8jx6WUVSWtQOvCc5sdveGfed4Axi6Tn9vb2Q7PZfE/SM44dK2k0GrFIJFKPRCL1RqMRe7OMpHAcZ0LX9T0hxL0Q4l7X9T3HcSZIireI/NlsdkNK2QFgA7CllJ1sNrtB0v9aiUJynuQqSWMkq+6eMrYckn6S80KInwAeADwoivJLCPFbSnkvpXR8Pt8PV+b/q0ySHsdxJnK53BrJBIDvAO4A3MVisU9er7c9PT39eXJy8ksgEGiTTORyuTX3zjxPEtM051KplCGlvHZFX5eXl89qtdrHcrlcrVar5UqlcrS0tHQO4BvJhJTyOpVKGaZpzpH0oNVqxVVVPRJCdADcuKJmJpM5IKmSfOdGzWQyBwCaLnMjhOioqlpptVpx2La9kM/na4qiXAC4cqGrZDK5TzL0rPxQMpncf84oinKRz+drtm0vgKSv1+stFovFHU3T6i5kpdPpXZJTJENuptLp9C4Ai2RC07R6sVjc6fV6iyR9j6f5hsOhZlnWpisyw+HwcTweLz9POBw+BmCSTFiWtTkcDrUnycjzh1zRCYBTAOcjOQVwQjLhsi93OcnZfzTiaGZfFIzI/IVCYT0ajV4CaANoR6PRy0KhsP7qEXkss9/vz5RKpa1gMHgYDAYPS6XSVr/fn3nT0LoyT7fb1Q3D2DYMY7vb7er/8yd5B4PBymAwWCHpHcf+AbaLjoOEBHabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/**%0A%20*%20%20Button%20based%20on%20a%20script%20created%20for%20userChrome.js%20extension.%20http%3A//userchromejs.mozdev.org/%0A%20*%20%20Author%3A%20Alice0775%20https%3A//github.com/alice0775%0A%20*%20%20Source%3A%20https%3A//github.com/alice0775/userChrome.js/blob/master/GrabScroll_Fx29.uc.xul%0A%20*/%0Aconst%20_UID%20%3D%20%22grab_scroll%22%20+%20%28self.id%29.split%28%22custombuttons%22%29%5B1%5D%3B%0A%0Aconst%20_LTN%20%3D%20%22listeners_%22%20+%20_UID%3B%0A%0Aconst%20PREF_BRANCH%20%3D%20%22extensions.custombuttons.GrabScroll.Id%22%20+%20%28self.id%29.split%28%22-button%22%29%5B1%5D%20+%20%22.%22%3B%0A%0Aif%20%28%21%28%22Services%22%20in%20window%29%29%0A%09Cu.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%0A//START//%20Default%20preferences%20management%0AbtnPref.root%20%3D%20PREF_BRANCH%3B%0A%0AbtnPref.defaults%20%3D%20%7B%0A%09%22GrabScrollEnabled%22%20%3A%20true%2C%0A%09%22MouseButton%22%20%3A%200%2C%0A%09%22MoveRate%22%20%3A%20-1%2C%0A%09%22Timer%22%20%3A%20500%2C%0A%09%22InertiaEnabled%22%20%3A%20false%2C%0A%09%22InertiaThreshold%22%20%3A%2020%2C%0A%09%22InertiaRate%22%20%3A%2050%2C%0A%09%22NotClicableLink%22%20%3A%20true%2C%0A%09%22NotImage%22%20%3A%20false%2C%0A%09%22Tolerance%22%20%3A%203%2C%0A%09%22ToleranceWhenNoHScroll%22%20%3A%205%0A%7D%3B%0A%0Alet%28branch%20%3D%20Services.prefs.getDefaultBranch%28btnPref.root%29%29%20%7B%0A%09for%20%28let%5Bkey%2C%20val%5Din%20Iterator%28btnPref.defaults%29%29%20%7B%0A%09%09switch%20%28typeof%20val%29%20%7B%0A%09%09case%20%22boolean%22%3A%0A%09%09%09branch.setBoolPref%28key%2C%20val%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22number%22%3A%0A%09%09%09branch.setIntPref%28key%2C%20val%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22string%22%3A%20%7B%0A%09%09%09%09let%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Ci.nsISupportsString%29%3B%0A%09%09%09%09str.data%20%3D%20val%3B%0A%09%09%09%09branch.setComplexValue%28%28key%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%09%09%09%7D%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AbtnPref.observe%20%3D%20function%20%28aPrefs%2C%20aCallback%29%20%7B%0A%09let%20%7B%0A%09%09root%0A%09%7D%0A%09%09%20%3D%20btnPref%3B%0A%09function%20observe%28subject%2C%20topic%2C%20data%29%20%7B%0A%09%09if%20%28topic%20%21%3D%3D%20%22nsPref%3Achanged%22%29%0A%09%09%09return%3B%0A%09%09let%20pref%20%3D%20data.slice%28root.length%29%3B%0A%09%09if%20%28aPrefs.indexOf%28pref%29%20%3D%3D%3D%20-1%29%0A%09%09%09return%3B%0A%09%09aCallback%28pref%29%3B%0A%09%7D%0A%09Services.prefs.addObserver%28root%2C%20observe%2C%20false%29%3B%0A%09unload%28function%20%28%29Services.prefs.removeObserver%28root%2C%20observe%29%29%3B%0A%7D%3B%0A%0Afunction%20btnPref%28aKey%29%20%7B%0A%09let%20%7B%0A%09%09branch%2C%0A%09%09defaults%0A%09%7D%0A%09%09%20%3D%20btnPref%3B%0A%09if%20%28%21branch%29%0A%09%09branch%20%3D%20Services.prefs.getBranch%28btnPref.root%29%3B%0A%09switch%20%28typeof%20defaults%5BaKey%5D%29%20%7B%0A%09case%20%22boolean%22%3A%0A%09%09return%20branch.getBoolPref%28aKey%29%3B%0A%09%09break%3B%0A%09case%20%22number%22%3A%0A%09%09return%20branch.getIntPref%28aKey%29%3B%0A%09%09break%3B%0A%09case%20%22string%22%3A%0A%09%09return%20branch.getComplexValue%28aKey%2C%20Ci.nsISupportsString%29.data%3B%0A%09%09break%3B%0A%09%7D%0A%09return%20null%3B%0A%7D%0A%0Afunction%20unload%28aCallback%2C%20aContainer%29%20%7B%0A%09let%20unloaders%20%3D%20unload.unloaders%3B%0A%09if%20%28unloaders%20%3D%3D%3D%20null%29%0A%09%09unloaders%20%3D%20unload.unloaders%20%3D%20%5B%5D%3B%0A%09if%20%28aCallback%20%3D%3D%3D%20null%29%20%7B%0A%09%09unloaders.slice%28%29.forEach%28function%20%28unloader%29unloader%28%29%29%3B%0A%09%09%09unloaders.length%20%3D%200%3B%0A%09%7D%0A%09if%20%28aContainer%20%21%3D%3D%20null%29%20%7B%0A%09%09aContainer.addEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%09%09let%20origCallback%20%3D%20aCallback%3B%0A%09%09callback%20%3D%20function%20%28%29%20%7B%0A%09%09%09aContainer.removeEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%09%09%09origCallback%28%29%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%0A%09function%20unloader%28%29%20%7B%0A%09%09try%20%7B%0A%09%09%09callback%28%29%3B%0A%09%09%7D%20catch%20%28err%29%20%7B%0A%09%09%09Components.utils.reportError%28err%29%3B%0A%09%09%7D%0A%09%7D%0A%09unloaders.push%28unloader%29%3B%0A%09function%20removeUnloader%28%29%20%7B%0A%09%09let%20index%20%3D%20unloaders.indexOf%28unloader%29%3B%0A%09%09if%20%28index%20%21%3D%3D%20-1%29%0A%09%09%09unloaders.splice%28index%2C%201%29%3B%0A%09%7D%0A%09return%20removeUnloader%3B%0A%7D%0A//END//%20Default%20preferences%20management%0A%0Avar%20GrabScroll%20%3D%20%7B%0A%09mStatus%20%3A%200%2C%20//0%3AIdle%2C%201%3A%20during%20mousedown%2C%202%3A%20during%20mousemove%2C%203%3A%20mouseup%20After%20scrolling%0A%09mLastX%20%3A%200%2C%0A%09mLastY%20%3A%200%2C%0A%09_target%20%3A%20null%2C%20//%20Element%20the%20mouse%20is%20pointing%0A%09_target2%20%3A%20null%2C%20//%20Element%20the%20mouse%20is%20pointing%0A%09_isImage%20%3A%20false%2C%0A%09_timer%20%3A%200%2C%20//%20Save%20time%20when%20mouseup%20to%20determine%20the%20threshold.%0A%09_mtimer%20%3A%20false%2C%0A%09cScroll%20%3A%20false%2C%0A%09cSpeedX%20%3A%200%2C%0A%09cSpeedY%20%3A%200%2C%0A%09_doc%20%3A%20null%2C%0A%09_MOVERATEpZoom%20%3A%201%2C%0A%09_window%20%3A%20null%2C%0A%09initGrabScroll%20%3A%20function%20%28%29%20%7B%0A%09%09if%20%28GrabScroll.activeBrowser%28%29.mPanelContainer%29%20%7B%0A%09%09%09this._window%20%3D%20GrabScroll.activeBrowser%28%29.mPanelContainer%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this._window%20%3D%20document.getElementById%28%27content%27%29%3B%0A%09%09%7D%0A%09%09this._window.setCapture%28%29%3B%0A%09%09if%20%28%21window%5B_LTN%5D%29%20%7B%0A%09%09%09this._window.addEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.addEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.addEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09gBrowser.addEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%09%09%09window%5B_LTN%5D%20%3D%20true%3B%0A%09%09%7D%0A%09%7D%2C%0A%09uninitGrabScroll%20%3A%20function%20%28%29%20%7B%0A%09%09if%20%28this._window%29%20%7B%0A%09%09%09this._window.removeEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.removeEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.removeEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09gBrowser.removeEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%09%09%09this.mStatus%20%3D%3D%3D%200%3B%0A%09%09%09this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%0A%09%09delete%20window%5B_LTN%5D%3B%0A%09%7D%2C%0A%09activeBrowser%20%3A%20function%20%28%29%20%7B%0A%09%09return%20%28%27SplitBrowser%27%20in%20window%20%3F%20SplitBrowser.activeBrowser%20%3A%20null%29%0A%09%09%20%7C%7C%20gBrowser%3B%0A%09%7D%2C%0A%09handleEvent%20%3A%20function%20%28event%29%20%7B%0A%09%09event%20%3D%20new%20XPCNativeWrapper%28event%29%3B%0A%09%09switch%20%28event.type%29%20%7B%0A%09%09case%20%22mousedown%22%3A%0A%09%09%09if%20%28this.cScroll%29%20%7B%0A%09%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09%09this.cSpeedX%20%3D%20this.cSpeedY%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09if%20%28btnPref%28%22GrabScrollEnabled%22%29%20%26%26%0A%09%09%09%09%21event.shiftKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.altKey%29%20%7B%0A%09%09%09%09this.grabStart%28event%29%3B%0A%09%09%09%7D%20else%20if%20%28%21btnPref%28%22GrabScrollEnabled%22%29%20%26%26%0A%09%09%09%09event.shiftKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.altKey%29%20%7B%0A%09%09%09%09this.grabStart%28event%29%3B%0A%09%09%09%7D%0A%09%09%09break%3B%0A%09%09case%20%22mousemove%22%3A%0A%09%09%09this.mousemove%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22click%22%3A%0A%09%09%09this.click%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22mouseup%22%3A%0A%09%09%09this.mouseup%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%27pagehide%27%3A%0A%09%09%09this._doc%20%3D%20null%3B%0A%09%09%09this._target%20%3D%20null%3B%0A%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09this._isImage%20%3D%20null%3B%0A%09%09%09this.NS%20%3D%20this.EW%20%3D%20this.NSEW%20%3D%20null%3B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%2C%0A%09grabStart%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28this.mStatus%20%3D%3D%3D%203%29%0A%09%09%09this.mStatus%20%3D%200%3B%0A%09%09//%20Do%20not%20start%20GrabScroll%20if%20you%20fire%20the%20mouse%20down%20continuously.%0A%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%29%20%7B%0A%09%09%09if%20%28Math.abs%28this.mLastX%20-%20event.screenX%29%20%3C%205%20%26%26%0A%09%09%09%09Math.abs%28this.mLastY%20-%20event.screenY%29%20%3C%205%29%0A%09%09%09%09return%0A%09%09%7D%0A%09%09var%20doc%20%3D%20event.originalTarget.ownerDocument%3B%0A%09%09if%20%28%21doc%29%0A%09%09%09return%3B%0A%09%09if%20%28doc.contentType%20%3D%3D%3D%20%27application/vnd.mozilla.xul+xml%27%29%0A%09%09%09return%3B%0A%09%09this._doc%20%3D%20doc%3B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%200%29%20%7B%0A%09%09%09this._target%20%3D%20event.originalTarget%3B%0A%09%09%09if%20%28/%5E%28html%7Cbody%29%24/.test%28this._target.localName.toLowerCase%28%29%29%20%7C%7C%20this._target.clientHeight%20%3E%2030000%29%0A%09%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09else%20if%20%28/div/.test%28this._target.localName.toLowerCase%28%29%29%20%26%26%20this._target.clientHeight%20%3E%201000%29%0A%09%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09else%0A%09%09%09%09this._target2%20%3D%20this._target%3B%0A%09%09%09//%20Editable%20element%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentEditableNode%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Draggable%20element%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentDraggableNode%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Factors%20to%20be%20steamed%20does%20not%20start%20the%20GrabScroll%0A%09%09%09if%20%28this.isIgnore%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Video%20control%20does%20not%20start%20the%20GrabScroll%0A%09%09%09if%20%28this.isVideoControl%28event.target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Clickable%20links%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentClickableNode%28this._target%29%29%20%7B%0A%09%09%09%09if%20%28btnPref%28%22NotClicableLink%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09//%20Blocking%20of%20DragStart%20on%20links%0A%09%09%09%09if%20%28%21%28%27linkDragSelection%27%20in%20window%29%29%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%7D%0A%09%09%09//%20On%20images%0A%09%09%09this._isImage%20%3D%20this.isImage%28event%29%3B%0A%09%09%09if%20%28this._isImage%29%20%7B%0A%09%09%09%09//%20Images%20does%20not%20start%20the%20GrabScroll%0A%09%09%09%09if%20%28btnPref%28%22NotImage%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09//%20DragStart%20block%20on%20images%0A%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%7D%0A%09%09%09//Compativility%20with%20ResizeTa%0A%09%09%09var%20target%20%3D%20this._target%3B%0A%09%09%09while%20%28target%29%20%7B%0A%09%09%09%09if%20%28%22getAttribute%22%20in%20target%20%26%26%20target.getAttribute%28%22draggable%22%29%20%3D%3D%3D%20%22true%22%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09var%20style%20%3D%20this._doc.defaultView.getComputedStyle%28target%2C%20null%29%3B%0A%09%09%09%09%09if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22cursor%22%29%29%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09else%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22auto%22%29%29%29%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%09%09%09%09target%20%3D%20target.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3E%200%29%20%7B%0A%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%09this._timer%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%09%09%09this.mLastX%20%3D%20event.screenX%3B%0A%09%09%09this.mLastY%20%3D%20event.screenY%3B%0A%09%09%09this.mStatus%20%3D%201%3B%0A%09%09%09this._MOVERATEpZoom%20%3D%20btnPref%28%22MoveRate%22%29%20/%20%28ZoomManager.useFullZoom%20%3F%20ZoomManager.zoom%20%3A%201%29%3B%0A%09%09%09%5Bthis.NS%2C%20this.EW%2C%20this.NSEW%5D%20%3D%20this.getScrollView%28event%29%3B%0A%09%09%09this._window.addEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09adjustedTimer%20%3A%20function%20%28%29%20%7B%0A%09%09var%20magTimer%20%3D%20btnPref%28%22Timer%22%29%3B%0A%09%09return%20magTimer%3B%0A%09%7D%2C%0A%09grabFinish%20%3A%20function%20%28%29%20%7B%0A%09%09this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%09%09if%20%28selCon%29%0A%09%09%09selCon.setDisplaySelection%28selCon.SELECTION_ON%29%3B%0A%09%7D%2C%0A%09mousemove%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28this.mStatus%20%3D%3D%3D%202%20%7C%7C%20this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09var%20x%20%3D%20event.screenX%3B%0A%09%09%09var%20y%20%3D%20event.screenY%3B%0A%09%09%09var%20doc%20%3D%20event.originalTarget.ownerDocument%3B%0A%09%09%09if%20%28this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09%09if%20%28%21this._isImage%20%26%26%0A%09%09%09%09%09%28new%20Date%28%29.getTime%28%29%20-%20this._timer%29%20%3E%20this.adjustedTimer%28%29%29%20%7B%0A%09%09%09%09%09this.grabFinish%28%29%3B%0A%09%09%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28Math.abs%28x%20-%20this.mLastX%29%20%3C%20btnPref%28%22ToleranceWhenNoHScroll%22%29%29%0A%09%09%09%09%09var%20movingh%20%3D%20Math.abs%28x%20-%20this.mLastX%29%20%3E%20Math.abs%28y%20-%20this.mLastY%29%20*%2050%3B%0A%09%09%09%09if%20%28%21this._isImage%20%26%26%20btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%20%26%26%20this.isText%28event%29%20%26%26%20movingh%20%26%26%20%21this.EW%29%20%7B%0A%09%09%09%09%09this.grabFinish%28%29%3B%0A%09%09%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28Math.abs%28x%20-%20this.mLastX%29%20+%20Math.abs%28y%20-%20this.mLastY%29%20%3C%20btnPref%28%22Tolerance%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%29%20%7B%0A%09%09%09%09%09var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%09%09%09%09%09if%20%28selCon%29%20%7B%0A%09%09%09%09%09%09var%20selection%20%3D%20selCon.getSelection%28selCon.SELECTION_NORMAL%29%3B%0A%09%09%09%09%09%09selection.removeAllRanges%28%29%3B%0A%09%09%09%09%09%09selCon.setDisplaySelection%28selCon.SELECTION_OFF%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09if%20%28%22ucjsMouseGestures%22%20in%20window%29%20%7B%0A%09%09%09%09%09%09ucjsMouseGestures._isMouseDownR%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09this.mLastX%20%3D%20x%20-%20%28x%20-%20this.mLastX%29%20/%2010%3B%0A%09%09%09%09this.mLastY%20%3D%20y%20-%20%28y%20-%20this.mLastY%29%20/%2010%3B%0A%09%09%09%09this.mStatus%20%3D%202%3B%0A%09%09%09%7D%0A%09%09%09if%20%28this._mtimer%29%0A%09%09%09%09return%3B%0A%09%09%09this.cSpeedX%20%3D%20this._MOVERATEpZoom%20*%20%28x%20-%20this.mLastX%29%3B%0A%09%09%09this.cSpeedY%20%3D%20this._MOVERATEpZoom%20*%20%28y%20-%20this.mLastY%29%3B%0A%09%09%09this.scroll%28event%29%3B%0A%09%09%09this.mLastX%20%3D%20x%3B%0A%09%09%09this.mLastY%20%3D%20y%3B%0A%09%09%7D%0A%09%7D%2C%0A%09getSelconForDoc%20%3A%20function%20getSelconForDoc%28doc%29%20%7B%0A%09%09if%20%28%21doc%29%0A%09%09%09return%20null%3B%0A%09%09var%20aFrame%20%3D%20doc.defaultView%3B%0A%09%09if%20%28%21aFrame%29%0A%09%09%09return%20null%3B%0A%09%09var%20docShell%20%3D%20this.getDocShellForFrame%28aFrame%29%3B%0A%09%09var%20selCon%20%3D%20docShell%0A%09%09%09.QueryInterface%28Ci.nsIInterfaceRequestor%29%0A%09%09%09.getInterface%28Ci.nsISelectionDisplay%29%0A%09%09%09.QueryInterface%28Ci.nsISelectionController%29%3B%0A%09%09return%20selCon%3B%0A%09%7D%2C%0A%09getDocShellForFrame%20%3A%20function%20getDocShellForFrame%28aFrame%29%20%7B%0A%09%09return%20aFrame%0A%09%09.QueryInterface%28Ci.nsIInterfaceRequestor%29%0A%09%09.getInterface%28Ci.nsIWebNavigation%29%0A%09%09.QueryInterface%28Ci.nsIDocShell%29%3B%0A%09%7D%2C%0A%09click%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%202%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%09if%20%28event.button%20%3D%3D%3D%200%20%26%26%20this.mStatus%20%3E%3D%202%20%26%26%20this._doc%20instanceof%20Ci.nsIImageDocument%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%09this.grabFinish%28%29%3B%0A%09%09this.mStatus%20%3D%200%3B%0A%09%7D%2C%0A%09mouseup%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3E%201%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09this.grabFinish%28%29%3B%0A%09%09%09if%20%28this.mStatus%20%3D%3D%3D%202%29%0A%09%09%09%09this.mStatus%20%3D%203%3B%0A%09%09%09if%20%28btnPref%28%22InertiaEnabled%22%29%20%26%26%0A%09%09%09%09%28Math.abs%28this.cSpeedX%29%20%3E%20btnPref%28%22InertiaThreshold%22%29%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20btnPref%28%22InertiaThreshold%22%29%29%29%20%7B%0A%09%09%09%09if%20%28this.cScroll%29%0A%09%09%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09%09var%20v%20%3D%20btnPref%28%22InertiaRate%22%29%3B%0A%09%09%09%09if%20%28this.cSpeedX%20%3E%200%29%0A%09%09%09%09%09this.cSpeedX%20%3D%20Math.min%28this.cSpeedX%2C%20v%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09this.cSpeedX%20%3D%20Math.max%28this.cSpeedX%2C%20-v%29%3B%0A%09%09%09%09if%20%28this.cSpeedY%20%3E%200%29%0A%09%09%09%09%09this.cSpeedY%20%3D%20Math.min%28this.cSpeedY%2C%20v%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09this.cSpeedY%20%3D%20Math.max%28this.cSpeedY%2C%20-v%29%3B%0A%09%09%09%09this.scroll2%28event%29%3B%0A%09%09%09%09scrolling%28event%2C%20this%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09this.grabFinish%28%29%3B%0A%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%7D%0A%09%7D%2C%0A%09scroll2%20%3A%20function%20%28event%29%20%7B%0A%09%09var%20ay%20%3D%20Math.abs%28this.cSpeedY%29%3B%0A%09%09var%20ax%20%3D%20Math.abs%28this.cSpeedX%29%3B%0A%09%09if%20%28ay%20%3C%201%20%26%26%20ax%20%3C%201%29%20%7B%0A%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09this.scroll%28event%29%3B%0A%09%09if%20%28ax%20%3E%3D%20100%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%20100%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%2020%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%2010%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%205%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%201%29%0A%09%09%09this.cSpeedX%20%3D%200%3B%0A%09%09if%20%28ay%20%3E%3D%20100%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%20100%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%2020%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%2010%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%205%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%201%29%0A%09%09%09this.cSpeedY%20%3D%200%3B%0A%09%7D%2C%0A%09scroll%20%3A%20function%20%28event%29%20%7B%0A%09%09this._mtimer%20%3D%20true%3B%0A%09%09if%20%28this.NS%20%26%26%20this.NS%20%3D%3D%3D%20this.EW%29%20%7B%0A%09%09%09if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%09%09%09%09this.NS.scrollBy%28this.cSpeedX%2C%20this.cSpeedY%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09this.NS.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%09%09%09%09this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28this.NS%29%20%7B%0A%09%09%09%09if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%09%09%09%09%09this.NS.scrollBy%280%2C%20this.cSpeedY%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28this.EW%29%20%7B%0A%09%09%09%09if%20%28%22scrollBy%22%20in%20this.EW%29%20%7B%0A%09%09%09%09%09this.EW.scrollBy%28this.cSpeedX%2C%200%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09this.EW.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09setTimeout%28function%20%28self%29%20%7B%0A%09%09%09self._mtimer%20%3D%20false%3B%0A%09%09%7D%2C%2020%2C%20this%29%3B%0A%09%7D%2C%0A%09isText%20%3A%20function%20%28event%29%20%7B%0A%09%09return%20event.explicitOriginalTarget.nodeType%20%3D%3D%3D%20document.TEXT_NODE%3B%0A%09%7D%2C%0A%09isImage%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.target%20instanceof%20Ci.nsIImageLoadingContent%29%0A%09%09%09return%20event.target%3B%0A%09%09else%0A%09%09%09return%20null%3B%0A%09%7D%2C%0A%09isIgnore%20%3A%20function%20%28aNode%29%20%7B%0A%09%09while%20%28aNode%29%20%7B%0A%09%09%09var%20name%20%3D%20aNode.nodeName.toLowerCase%28%29%3B%0A%09%09%09if%20%28name%20%3D%3D%3D%20%22html%22%29%0A%09%09%09%09return%20false%3B%0A%09%09%09if%20%28/%28scrollbar%7Cselect%7Coption%7Cembed%7Cobject%7Ctree%7Capplet%7Cstatusbar%29/.test%28name%29%29%0A%09%09%09%09return%20true%3B%0A%09%09%09aNode%20%3D%20aNode.parentNode%3B%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%2C%0A%09isParentClickableNode%20%3A%20function%20%28aNode%29%20%7B%0A%09%09if%20%28%21aNode%29%0A%09%09%09return%20null%3B%0A%09%09var%20d%20%3D%20aNode.ownerDocument%3B%0A%09%09try%20%7B%0A%09%09%09var%20xpathResult%20%3D%20d.evaluate%28%0A%09%09%09%09%09/*%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%20and%20@href%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C*/%0A%09%09%09%09%09%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C%0A%09%09%09%09%09aNode%2C%0A%09%09%09%09%09this.NSResolver%2C%0A%09%09%09%09%09XPathResult.FIRST_ORDERED_NODE_TYPE%2C%0A%09%09%09%09%09null%29%3B%0A%09%09%7D%20catch%20%28e%29%20%7B%0A%09%09%09return%20null%3B%0A%09%09%7D%0A%09%09return%20xpathResult.singleNodeValue%3B%0A%09%7D%2C%0A%09NSResolver%20%3A%20%7B%0A%09%09lookupNamespaceURI%20%3A%20function%20%28aPrefix%29%20%7B%0A%09%09%09switch%20%28aPrefix%29%20%7B%0A%09%09%09case%20%27xul%27%3A%0A%09%09%09%09return%20%27http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%27%3B%0A%09%09%09case%20%27html%27%3A%0A%09%09%09case%20%27xhtml%27%3A%0A%09%09%09%09return%20%27http%3A//www.w3.org/1999/xhtml%27%3B%0A%09%09%09case%20%27xlink%27%3A%0A%09%09%09%09return%20%27http%3A//www.w3.org/1999/xlink%27%3B%0A%09%09%09default%3A%0A%09%09%09%09return%20%27%27%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09isParentEditableNode%20%3A%20function%20%28node%29%20%7B%0A%09%09try%20%7B%0A%09%09%09if%20%28node.ownerDocument.designMode%20%3D%3D%3D%20%27on%27%29%0A%09%09%09%09return%20node%3B%0A%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%0A%09%09while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09if%20%28%21%28node%20instanceof%20Ci.nsIDOMNSEditableElement%29%29%0A%09%09%09%09%09throw%200%3B%0A%09%09%09%09node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%09%09%09%09return%20node%3B%0A%09%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%09%09%09node%20%3D%20node.parentNode%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%2C%0A%09isParentDraggableNode%20%3A%20function%20%28node%29%20%7B%0A%09%09while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%09%09%09if%20%28node.getAttribute%28%27draggable%27%29%20%3D%3D%3D%20%27true%27%29%0A%09%09%09%09return%20node%3B%0A%09%09%09node%20%3D%20node.parentNode%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%2C%0A%09isVideoControl%20%3A%20function%20%28node%29%20%7B%0A%09%09if%20%28/%5E%28audio%7Cvideo%29%24/i.test%28node.localName%29%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09while%20%28i%20%3C%20node.childNodes.length%29%20%7B%0A%09%09%09%09var%20child%20%3D%20node.childNodes%5Bi%5D%3B%0A%09%09%09%09if%20%28child.hasAttribute%28%27controls%27%29%20%26%26%20child.getAttribute%28%27controls%27%29%20%3D%3D%3D%20%27controls%27%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%09i++%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%2C%0A%09button%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Mouse%20button%20%28L%20M%20R%29%3A%20%22%2C%20%22LMR%22.substr%28btnPref%28%22MouseButton%22%29%2C%201%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09switch%20%28value.toUpperCase%28%29%29%20%7B%0A%09%09case%20%22M%22%3A%0A%09%09%09value%20%3D%201%3B%0A%09%09%09break%3B%0A%09%09case%20%22R%22%3A%0A%09%09%09value%20%3D%202%3B%0A%09%09%09break%3B%0A%09%09default%3A%0A%09%09case%20%22L%22%3A%0A%09%09%09value%20%3D%200%3B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%09sIP%28%22MouseButton%22%2C%20value%29%3B%0A%09%7D%2C%0A%09threshold%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Stop%20GrabScroll%20if%20mouse%20button%20is%20pressed%20longer%20than%20this%20time%20%28In%20milliseconds%29.%22%2C%20btnPref%28%22Timer%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09let%20timer%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28timer%20%3C%3D%200%20%7C%7C%20%21timer%29%0A%09%09%09timer%20%3D%201000%3B%0A%09%09sIP%28%22Timer%22%2C%20timer%29%3B%0A%09%7D%2C%0A%09moverate%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Drag%20direction%20and%20speed%3A%5Cn%20Negative%20or%20positive%20values.%22%2C%20btnPref%28%22MoveRate%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09let%20moveRate%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21moveRate%29%0A%09%09%09moveRate%20%3D%20-1%3B%0A%09%09sIP%28%22MoveRate%22%2C%20moveRate%29%3B%0A%09%7D%2C%0A%09inertiaToggle%20%3A%20function%20%28%29%20%7B%0A%09%09let%20inertia%20%3D%20%21btnPref%28%22InertiaEnabled%22%29%3B%0A%09%09sBP%28%22InertiaEnabled%22%2C%20inertia%29%3B%0A%09%7D%2C%0A%09inertiaThreshold%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20threshold%3A%20%22%2C%20btnPref%28%22InertiaThreshold%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09let%20inertiaThreshold%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21inertiaThreshold%29%0A%09%09%09inertiaThreshold%20%3D%2020%3B%0A%09%09sIP%28%22InertiaThreshold%22%2C%20inertiaThreshold%29%3B%0A%09%7D%2C%0A%09inertiarate%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20speed%3A%20%22%2C%20btnPref%28%22InertiaRate%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09let%20inertiaRate%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21inertiaRate%29%0A%09%09%09inertiaRate%20%3D%2050%3B%0A%09%09sIP%28%22InertiaRate%22%2C%20inertiaRate%29%3B%0A%09%7D%2C%0A%09clickable%20%3A%20function%20%28%29%20%7B%0A%09%09let%20notClicableLink%20%3D%20%21btnPref%28%22NotClicableLink%22%29%3B%0A%09%09sBP%28%22NotClicableLink%22%2C%20notClicableLink%29%3B%0A%09%7D%2C%0A%09getScrollView%20%3A%20function%20%28event%29%20%7B%0A%09%09var%20NS%2C%0A%09%09EW%2C%0A%09%09NSEW%3B%0A%09%09NS%20%3D%20EW%20%3D%20NSEW%20%3D%20null%3B%0A%09%09var%20_scrollingView%20%3D%20null%3B%0A%09%09var%20overflowx%2C%0A%09%09overflowy%2C%0A%09%09ox%2C%0A%09%09oy%3B%0A%09%09var%20scw%2C%0A%09%09sch%2C%0A%09%09horz%2C%0A%09%09vert%3B%0A%09%09var%20doc%2C%0A%09%09style%3B%0A%09%09var%20borderTop%3B%0A%09%09var%20borderBottom%3B%0A%09%09var%20borderLeft%3B%0A%09%09var%20borderRight%3B%0A%09%09if%20%28event.originalTarget.ownerDocument.contentType%20%3D%3D%3D%20%22application/xml%22%29%20%7B%0A%09%09%09_scrollingView%20%3D%20event.originalTarget.ownerDocument.defaultView%3B%0A%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%09%09%09%09if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09NSEW%20%3D%20_scrollingView%3B%0A%09%09%09%09%09NS%20%3D%20_scrollingView%3B%0A%09%09%09%09%7D%0A%09%09%09%09EW%20%3D%20_scrollingView%3B%0A%09%09%09%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09NS%20%3D%20_scrollingView%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28_scrollingView%20%3D%20event.originalTarget%3B%20_scrollingView%3B%20_scrollingView%20%3D%20_scrollingView.parentNode%29%20%7B%0A%09%09%09%09if%20%28_scrollingView%20instanceof%20HTMLElement%29%20%7B%0A%09%09%09%09%09if%20%28_scrollingView.localName.toUpperCase%28%29%20%3D%3D%3D%20%22HTML%22%20%7C%7C%0A%09%09%09%09%09%09_scrollingView.localName.toUpperCase%28%29%20%3D%3D%3D%20%22BODY%22%29%20%7B%0A%09%09%09%09%09%09_scrollingView%20%3D%20_scrollingView.ownerDocument.defaultView%3B%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%20%26%26%0A%09%09%09%09%09%09%09_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%09%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.frameElement%20%26%26%20%21NS%20%26%26%20%21EW%20%26%26%20%21NSEW%29%20%7B%0A%09%09%09%09%09%09%09return%20this.getScrollView%28%7B%0A%09%09%09%09%09%09%09%09originalTarget%20%3A%20_scrollingView.frameElement%0A%09%09%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28_scrollingView.localName.toLowerCase%28%29%20%3D%3D%3D%20%22select%22%29%20%7B%0A%09%09%09%09%09%09_scrollingView.parentNode.focus%28%29%3B%0A%09%09%09%09%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09overflowx%20%3D%20%22%22%3B%0A%09%09%09%09%09overflowy%20%3D%20%22%22%3B%0A%09%09%09%09%09ox%20%3D%20true%3B%0A%09%09%09%09%09oy%20%3D%20true%3B%0A%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09doc%20%3D%20_scrollingView.ownerDocument%3B%0A%09%09%09%09%09%09style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%09%09%09%09%09%09overflowx%20%3D%20style.getPropertyValue%28%22overflow-x%22%29%3B%0A%09%09%09%09%09%09ox%20%3D%20overflowx%20%21%3D%3D%20%22hidden%22%20%26%26%20overflowx%20%21%3D%3D%20%22visible%22%3B%0A%09%09%09%09%09%09overflowy%20%3D%20style.getPropertyValue%28%22overflow-y%22%29%3B%0A%09%09%09%09%09%09oy%20%3D%20overflowy%20%21%3D%3D%20%22hidden%22%20%26%26%20overflowy%20%21%3D%3D%20%22visible%22%3B%0A%09%09%09%09%09%7D%20catch%20%28ex%29%20%7B%7D%0A%09%09%09%09%09borderTop%20%3D%200%3B%0A%09%09%09%09%09borderBottom%20%3D%200%3B%0A%09%09%09%09%09borderLeft%20%3D%200%3B%0A%09%09%09%09%09borderRight%20%3D%200%3B%0A%09%09%09%09%09if%20%28/%5E%28table%7Ctd%7Cth%29%24/i.test%28_scrollingView.localName%29%29%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09doc%20%3D%20_scrollingView.ownerDocument%3B%0A%09%09%09%09%09%09%09style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%09%09%09%09%09%09%09borderTop%20%3D%20style.getPropertyValue%28%22border-top-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderBottom%20%3D%20style.getPropertyValue%28%22border-bottom-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderLeft%20%3D%20style.getPropertyValue%28%22border-left-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderRight%20%3D%20style.getPropertyValue%28%22border-right-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28ex%29%20%7B%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09scw%20%3D%20_scrollingView.clientWidth%3B%0A%09%09%09%09%09horz%20%3D%20ox%20%26%26%20scw%20%21%3D%3D%200%20%26%26%0A%09%09%09%09%09%09scw%20+%20borderLeft%20+%20borderRight%20%3C%20_scrollingView.scrollWidth%3B%0A%09%09%09%09%09sch%20%3D%20_scrollingView.clientHeight%3B%0A%09%09%09%09%09vert%20%3D%20oy%20%26%26%20sch%20%21%3D%3D%200%20%26%26%0A%09%09%09%09%09%09sch%20+%20borderTop%20+%20borderBottom%20%3C%20_scrollingView.scrollHeight%3B%0A%09%09%09%09%09if%20%28horz%20%26%26%20vert%29%20%7B%0A%09%09%09%09%09%09NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28horz%29%20%7B%0A%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28vert%29%20%7B%0A%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20//%20for%0A%09%09%7D%0A%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%7D%0A%7D%3B%0A%0Afunction%20scrolling%28aEvt%2C%20aSelf%29%20%7B%0A%09let%20Start%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%09aSelf.scroll2%28aEvt%29%3B%0A%09aSelf.cScroll%20%3D%20setTimeout%28arguments.callee%2C%0A%09%09%09Math.max%2825%20-%20%28%28new%20Date%28%29%29.getTime%28%29%20-%20Start%29%2C%200%29%2C%20aEvt%2C%20aSelf%29%3B%0A%7D%0A%0Aif%20%28btnPref%28%22GrabScrollEnabled%22%29%29%0A%09GrabScroll.initGrabScroll%28%29%3B%0Athis.onDestroy%20%3D%20function%20%28aReason%29%20%7B%0A%09%28aReason%20%3D%3D%3D%20%22update%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22delete%22%29%20%26%26%20GrabScroll.uninitGrabScroll%28%29%3B%0A%7D%3B%0A%0Afunction%20sBP%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%20//Set%20Boolean%20Pref%0A%09Services.prefs.setBoolPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%2C%20aVal%29%3B%0A%7D%0A%0Afunction%20sIP%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%20//Set%20Integer%20Pref%0A%09Services.prefs.setIntPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%2C%20aVal%29%3B%0A%7D%0A%0Afunction%20gBP%28aKey%2C%20aBranch%29%20%7B%20//Get%20Boolean%20Pref%0A%09return%20Services.prefs.getBoolPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%29%3B%0A%7D%0A%0Athis.toggleGrabScroll%20%3D%20function%20%28%29%20%7B%0A%09let%20state%20%3D%20btnPref%28%22GrabScrollEnabled%22%29%3B%0A%09sBP%28%22GrabScrollEnabled%22%2C%20%21state%29%3B%0A%09notifyme%28null%2C%20%22GrabScroll%20%22%20+%20%28btnPref%28%22GrabScrollEnabled%22%29%20%3F%20%22ENABLED%22%20%3A%20%22DISABLED%22%29%2C%20%22%22%29%3B%0A%09self.init%28%29%3B%0A%7D%3B%0A%0Afunction%20%24XML%28aXML%29%20%7B%20//%20Return%20parsed%20XML%0A%09aXML%20%3D%20aXML.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%20//%20Linearize%20XML%0A%09return%20%28new%20DOMParser%29.parseFromString%28aXML%2C%20%22application/xml%22%29.documentElement%3B%0A%7D%0A%0Afunction%20notifyme%28aImg%2C%20aTitle%2C%20aMsg%29%20%7B%20//%20Notification%20function%0A%09let%20notFeature%20%3D%20gBP%28%22notification.feature.enabled%22%2C%20true%29%3B%0A%09try%20%7B%0A%09%09let%20ASrv%20%3D%20Cc%5B%27@mozilla.org/alerts-service%3B1%27%5D.getService%28Ci.nsIAlertsService%29%3B%0A%09%09if%20%28%21notFeature%29%20%7B%0A%09%09%09sBP%28%22notification.feature.enabled%22%2C%20true%2C%20true%29%3B%0A%09%09%09setTimeout%28function%20%28%29%20%7B%0A%09%09%09%09ASrv.showAlertNotification%28aImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%09%09%09%09sBP%28%22notification.feature.enabled%22%2C%20false%2C%20true%29%3B%0A%09%09%09%7D%2C%20100%29%3B%0A%09%09%7D%20else%0A%09%09%09ASrv.showAlertNotification%28aImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%09%7D%20catch%20%28aEr%29%20%7B%0A%09%09let%20win%20%3D%20Components.classes%5B%27@mozilla.org/embedcomp/window-watcher%3B1%27%5D.%0A%09%09%09getService%28Components.interfaces.nsIWindowWatcher%29.%0A%09%09%09openWindow%28null%2C%20%27chrome%3A//global/content/alerts/alert.xul%27%2C%0A%09%09%09%09%27_blank%27%2C%20%27chrome%2Ctitlebar%3Dno%2Cpopup%3Dyes%27%2C%20null%29%3B%0A%09%09win.arguments%20%3D%20%5BaImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%27%27%5D%3B%0A%09%7D%0A%7D%0A%0Athis.onclick%20%3D%20function%20%28aEvt%29%20%7B%0A%09if%20%28aEvt.button%20%3D%3D%3D%201%20%26%26%20%21aEvt.shiftKey%20%26%26%20%21aEvt.ctrlKey%20%26%26%20%21aEvt.altKey%29%20%7B%0A%09%09self.appendChild%28%24XML%28%0A%09%09%09%09%22%3Cmenupopup%20xmlns%3D%5C%22%22%20+%20xulns%20+%20%22%5C%22%20id%3D%5C%22%22%20+%20_UID%20+%20%22-mpop%5C%22%22%20+%0A%09%09%09%09%22%20onpopuphiding%3D%5C%22this.parentNode.init%28%29%3B%5C%22%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Button%20to%20start%20the%20GrabScroll%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27button%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20tooltiptext%3D%5C%22Choose%20the%20mouse%20button%20with%20which%20to%20start%20the%20GrabScroll.%5C%22/%3E%22%20+%0A%09%09%09%09%22%3Cmenuseparator/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22GrabScroll%20start%20threshold%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27threshold%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20tooltiptext%3D%5C%22Time%20in%20milliseconds%20after%20which%20the%20GrabScroll%20is%20canceled%20if%20the%20cursor%20is%20not%20moved.%5C%22/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22GrabScroll%20speed%20%26amp%3B%20direction%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27moverate%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20tooltiptext%3D%5C%22Drag%20direction%20and%20speed.%20With%20a%20negative%20value%2C%20the%20page%20content%20moves%20in%20the%20same%20direction%20as%20the%20cursor.%5C%22/%3E%22%20+%0A%09%09%09%09%22%3Cmenuseparator/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Scroll%20inertia%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27inertiaToggle%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20checked%3D%5C%22%22%20+%20btnPref%28%22InertiaEnabled%22%29%20+%20%22%5C%22%22%20+%0A%09%09%09%09%22%20type%3D%5C%22checkbox%5C%22%20/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Scroll%20inertia%20threshold%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27inertiaThreshold%27%29%3Bevent.stopPropagation%28%29%3B%5C%22/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Scroll%20inertia%20speed%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27inertiarate%27%29%3Bevent.stopPropagation%28%29%3B%5C%22/%3E%22%20+%0A%09%09%09%09%22%3Cmenuseparator/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Cancel%20GrabScroll%20on%20images%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27NotImage%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20tooltiptext%3D%5C%22Do%20not%20start%20GrabScroll%20if%20cursor%20is%20over%20an%20image.%5C%22%22%20+%0A%09%09%09%09%22%20checked%3D%5C%22%22%20+%20btnPref%28%22NotImage%22%29%20+%20%22%5C%22%22%20+%0A%09%09%09%09%22%20type%3D%5C%22checkbox%5C%22%20/%3E%22%20+%0A%09%09%09%09%22%3Cmenuitem%20label%3D%5C%22Cancel%20GrabScroll%20on%20links%5C%22%22%20+%0A%09%09%09%09%22%20oncommand%3D%5C%22this.parentNode.parentNode.cmds%28%27clickable%27%29%3Bevent.stopPropagation%28%29%3B%5C%22%22%20+%0A%09%09%09%09%22%20tooltiptext%3D%5C%22Do%20not%20start%20GrabScroll%20if%20cursor%20is%20over%20a%20clickable%20link.%5C%22%22%20+%0A%09%09%09%09%22%20checked%3D%5C%22%22%20+%20btnPref%28%22NotClicableLink%22%29%20+%20%22%5C%22%22%20+%0A%09%09%09%09%22%20type%3D%5C%22checkbox%5C%22%20/%3E%22%20+%0A%09%09%09%09%22%3C/menupopup%3E%22%29%29%3B%0A%09%09document.getElementById%28_UID%20+%20%22-mpop%22%29.openPopup%28self%2C%20%22after_start%22%2C%20null%2C%20null%2C%20false%2C%20null%2C%20null%29%3B%0A%09%7D%0A%7D%3B%0A%0Athis.cmds%20%3D%20function%20%28aCmd%29%20%7B%0A%09switch%20%28aCmd%29%20%7B%0A%09case%20%22button%22%3A%0A%09%09GrabScroll.button%28%29%3B%0A%09%09break%3B%0A%09case%20%22threshold%22%3A%0A%09%09GrabScroll.threshold%28%29%3B%0A%09%09break%3B%0A%09case%20%22moverate%22%3A%0A%09%09GrabScroll.moverate%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiaToggle%22%3A%0A%09%09GrabScroll.inertiaToggle%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiaThreshold%22%3A%0A%09%09GrabScroll.inertiaThreshold%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiarate%22%3A%0A%09%09GrabScroll.inertiarate%28%29%3B%0A%09%09break%3B%0A%09case%20%22clickable%22%3A%0A%09%09GrabScroll.clickable%28%29%3B%0A%09%09break%3B%0A%09case%20%22NotImage%22%3A%0A%09%09sBP%28%22NotImage%22%2C%20%21btnPref%28%22NotImage%22%29%29%3B%0A%09%09break%3B%0A%09%7D%0A%7D%3B%0A%0Athis.style.opacity%20%3D%20btnPref%28%22GrabScrollEnabled%22%29%20%3F%20%221%22%20%3A%20%22.50%22%3B%0A%0Athis.tooltipText%20%3D%20%22%5Cn%5Ct%22%20+%20%28self.label%20%7C%7C%20self.name%29%20+%20%22%5Cn%5Cn%22%20+%0A%09%22%5CtL%3D%20Enable/Disable%20GrabScroll%5Ct%5Cn%22%20+%0A%09%22%5CtM%3D%20Open%20Options%20menu%5Ct%5Cn%5Cn%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.toggleGrabScroll%28%29%3B%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 |
turbot > 20-04-2016 22:12:17 |
Mishania Выделить код Код: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%3EGrabScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAACUklEQVQ4jaWUzUsbQRjGn8nHhE1J0ICuEbOY2s0HBETxHoJHlVw8+Be4YtCTh5CLNESSowFzkMXiCtVeIpqWEA8t9FoW91a855TkD8jx6WUVSWtQOvCc5sdveGfed4Axi6Tn9vb2Q7PZfE/SM44dK2k0GrFIJFKPRCL1RqMRe7OMpHAcZ0LX9T0hxL0Q4l7X9T3HcSZIireI/NlsdkNK2QFgA7CllJ1sNrtB0v9aiUJynuQqSWMkq+6eMrYckn6S80KInwAeADwoivJLCPFbSnkvpXR8Pt8PV+b/q0ySHsdxJnK53BrJBIDvAO4A3MVisU9er7c9PT39eXJy8ksgEGiTTORyuTX3zjxPEtM051KplCGlvHZFX5eXl89qtdrHcrlcrVar5UqlcrS0tHQO4BvJhJTyOpVKGaZpzpH0oNVqxVVVPRJCdADcuKJmJpM5IKmSfOdGzWQyBwCaLnMjhOioqlpptVpx2La9kM/na4qiXAC4cqGrZDK5TzL0rPxQMpncf84oinKRz+drtm0vgKSv1+stFovFHU3T6i5kpdPpXZJTJENuptLp9C4Ai2RC07R6sVjc6fV6iyR9j6f5hsOhZlnWpisyw+HwcTweLz9POBw+BmCSTFiWtTkcDrUnycjzh1zRCYBTAOcjOQVwQjLhsi93OcnZfzTiaGZfFIzI/IVCYT0ajV4CaANoR6PRy0KhsP7qEXkss9/vz5RKpa1gMHgYDAYPS6XSVr/fn3nT0LoyT7fb1Q3D2DYMY7vb7er/8yd5B4PBymAwWCHpHcf+AbaLjoOEBHabAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/**%0A%20*%20%20Button%20based%20on%20a%20script%20created%20for%20userChrome.js%20extension.%20http%3A//userchromejs.mozdev.org/%0A%20*%20%20Author%3A%20Alice0775%20https%3A//github.com/alice0775%0A%20*%20%20Source%3A%20https%3A//github.com/alice0775/userChrome.js/blob/master/GrabScroll_Fx29.uc.xul%0A%20*/%0Avar%20_UID%20%3D%20%22grab_scroll%22%20+%20%28self.id%29.split%28%22custombuttons%22%29%5B1%5D%3B%0A%0Avar%20_LTN%20%3D%20%22listeners_%22%20+%20_UID%3B%0A%0Avar%20PREF_BRANCH%20%3D%20%22extensions.custombuttons.GrabScroll.Id%22%20+%20%28self.id%29.split%28%22-button%22%29%5B1%5D%20+%20%22.%22%3B%0A%0Aif%20%28%21%28%22Services%22%20in%20window%29%29%0A%09Cu.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%0A//START//%20Default%20preferences%20management%0AbtnPref.root%20%3D%20PREF_BRANCH%3B%0A%0AbtnPref.defaults%20%3D%20%7B%0A%09%22GrabScrollEnabled%22%20%3A%20true%2C%0A%09%22MouseButton%22%20%3A%200%2C%0A%09%22MoveRate%22%20%3A%20-1%2C%0A%09%22Timer%22%20%3A%20500%2C%0A%09%22InertiaEnabled%22%20%3A%20false%2C%0A%09%22InertiaThreshold%22%20%3A%2020%2C%0A%09%22InertiaRate%22%20%3A%2050%2C%0A%09%22NotClicableLink%22%20%3A%20true%2C%0A%09%22NotImage%22%20%3A%20false%2C%0A%09%22Tolerance%22%20%3A%203%2C%0A%09%22ToleranceWhenNoHScroll%22%20%3A%205%0A%7D%3B%0A%0Avar%20branch%20%3D%20Services.prefs.getDefaultBranch%28btnPref.root%29%3B%0Afor%20%28var%5Bkey%2C%20val%5Din%20Iterator%28btnPref.defaults%29%29%20%7B%0A%09switch%20%28typeof%20val%29%20%7B%0A%09%09case%20%22boolean%22%3A%0A%09%09%09branch.setBoolPref%28key%2C%20val%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22number%22%3A%0A%09%09%09branch.setIntPref%28key%2C%20val%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22string%22%3A%20%7B%0A%09%09%09var%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%09%09%09.createInstance%28Ci.nsISupportsString%29%3B%0A%09%09%09str.data%20%3D%20val%3B%0A%09%09%09branch.setComplexValue%28%28key%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%09%09%7D%0A%09%09%09break%3B%0A%09%7D%0A%7D%3B%0A%0AbtnPref.observe%20%3D%20function%20%28aPrefs%2C%20aCallback%29%20%7B%0A%09var%20%7B%0A%09%09root%0A%09%7D%0A%09%09%20%3D%20btnPref%3B%0A%09function%20observe%28subject%2C%20topic%2C%20data%29%20%7B%0A%09%09if%20%28topic%20%21%3D%3D%20%22nsPref%3Achanged%22%29%0A%09%09%09return%3B%0A%09%09var%20pref%20%3D%20data.slice%28root.length%29%3B%0A%09%09if%20%28aPrefs.indexOf%28pref%29%20%3D%3D%3D%20-1%29%0A%09%09%09return%3B%0A%09%09aCallback%28pref%29%3B%0A%09%7D%0A%09Services.prefs.addObserver%28root%2C%20observe%2C%20false%29%3B%0A%09unload%28function%20%28%29Services.prefs.removeObserver%28root%2C%20observe%29%29%3B%0A%7D%3B%0A%0Afunction%20btnPref%28aKey%29%20%7B%0A%09var%20%7B%0A%09%09branch%2C%0A%09%09defaults%0A%09%7D%0A%09%09%20%3D%20btnPref%3B%0A%09if%20%28%21branch%29%0A%09%09branch%20%3D%20Services.prefs.getBranch%28btnPref.root%29%3B%0A%09switch%20%28typeof%20defaults%5BaKey%5D%29%20%7B%0A%09case%20%22boolean%22%3A%0A%09%09return%20branch.getBoolPref%28aKey%29%3B%0A%09%09break%3B%0A%09case%20%22number%22%3A%0A%09%09return%20branch.getIntPref%28aKey%29%3B%0A%09%09break%3B%0A%09case%20%22string%22%3A%0A%09%09return%20branch.getComplexValue%28aKey%2C%20Ci.nsISupportsString%29.data%3B%0A%09%09break%3B%0A%09%7D%0A%09return%20null%3B%0A%7D%0A%0Afunction%20unload%28aCallback%2C%20aContainer%29%20%7B%0A%09var%20unloaders%20%3D%20unload.unloaders%3B%0A%09if%20%28unloaders%20%3D%3D%3D%20null%29%0A%09%09unloaders%20%3D%20unload.unloaders%20%3D%20%5B%5D%3B%0A%09if%20%28aCallback%20%3D%3D%3D%20null%29%20%7B%0A%09%09unloaders.slice%28%29.forEach%28function%20%28unloader%29unloader%28%29%29%3B%0A%09%09%09unloaders.length%20%3D%200%3B%0A%09%7D%0A%09if%20%28aContainer%20%21%3D%3D%20null%29%20%7B%0A%09%09aContainer.addEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%09%09var%20origCallback%20%3D%20aCallback%3B%0A%09%09callback%20%3D%20function%20%28%29%20%7B%0A%09%09%09aContainer.removeEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%09%09%09origCallback%28%29%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%0A%09function%20unloader%28%29%20%7B%0A%09%09try%20%7B%0A%09%09%09callback%28%29%3B%0A%09%09%7D%20catch%20%28err%29%20%7B%0A%09%09%09Components.utils.reportError%28err%29%3B%0A%09%09%7D%0A%09%7D%0A%09unloaders.push%28unloader%29%3B%0A%09function%20removeUnloader%28%29%20%7B%0A%09%09var%20index%20%3D%20unloaders.indexOf%28unloader%29%3B%0A%09%09if%20%28index%20%21%3D%3D%20-1%29%0A%09%09%09unloaders.splice%28index%2C%201%29%3B%0A%09%7D%0A%09return%20removeUnloader%3B%0A%7D%0A//END//%20Default%20preferences%20management%0A%0Avar%20GrabScroll%20%3D%20%7B%0A%09mStatus%20%3A%200%2C%20//0%3AIdle%2C%201%3A%20during%20mousedown%2C%202%3A%20during%20mousemove%2C%203%3A%20mouseup%20After%20scrolling%0A%09mLastX%20%3A%200%2C%0A%09mLastY%20%3A%200%2C%0A%09_target%20%3A%20null%2C%20//%20Element%20the%20mouse%20is%20pointing%0A%09_target2%20%3A%20null%2C%20//%20Element%20the%20mouse%20is%20pointing%0A%09_isImage%20%3A%20false%2C%0A%09_timer%20%3A%200%2C%20//%20Save%20time%20when%20mouseup%20to%20determine%20the%20threshold.%0A%09_mtimer%20%3A%20false%2C%0A%09cScroll%20%3A%20false%2C%0A%09cSpeedX%20%3A%200%2C%0A%09cSpeedY%20%3A%200%2C%0A%09_doc%20%3A%20null%2C%0A%09_MOVERATEpZoom%20%3A%201%2C%0A%09_window%20%3A%20null%2C%0A%09initGrabScroll%20%3A%20function%20%28%29%20%7B%0A%09%09if%20%28GrabScroll.activeBrowser%28%29.mPanelContainer%29%20%7B%0A%09%09%09this._window%20%3D%20GrabScroll.activeBrowser%28%29.mPanelContainer%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this._window%20%3D%20document.getElementById%28%27content%27%29%3B%0A%09%09%7D%0A%09%09this._window.setCapture%28%29%3B%0A%09%09if%20%28%21window%5B_LTN%5D%29%20%7B%0A%09%09%09this._window.addEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.addEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.addEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09gBrowser.addEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%09%09%09window%5B_LTN%5D%20%3D%20true%3B%0A%09%09%7D%0A%09%7D%2C%0A%09uninitGrabScroll%20%3A%20function%20%28%29%20%7B%0A%09%09if%20%28this._window%29%20%7B%0A%09%09%09this._window.removeEventListener%28%22mousedown%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.removeEventListener%28%22click%22%2C%20this%2C%20true%29%3B%0A%09%09%09this._window.removeEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%09%09%09gBrowser.removeEventListener%28%27pagehide%27%2C%20this%2C%20false%29%3B%0A%09%09%09this.mStatus%20%3D%3D%3D%200%3B%0A%09%09%09this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%0A%09%09delete%20window%5B_LTN%5D%3B%0A%09%7D%2C%0A%09activeBrowser%20%3A%20function%20%28%29%20%7B%0A%09%09return%20%28%27SplitBrowser%27%20in%20window%20%3F%20SplitBrowser.activeBrowser%20%3A%20null%29%0A%09%09%20%7C%7C%20gBrowser%3B%0A%09%7D%2C%0A%09handleEvent%20%3A%20function%20%28event%29%20%7B%0A%09%09event%20%3D%20new%20XPCNativeWrapper%28event%29%3B%0A%09%09switch%20%28event.type%29%20%7B%0A%09%09case%20%22mousedown%22%3A%0A%09%09%09if%20%28this.cScroll%29%20%7B%0A%09%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09%09this.cSpeedX%20%3D%20this.cSpeedY%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09if%20%28btnPref%28%22GrabScrollEnabled%22%29%20%26%26%0A%09%09%09%09%21event.shiftKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.altKey%29%20%7B%0A%09%09%09%09this.grabStart%28event%29%3B%0A%09%09%09%7D%20else%20if%20%28%21btnPref%28%22GrabScrollEnabled%22%29%20%26%26%0A%09%09%09%09event.shiftKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.altKey%29%20%7B%0A%09%09%09%09this.grabStart%28event%29%3B%0A%09%09%09%7D%0A%09%09%09break%3B%0A%09%09case%20%22mousemove%22%3A%0A%09%09%09this.mousemove%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22click%22%3A%0A%09%09%09this.click%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%22mouseup%22%3A%0A%09%09%09this.mouseup%28event%29%3B%0A%09%09%09break%3B%0A%09%09case%20%27pagehide%27%3A%0A%09%09%09this._doc%20%3D%20null%3B%0A%09%09%09this._target%20%3D%20null%3B%0A%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09this._isImage%20%3D%20null%3B%0A%09%09%09this.NS%20%3D%20this.EW%20%3D%20this.NSEW%20%3D%20null%3B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%2C%0A%09grabStart%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28this.mStatus%20%3D%3D%3D%203%29%0A%09%09%09this.mStatus%20%3D%200%3B%0A%09%09//%20Do%20not%20start%20GrabScroll%20if%20you%20fire%20the%20mouse%20down%20continuously.%0A%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%29%20%7B%0A%09%09%09if%20%28Math.abs%28this.mLastX%20-%20event.screenX%29%20%3C%205%20%26%26%0A%09%09%09%09Math.abs%28this.mLastY%20-%20event.screenY%29%20%3C%205%29%0A%09%09%09%09return%0A%09%09%7D%0A%09%09var%20doc%20%3D%20event.originalTarget.ownerDocument%3B%0A%09%09if%20%28%21doc%29%0A%09%09%09return%3B%0A%09%09if%20%28doc.contentType%20%3D%3D%3D%20%27application/vnd.mozilla.xul+xml%27%29%0A%09%09%09return%3B%0A%09%09this._doc%20%3D%20doc%3B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%200%29%20%7B%0A%09%09%09this._target%20%3D%20event.originalTarget%3B%0A%09%09%09if%20%28/%5E%28html%7Cbody%29%24/.test%28this._target.localName.toLowerCase%28%29%29%20%7C%7C%20this._target.clientHeight%20%3E%2030000%29%0A%09%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09else%20if%20%28/div/.test%28this._target.localName.toLowerCase%28%29%29%20%26%26%20this._target.clientHeight%20%3E%201000%29%0A%09%09%09%09this._target2%20%3D%20null%3B%0A%09%09%09else%0A%09%09%09%09this._target2%20%3D%20this._target%3B%0A%09%09%09//%20Editable%20element%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentEditableNode%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Draggable%20element%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentDraggableNode%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Factors%20to%20be%20steamed%20does%20not%20start%20the%20GrabScroll%0A%09%09%09if%20%28this.isIgnore%28this._target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Video%20control%20does%20not%20start%20the%20GrabScroll%0A%09%09%09if%20%28this.isVideoControl%28event.target%29%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Clickable%20links%20does%20not%20start%20GrabScroll%0A%09%09%09if%20%28this.isParentClickableNode%28this._target%29%29%20%7B%0A%09%09%09%09if%20%28btnPref%28%22NotClicableLink%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09//%20Blocking%20of%20DragStart%20on%20links%0A%09%09%09%09if%20%28%21%28%27linkDragSelection%27%20in%20window%29%29%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%7D%0A%09%09%09//%20On%20images%0A%09%09%09this._isImage%20%3D%20this.isImage%28event%29%3B%0A%09%09%09if%20%28this._isImage%29%20%7B%0A%09%09%09%09//%20Images%20does%20not%20start%20the%20GrabScroll%0A%09%09%09%09if%20%28btnPref%28%22NotImage%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09//%20DragStart%20block%20on%20images%0A%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%7D%0A%09%09%09//Compativility%20with%20ResizeTa%0A%09%09%09var%20target%20%3D%20this._target%3B%0A%09%09%09while%20%28target%29%20%7B%0A%09%09%09%09if%20%28%22getAttribute%22%20in%20target%20%26%26%20target.getAttribute%28%22draggable%22%29%20%3D%3D%3D%20%22true%22%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09var%20style%20%3D%20this._doc.defaultView.getComputedStyle%28target%2C%20null%29%3B%0A%09%09%09%09%09if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22cursor%22%29%29%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09else%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22auto%22%29%29%29%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%09%09%09%09target%20%3D%20target.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3E%200%29%20%7B%0A%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%09this._timer%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%09%09%09this.mLastX%20%3D%20event.screenX%3B%0A%09%09%09this.mLastY%20%3D%20event.screenY%3B%0A%09%09%09this.mStatus%20%3D%201%3B%0A%09%09%09this._MOVERATEpZoom%20%3D%20btnPref%28%22MoveRate%22%29%20/%20%28ZoomManager.useFullZoom%20%3F%20ZoomManager.zoom%20%3A%201%29%3B%0A%09%09%09%5Bthis.NS%2C%20this.EW%2C%20this.NSEW%5D%20%3D%20this.getScrollView%28event%29%3B%0A%09%09%09this._window.addEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09adjustedTimer%20%3A%20function%20%28%29%20%7B%0A%09%09var%20magTimer%20%3D%20btnPref%28%22Timer%22%29%3B%0A%09%09return%20magTimer%3B%0A%09%7D%2C%0A%09grabFinish%20%3A%20function%20%28%29%20%7B%0A%09%09this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%09%09var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%09%09if%20%28selCon%29%0A%09%09%09selCon.setDisplaySelection%28selCon.SELECTION_ON%29%3B%0A%09%7D%2C%0A%09mousemove%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28this.mStatus%20%3D%3D%3D%202%20%7C%7C%20this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09var%20x%20%3D%20event.screenX%3B%0A%09%09%09var%20y%20%3D%20event.screenY%3B%0A%09%09%09var%20doc%20%3D%20event.originalTarget.ownerDocument%3B%0A%09%09%09if%20%28this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09%09if%20%28%21this._isImage%20%26%26%0A%09%09%09%09%09%28new%20Date%28%29.getTime%28%29%20-%20this._timer%29%20%3E%20this.adjustedTimer%28%29%29%20%7B%0A%09%09%09%09%09this.grabFinish%28%29%3B%0A%09%09%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28Math.abs%28x%20-%20this.mLastX%29%20%3C%20btnPref%28%22ToleranceWhenNoHScroll%22%29%29%0A%09%09%09%09%09var%20movingh%20%3D%20Math.abs%28x%20-%20this.mLastX%29%20%3E%20Math.abs%28y%20-%20this.mLastY%29%20*%2050%3B%0A%09%09%09%09if%20%28%21this._isImage%20%26%26%20btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%20%26%26%20this.isText%28event%29%20%26%26%20movingh%20%26%26%20%21this.EW%29%20%7B%0A%09%09%09%09%09this.grabFinish%28%29%3B%0A%09%09%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28Math.abs%28x%20-%20this.mLastX%29%20+%20Math.abs%28y%20-%20this.mLastY%29%20%3C%20btnPref%28%22Tolerance%22%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09if%20%28btnPref%28%22MouseButton%22%29%20%3D%3D%3D%200%29%20%7B%0A%09%09%09%09%09var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%09%09%09%09%09if%20%28selCon%29%20%7B%0A%09%09%09%09%09%09var%20selection%20%3D%20selCon.getSelection%28selCon.SELECTION_NORMAL%29%3B%0A%09%09%09%09%09%09selection.removeAllRanges%28%29%3B%0A%09%09%09%09%09%09selCon.setDisplaySelection%28selCon.SELECTION_OFF%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09if%20%28%22ucjsMouseGestures%22%20in%20window%29%20%7B%0A%09%09%09%09%09%09ucjsMouseGestures._isMouseDownR%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09this.mLastX%20%3D%20x%20-%20%28x%20-%20this.mLastX%29%20/%2010%3B%0A%09%09%09%09this.mLastY%20%3D%20y%20-%20%28y%20-%20this.mLastY%29%20/%2010%3B%0A%09%09%09%09this.mStatus%20%3D%202%3B%0A%09%09%09%7D%0A%09%09%09if%20%28this._mtimer%29%0A%09%09%09%09return%3B%0A%09%09%09this.cSpeedX%20%3D%20this._MOVERATEpZoom%20*%20%28x%20-%20this.mLastX%29%3B%0A%09%09%09this.cSpeedY%20%3D%20this._MOVERATEpZoom%20*%20%28y%20-%20this.mLastY%29%3B%0A%09%09%09this.scroll%28event%29%3B%0A%09%09%09this.mLastX%20%3D%20x%3B%0A%09%09%09this.mLastY%20%3D%20y%3B%0A%09%09%7D%0A%09%7D%2C%0A%09getSelconForDoc%20%3A%20function%20getSelconForDoc%28doc%29%20%7B%0A%09%09if%20%28%21doc%29%0A%09%09%09return%20null%3B%0A%09%09var%20aFrame%20%3D%20doc.defaultView%3B%0A%09%09if%20%28%21aFrame%29%0A%09%09%09return%20null%3B%0A%09%09var%20docShell%20%3D%20this.getDocShellForFrame%28aFrame%29%3B%0A%09%09var%20selCon%20%3D%20docShell%0A%09%09%09.QueryInterface%28Ci.nsIInterfaceRequestor%29%0A%09%09%09.getInterface%28Ci.nsISelectionDisplay%29%0A%09%09%09.QueryInterface%28Ci.nsISelectionController%29%3B%0A%09%09return%20selCon%3B%0A%09%7D%2C%0A%09getDocShellForFrame%20%3A%20function%20getDocShellForFrame%28aFrame%29%20%7B%0A%09%09return%20aFrame%0A%09%09.QueryInterface%28Ci.nsIInterfaceRequestor%29%0A%09%09.getInterface%28Ci.nsIWebNavigation%29%0A%09%09.QueryInterface%28Ci.nsIDocShell%29%3B%0A%09%7D%2C%0A%09click%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%202%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%09if%20%28event.button%20%3D%3D%3D%200%20%26%26%20this.mStatus%20%3E%3D%202%20%26%26%20this._doc%20instanceof%20Ci.nsIImageDocument%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%09this.grabFinish%28%29%3B%0A%09%09this.mStatus%20%3D%200%3B%0A%09%7D%2C%0A%09mouseup%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3E%201%29%20%7B%0A%09%09%09event.preventDefault%28%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09this.grabFinish%28%29%3B%0A%09%09%09if%20%28this.mStatus%20%3D%3D%3D%202%29%0A%09%09%09%09this.mStatus%20%3D%203%3B%0A%09%09%09if%20%28btnPref%28%22InertiaEnabled%22%29%20%26%26%0A%09%09%09%09%28Math.abs%28this.cSpeedX%29%20%3E%20btnPref%28%22InertiaThreshold%22%29%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20btnPref%28%22InertiaThreshold%22%29%29%29%20%7B%0A%09%09%09%09if%20%28this.cScroll%29%0A%09%09%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09%09var%20v%20%3D%20btnPref%28%22InertiaRate%22%29%3B%0A%09%09%09%09if%20%28this.cSpeedX%20%3E%200%29%0A%09%09%09%09%09this.cSpeedX%20%3D%20Math.min%28this.cSpeedX%2C%20v%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09this.cSpeedX%20%3D%20Math.max%28this.cSpeedX%2C%20-v%29%3B%0A%09%09%09%09if%20%28this.cSpeedY%20%3E%200%29%0A%09%09%09%09%09this.cSpeedY%20%3D%20Math.min%28this.cSpeedY%2C%20v%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09this.cSpeedY%20%3D%20Math.max%28this.cSpeedY%2C%20-v%29%3B%0A%09%09%09%09this.scroll2%28event%29%3B%0A%09%09%09%09scrolling%28event%2C%20this%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20if%20%28event.button%20%3D%3D%3D%20btnPref%28%22MouseButton%22%29%20%26%26%20this.mStatus%20%3D%3D%3D%201%29%20%7B%0A%09%09%09this.grabFinish%28%29%3B%0A%09%09%09this.mStatus%20%3D%200%3B%0A%09%09%7D%0A%09%7D%2C%0A%09scroll2%20%3A%20function%20%28event%29%20%7B%0A%09%09var%20ay%20%3D%20Math.abs%28this.cSpeedY%29%3B%0A%09%09var%20ax%20%3D%20Math.abs%28this.cSpeedX%29%3B%0A%09%09if%20%28ay%20%3C%201%20%26%26%20ax%20%3C%201%29%20%7B%0A%09%09%09clearTimeout%28this.cScroll%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09this.scroll%28event%29%3B%0A%09%09if%20%28ax%20%3E%3D%20100%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%20100%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%2020%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%2010%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%205%29%0A%09%09%09this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%09%09else%20if%20%28ax%20%3C%201%29%0A%09%09%09this.cSpeedX%20%3D%200%3B%0A%09%09if%20%28ay%20%3E%3D%20100%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%20100%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%2020%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%2010%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%205%29%0A%09%09%09this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%09%09else%20if%20%28ay%20%3C%201%29%0A%09%09%09this.cSpeedY%20%3D%200%3B%0A%09%7D%2C%0A%09scroll%20%3A%20function%20%28event%29%20%7B%0A%09%09this._mtimer%20%3D%20true%3B%0A%09%09if%20%28this.NS%20%26%26%20this.NS%20%3D%3D%3D%20this.EW%29%20%7B%0A%09%09%09if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%09%09%09%09this.NS.scrollBy%28this.cSpeedX%2C%20this.cSpeedY%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09this.NS.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%09%09%09%09this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28this.NS%29%20%7B%0A%09%09%09%09if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%09%09%09%09%09this.NS.scrollBy%280%2C%20this.cSpeedY%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28this.EW%29%20%7B%0A%09%09%09%09if%20%28%22scrollBy%22%20in%20this.EW%29%20%7B%0A%09%09%09%09%09this.EW.scrollBy%28this.cSpeedX%2C%200%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09this.EW.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09setTimeout%28function%20%28self%29%20%7B%0A%09%09%09self._mtimer%20%3D%20false%3B%0A%09%09%7D%2C%2020%2C%20this%29%3B%0A%09%7D%2C%0A%09isText%20%3A%20function%20%28event%29%20%7B%0A%09%09return%20event.explicitOriginalTarget.nodeType%20%3D%3D%3D%20document.TEXT_NODE%3B%0A%09%7D%2C%0A%09isImage%20%3A%20function%20%28event%29%20%7B%0A%09%09if%20%28event.target%20instanceof%20Ci.nsIImageLoadingContent%29%0A%09%09%09return%20event.target%3B%0A%09%09else%0A%09%09%09return%20null%3B%0A%09%7D%2C%0A%09isIgnore%20%3A%20function%20%28aNode%29%20%7B%0A%09%09while%20%28aNode%29%20%7B%0A%09%09%09var%20name%20%3D%20aNode.nodeName.toLowerCase%28%29%3B%0A%09%09%09if%20%28name%20%3D%3D%3D%20%22html%22%29%0A%09%09%09%09return%20false%3B%0A%09%09%09if%20%28/%28scrollbar%7Cselect%7Coption%7Cembed%7Cobject%7Ctree%7Capplet%7Cstatusbar%29/.test%28name%29%29%0A%09%09%09%09return%20true%3B%0A%09%09%09aNode%20%3D%20aNode.parentNode%3B%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%2C%0A%09isParentClickableNode%20%3A%20function%20%28aNode%29%20%7B%0A%09%09if%20%28%21aNode%29%0A%09%09%09return%20null%3B%0A%09%09var%20d%20%3D%20aNode.ownerDocument%3B%0A%09%09try%20%7B%0A%09%09%09var%20xpathResult%20%3D%20d.evaluate%28%0A%09%09%09%09%09/*%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%20and%20@href%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C*/%0A%09%09%09%09%09%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C%0A%09%09%09%09%09aNode%2C%0A%09%09%09%09%09this.NSResolver%2C%0A%09%09%09%09%09XPathResult.FIRST_ORDERED_NODE_TYPE%2C%0A%09%09%09%09%09null%29%3B%0A%09%09%7D%20catch%20%28e%29%20%7B%0A%09%09%09return%20null%3B%0A%09%09%7D%0A%09%09return%20xpathResult.singleNodeValue%3B%0A%09%7D%2C%0A%09NSResolver%20%3A%20%7B%0A%09%09lookupNamespaceURI%20%3A%20function%20%28aPrefix%29%20%7B%0A%09%09%09switch%20%28aPrefix%29%20%7B%0A%09%09%09case%20%27xul%27%3A%0A%09%09%09%09return%20%27http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%27%3B%0A%09%09%09case%20%27html%27%3A%0A%09%09%09case%20%27xhtml%27%3A%0A%09%09%09%09return%20%27http%3A//www.w3.org/1999/xhtml%27%3B%0A%09%09%09case%20%27xlink%27%3A%0A%09%09%09%09return%20%27http%3A//www.w3.org/1999/xlink%27%3B%0A%09%09%09default%3A%0A%09%09%09%09return%20%27%27%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09isParentEditableNode%20%3A%20function%20%28node%29%20%7B%0A%09%09try%20%7B%0A%09%09%09if%20%28node.ownerDocument.designMode%20%3D%3D%3D%20%27on%27%29%0A%09%09%09%09return%20node%3B%0A%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%0A%09%09while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09if%20%28%21%28node%20instanceof%20Ci.nsIDOMNSEditableElement%29%29%0A%09%09%09%09%09throw%200%3B%0A%09%09%09%09node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%09%09%09%09return%20node%3B%0A%09%09%09%7D%20catch%20%28e%29%20%7B%7D%0A%09%09%09node%20%3D%20node.parentNode%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%2C%0A%09isParentDraggableNode%20%3A%20function%20%28node%29%20%7B%0A%09%09while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%09%09%09if%20%28node.getAttribute%28%27draggable%27%29%20%3D%3D%3D%20%27true%27%29%0A%09%09%09%09return%20node%3B%0A%09%09%09node%20%3D%20node.parentNode%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%2C%0A%09isVideoControl%20%3A%20function%20%28node%29%20%7B%0A%09%09if%20%28/%5E%28audio%7Cvideo%29%24/i.test%28node.localName%29%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09while%20%28i%20%3C%20node.childNodes.length%29%20%7B%0A%09%09%09%09var%20child%20%3D%20node.childNodes%5Bi%5D%3B%0A%09%09%09%09if%20%28child.hasAttribute%28%27controls%27%29%20%26%26%20child.getAttribute%28%27controls%27%29%20%3D%3D%3D%20%27controls%27%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%09i++%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%2C%0A%09button%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Mouse%20button%20%28L%20M%20R%29%3A%20%22%2C%20%22LMR%22.substr%28btnPref%28%22MouseButton%22%29%2C%201%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09switch%20%28value.toUpperCase%28%29%29%20%7B%0A%09%09case%20%22M%22%3A%0A%09%09%09value%20%3D%201%3B%0A%09%09%09break%3B%0A%09%09case%20%22R%22%3A%0A%09%09%09value%20%3D%202%3B%0A%09%09%09break%3B%0A%09%09default%3A%0A%09%09case%20%22L%22%3A%0A%09%09%09value%20%3D%200%3B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%09sIP%28%22MouseButton%22%2C%20value%29%3B%0A%09%7D%2C%0A%09threshold%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Stop%20GrabScroll%20if%20mouse%20button%20is%20pressed%20longer%20than%20this%20time%20%28In%20milliseconds%29.%22%2C%20btnPref%28%22Timer%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09var%20timer%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28timer%20%3C%3D%200%20%7C%7C%20%21timer%29%0A%09%09%09timer%20%3D%201000%3B%0A%09%09sIP%28%22Timer%22%2C%20timer%29%3B%0A%09%7D%2C%0A%09moverate%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Drag%20direction%20and%20speed%3A%5Cn%20Negative%20or%20positive%20values.%22%2C%20btnPref%28%22MoveRate%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09var%20moveRate%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21moveRate%29%0A%09%09%09moveRate%20%3D%20-1%3B%0A%09%09sIP%28%22MoveRate%22%2C%20moveRate%29%3B%0A%09%7D%2C%0A%09inertiaToggle%20%3A%20function%20%28%29%20%7B%0A%09%09var%20inertia%20%3D%20%21btnPref%28%22InertiaEnabled%22%29%3B%0A%09%09sBP%28%22InertiaEnabled%22%2C%20inertia%29%3B%0A%09%7D%2C%0A%09inertiaThreshold%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20threshold%3A%20%22%2C%20btnPref%28%22InertiaThreshold%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09var%20inertiaThreshold%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21inertiaThreshold%29%0A%09%09%09inertiaThreshold%20%3D%2020%3B%0A%09%09sIP%28%22InertiaThreshold%22%2C%20inertiaThreshold%29%3B%0A%09%7D%2C%0A%09inertiarate%20%3A%20function%20%28%29%20%7B%0A%09%09var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20speed%3A%20%22%2C%20btnPref%28%22InertiaRate%22%29%29%3B%0A%09%09if%20%28%21value%29%0A%09%09%09return%3B%0A%09%09var%20inertiaRate%20%3D%20parseInt%28value%2C%2010%29%3B%0A%09%09if%20%28%21inertiaRate%29%0A%09%09%09inertiaRate%20%3D%2050%3B%0A%09%09sIP%28%22InertiaRate%22%2C%20inertiaRate%29%3B%0A%09%7D%2C%0A%09clickable%20%3A%20function%20%28%29%20%7B%0A%09%09var%20notClicableLink%20%3D%20%21btnPref%28%22NotClicableLink%22%29%3B%0A%09%09sBP%28%22NotClicableLink%22%2C%20notClicableLink%29%3B%0A%09%7D%2C%0A%09getScrollView%20%3A%20function%20%28event%29%20%7B%0A%09%09var%20NS%2C%0A%09%09EW%2C%0A%09%09NSEW%3B%0A%09%09NS%20%3D%20EW%20%3D%20NSEW%20%3D%20null%3B%0A%09%09var%20_scrollingView%20%3D%20null%3B%0A%09%09var%20overflowx%2C%0A%09%09overflowy%2C%0A%09%09ox%2C%0A%09%09oy%3B%0A%09%09var%20scw%2C%0A%09%09sch%2C%0A%09%09horz%2C%0A%09%09vert%3B%0A%09%09var%20doc%2C%0A%09%09style%3B%0A%09%09var%20borderTop%3B%0A%09%09var%20borderBottom%3B%0A%09%09var%20borderLeft%3B%0A%09%09var%20borderRight%3B%0A%09%09if%20%28event.originalTarget.ownerDocument.contentType%20%3D%3D%3D%20%22application/xml%22%29%20%7B%0A%09%09%09_scrollingView%20%3D%20event.originalTarget.ownerDocument.defaultView%3B%0A%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%09%09%09%09if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09NSEW%20%3D%20_scrollingView%3B%0A%09%09%09%09%09NS%20%3D%20_scrollingView%3B%0A%09%09%09%09%7D%0A%09%09%09%09EW%20%3D%20_scrollingView%3B%0A%09%09%09%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09NS%20%3D%20_scrollingView%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28_scrollingView%20%3D%20event.originalTarget%3B%20_scrollingView%3B%20_scrollingView%20%3D%20_scrollingView.parentNode%29%20%7B%0A%09%09%09%09if%20%28_scrollingView%20instanceof%20HTMLElement%29%20%7B%0A%09%09%09%09%09if%20%28_scrollingView.localName.toUpperCase%28%29%20%3D%3D%3D%20%22HTML%22%20%7C%7C%0A%09%09%09%09%09%09_scrollingView.localName.toUpperCase%28%29%20%3D%3D%3D%20%22BODY%22%29%20%7B%0A%09%09%09%09%09%09_scrollingView%20%3D%20_scrollingView.ownerDocument.defaultView%3B%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%20%26%26%0A%09%09%09%09%09%09%09_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%09%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%09%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28_scrollingView.frameElement%20%26%26%20%21NS%20%26%26%20%21EW%20%26%26%20%21NSEW%29%20%7B%0A%09%09%09%09%09%09%09return%20this.getScrollView%28%7B%0A%09%09%09%09%09%09%09%09originalTarget%20%3A%20_scrollingView.frameElement%0A%09%09%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28_scrollingView.localName.toLowerCase%28%29%20%3D%3D%3D%20%22select%22%29%20%7B%0A%09%09%09%09%09%09_scrollingView.parentNode.focus%28%29%3B%0A%09%09%09%09%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09overflowx%20%3D%20%22%22%3B%0A%09%09%09%09%09overflowy%20%3D%20%22%22%3B%0A%09%09%09%09%09ox%20%3D%20true%3B%0A%09%09%09%09%09oy%20%3D%20true%3B%0A%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09doc%20%3D%20_scrollingView.ownerDocument%3B%0A%09%09%09%09%09%09style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%09%09%09%09%09%09overflowx%20%3D%20style.getPropertyValue%28%22overflow-x%22%29%3B%0A%09%09%09%09%09%09ox%20%3D%20overflowx%20%21%3D%3D%20%22hidden%22%20%26%26%20overflowx%20%21%3D%3D%20%22visible%22%3B%0A%09%09%09%09%09%09overflowy%20%3D%20style.getPropertyValue%28%22overflow-y%22%29%3B%0A%09%09%09%09%09%09oy%20%3D%20overflowy%20%21%3D%3D%20%22hidden%22%20%26%26%20overflowy%20%21%3D%3D%20%22visible%22%3B%0A%09%09%09%09%09%7D%20catch%20%28ex%29%20%7B%7D%0A%09%09%09%09%09borderTop%20%3D%200%3B%0A%09%09%09%09%09borderBottom%20%3D%200%3B%0A%09%09%09%09%09borderLeft%20%3D%200%3B%0A%09%09%09%09%09borderRight%20%3D%200%3B%0A%09%09%09%09%09if%20%28/%5E%28table%7Ctd%7Cth%29%24/i.test%28_scrollingView.localName%29%29%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09doc%20%3D%20_scrollingView.ownerDocument%3B%0A%09%09%09%09%09%09%09style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%09%09%09%09%09%09%09borderTop%20%3D%20style.getPropertyValue%28%22border-top-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderBottom%20%3D%20style.getPropertyValue%28%22border-bottom-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderLeft%20%3D%20style.getPropertyValue%28%22border-left-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%09borderRight%20%3D%20style.getPropertyValue%28%22border-right-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28ex%29%20%7B%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09scw%20%3D%20_scrollingView.clientWidth%3B%0A%09%09%09%09%09horz%20%3D%20ox%20%26%26%20scw%20%21%3D%3D%200%20%26%26%0A%09%09%09%09%09%09scw%20+%20borderLeft%20+%20borderRight%20%3C%20_scrollingView.scrollWidth%3B%0A%09%09%09%09%09sch%20%3D%20_scrollingView.clientHeight%3B%0A%09%09%09%09%09vert%20%3D%20oy%20%26%26%20sch%20%21%3D%3D%200%20%26%26%0A%09%09%09%09%09%09sch%20+%20borderTop%20+%20borderBottom%20%3C%20_scrollingView.scrollHeight%3B%0A%09%09%09%09%09if%20%28horz%20%26%26%20vert%29%20%7B%0A%09%09%09%09%09%09NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28horz%29%20%7B%0A%09%09%09%09%09%09EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28vert%29%20%7B%0A%09%09%09%09%09%09NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20//%20for%0A%09%09%7D%0A%09%09return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%09%7D%0A%7D%3B%0A%0Afunction%20scrolling%28aEvt%2C%20aSelf%29%20%7B%0A%09var%20Start%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%09aSelf.scroll2%28aEvt%29%3B%0A%09aSelf.cScroll%20%3D%20setTimeout%28arguments.callee%2C%0A%09%09%09Math.max%2825%20-%20%28%28new%20Date%28%29%29.getTime%28%29%20-%20Start%29%2C%200%29%2C%20aEvt%2C%20aSelf%29%3B%0A%7D%0A%0Aif%20%28btnPref%28%22GrabScrollEnabled%22%29%29%0A%09GrabScroll.initGrabScroll%28%29%3B%0Athis.onDestroy%20%3D%20function%20%28aReason%29%20%7B%0A%09%28aReason%20%3D%3D%3D%20%22update%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22delete%22%29%20%26%26%20GrabScroll.uninitGrabScroll%28%29%3B%0A%7D%3B%0A%0Afunction%20sBP%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%20//Set%20Boolean%20Pref%0A%09Services.prefs.setBoolPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%2C%20aVal%29%3B%0A%7D%0A%0Afunction%20sIP%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%20//Set%20Integer%20Pref%0A%09Services.prefs.setIntPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%2C%20aVal%29%3B%0A%7D%0A%0Afunction%20gBP%28aKey%2C%20aBranch%29%20%7B%20//Get%20Boolean%20Pref%0A%09return%20Services.prefs.getBoolPref%28%28%21aBranch%29%20%3F%20PREF_BRANCH%20+%20aKey%20%3A%20aKey%29%3B%0A%7D%0A%0Athis.toggleGrabScroll%20%3D%20function%20%28%29%20%7B%0A%09var%20state%20%3D%20btnPref%28%22GrabScrollEnabled%22%29%3B%0A%09sBP%28%22GrabScrollEnabled%22%2C%20%21state%29%3B%0A%09notifyme%28null%2C%20%22GrabScroll%20%22%20+%20%28btnPref%28%22GrabScrollEnabled%22%29%20%3F%20%22ENABLED%22%20%3A%20%22DISABLED%22%29%2C%20%22%22%29%3B%0A%09self.init%28%29%3B%0A%7D%3B%0A%0Afunction%20%24XML%28aXML%29%20%7B%20//%20Return%20parsed%20XML%0A%09aXML%20%3D%20aXML.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%20//%20Linearize%20XML%0A%09return%20%28new%20DOMParser%29.parseFromString%28aXML%2C%20%22application/xml%22%29.documentElement%3B%0A%7D%0A%0Afunction%20notifyme%28aImg%2C%20aTitle%2C%20aMsg%29%20%7B%20//%20Notification%20function%0A%09var%20notFeature%20%3D%20gBP%28%22notification.feature.enabled%22%2C%20true%29%3B%0A%09try%20%7B%0A%09%09var%20ASrv%20%3D%20Cc%5B%27@mozilla.org/alerts-service%3B1%27%5D.getService%28Ci.nsIAlertsService%29%3B%0A%09%09if%20%28%21notFeature%29%20%7B%0A%09%09%09sBP%28%22notification.feature.enabled%22%2C%20true%2C%20true%29%3B%0A%09%09%09setTimeout%28function%20%28%29%20%7B%0A%09%09%09%09ASrv.showAlertNotification%28aImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%09%09%09%09sBP%28%22notification.feature.enabled%22%2C%20false%2C%20true%29%3B%0A%09%09%09%7D%2C%20100%29%3B%0A%09%09%7D%20else%0A%09%09%09ASrv.showAlertNotification%28aImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%09%7D%20catch%20%28aEr%29%20%7B%0A%09%09var%20win%20%3D%20Components.classes%5B%27@mozilla.org/embedcomp/window-watcher%3B1%27%5D.%0A%09%09%09getService%28Components.interfaces.nsIWindowWatcher%29.%0A%09%09%09openWindow%28null%2C%20%27chrome%3A//global/content/alerts/alert.xul%27%2C%0A%09%09%09%09%27_blank%27%2C%20%27chrome%2Ctitlebar%3Dno%2Cpopup%3Dyes%27%2C%20null%29%3B%0A%09%09win.arguments%20%3D%20%5BaImg%2C%20aTitle%2C%20aMsg%2C%20false%2C%20%27%27%5D%3B%0A%09%7D%0A%7D%0Athis.onclick%20%3D%20function%20%28aEvt%29%20%7B%0A%09if%20%28aEvt.button%20%3D%3D%3D%201%20%26%26%20%21aEvt.shiftKey%20%26%26%20%21aEvt.ctrlKey%20%26%26%20%21aEvt.altKey%29%20%7B%0A%09%09var%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A%09%09%5B%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Button%20to%20start%20the%20GrabScroll%22%2C%20tltp%3A%20%22Choose%20the%20mouse%20button%20with%20which%20to%20start%20the%20GrabScroll.%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27button%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuseparator%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22GrabScroll%20start%20threshold%22%2C%20tltp%3A%20%22Time%20in%20milliseconds%20after%20which%20the%20GrabScroll%20is%20canceled%20if%20the%20cursor%20is%20not%20moved.%22%2C%20cmd%3A%20%22sdocument.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27threshold%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22GrabScroll%20speed%20%26amp%3B%20direction%22%2C%20tltp%3A%20%22Drag%20direction%20and%20speed.%20With%20a%20negative%20value%2C%20the%20page%20content%20moves%20in%20the%20same%20direction%20as%20the%20cursor.%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27moverate%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuseparator%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Scroll%20inertia%22%2C%20type%3A%20%22checkbox%22%2C%20checked%3A%20%22%22%20+%20btnPref%28%27InertiaEnabled%27%29%20+%20%22%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27inertiaToggle%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Scroll%20inertia%20threshold%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27inertiaThreshold%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Scroll%20inertia%20speed%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27inertiarate%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuseparator%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Cancel%20GrabScroll%20on%20images%22%2C%20type%3A%20%22checkbox%22%2C%20checked%3A%20%22%22%20+%20btnPref%28%22NotImage%22%29%20+%20%22%22%2C%20tltp%3A%20%22Do%20not%20start%20GrabScroll%20if%20cursor%20is%20over%20an%20image.%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27NotImage%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%2C%0A%09%09%09%7BnodeName%3A%20%22menuitem%22%2C%20label%3A%20%22Cancel%20GrabScroll%20on%20links%22%2C%20type%3A%20%22checkbox%22%2C%20checked%3A%20%22%22%20+%20btnPref%28%27NotClicableLink%27%29%20+%20%22%22%2C%20tltp%3A%20%22Do%20not%20start%20GrabScroll%20if%20cursor%20is%20over%20a%20clickable%20link.%22%2C%20cmd%3A%20%22document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29.cmds%28%27clickable%27%29%3Bevent.stopPropagation%28%29%3B%22%7D%0A%09%09%5D.forEach%28function%28m%29%20%7B%0A%0A%09%09%09var%20mItem%20%3D%20document.createElement%28m.nodeName%29%3B%0A%0A%09%09%09if%20%28%27label%27%20in%20m%29%20mItem.setAttribute%28%27label%27%2C%20m.label%29%3B%0A%09%09%09if%20%28%27type%27%20in%20m%29%20mItem.setAttribute%28%27type%27%2C%20m.type%29%3B%0A%09%09%09if%20%28%27checked%27%20in%20m%29%20mItem.setAttribute%28%27checked%27%2C%20m.checked%29%3B%0A%09%09%09if%20%28%27tltp%27%20in%20m%29%20mItem.setAttribute%28%27tooltiptext%27%2C%20m.tltp%29%3B%0A%09%09%09if%20%28%27cmd%27%20in%20m%29%20mItem.setAttribute%28%27oncommand%27%2C%20m.cmd%29%3B%0A%0A%09%09%09menuPopup.appendChild%28mItem%29%3B%0A%09%09%7D%29%3B%0A%0A%09%09menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%09%09addDestructor%28function%28%29%20%7BmenuPopup.parentNode.removeChild%28menuPopup%29%7D%29%3B%0A%09%7D%0A%7D%0A%0A%0Athis.cmds%20%3D%20function%20%28aCmd%29%20%7B%0A%09switch%20%28aCmd%29%20%7B%0A%09case%20%22button%22%3A%0A%09%09GrabScroll.button%28%29%3B%0A%09%09break%3B%0A%09case%20%22threshold%22%3A%0A%09%09GrabScroll.threshold%28%29%3B%0A%09%09break%3B%0A%09case%20%22moverate%22%3A%0A%09%09GrabScroll.moverate%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiaToggle%22%3A%0A%09%09GrabScroll.inertiaToggle%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiaThreshold%22%3A%0A%09%09GrabScroll.inertiaThreshold%28%29%3B%0A%09%09break%3B%0A%09case%20%22inertiarate%22%3A%0A%09%09GrabScroll.inertiarate%28%29%3B%0A%09%09break%3B%0A%09case%20%22clickable%22%3A%0A%09%09GrabScroll.clickable%28%29%3B%0A%09%09break%3B%0A%09case%20%22NotImage%22%3A%0A%09%09sBP%28%22NotImage%22%2C%20%21btnPref%28%22NotImage%22%29%29%3B%0A%09%09break%3B%0A%09%7D%0A%7D%3B%0A%0Athis.style.opacity%20%3D%20btnPref%28%22GrabScrollEnabled%22%29%20%3F%20%221%22%20%3A%20%22.50%22%3B%0A%0Athis.tooltipText%20%3D%20%22%5Cn%5Ct%22%20+%20%28self.label%20%7C%7C%20self.name%29%20+%20%22%5Cn%5Cn%22%20+%0A%09%22%5CtL%3D%20Enable/Disable%20GrabScroll%5Ct%5Cn%22%20+%0A%09%22%5CtM%3D%20Open%20Options%20menu%5Ct%5Cn%5Cn%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.toggleGrabScroll%28%29%3B%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 Спасибо за наводку. У Alice0775 много потаскал, а это не видел. Как раз аддон "Grab and Drag" на грани подыхания. У Alice0775, кстати, новее версия есть GrabScroll_Fx29.uc.xul, но я не потяну под CB его переделать. Можете поставить userchrome.js.xpi + этот userChrome.js должен лежать в папке chrome, и туда же GrabScroll_Fx29.uc.xul сохранить. UPD: Починил и менюшку кнопки по СКМ. |
bunda1 > 21-04-2016 19:07:15 |
turbot пишет
Кнопка GrabScroll которую ты исправлял как раз создана на основе GrabScroll_Fx29.uc.xul |
turbot > 21-04-2016 19:24:37 |
bunda1 Может вы переделаете текущую версию под CB? |
bunda1 > 21-04-2016 19:31:12 |
turbot пишет
А какие правки, может не стоит переделывать а лучше просто перевести кнопку что я как раз и делаю для себя? |
turbot > 21-04-2016 19:45:28 |
bunda1 пишет
А чтоб я знал! Но чисто эксперементально - та версия работает "глаже" с прокруткой. И текст лучше выделяется, чем с этой. |
bunda1 > 21-04-2016 20:04:02 |
turbot пишет
Да кнопка от октябрь 20, 2014 значит исправлений в изначальном коде много. Можно и попробовать переделать текущую версию GrabScroll_Fx29.uc.xul под CB, но мне от этого кода начинается когнитивный диссонанс так что могу и не осилить переделку. |
lokiju > 21-04-2016 20:06:58 |
turbot, может лучше к автору кнопки обратиться? Odyseus не откажет. Custom Buttons • View topic - GrabScroll. bunda1 и так загружен. |
turbot > 21-04-2016 20:10:27 |
lokiju |
lokiju > 21-04-2016 20:15:55 |
turbot |
turbot > 21-04-2016 20:18:04 |
lokiju пишет
Ну я ж и не настаиваю. |
bunda1 > 21-04-2016 20:25:07 |
turbot пишет
Переделать в кнопку как раз не слишком трудно но мне обязательно нужно понять и улучшить код и переделать под себя, иначе не интересно. Вот где проблема |
difabor > 22-04-2016 00:30:45 |
lokiju пишет
А что нужно? Что-то написать автору? |
turbot > 22-04-2016 00:39:00 |
difabor пишет
Я лкм таскаю. Не проблема. difabor пишет
Ну, во-первых (хоть это я уже и поправил) Mishania пишет
А во-вторых, чтобы обновил
код кнопки до актуальной у Alice0775
|
bunda1 > 22-04-2016 02:03:57 |
turbot пишет
Вот: Выделить код Код: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%3EGrabScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAlklEQVQ4jaWTuw0EIQxEd8UFBFeEczoYCYkm6IeiSU+zySIZjs9+JrKQ52GDvW1jGQA84905953k/gsASVJBlvoAKAajAeq8yu/eqE0l1uciYqcl6+QeYNpSm9wCvPe/nDNDCKxMABhjNG0VI1VVFFNKia8Ad/QK0HvE/Q5k+AuP+n8CWY72DHJpL0aAy0slIlYv0Gp8D2h34zRWWYjjAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22grabScroll.enable%22%2C%20%21cbu.getPrefs%28%22grabScroll.enable%22%29%29%3B%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0431%u0440%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%27%2C%20func%3A%20%27GrabScroll.button%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0427%u0443%u0432%u0441%u0442%u0432%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%27%2C%20func%3A%20%27GrabScroll.threshold%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041D%u0430%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%27%2C%20func%3A%20%27GrabScroll.moverate%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0418%u043D%u0435%u0440%u0446%u0438%u044F%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%27%2C%20pref%3A%20%27grabScroll.enableinertia%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041F%u043E%u0440%u043E%u0433%20%u0438%u043D%u0435%u0440%u0446%u0438%u0438%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%27%2C%20func%3A%20%27GrabScroll.inertiaThreshold%28%29%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u0435%u043B%u0438%u0447%u0438%u043D%u0430%20%u0438%u043D%u0435%u0440%u0446%u0438%u0438%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%27%2C%20func%3A%20%27GrabScroll.inertiarate%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%27%2C%20pref%3A%20%27grabScroll.clickable%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%u0445%27%2C%20pref%3A%20%27grabScroll.notimage%27%20%7D%2C%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%22separator%22%20in%20m%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20if%20%28%22pref%22%20in%20m%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.pref%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.pref%2C%20%21cbu.getPrefs%28m.pref%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20else%20mItem.onclick%20%3D%28%29%3D%3E%20eval%28m.func%29%3B%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0Avar%20GrabScroll%20%3D%20%7B%0A%20%20TOLERANCE%20%20%20%20%20%20%20%20%20%3A3%2C%20%20%20%20//mouse%20move%0A%20%20TOLERANCE_WHEN_NO_H_SCROLL%20%3A%205%2C%20//%0A%20%20CANCEL_WHEN_SELECTION%3A%20true%2C%20%20//%0A%20%20IGNOREURL%3A%20%5B%22http%3A//maps.google.*/*%22%2C%20%22http%3A//maps.yahoo.co.jp/pl*%22%2C%20%22http%3A//map.yahoo.co.jp/pl*%22%2C%20%22http%3A//map.goo.ne.jp/*%22%2C%20%22http%3A//www.mapion.co.jp/c/f*%22%2C%20%22http%3A//books.google.co.jp/books%3Fid%3D*%22%2C%20%22http%3A//books.google.co.jp/books%3Fid%3D*%22%5D%2C%0A%0A%20%20CURSOR%3A%20%22-moz-grab%22%2C%20//%20cursor%20style%0A%0A%20%20mStatus%3A%200%2C%20%20%20//0%3A%3F%3F%3F%2C%201%3Amousedown%2C%202%3Amousemove%2C%203%3Amouseup%0A%20%20mLastX%3A%200%2C%0A%20%20mLastY%3A%200%2C%0A%20%20mCursor%3A%20null%2C%0A%20%20mCursorElement%3A%20null%2C%0A%20%20_target%3A%20null%2C%20%20//%0A%20%20_target2%3A%20null%2C%20//%0A%20%20_isImage%3Afalse%2C%0A%20%20_timer%3A0%2C%20%20%20%20%20%20//mouseup%0A%20%20_ctimer%3A0%2C%0A%20%20_mtimer%3A%20false%2C%0A%20%20cScroll%3Afalse%2C%0A%20%20cSpeedX%3A0%2C%0A%20%20cSpeedY%3A0%2C%0A%20%20_doc%3Anull%2C%0A%20%20_MOVERATEpZoom%3A1%2C%0A%20%20_window%3A%20null%2C%0A%0A%20%20initGrabScroll%3A%20function%28%29%20%7B%0A%20%20%20%20var%20curentBrowserVersion%20%3D%20Services.appinfo.platformVersion%3B%20//%2731.*%27%0A%20%20%20%20var%20compareResult%20%3D%20Services.vc.compare%28curentBrowserVersion%2C%20%2746.*%27%29%3B%0A%20%20%20%20this.Bug1209100%20%3D%20%28compareResult%20%3C%200%29%20%3F%2010%20%3A%201%3B%0A%20%20%20%20%0A%20%20%20%20if%20%28%20GrabScroll.activeBrowser%28%29.mPanelContainer%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20this._window%20%3D%20GrabScroll.activeBrowser%28%29.mPanelContainer%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20else%20this._window%20%3D%20document.getElementById%28%27content%27%29%3B%0A%20%20%20%20%0A%20%20%20%20for%28%20var%20aURL%20in%20this.IGNOREURL%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20if%20%28%20this.IGNOREURL%5BaURL%5D%20%3D%3D%3D%20%27%27%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20this.IGNOREURL%5BaURL%5D%20%3D%20this.convert2RegExp%28this.IGNOREURL%5BaURL%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20this._window.setCapture%28%29%3B%0A%20%20%20%20addEventListener%28%22mousedown%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%22click%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%22mouseup%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%27pagehide%27%2C%20this%2C%20false%2C%20gBrowser%29%3B%0A%20%20%20%20gPrefService.addObserver%28%27grabScroll.%27%2C%20GrabScroll.initPrefs%2C%20false%29%3B%0A%20%20%20%20addDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28%27grabScroll.%27%2C%20GrabScroll.initPrefs%29%20%29%3B%0A%20%20%20%20%0A%20%20%20%20setTimeout%28%28%29%3D%3E%20GrabScroll.initPrefs%28%29%2C%200%29%3B%0A%20%20%7D%2C%0A%0A%20%20initPrefs%3A%20%20function%28%29%20%7B%0A%20%20%20%20this.MOUSEBUTTON%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.button%22%29%20%7C%7C%200%3B%0A%20%20%20%20this.MOVERATE%20%20%20%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.moverate%22%29%20%7C%7C%20-1%3B%0A%20%20%20%20this.TIMER%20%20%20%20%20%20%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.timer%22%29%20%7C%7C%20500%3B%0A%20%20%20%20this.INERTIA%20%20%20%20%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.enableinertia%22%29%20%7C%7C%20false%3B%0A%20%20%20%20this.INERTIATHRESHOLD%20%3D%20cbu.getPrefs%28%22grabScroll.inertiathreshold%22%29%20%7C%7C%2080%3B%0A%20%20%20%20this.INERTIARATE%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.inertiarate%22%29%20%7C%7C%2050%3B%0A%20%20%20%20this.NOTIMAGE%20%20%20%20%20%20%20%20%20%3D%20cbu.getPrefs%28%22grabScroll.notimage%22%29%20%7C%7C%20true%3B%0A%20%20%20%20this.NOTCLICABLELINK%20%20%3D%20cbu.getPrefs%28%22grabScroll.clickable%22%29%20%7C%7C%20true%3B%0A%20%20%20%20%0A%20%20%20%20GrabScroll.setIcon%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20activeBrowser%3A%20function%28%29%20%7B%0A%20%20%20%20return%20%28%27SplitBrowser%27%20in%20window%20%3F%20SplitBrowser.activeBrowser%20%3A%20null%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20%20gBrowser%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20e%20%3D%20new%20XPCNativeWrapper%28e%29%3B%0A%20%20%20%20switch%28e.type%29%20%7B%0A%20%20%20%20%20%20case%20%22mousedown%22%3A%0A%20%20%20%20%20%20%20%20if%20%28%20this.cScroll%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20this.cSpeedY%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22grabScroll.enable%22%29%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.grabStart%28e%29%3B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22mousemove%22%3A%0A%20%20%20%20%20%20%20%20this.mousemove%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22click%22%3A%0A%20%20%20%20%20%20%20%20this.click%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22mouseup%22%3A%0A%20%20%20%20%20%20%20%20this.mouseup%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%27pagehide%27%3A%0A%20%20%20%20%20%20%20%20this._doc%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this.mCursorElement%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._target%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._isImage%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this.NS%20%3D%20this.EW%20%3D%20this.NSEW%20%3D%20null%3B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20grabStart%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28this.mStatus%20%3D%3D%203%29%0A%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%0A%20%20%20%20if%20%28this.MOUSEBUTTON%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20if%20%28Math.abs%28this.mLastX%20-%20e.screenX%29%20%3C%205%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Math.abs%28this.mLastY%20-%20e.screenY%29%20%3C%205%20%29%0A%20%20%20%20%20%20%20%20return%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20doc%20%3D%20e.originalTarget.ownerDocument%3B%0A%20%20%20%20if%20%28%21doc%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20if%20%28doc.contentType%20%3D%3D%20%27application/vnd.mozilla.xul+xml%27%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20this._doc%20%3D%20doc%3B%0A%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20if%20%28this.CANCEL_WHEN_SELECTION%20%26%26%20this.MOUSEBUTTON%20%3D%3D%200%20%26%26%20doc.defaultView.getSelection%28%29%20%21%3D%20%22%22%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20this._target%20%3D%20e.originalTarget%3B%0A%0A%20%20%20%20%20%20if%20%28/%5E%28html%7Cbody%29%24/.test%28this._target.localName.toLowerCase%28%29%29%20%7C%7C%20this._target.clientHeight%20%3E%2030000%29%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20else%20if%20%28/div/.test%28this._target.localName.toLowerCase%28%29%29%20%26%26%20this._target.clientHeight%20%3E%201000%29%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20this._target%3B%0A%0A%20%20%20%20%20%20for%20%28aURL%20in%20this.IGNOREURL%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.IGNOREURL%5BaURL%5D%20%3D%3D%3D%20%27%27%29continue%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28doc.documentURI.match%28this.IGNOREURL%5BaURL%5D%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20dump%28this.IGNOREURL%5BaURL%5D+%27%5Cn%27+ex%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this.isParentEditableNode%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isParentDraggableNode%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isIgnore%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isVideoControl%28e.target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isParentClickableNode%28this._target%29%29%7B%0A%20%20%20%20%20%20%20%20if%20%28this.NOTCLICABLELINK%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28%27linkDragSelection%27%20in%20window%29%29%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._isImage%20%3D%20this.isImage%28e%29%3B%0A%20%20%20%20%20%20if%20%28this._isImage%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.NOTIMAGE%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20target%20%3D%20this._target%3B%0A%20%20%20%20%20%20while%20%28target%29%7B%0A%20%20%20%20%20%20%20%20if%20%28%22getAttribute%22%20in%20target%20%26%26%20target.getAttribute%28%22draggable%22%29%20%3D%3D%20%22true%22%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20style%20%3D%20this._doc.defaultView.getComputedStyle%28target%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22cursor%22%29%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20else%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22auto%22%29%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20%20%20%20%20target%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this.MOUSEBUTTON%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._timer%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%20%20%20%20this.mLastX%20%3D%20e.screenX%3B%0A%20%20%20%20%20%20this.mLastY%20%3D%20e.screenY%3B%0A%20%20%20%20%20%20this.mStatus%20%3D%201%3B%0A%20%20%20%20%20%20this._MOVERATEpZoom%20%3D%20%20this.MOVERATE%20/%20%28ZoomManager.useFullZoom%20%3F%20ZoomManager.zoom%20%3A%201%29%3B%0A%0A%20%20%20%20%20%20%5Bthis.NS%2C%20this.EW%2C%20this.NSEW%5D%20%3D%20this.getScrollView%28e%29%3B%0A%20%20%20%20%20%20this._window.addEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20%20%20this.setCursor%28this._target2%2C%20this.CURSOR%29%3B%0A%20%20%20%20%20%20this.resetCursorWithTimer%28this._target2%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20adjustedTimer%3A%20function%28%29%7B%0A%20%20%20%20var%20magTimer%20%3D%20this.TIMER%3B%0A%20%20%20%20return%20magTimer%3B%0A%20%20%7D%2C%0A%0A%20%20grabFinish%3A%20%20function%28%29%20%7B%0A%20%20%20%20this.resetCursorTimer%28%29%3B%0A%20%20%20%20this.resetCursor%28%29%3B%0A%0A%20%20%20%20this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%20%20%20%20if%20%28selCon%29%0A%20%20%20%20%20%20selCon.setDisplaySelection%28selCon.SELECTION_ON%29%3B%0A%20%20%7D%2C%0A%0A%20%20mousemove%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28this.mStatus%20%3D%3D%202%20%7C%7C%20this.mStatus%20%3D%3D%201%20%29%20%7B%0A%20%20%20%20%20%20var%20x%20%3D%20e.screenX%3B%0A%20%20%20%20%20%20var%20y%20%3D%20e.screenY%3B%0A%20%20%20%20%20%20var%20doc%20%3D%20e.originalTarget.ownerDocument%3B%0A%0A%20%20%20%20%20%20if%20%28this.mStatus%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21this._isImage%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%28new%20Date%28%29.getTime%28%29%20-%20this._timer%29%20%3E%20this.adjustedTimer%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28Math.abs%28x-this.mLastX%29%20%3C%20this.TOLERANCE_WHEN_NO_H_SCROLL%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20movingh%20%3D%20Math.abs%28x-this.mLastX%29%20%3E%20Math.abs%28y-this.mLastY%29%20*%2050%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21this._isImage%20%26%26%20this.MOUSEBUTTON%20%3D%3D%200%20%20%26%26%20this.isText%28e%29%20%20%26%26%20movingh%20%26%26%20%21this.EW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%28Math.abs%28x%20-%20this.mLastX%29%20+%20Math.abs%28y%20-%20this.mLastY%29%20%3C%20this.TOLERANCE%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28this.MOUSEBUTTON%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28selCon%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selCon.getSelection%28selCon.SELECTION_NORMAL%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20selection.removeAllRanges%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20selCon.setDisplaySelection%28selCon.SELECTION_OFF%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22ucjsMouseGestures%22%20in%20window%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ucjsMouseGestures._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.mLastX%20%3D%20x%20-%20%28x%20-%20this.mLastX%29%20/%2010%3B%0A%20%20%20%20%20%20%20%20this.mLastY%20%3D%20y%20-%20%28y%20-%20this.mLastY%29%20/%2010%3B%0A%20%20%20%20%20%20%20%20this.mStatus%20%3D%202%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this._ctimer%29%0A%20%20%20%20%20%20%20%20this.resetCursorTimer%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28this._mtimer%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20this.cSpeedX%20%3D%20this._MOVERATEpZoom%20*%20%28x%20-%20this.mLastX%29%3B%0A%20%20%20%20%20%20this.cSpeedY%20%3D%20this._MOVERATEpZoom%20*%20%28y%20-%20this.mLastY%29%3B%0A%0A%20%20%20%20%20%20if%20%28this.scroll%28e%29%29%20%7B%0A%20%20%20%20%20%20%20%20this.mLastX%20%3D%20x%3B%0A%20%20%20%20%20%20%20%20this.mLastY%20%3D%20y%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20getSelconForDoc%3A%20function%20getSelconForDoc%28doc%29%7B%0A%20%20%20%20if%20%28%21doc%29%0A%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20aFrame%20%3D%20doc.defaultView%3B%0A%20%20%20%20if%20%28%21aFrame%29%0A%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20docShell%20%3D%20this.getDocShellForFrame%28aFrame%29%3B%0A%20%20%20%20var%20selCon%20%3D%20docShell%0A%20%20%20%20%20%20.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%20%20%20%20%20%20.getInterface%28Components.interfaces.nsISelectionDisplay%29%0A%20%20%20%20%20%20.QueryInterface%28Components.interfaces.nsISelectionController%29%3B%0A%20%20%20%20return%20selCon%3B%0A%20%20%7D%2C%0A%0A%20%20getDocShellForFrame%3A%20function%20getDocShellForFrame%28aFrame%29%7B%0A%20%20%20%20return%20aFrame%0A%20%20%20%20%20%20.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%20%20%20%20%20%20.getInterface%28Components.interfaces.nsIWebNavigation%29%0A%20%20%20%20%20%20.QueryInterface%28Components.interfaces.nsIDocShell%29%3B%0A%20%20%7D%2C%0A%0A%20%20click%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28e.button%20%3D%3D%200%20%26%26%20this.mStatus%20%3E%3D%202%20%26%26%20this._doc%20instanceof%20Ci.nsIImageDocument%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%7D%2C%0A%0A%20%20mouseup%3A%20%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3E%201%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%0A%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20if%20%28this.mStatus%20%3D%3D%202%29%0A%20%20%20%20%20%20%20%20this.mStatus%20%3D%203%3B%0A%0A%20%20%20%20%20%20if%20%28this.INERTIA%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28Math.abs%28this.cSpeedX%29%20%3E%20this.INERTIATHRESHOLD%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20this.INERTIATHRESHOLD%20%29%29%7B%0A%20%20%20%20%20%20%20%20if%20%28this.cScroll%29%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20%20var%20v%20%3D%20this.INERTIARATE%3B%0A%20%20%20%20%20%20%20%20if%20%28this.cSpeedX%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20Math.min%28this.cSpeedX%2C%20v%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20Math.max%28this.cSpeedX%2C%20-v%29%3B%0A%20%20%20%20%20%20%20%20if%20%28this.cSpeedY%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedY%20%3D%20Math.min%28this.cSpeedY%2C%20v%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedY%20%3D%20Math.max%28this.cSpeedY%2C%20-v%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20Start%3B%0A%20%20%20%20%20%20%20%20function%20scrolling%28e%2C%20self%29%7B%0A%20%20%20%20%20%20%20%20%20%20Start%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20self.scroll2%28e%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20self.cScroll%20%3D%20setTimeout%28arguments.callee%2C%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%20Math.max%2825%20-%20%28%28new%20Date%28%29%29.getTime%28%29-Start%29%2C%200%29%2C%20e%2C%20self%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.scroll2%28e%29%3B%0A%20%20%20%20%20%20%20%20scrolling%28e%2C%20this%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%201%29%7B%0A%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20scroll2%3A%20function%28e%29%7B%0A%20%20%20%20var%20ay%20%3D%20Math.abs%28this.cSpeedY%29%3B%0A%20%20%20%20var%20ax%20%3D%20Math.abs%28this.cSpeedX%29%3B%0A%20%20%20%20if%20%28ay%20%3C%2010%20%26%26%20ax%20%20%3C%2010%29%7B%0A%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.scroll%28e%29%3B%0A%20%20%20%20if%20%20%20%20%20%20%28ax%20%3E%3D%20100%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%20100%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%2020%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%2010%29%20%20this.cSpeedX%20%3D%200%3B%0A%0A%20%20%20%20if%20%20%20%20%20%20%28ay%20%3E%3D%20100%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%20100%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%2020%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%2010%29%20this.cSpeedY%20%3D%200%3B%0A%20%20%7D%2C%0A%0A%20%20scroll%3A%20function%28e%29%7B%0A%20%20%20%20var%20minScroll%20%3D%20this.Bug1209100%3B%20//%20prevent%20Bug%201209100%2C%2010px%20%3Cfx46.%201px%20%3E%3Dfx46%0A%20%20%20%20this._mtimer%20%3D%20true%3B%0A%20%20%20%20var%20flg%20%3D%20false%3B%0A%20%20%20%20if%20%28this.NS%20%26%26%20this.NS%20%3D%3D%20this.EW%20%26%26%0A%20%20%20%20%20%20%20%20%28Math.abs%28this.cSpeedX%29%20%3E%20minScroll%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20minScroll%29%29%20%7B%0A%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%20%20%20%20%20%20%20%20this.NS.scrollBy%28this.cSpeedX%2C%20this.cSpeedY%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.NS.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%20%20%20%20%20%20%20%20this.NS.scrollTop%20%20+%3D%20this.cSpeedY%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20if%20%28this.NS%20%26%26%20Math.abs%28this.cSpeedY%29%20%3E%20minScroll%29%20%7B%0A%20%20%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.NS.scrollBy%280%2C%20this.cSpeedY%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28this.EW%20%26%26%20Math.abs%28this.cSpeedX%29%20%3E%20minScroll%29%7B%0A%20%20%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.EW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.EW.scrollBy%28this.cSpeedX%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.EW.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20setTimeout%28function%28self%29%7B%0A%20%20%20%20%20%20self._mtimer%20%3D%20false%3B%0A%20%20%20%20%7D%2C%2020%2C%20this%29%3B%0A%20%20%20%20return%20flg%3B%0A%20%20%7D%2C%0A%0A%20%20isText%3A%20function%28e%29%20%7B%0A%20%20%20%20return%20e.explicitOriginalTarget.nodeType%20%3D%3D%20document.TEXT_NODE%3B%0A%20%20%7D%2C%0A%0A%20%20isImage%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.target%20instanceof%20Ci.nsIImageLoadingContent%29%0A%20%20%20%20%20%20return%20e.target%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isIgnore%3A%20function%28aNode%29%7B%0A%20%20%20%20%20while%20%28aNode%29%7B%0A%20%20%20%20%20%20var%20name%20%3D%20aNode.nodeName.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28name%20%3D%3D%20%22html%22%29%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20if%20%28/%28scrollbar%7Cselect%7Coption%7Cembed%7Cobject%7Ctree%7Capplet%7Cstatusbar%29/.test%28name%29%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20aNode%20%3D%20aNode.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20isParentClickableNode%20%3A%20function%28aNode%29%20%7B%0A%20%20%20%20if%20%28%21aNode%29%20return%20null%3B%0A%20%20%20%20var%20d%20%3D%20aNode.ownerDocument%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20var%20xpathResult%20%3D%20d.evaluate%28%0A%20%20%20%20%20%20%20%20%20%20%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C%0A%20%20%20%20%20%20%20%20%20%20aNode%2C%0A%20%20%20%20%20%20%20%20%20%20this.NSResolver%2C%0A%20%20%20%20%20%20%20%20%20%20XPathResult.FIRST_ORDERED_NODE_TYPE%2C%0A%20%20%20%20%20%20%20%20%20%20null%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20xpathResult.singleNodeValue%3B%0A%20%20%7D%2C%0A%0A%20%20NSResolver%20%3A%20%7B%0A%20%20%20%20lookupNamespaceURI%20%3A%20function%28aPrefix%29%20%7B%0A%20%20%20%20%20%20switch%20%28aPrefix%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27xul%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%27%3B%0A%20%20%20%20%20%20%20%20case%20%27html%27%3A%0A%20%20%20%20%20%20%20%20case%20%27xhtml%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.w3.org/1999/xhtml%27%3B%0A%20%20%20%20%20%20%20%20case%20%27xlink%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.w3.org/1999/xlink%27%3B%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27%27%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20isParentEditableNode%20%3A%20function%28node%29%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20if%20%28node.ownerDocument.designMode%20%3D%3D%20%27on%27%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21%28node%20instanceof%20Ci.nsIDOMNSEditableElement%29%29%0A%20%20%20%20%20%20%20%20%20%20throw%200%3B%0A%20%20%20%20%20%20%20%20node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isParentDraggableNode%20%3A%20function%28node%29%7B%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20if%20%28node.getAttribute%28%27draggable%27%29%20%3D%3D%20%27true%27%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isVideoControl%3A%20function%28node%29%20%7B%0A%20%20%20%20if%20%28/%5E%28audio%7Cvideo%29%24/i.test%28node.localName%29%29%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20var%20i%20%3D%200%3B%0A%20%20%20%20%20%20while%20%28i%20%3C%20node.childNodes.length%29%20%7B%0A%20%20%20%20%20%20%20%20var%20child%20%3Dnode.childNodes%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28child.hasAttribute%28%27controls%27%29%20%26%26%20child.getAttribute%28%27controls%27%29%20%3D%3D%20%27controls%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20i++%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20setCursor%3A%20function%28element%2C%20cursor%29%20%7B%0A%20%20%20%20if%20%28%21%21element%20%26%26%20element.style%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20this.mCursor%20%3D%20element.style.cursor%3B%0A%20%20%20%20%20%20%20%20this.mCursorElement%20%20%3D%20element%3B%0A%20%20%20%20%20%20%20%20element.style.cursor%20%3D%20cursor%3B%0A%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%0A%20%20resetCursor%3A%20function%28%29%20%7B%0A%20%20%20%20var%20element%20%3D%20this.mCursorElement%3B%0A%20%20%20%20if%20%28%21%21element%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20element.style.cursor%20%3D%20this.mCursor%3B%0A%20%20%20%20%20%20%20%20%20%20this.mCursor%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.mCursorElement%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20resetCursorWithTimer%3A%20function%28%29%20%7B%0A%20%20%20%20if%20%28this._ctimer%29%0A%20%20%20%20%20%20clearTimeout%28this._ctimer%29%3B%0A%20%20%20%20this._ctimer%20%3D%20setTimeout%28function%28self%29%7B%0A%20%20%20%20%20%20self.resetCursor%28%29%3B%0A%20%20%20%20%7D%2C%20this.adjustedTimer%28%29%2C%20this%29%3B%0A%20%20%7D%2C%0A%0A%20%20resetCursorTimer%3A%20function%28%29%20%7B%0A%20%20%20%20if%20%28this._ctimer%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28this._ctimer%29%3B%0A%20%20%20%20%20%20this._ctimer%20%3D%20null%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20convert2RegExp%3A%20function%28%20pattern%20%29%20%7B%0A%20%20%20%20var%20s%20%3D%20new%20String%28pattern%29%3B%0A%20%20%20%20var%20res%20%3D%20new%20String%28%22%5E%22%29%3B%0A%0A%20%20%20%20for%20%28var%20k%20%3D%200%20%3B%20k%20%3C%20s.length%20%3B%20k++%29%20%7B%0A%20%20%20%20%20%20switch%28s%5Bk%5D%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27*%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22.*%22%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27.%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%3F%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5E%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%24%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27+%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%7B%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5B%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%7C%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%28%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%29%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5D%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22%5C%5C%22%20+%20s%5Bk%5D%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27%5C%5C%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22%5C%5C%5C%5C%22%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27%20%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20//%20Remove%20spaces%20from%20URLs.%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20default%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20s%5Bk%5D%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20new%20RegExp%28res%20+%20%27%24%27%2C%20%22i%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20button%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22button%28L%20M%20R%29%3A%20%22%2C%22LMR%22.substr%28this.MOUSEBUTTON%2C1%29%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20switch%28value.toUpperCase%28%29%29%7B%0A%20%20%20%20%20%20case%20%22M%22%3A%20value%20%3D1%3B%20break%3B%0A%20%20%20%20%20%20case%20%22R%22%3A%20value%20%3D2%3B%20break%3B%0A%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20case%20%22L%22%3A%20value%20%3D0%3B%20break%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.MOUSEBUTTON%20%3D%20value%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.button%22%2C%20value%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20threshold%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22Timer%3A%20%22%2Cthis.TIMER%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.TIMER%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20this.TIMER%20%3C%3D0%20%7C%7C%20%21this.TIMER%20%29%20this.TIMER%20%3D%201000%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.timer%22%2C%20this.TIMER%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20moverate%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%5B+-%5Drate%3A%20%22%2Cthis.MOVERATE%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.MOVERATE%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.MOVERATE%20%29%20this.MOVERATE%20%3D%20-1%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.moverate%22%2C%20this.MOVERATE%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20inertiaThreshold%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20threshold%3A%20%22%2Cthis.INERTIATHRESHOLD%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.INERTIATHRESHOLD%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.INERTIATHRESHOLD%20%29%20this.INERTIATHRESHOLD%20%3D%2020%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.inertiathreshold%22%2C%20this.INERTIATHRESHOLD%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20inertiarate%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22Kinetic%20scroll%20speed%3A%20%22%2Cthis.INERTIARATE%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.INERTIARATE%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.INERTIARATE%20%29%20this.INERTIARATE%20%3D%2020%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.inertiarate%22%2C%20this.INERTIARATE%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20setIcon%3A%20function%28%29%7B%0A%20%20%20%20//document.getAnonymousNodes%28self%29%5B1%5D.src%20%3D%20%21cbu.getPrefs%28%22grabScroll.enable%22%29%0A%20%20%20%20//%3F%20self.image%0A%20%20%20%20//%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%20%20%20%20self.checked%20%3D%20cbu.getPrefs%28%22grabScroll.enable%22%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20getScrollView%3A%20function%20%28e%29%20%7B%0A%20%20%20%20var%20NS%2CEW%2CNSEW%3B%0A%20%20%20%20NS%20%3D%20EW%20%3D%20NSEW%20%3D%20null%3B%0A%20%20%20%20var%20_scrollingView%20%3D%20null%3B%0A%20%20%20%20var%20overflowx%2C%20overflowy%2C%20ox%2C%20oy%3B%0A%20%20%20%20var%20scw%2C%20sch%2C%20horz%2C%20vert%3B%0A%20%20%20%20var%20doc%2C%20style%3B%0A%20%20%20%20var%20borderTop%3B%0A%20%20%20%20var%20borderBottom%3B%0A%20%20%20%20var%20borderLeft%3B%0A%20%20%20%20var%20borderRight%3B%0A%0A%20%20%20%20if%20%28e.originalTarget.ownerDocument.contentType%20%3D%3D%20%22application/xml%22%29%20%7B%0A%20%20%20%20%20%20_scrollingView%20%3D%20e.originalTarget.ownerDocument.defaultView%3B%0A%0A%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%21%3D%20_scrollingView.scrollMinX%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%20%20NS%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%20%20EW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20EW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20NS%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28_scrollingView.frameElement%29%20%7B%0A%20%20%20%20%20%20%20%20//this.findNearestScrollableElement%28_scrollingView.frameElement%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20//%20abort%20scrolling%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20for%20%28_scrollingView%20%3D%20e.originalTarget%3B%20_scrollingView%3B%20_scrollingView%20%3D%20_scrollingView.parentNode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView%20instanceof%20HTMLElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.localName.toUpperCase%28%29%20%3D%3D%20%22HTML%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.localName.toUpperCase%28%29%20%3D%3D%20%22BODY%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView%20%3D%20_scrollingView.ownerDocument.defaultView%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%21%3D%20_scrollingView.scrollMinX%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%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%20%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20%28_scrollingView.frameElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20//return%20this.getScrollView%28%7BoriginalTarget%20%3A%20_scrollingView.frameElement%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20abort%20scrolling%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%3E%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%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%20if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%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%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%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%20if%20%28_scrollingView.frameElement%20%26%26%20%21NS%20%26%26%20%21EW%20%26%26%20%21NSEW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getScrollView%28%7BoriginalTarget%20%3A%20_scrollingView.frameElement%7D%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%20%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.localName.toLowerCase%28%29%20%3D%3D%20%22select%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.parentNode.focus%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20overflowx%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20overflowy%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20ox%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20oy%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20doc%20%3D%20_scrollingView.ownerDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20overflowx%20%3D%20style.getPropertyValue%28%22overflow-x%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20ox%20%3D%20overflowx%20%21%3D%20%22hidden%22%20%26%26%20overflowx%20%21%3D%20%22visible%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20overflowy%20%3D%20style.getPropertyValue%28%22overflow-y%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20oy%20%3D%20overflowy%20%21%3D%20%22hidden%22%20%26%26%20overflowy%20%21%3D%20%22visible%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20borderTop%20%20%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderBottom%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderLeft%20%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderRight%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/%5E%28table%7Ctd%7Cth%29%24/i.test%28_scrollingView.localName%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc%20%3D%20_scrollingView.ownerDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderTop%20%20%20%20%3D%20style.getPropertyValue%28%22border-top-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderBottom%20%3D%20style.getPropertyValue%28%22border-bottom-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderLeft%20%20%20%3D%20style.getPropertyValue%28%22border-left-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderRight%20%20%3D%20style.getPropertyValue%28%22border-right-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28ex%29%20%7B%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%7D%0A%20%20%20%20%20%20%20%20%20%20scw%20%3D%20_scrollingView.clientWidth%3B%0A%20%20%20%20%20%20%20%20%20%20horz%20%3D%20ox%20%26%26%20scw%20%21%3D%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scw%20+%20borderLeft%20+%20borderRight%20%3C%20_scrollingView.scrollWidth%3B%0A%20%20%20%20%20%20%20%20%20%20sch%20%3D%20_scrollingView.clientHeight%3B%0A%20%20%20%20%20%20%20%20%20%20vert%20%3D%20oy%20%26%26%20sch%20%21%3D%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sch%20+%20borderTop%20+%20borderBottom%20%3C%20_scrollingView.scrollHeight%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28horz%20%26%26%20vert%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28horz%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28vert%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%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%7D%20//%20for%0A%20%20%20%20%7D%0A%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%7D%0A%7D%3B%0AGrabScroll.initGrabScroll%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 Только неплохо бы перевести меню и сообщения как следует ну и иконки красивые нарисовать. |
turbot > 22-04-2016 02:13:16 |
bunda1 bunda1 пишет
Меня самого эти "ускорения инерции прокрутки" озадачивают. 22-04-2016 02:24:40 Еще курсор обратно не меняется порой, когда отпускаешь. В скрипте с этим и вышенаписанным нет проблем. |
difabor > 22-04-2016 03:55:05 |
turbot, в свете того, что bunda1 сделал обновлённый вариант - стОит теребить автора? |
turbot > 22-04-2016 04:22:31 |
difabor пишет
Если вам не трудно. Все-таки, не все нашим форумом пользуются.
Нет. Что в этой кнопке/скрипте, что в выше помянутом аддоне, проведение над текстом по горизонтали переключает режим с прокрутки на выделение. Никакого дискомфорта. |
difabor > 22-04-2016 06:24:00 |
turbot |
Mishania > 22-04-2016 07:13:20 |
Всем спасибо, поставил кнопку от bunda1 и проблемы исчезли. Отдельное спасибо difabor за сообщение автору. Меня в мой старый аккаунт не запустили, а зарегистрироваться по новой не сумел. |
Stkvsky > 22-04-2016 12:32:25 |
Уважаемые разработчики, не могли бы вы пожалуйста сделать кнопку с таким функционалом? Изменять значки папок в закладках (для каждой папки свой значок) |
turbot > 22-04-2016 18:45:58 |
Stakhovsky |
Stkvsky > 22-04-2016 19:45:05 |
turbot 22-04-2016 19:58:00 |
difabor > 22-04-2016 20:39:23 |
Mishania пишет
Автор ответил: http://custombuttons.sourceforge.net/fo … 887#p11887 |
turbot > 22-04-2016 21:07:15 |
difabor
Я дурак. Зацепил следующую функцию при замене. Все работает. |
Dumby > 23-04-2016 12:16:33 |
turbot скрытый текст 1. Поддержка записи юникода в стро́ковых настройках может и не нужна, но, о её отсутствии, наверно, сто́ит упомянуть в описании кнопки. И, возможно, ещё добавить, что кнопка заточена под мышь, и с клавиатуры работать не будет. 2. Кнопка выглядит нормально на #nav-bar'е, а на других дефолтных тулбарах выглядит хуже. Выделить код Код:data:image/png;base64,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 3. Ерунда конечно, но раз уж решил, что кнопка будет this.type = 'menu'; А то там и так на каждый (!) объект в массиве регистрируется по два листенера, |
turbot > 23-04-2016 16:54:25 |
Dumby скрытый текст
А разве about:config его поддерживает? Dumby пишет
Я пытаюсь это поправить, но oncommand почему-то не работает. Был бы благодарен за подсказку, почему. Dumby пишет
Я подумал, это лучше, чем по обсерверу. Я не прав? Но я старался, правда... ![]() |
turbot > 23-04-2016 18:35:52 |
Dumby пишет
А разве повторно добавляемые листенеры, будучи одинаковыми, не игнорируются? Мне что-то такое попадалось на mdn. Был уверен, что это не проблема. Вот, нашел:
Поправил кое-что. Спасибо за подсказки. |
bunda1 > 23-04-2016 20:02:57 |
turbot На мой взгляд if (this.type != 'menu') { this.type = 'menu'; return; } там не нужен и Выделить код Код:// Удаляет дропмаркер у кнопки и уменьшает оставшийся отступ в конце иконки var that = this; this.hideDm = function() { var dm = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker"); var icon = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-icon"); if (dm) { dm.setAttribute("collapsed", "true"); if (this.parentNode.customizationtarget === "nav-bar-customization-target") icon.setAttribute('style', '-moz-padding-end: 7px'); } else { setTimeout(that.hideDm, 10); } } this.hideDm(); тоже не нужен, а то получается что this.type = 'menu' добавляет дропмаркер у кнопки а код // Удаляет дропмаркер у кнопки... его удаляет. |
turbot > 23-04-2016 20:17:37 |
bunda1 пишет
Это вынужденная мера. Без type = 'menu' кнопка мигает при кликах по пунктам меню. Не знаю, почему. Пожаловались - поправил как сумел. |
bunda1 > 23-04-2016 20:19:58 |
turbot пишет
Вроде не мигает: Выделить код Код: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%3EQuick%20toogle%20for%20about%3Aconfig%20preferences%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAACXBIWXMAAABnAAAAZwHVKNQmAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBA3y7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BUMDVQYqg4jIKAX08EGIIUByaVEZhMXIwMDAoM2Qw7CDkY8xi/EskynTYmYR5i4WFpZGVibWNjYetmnsyuybOVw5bnIWcHFyLeV24n7E08KrwXuOr4xfnv+0QIWguuANoS5hO+EvIqtFU8TkxW6Jz5AIlxSXvCE1RzpBRk3mrexWuXp5LwUxhSeKm5SalENU1FR+qp5TW6JerRGsqaPFpvVIe5/ObN0qvSh9KwMZg3+Gj4yOG68xmWxaZZZs7mNhbqlkxWf12/qlzQ3bE3Y77Vc7zHWc6NTqXOVS4JruFuce7hHg6eXl6u3oY+dr7WfpbxFgEWgRZBlsHWIX6hTmFu4dERgZHhUfnR5TEFsZ1xzflzArcVnS5uSDKedT76W9S/+XKZClmG2S454bnZef31owq3Bj0YniByU/ygTLtStcKxOqaqpn1GytvVT3oYG/Ua/Jrzm/ZULrprYr7d87pbvsu5N7OnvX9V3t/zNRZZLP5JIp86aemPZphuxMz1mlsxfOOT/3z3ztBVELOxftXPxqqfQyn+V1KzaufLJaYo3P2sZ129a/2ai0KXLzxC0ntjFut9pRvHPtrhd7lPbG7Zu1/9pB4UOBh/uPnD3Gc9z7RPfJM6d5zvidnXDu0gXRixGX5lx+cFXlWtb19Te+3rK53Xzn1D2h+9EPljx8+9j8SePTM8/FXyS9XPfq9xuPt1PfPf5g+LHh0/kv8l/zv+3/IfAz6deWP2x/I/6t/v8fAATCIM0IpJTRAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAEOSURBVHjabJGtS0MBFMXPJojBMMPwC1nV6FCZoGj/ZVGYiIJDBOEFm3XFP2DFIAu6ZrAYBM0OREEUnN20ICI40OfbsTzYB48b7oF74J4PWUnDjMU4GSv5PEubCo/UuwjMs8FEjLOEPNCkRloWAyxb3GEOGWKRTSLeLFYwXyLFBeaGH8w7z/yyRZlvilR5YV+kuMYY04r3NpNEfBByaYksZUyDAoPsYELmmKJKjj0CS0QYU4rl3WLMeceRCBMItW7CMEd9LxbIcUqOXQJLFld9Iks9Ii0qPTYjAo5pscYJrxzIIs1SV1B5ivzRsFjFfHaiLrDOaIxHCLmnyRmp5LLytKnw1FNWH2XaYoyM9T8AOvnw3YUOg90AAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0411%u044B%u0441%u0442%u0440%u043E%u0435%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%20about%3Aconfig%20%u043E%u0442%2023.04.2016%0Athis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%20%0A%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0AmenuPopup.id%20%3D%20%27quick-aboutconfig-menupopup%27%3B%0AmenuPopup.onmouseup%20%3De%3D%3E%20e.preventDefault%28%29%3B%20//%20%u041D%u0435%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u043F%u043E%u0434%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0430%u0445%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%0A%0A//%20nodeName%3A%20menuitem%20-%20%u0434%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%2C%20menu%20-%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29.%20menuseparator%20-%20%u0434%u043B%u044F%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044F.%0A//%20pref%20-%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%20about%3Aconfig.%0A//%20restart%20%28%u0437%u0430%u0434%u0430%u0432%u0430%u0442%u044C%20%u0441%20%u043F%u0443%u0441%u0442%u044B%u043C%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%u043C.%20%u0442.%u0435.%2C%20restart%3A%20%22%22%29%20-%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u044C%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%0A//%20%28%u0441%20%u043F%u043E%u0434%u0442%u0432%u0435%u0440%u0436%u0434%u0435%u043D%u0438%u0435%u043C%20%u0432%20%u0434%u0438%u0430%u043B%u043E%u0433%u043E%u0432%u043E%u043C%20%u043E%u043A%u043D%u0435%29%20%u043F%u043E%u0441%u043B%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430.%0A//%20userChoice%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%20%u043F%u0440%u0435%u0434%u043F%u043E%u0447%u0438%u0442%u0430%u0435%u043C%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0438%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0441%20%u043D%u0438%u043C%20%u043D%u0435%20%u0441%u043E%u0432%u043F%u0430%u0434%u0430%u0435%u0442%2C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E/%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u043E%u043C%u0435%u0447%u0430%u044E%u0442%u0441%u044F%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20%u0446%u0432%u0435%u0442%u043E%u043C.%0A//%20%u0422%u0430%u043A%u0436%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u0443%u043F%u0440%u0435%u0436%u0434%u0430%u044E%u0449%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0442%u0430%u043A%u0438%u0445%20%u043F%u0443%u043D%u043A%u0442%u043E%u0432.%20%u0421%u043C.%20%u0441%u0442%u0438%u043B%u044C%20%u0432%20%u043F%u043E%u0441%u0442%u0435%20%u043A%u043A%u043D%u043E%u043F%u043A%u0438.%0A//%20strValues%20-%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u0438%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u043C%u043E%u0435%20%u0432%20%u043C%u0435%u043D%u044E%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F.%20%u0417%u0430%u0434%u0430%u0432%u0430%u0442%u044C%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432.%0A//%20%u0417%u0430%u0434%u0430%u0435%u0442%u0441%u044F%20%u0432%20%u0432%u0438%u0434%u0435%3A%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%7C%7C%7C%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u04352%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u04352%7C%7C%7C%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u04353%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u04353%20%u0438%20%u0442.%u0434.%0A//%20%u041F%u043E%u043B%u043D%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%u0441%u044F%20%u0432%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%u0445%2C%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043D%u0430%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u043E%u0434%u043C%u0435%u043D%u044E/%u043F%u0443%u043D%u043A%u0442%20%u043F%u043E%u0434%u043C%u0435%u043D%u044E.%0A//%20%u0414%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20-%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%u0441%u044F%20%u0441%u0440%u0430%u0437%u0443%20%u043F%u043E%u0441%u043B%u0435%20%u0441%u0430%u043C%u043E%u0433%u043E%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%28%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20true%20-%20%u0442%u0430%u043A%u0436%u0435%20%u0441%u0442%u0430%u0432%u0438%u0442%20%u0433%u0430%u043B%u043E%u0447%u043A%u0443%20%u0434%u043B%u044F%20%u043D%u0435%u0433%u043E%29.%0A//%20%u041B%u041A%u041C%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20-%20%u043F%u0435%u0440%u043A%u043B%u044E%u0447%u0430%u0435%u0442%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u0434%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%2C%0A//%20%u043B%u044E%u0431%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u0432%20%u0441%u0443%u0431%u043C%u0435%u043D%u044E%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%20%u044D%u0442%u043E%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432.%0A//%20%u041F%u041A%u041C%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044E%20%u0441%u0443%u0431%u043C%u0435%u043D%u044E%20-%20%u0441%u0431%u0440%u0430%u0441%u044B%u0432%u0430%u0435%u0442%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%u0432%20%u0434%u0435%u0444%u043E%u043B%u0442%u043D%u043E%u0435.%0A%5B%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.workers.enabled%22%2C%20userChoice%3A%20%22false%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.indexedDB.enabled%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.storage.enabled%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22javascript.enabled%22%2C%20userChoice%3A%20%22true%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22noscript.allowURLBarJS%22%2C%20userChoice%3A%20%22false%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuseparator%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22general.useragent.override%22%2C%20userChoice%3A%20%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20rv%3A48.0%29%20Gecko/20100101%20Firefox/48.0%22%2C%20strValues%3A%20%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20rv%3A48.0%29%20Gecko/20100101%20Firefox/48.0%2C%2C%2CFirefox48/Linux%7C%7C%7CMozilla/5.0%20%28Windows%20NT%206.1%3B%20WOW64%3B%20rv%3A45.0%29%20Gecko/20100101%20Firefox/45.0%2C%2C%2CFirefox45/Windows%7C%7C%7C%2C%2C%2C%u041F%u0443%u0441%u0442%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22general.useragent.locale%22%2C%20restart%3A%20%22%22%2C%20strValues%3A%20%22en-US%2C%2C%2CEnglish%7C%7C%7Cru%2C%2C%2C%u0420%u0443%u0441%u0441%u043A%u0438%u0439%22%7D%0A%5D.forEach%28function%28m%29%20%7B%0A%0A%20%20var%20mItem%20%3D%20document.createElement%28m.nodeName%29%3B%0A%0A%20%20if%20%28%22restart%22%20in%20m%29%20var%20browserRestart%20%3D%20%27if%20%28custombuttons.confirmBox%28null%2C%20%22Restart%3F%22%2C%20%22Yes%22%2C%20%22Cancel%22%29%29%20Services.startup.quit%28Services.startup.eAttemptQuit%20%7C%20Services.startup.eRestart%29%3B%27%3B%0A%0A%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menuitem%22%29%20%7B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27class%27%2C%20%27menuitem-iconic%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27onclick%27%2C%20%27if%20%28event.button%20%3D%3D%3D%200%29%20custombuttons.setPrefs%28%22%27%20+%20m.pref%20+%20%27%22%2C%20%21custombuttons.getPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%29%3B%20if%20%28event.button%20%3D%3D%3D%202%29%20%7Bevent.preventDefault%28%29%3B%20custombuttons.clearPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%7D%3B%20%27%20+%20browserRestart%20+%20%27%27%29%3B%0A%20%20%7D%0A%0A%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menu%22%29%20%7B%0A%20%20%20%20mItem.setAttribute%28%27oncontextmenu%27%2C%20%27event.preventDefault%28%29%3B%20custombuttons.clearPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%3B%20%27%20+%20browserRestart%20+%20%27%27%29%3B%0A%0A%20%20%20%20var%20subMenu%20%3D%20mItem.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A%20%20%20%20for%20%28var%20value%20of%20m.strValues.split%28%27%7C%7C%7C%27%29%29%20%7B%0A%20%20%20%20%20%20var%20submItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20var%20smVal%20%3D%20value.split%28%27%2C%2C%2C%27%29%5B0%5D%3B%0A%20%20%20%20%20%20var%20smName%20%3D%20value.split%28%27%2C%2C%2C%27%29%5B1%5D%3B%0A%0A%20%20%20%20%20%20submItem.setAttribute%28%27type%27%2C%20%27radio%27%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%27class%27%2C%20%27menu-iconic%27%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27label%27%2C%20smName%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27tooltiptext%27%2C%20smVal%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27onclick%27%2C%20%27event.preventDefault%28%29%3B%20custombuttons.setPrefs%28%22%27%20+%20m.pref%20+%20%27%22%2C%20%22%27%20+%20smVal%20+%20%27%22%29%3B%20%27%20+%20browserRestart%20+%20%27%27%29%3B%0A%0A%20%20%20%20%20%20subMenu.appendChild%28submItem%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20menuPopup.appendChild%28mItem%29%3B%0A%0A%20%20//%20%u041B%u0438%u0441%u0442%u0435%u043D%u0435%u0440%u044B%20%u043E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u044E%u0449%u0438%u0435%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%0A%20%20//%20%u0438%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u044E%u0449%u0438%u0435%20%u0441%u043E%u043E%u0442%u0432%u0435%u0442%u0441%u0442%u0432%u0443%u044E%u0449%u0438%u0435%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%20%u0438%20%u0447%u0435%u043A%u0431%u043E%u043A%u0441%u044B%20%u0434%u043B%u044F%20%u043F%u0443%u043D%u043A%u0442%u043E%u0432%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0438%20%u043C%u0435%u043D%u044E%20%u0438%20%u043A%u043B%u0438%u043A%u0430%u0445%0A%20%20for%20%28var%20type%20of%20%5B%27click%27%2C%20%27popupshowing%27%5D%29%20%7B%0A%20%20%20%20menuPopup.addEventListener%28type%2C%20%28e%29%3D%3E%20%7B%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%22pref%22%20in%20m%29%20var%20val%20%3D%20custombuttons.getPrefs%28m.pref%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28m.nodeName%20%3D%3D%3D%20%27menuitem%27%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20%20%20mItem.label%20%3D%20m.pref%20+%20%27%3B%27%20+%20val%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22userChoice%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20usrChc%20%3D%20%28val.toString%28%29%20%3D%3D%3D%20m.userChoice%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27style%27%2C%20usrChc%20%3F%20%27%27%20%3A%20%27color%3A%20orangered%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27user-choice%27%2C%20usrChc%20%3F%20%27true%27%20%3A%20%27false%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28subMenu%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20smitem%20of%20subMenu.getElementsByTagName%28%27menuitem%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20smval%20%3D%20smitem.getAttribute%28%27tooltiptext%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20smitem.setAttribute%28%27checked%27%2C%20%28val%20%3D%3D%3D%20smval%29%20%3F%20true%20%3A%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menu%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20try%20%7Bvar%20vname%20%3D%20subMenu.getElementsByAttribute%28%27checked%27%2C%20%27true%27%29%5B0%5D.getAttribute%28%27label%27%29%7D%20catch%28e%29%20%7Bvname%20%3D%20%27Default%27%7D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27label%27%2C%20m.pref%20+%20%27%20-%20%27%20+%20vname%29%3B%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27tooltiptext%27%2C%20val%20%7C%7C%20%27This%20preferences%20has%20null%20value%20or%20does%20not%20exist.%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22userChoice%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20smUsrChc%20%3D%20%28val%20%3D%3D%3D%20%27%27%20+%20m.userChoice%20+%20%27%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27style%27%2C%20smUsrChc%20%3F%20%27%27%20%3A%20%27color%3A%20orangered%20%21important%3B%20font-weight%3A%20bold%20%21important%3B%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27user-choice%27%2C%20smUsrChc%20%3F%20%27true%27%20%3A%20%27false%27%29%3B%0A%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%7D%2C%200%29%0A%20%20%20%20%7D%2C%20false%29%0A%20%20%7D%0A%7D%29%3B%0A%0A%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 |
turbot > 23-04-2016 20:22:43 |
А с просто Выделить код Код:document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker").setAttribute("collapsed", "true"); - то ли не работает, то ли просто ругается в консоль на симанки. Подглядел выход в кнопке okkamas_knife(кажется). bunda1 |
bunda1 > 23-04-2016 20:32:12 |
turbot пишет
А, вот ты о чём, ну тогда: Выделить код Код:menuPopup.onmouseup = menuPopup.onmousedown =e=> e.preventDefault(); // Не закрывать меню кнопки и подменю при кликах по пунктам меню |
turbot > 23-04-2016 20:35:45 |
bunda1 23-04-2016 20:45:45 |
Dumby > 23-04-2016 20:51:36 |
turbot пишет
Да-да, уж поверь, я оценил. скрытый текст
Эээ, кто что-то выложил в Готовых, тот и сноски к этому делает, если захочет. Очевидно же.
Видимо я неправильно или непонятно выразился. Выделить код Код:data:image/png;base64,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 Ещё раз: никто не напрягает что-то исправлять в коде,
Где посмотреть код с oncommand, который не работает?
Что значит «не прав»? Кнопка работает, — значит прав.
Игнорируются, будучи одинаковыми. Одинаковыми.
Вот не поленись запилить кнопку и посчитать алерты при инициализации и после клика. Выделить код Код:[1, 2, 3].forEach(function() { self.addEventListener("click", function func1(e) { if (!e.button) alert(arguments.callee.name); }, false); alert("Added listener 1"); }); function func2(e) { if (!e.button) alert(arguments.callee.name); } [1, 2, 3].forEach(function() { self.addEventListener("click", func2, false); alert("Added listener 2"); }); |
bunda1 > 23-04-2016 20:56:38 |
turbot пишет
Не нужно. 23-04-2016 21:13:02 Выделить код Код:for (var type of ['click', 'popupshowing']) { menuPopup.addEventListener(type, (e)=> {... засунуть в них. |
turbot > 23-04-2016 21:18:45 |
Dumby скрытый текст Dumby пишет
Ну просто заменить onclick в коде. Так первоначально и было. Dumby пишет
Ууу, вот оно что. Т.е., у меня там все печально? Нужно везде впихивать removeEventListener?
Да, но это надо знать, что лучше для производительности. bunda1 пишет
Ну и слава богу. bunda1 пишет
Да но там еще и расставляет при открытии попапа. Я решил, что пусть его. |
bunda1 > 23-04-2016 21:41:18 |
turbot пишет
Хотя бы обработчик поменяй на: addEventListener(type, (e)=> { }, false, menuPopup); и посмотри в консоли ошибок при открытие меню. |
turbot > 23-04-2016 21:53:12 |
Dumby пишет
А это вообще можно обойти? Во что конвертировать? Ведь так-то, вручную, кириллицей в about:config записать можно... bunda1 пишет
Ни одной ошибки, даже с javascript.options.strict;true |
bunda1 > 23-04-2016 22:04:06 |
turbot пишет
23-04-2016 22:09:42 |
bunda1 > 23-04-2016 22:38:26 |
Ошибка на 46-ой |
turbot > 23-04-2016 22:44:41 |
Опять мои посты съедает? bunda1 23-04-2016 22:52:21 23-04-2016 23:07:19 Выделить код Код:if ("userChoice" in m) { try {var usrChc = (val.toString() === m.userChoice);} catch(e) {usrChc = false}; mItem.setAttribute('style', usrChc ? '' : 'color: orangered !important; font-weight: bold !important;'); mItem.setAttribute('user-choice', usrChc ? 'true' : 'false'); } - так не ругается. Или можно проще? |
bunda1 > 23-04-2016 23:07:31 |
turbot пишет
А эсли так: cbu.setPrefs(pref, convertFromUnicode("UTF-8", str) ); |
turbot > 23-04-2016 23:11:24 |
bunda1 23-04-2016 23:15:30 |
bunda1 > 23-04-2016 23:19:14 |
turbot пишет
Да. 23-04-2016 23:21:06 turbot пишет
Может попробуй if ("pref" in m) var val = custombuttons.getPrefs(m.pref) || false; |
turbot > 23-04-2016 23:22:43 |
bunda1
Попробую, спасибо. |
bunda1 > 23-04-2016 23:22:54 |
turbot пишет
Вроде глюк с cbu уже исправили в Сustom Buttons. А у тебя последняя версия Сustom Buttons? |
turbot > 23-04-2016 23:32:51 |
Да, самая (проверил по sourceforge). Плюс там еще фиксы накопились под ночнушку. 23-04-2016 23:34:00 turbot пишет
Поторопился. Там еще обратно конвертировать, чтоб сравнивать... 23-04-2016 23:39:43 |
bunda1 > 23-04-2016 23:45:47 |
turbot пишет
Может gPrefService.getComplexValue(pref, Ci.nsISupportsString).data |
turbot > 24-04-2016 00:08:10 |
bunda1 А почему ConvertToUnicode() не работает? Сделал. Жду новых указаний на ошибки. |
bunda1 > 24-04-2016 10:45:53 |
turbot пишет
Как не работает? |
Dumby > 24-04-2016 11:25:13 |
turbot пишет
скрытый текст turbot пишет
В окне SeaMonkey (2.39) нет объекта gPrefService Выделить код Код:data:image/png;base64,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 turbot пишет
скрытый текст Вот опять же, не поленись запилить и нажать кнопку. Выделить код Код:var prefName = "CB" + _id.slice(20) + ".test"; var prefValue = "быль"; var prefs = "Preferences" in window ? Preferences : { get: pref => Application.prefs.getValue(pref, undefined), set: (pref, val) => Application.prefs.setValue(pref, val), reset: pref => Services.prefs.clearUserPref(pref) }; this.setAttribute("oncommand", "bla();"); this.bla = () => { prefs.set(prefName, prefValue); gBrowser.selectedTab = gBrowser.addTab("about:config?filter=" + prefName); setTimeout(() => { if (confirm("Reset ?\n\n" + prefName + ";" + prefs.get(prefName))) prefs.reset(prefName); }, 500); } |
bunda1 > 24-04-2016 11:49:49 |
turbot |
Dumby > 24-04-2016 17:57:55 |
turbot скрытый текст В описании не указано когда дописывается «... - Default» Явно не то же самое что prefHasUserValue Вот, например, расклад. Выделить код Код:data:image/png;base64,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 |
turbot > 24-04-2016 19:38:19 |
Dumby скрытый текст
Вы переоцениваете мои умственные способности. Я уже пытался делать из них функцию и добавлять через mItem.setAttribute('oncommand', 'document.getElementById("' + self.id + '").tooglePref();'). Безрезультатно. И я абсолютно не понимаю - почему. То есть, вообще не имею предположений. Я вообще думал бросить затею с кнопкой из-за этого, пока случайно не обнаружил, что onclick - прекрасно работает.
Выделить код Код:try { var vname = subMenu.getElementsByAttribute('checked', 'true')[0].getAttribute('label'); } catch(e) { if (!Services.prefs.prefHasUserValue(m.pref)) vname = 'Default'; else vname = 'Undefined' }; так?
Dumby 24-04-2016 19:41:55 bunda1 пишет
Никак. Пишет что не является функцией. Вчера повсякому пробовал. |
turbot > 24-04-2016 20:12:29 |
bunda1 пишет
Спасибо. Прокрутка стала даже глаже, чем в оригинале. А вот курсор все еще, периодически, остается в виде руки даже при отключении кнопки. (И было б неплохо добавить опцию в менюшкку "не изменять вид курсора" (я знаю, что в коде поправить можно, но все ж).) |
bunda1 > 24-04-2016 20:29:59 |
turbot пишет
Я не менял оргинальный код в отношении прокрутки turbot пишет
А что там надо переключать? |
turbot > 24-04-2016 20:35:31 |
bunda1 bunda1 пишет
Отключать изменение вида курсора при захвате страницы. Меня это раздражает. Но, может, только меня, поэтому не настаиваю. |
bunda1 > 24-04-2016 20:37:00 |
turbot пишет
|
turbot > 24-04-2016 20:46:55 |
bunda1 А from - да, работает. |
manuk > 24-04-2016 21:53:04 |
turbot пишет
bunda1, надежда есть? |
bunda1 > 24-04-2016 22:10:36 |
manuk пишет
Папробую |
Dumby > 24-04-2016 23:38:26 |
turbot скрытый текст turbot пишет
Ничего мы не переоцениваю, ну разве что только насчёт наличия Иначе говоря, мы, наверно, должен был угадать по одной строчке кода Выделить код Код:var popup = this.appendChild(document.createElement("menupopup")); popup.setAttribute("position", "after_start"); for(var ind = 0; ind < 5; ind++) { var mItem = popup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", "menuitem " + ind); mItem.setAttribute('oncommand', 'document.getElementById("' + self.id + '").tooglePref();') //███ "QUOTE" } popup.setAttribute("oncommand", "event.target.parentNode.parentNode.tooglePref(event);"); //███ "SINGLE" this.tooglePref = e => alert("SUCCESS! " + (e ? "SINGLE " + e.target.label : "QUOTE")); this._handleClick = () => popup.openPopup(self);
Да, это тот самый фуэл, который выпилили.
Что «так?»? Откуда мне знать что ты задумал? |
turbot > 25-04-2016 00:19:25 |
Dumby скрытый текст
Намек понял.
Ммм, понял. Опишу. Я к тому ж решил сделать выделение жирным для недефолтных значений у всех параметров.
Можно я завтра задание тебе сдам? У меня уже голова болит и пиво булькает. P.S.: А можно ли для элемент.стиль.цсс-свойство - !important как-то попростому присобачивать? Или только с setAttribute и, если надо чтобы старый не перекрывало, всякие push'ы и прочие прототипы использовать? А то я такое пока не потяну... |
Dumby > 25-04-2016 02:27:08 |
turbot пишет
Ты об этом что ли? скрытый текст Выделить код Код:document.getElementById("titlebar-buttonbox").style.setProperty( "outline", "1px solid red", "important" ); Выделить код Код:data:image/png;base64,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 |
turbot > 25-04-2016 02:41:36 |
Dumby |
bunda1 > 25-04-2016 11:12:08 |
manuk пишет
Вообще удалил код который изменяет вид курсора в GrabScroll: Выделить код Код: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%3EGrabScroll%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAawBrAGsept3cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAeElEQVR42pVSWw7AIAwC4209T8/LPmq6xk1T+Wwh0AfHGPjAzAD8tvqXZGaSAJD0Vlb2YC8kRxRD01CGR+hhSlKSpMUkRyBZdfBs0yHGDZOFlME82Y70snOkMzV21TxJUTPXmjUlQQVxu5bvcOdw0Gxfo+Jz8UuOB3pnSTiV10R3AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20GrabScroll.toggle%28%29%3B%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20/%20%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%5Cn%u0414%u041F%3A%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0431%u0440%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%27%2C%20func%3A%20%27GrabScroll.button%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0431%u0440%u0430%u0442%u044C%20%u043D%u0430%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0438%20%u0441%u043A%u043E%u0440%u043E%u0441%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%27%2C%20func%3A%20%27GrabScroll.moverate%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u0440%u0435%u043C%u044F%20%u043E%u0442%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u043F%u0440%u0438%20%u0431%u0435%u0437%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%27%2C%20func%3A%20%27GrabScroll.threshold%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0443%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043F%u0440%u0438%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%27%2C%20pref%3A%20%27grabScroll.enableinertia%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0441%u043A%u043E%u0440%u043E%u0441%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u043F%u0440%u0438%20%u043A%u043E%u0442%u043E%u0440%u043E%u0439%20%u043F%u043E%u044F%u0432%u043B%u044F%u0435%u0442%u0441%u044F%20%u0430%u0432%u0442%u043E%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0430%27%2C%20func%3A%20%27GrabScroll.inertiaThreshold%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0434%u043B%u0438%u043D%u0443%20%u0430%u0432%u0442%u043E%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0438%27%2C%20func%3A%20%27GrabScroll.inertiarate%28%29%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%27%2C%20pref%3A%20%27grabScroll.clickable%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%u0445%27%2C%20pref%3A%20%27grabScroll.notimage%27%20%7D%2C%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%22separator%22%20in%20m%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20if%20%28%22pref%22%20in%20m%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.pref%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.pref%2C%20%21cbu.getPrefs%28m.pref%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20else%20mItem.onclick%20%3D%28%29%3D%3E%20eval%28m.func%29%3B%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0Avar%20GrabScroll%20%3D%20%7B%0A%20%20TOLERANCE%20%20%20%20%20%20%20%20%20%3A3%2C%0A%20%20TOLERANCE_WHEN_NO_H_SCROLL%20%3A%205%2C%0A%20%20CANCEL_WHEN_SELECTION%3A%20true%2C%0A%20%20MOUSEBUTTON%3A%20%20%20%20%20%20cbu.getPrefs%28%22grabScroll.button%22%29%20%7C%7C%200%2C%0A%20%20MOVERATE%3A%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22grabScroll.moverate%22%29%20%7C%7C%20-1%2C%0A%20%20TIMER%3A%20%20%20%20%20%20%20%20%20%20%20%20cbu.getPrefs%28%22grabScroll.timer%22%29%20%7C%7C%20500%2C%0A%20%20INERTIATHRESHOLD%3A%20cbu.getPrefs%28%22grabScroll.inertiathreshold%22%29%20%7C%7C%2080%2C%0A%20%20INERTIARATE%3A%20%20%20%20%20%20cbu.getPrefs%28%22grabScroll.inertiarate%22%29%20%7C%7C%2050%2C%0A%20%20IGNOREURL%3A%20%20%20%20%20%20%20%20%5B%22http%3A//maps.google.*/*%22%2C%22http%3A//maps.yahoo.co.jp/pl*%22%2C%22http%3A//map.yahoo.co.jp/pl*%22%2C%22http%3A//map.goo.ne.jp/*%22%2C%22http%3A//www.mapion.co.jp/c/f*%22%2C%22http%3A//books.google.co.jp/books%3Fid%3D*%22%2C%22http%3A//books.google.co.jp/books%3Fid%3D*%22%5D%2C%0A%0A%20%20mStatus%3A%200%2C%20%0A%20%20mLastX%3A%200%2C%0A%20%20mLastY%3A%200%2C%0A%20%20mCursor%3A%20null%2C%0A%20%20mCursorElement%3A%20null%2C%0A%20%20_target%3A%20null%2C%0A%20%20_target2%3A%20null%2C%0A%20%20_isImage%3Afalse%2C%0A%20%20_timer%3A0%2C%0A%20%20_ctimer%3A0%2C%0A%20%20_mtimer%3A%20false%2C%0A%20%20cScroll%3Afalse%2C%0A%20%20cSpeedX%3A0%2C%0A%20%20cSpeedY%3A0%2C%0A%20%20_doc%3Anull%2C%0A%20%20_MOVERATEpZoom%3A1%2C%0A%20%20_window%3A%20null%2C%0A%20%20%20%20%20%20%0A%20%20initGrabScroll%3A%20function%28%29%20%7B%0A%20%20%20%20var%20curentBrowserVersion%20%3D%20Services.appinfo.platformVersion%3B%20//%2731.*%27%0A%20%20%20%20var%20compareResult%20%3D%20Services.vc.compare%28curentBrowserVersion%2C%20%2746.*%27%29%3B%0A%20%20%20%20this.Bug1209100%20%3D%20%28compareResult%20%3C%200%29%20%3F%2010%20%3A%201%3B%0A%20%20%20%20%0A%20%20%20%20if%20%28%20GrabScroll.activeBrowser%28%29.mPanelContainer%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20this._window%20%3D%20GrabScroll.activeBrowser%28%29.mPanelContainer%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20else%20this._window%20%3D%20document.getElementById%28%27content%27%29%3B%0A%0A%20%20%20%20for%28%20var%20aURL%20in%20this.IGNOREURL%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20if%20%28%20this.IGNOREURL%5BaURL%5D%20%3D%3D%3D%20%27%27%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20this.IGNOREURL%5BaURL%5D%20%3D%20this.convert2RegExp%28this.IGNOREURL%5BaURL%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20this._window.setCapture%28%29%3B%0A%20%20%20%20addEventListener%28%22mousedown%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%22click%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%22mouseup%22%2C%20this%2C%20true%2C%20this._window%29%3B%0A%20%20%20%20addEventListener%28%27pagehide%27%2C%20this%2C%20false%2C%20gBrowser%29%3B%0A%20%20%20%20%0A%20%20%20%20this.setIcon%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20activeBrowser%3A%20function%28%29%20%7B%0A%20%20%20%20return%20%28%27SplitBrowser%27%20in%20window%20%3F%20SplitBrowser.activeBrowser%20%3A%20null%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20%20gBrowser%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20e%20%3D%20new%20XPCNativeWrapper%28e%29%3B%0A%20%20%20%20switch%28e.type%29%20%7B%0A%20%20%20%20%20%20case%20%22mousedown%22%3A%0A%20%20%20%20%20%20%20%20if%20%28%20this.cScroll%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20this.cSpeedY%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22grabScroll.enable%22%29%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20this.grabStart%28e%29%3B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22mousemove%22%3A%0A%20%20%20%20%20%20%20%20this.mousemove%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22click%22%3A%0A%20%20%20%20%20%20%20%20this.click%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22mouseup%22%3A%0A%20%20%20%20%20%20%20%20this.mouseup%28e%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%27pagehide%27%3A%0A%20%20%20%20%20%20%20%20this._doc%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this.mCursorElement%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._target%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this._isImage%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this.NS%20%3D%20this.EW%20%3D%20this.NSEW%20%3D%20null%3B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20grabStart%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28this.mStatus%20%3D%3D%203%29%0A%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%0A%20%20%20%20if%20%28this.MOUSEBUTTON%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20if%20%28Math.abs%28this.mLastX%20-%20e.screenX%29%20%3C%205%20%26%26%0A%20%20%20%20%20%20%20%20%20%20Math.abs%28this.mLastY%20-%20e.screenY%29%20%3C%205%20%29%0A%20%20%20%20%20%20%20%20return%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20doc%20%3D%20e.originalTarget.ownerDocument%3B%0A%20%20%20%20if%20%28%21doc%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20if%20%28doc.contentType%20%3D%3D%20%27application/vnd.mozilla.xul+xml%27%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20this._doc%20%3D%20doc%3B%0A%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20if%20%28this.CANCEL_WHEN_SELECTION%20%26%26%20this.MOUSEBUTTON%20%3D%3D%200%20%26%26%20doc.defaultView.getSelection%28%29%20%21%3D%20%22%22%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20this._target%20%3D%20e.originalTarget%3B%0A%0A%20%20%20%20%20%20if%20%28/%5E%28html%7Cbody%29%24/.test%28this._target.localName.toLowerCase%28%29%29%20%7C%7C%20this._target.clientHeight%20%3E%2030000%29%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20else%20if%20%28/div/.test%28this._target.localName.toLowerCase%28%29%29%20%26%26%20this._target.clientHeight%20%3E%201000%29%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20null%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20this._target2%20%3D%20this._target%3B%0A%0A%20%20%20%20%20%20for%20%28aURL%20in%20this.IGNOREURL%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.IGNOREURL%5BaURL%5D%20%3D%3D%3D%20%27%27%29continue%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28doc.documentURI.match%28this.IGNOREURL%5BaURL%5D%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20LOG%28this.IGNOREURL%5BaURL%5D+%27%5Cn%27+ex%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this.isParentEditableNode%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isParentDraggableNode%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isIgnore%28this._target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isVideoControl%28e.target%29%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20if%20%28this.isParentClickableNode%28this._target%29%29%7B%0A%20%20%20%20%20%20%20%20if%20%28cbu.getPrefs%28%22grabScroll.clickable%22%29%29%0A%09return%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28%27linkDragSelection%27%20in%20window%29%29%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._isImage%20%3D%20this.isImage%28e%29%3B%0A%20%20%20%20%20%20if%20%28this._isImage%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28cbu.getPrefs%28%22grabScroll.notimage%22%29%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20target%20%3D%20this._target%3B%0A%20%20%20%20%20%20while%20%28target%29%7B%0A%20%20%20%20%20%20%20%20if%20%28%22getAttribute%22%20in%20target%20%26%26%20target.getAttribute%28%22draggable%22%29%20%3D%3D%20%22true%22%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20style%20%3D%20this._doc.defaultView.getComputedStyle%28target%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22cursor%22%29%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20else%20if%20%28/resize%7Cmove%7Call-scroll%7Ccrosshair/.test%28style.getPropertyValue%28%22auto%22%29%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20%20%20%20%20target%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this.MOUSEBUTTON%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this._timer%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%20%20%20%20this.mLastX%20%3D%20e.screenX%3B%0A%20%20%20%20%20%20this.mLastY%20%3D%20e.screenY%3B%0A%20%20%20%20%20%20this.mStatus%20%3D%201%3B%0A%20%20%20%20%20%20this._MOVERATEpZoom%20%3D%20%20this.MOVERATE%20/%20%28ZoomManager.useFullZoom%20%3F%20ZoomManager.zoom%20%3A%201%29%3B%0A%0A%20%20%20%20%20%20%5Bthis.NS%2C%20this.EW%2C%20this.NSEW%5D%20%3D%20this.getScrollView%28e%29%3B%0A%20%20%20%20%20%20this._window.addEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20adjustedTimer%3A%20function%28%29%7B%0A%20%20%20%20var%20magTimer%20%3D%20this.TIMER%3B%0A%20%20%20%20return%20magTimer%3B%0A%20%20%7D%2C%0A%0A%20%20grabFinish%3A%20%20function%28%29%20%7B%0A%20%20%20%20this._window.removeEventListener%28%22mousemove%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%20%20%20%20if%20%28selCon%29%0A%20%20%20%20%20%20selCon.setDisplaySelection%28selCon.SELECTION_ON%29%3B%0A%20%20%7D%2C%0A%0A%20%20mousemove%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28this.mStatus%20%3D%3D%202%20%7C%7C%20this.mStatus%20%3D%3D%201%20%29%20%7B%0A%20%20%20%20%20%20var%20x%20%3D%20e.screenX%3B%0A%20%20%20%20%20%20var%20y%20%3D%20e.screenY%3B%0A%20%20%20%20%20%20var%20doc%20%3D%20e.originalTarget.ownerDocument%3B%0A%0A%20%20%20%20%20%20if%20%28this.mStatus%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21this._isImage%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%28new%20Date%28%29.getTime%28%29%20-%20this._timer%29%20%3E%20this.adjustedTimer%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28Math.abs%28x-this.mLastX%29%20%3C%20this.TOLERANCE_WHEN_NO_H_SCROLL%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20movingh%20%3D%20Math.abs%28x-this.mLastX%29%20%3E%20Math.abs%28y-this.mLastY%29%20*%2050%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21this._isImage%20%26%26%20this.MOUSEBUTTON%20%3D%3D%200%20%20%26%26%20this.isText%28e%29%20%20%26%26%20movingh%20%26%26%20%21this.EW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%28Math.abs%28x%20-%20this.mLastX%29%20+%20Math.abs%28y%20-%20this.mLastY%29%20%3C%20this.TOLERANCE%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28this.MOUSEBUTTON%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20selCon%20%3D%20this.getSelconForDoc%28this._doc%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28selCon%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selCon.getSelection%28selCon.SELECTION_NORMAL%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20selection.removeAllRanges%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20selCon.setDisplaySelection%28selCon.SELECTION_OFF%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22ucjsMouseGestures%22%20in%20window%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ucjsMouseGestures._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20this.mLastX%20%3D%20x%20-%20%28x%20-%20this.mLastX%29%20/%2010%3B%0A%20%20%20%20%20%20%20%20this.mLastY%20%3D%20y%20-%20%28y%20-%20this.mLastY%29%20/%2010%3B%0A%20%20%20%20%20%20%20%20this.mStatus%20%3D%202%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28this._mtimer%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20this.cSpeedX%20%3D%20this._MOVERATEpZoom%20*%20%28x%20-%20this.mLastX%29%3B%0A%20%20%20%20%20%20this.cSpeedY%20%3D%20this._MOVERATEpZoom%20*%20%28y%20-%20this.mLastY%29%3B%0A%0A%20%20%20%20%20%20if%20%28this.scroll%28e%29%29%20%7B%0A%20%20%20%20%20%20%20%20this.mLastX%20%3D%20x%3B%0A%20%20%20%20%20%20%20%20this.mLastY%20%3D%20y%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20getSelconForDoc%3A%20function%20getSelconForDoc%28doc%29%7B%0A%20%20%20%20if%20%28%21doc%29%0A%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20aFrame%20%3D%20doc.defaultView%3B%0A%20%20%20%20if%20%28%21aFrame%29%0A%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20docShell%20%3D%20this.getDocShellForFrame%28aFrame%29%3B%0A%20%20%20%20var%20selCon%20%3D%20docShell.QueryInterface%28Ci.nsIInterfaceRequestor%29.getInterface%28Ci.nsISelectionDisplay%29.QueryInterface%28Ci.nsISelectionController%29%3B%0A%20%20%20%20return%20selCon%3B%0A%20%20%7D%2C%0A%0A%20%20getDocShellForFrame%3A%20function%20getDocShellForFrame%28aFrame%29%7B%0A%20%20%20%20return%20aFrame.QueryInterface%28Ci.nsIInterfaceRequestor%29.getInterface%28Ci.nsIWebNavigation%29.QueryInterface%28Ci.nsIDocShell%29%3B%0A%20%20%7D%2C%0A%0A%20%20click%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28e.button%20%3D%3D%200%20%26%26%20this.mStatus%20%3E%3D%202%20%26%26%20this._doc%20instanceof%20Ci.nsIImageDocument%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%7D%2C%0A%0A%20%20mouseup%3A%20%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3E%201%29%20%7B%0A%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%0A%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20if%20%28this.mStatus%20%3D%3D%202%29%0A%20%20%20%20%20%20%20%20this.mStatus%20%3D%203%3B%0A%0A%20%20%20%20%20%20if%20%28cbu.getPrefs%28%22grabScroll.enableinertia%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28Math.abs%28this.cSpeedX%29%20%3E%20this.INERTIATHRESHOLD%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20this.INERTIATHRESHOLD%20%29%29%7B%0A%20%20%20%20%20%20%20%20if%20%28this.cScroll%29%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20%20var%20v%20%3D%20this.INERTIARATE%3B%0A%20%20%20%20%20%20%20%20if%20%28this.cSpeedX%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20Math.min%28this.cSpeedX%2C%20v%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedX%20%3D%20Math.max%28this.cSpeedX%2C%20-v%29%3B%0A%20%20%20%20%20%20%20%20if%20%28this.cSpeedY%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedY%20%3D%20Math.min%28this.cSpeedY%2C%20v%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this.cSpeedY%20%3D%20Math.max%28this.cSpeedY%2C%20-v%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20Start%3B%0A%20%20%20%20%20%20%20%20function%20scrolling%28e%2C%20self%29%7B%0A%20%20%20%20%20%20%20%20%20%20Start%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20self.scroll2%28e%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20self.cScroll%20%3D%20setTimeout%28arguments.callee%2C%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%20Math.max%2825%20-%20%28%28new%20Date%28%29%29.getTime%28%29-Start%29%2C%200%29%2C%20e%2C%20self%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20this.scroll2%28e%29%3B%0A%20%20%20%20%20%20%20%20scrolling%28e%2C%20this%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20if%20%28e.button%20%3D%3D%20this.MOUSEBUTTON%20%26%26%20this.mStatus%20%3D%3D%201%29%7B%0A%20%20%20%20%20%20this.grabFinish%28%29%3B%0A%20%20%20%20%20%20this.mStatus%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20scroll2%3A%20function%28e%29%7B%0A%20%20%20%20var%20ay%20%3D%20Math.abs%28this.cSpeedY%29%3B%0A%20%20%20%20var%20ax%20%3D%20Math.abs%28this.cSpeedX%29%3B%0A%20%20%20%20if%20%28ay%20%3C%2010%20%26%26%20ax%20%20%3C%2010%29%7B%0A%20%20%20%20%20%20%20clearTimeout%28this.cScroll%29%3B%0A%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.scroll%28e%29%3B%0A%20%20%20%20if%20%20%20%20%20%20%28ax%20%3E%3D%20100%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%20100%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%2020%29%20this.cSpeedX%20%3D%20this.cSpeedX%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ax%20%3C%2010%29%20%20this.cSpeedX%20%3D%200%3B%0A%0A%20%20%20%20if%20%20%20%20%20%20%28ay%20%3E%3D%20100%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%20100%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%2020%29%20this.cSpeedY%20%3D%20this.cSpeedY%20*%200.95%3B%0A%20%20%20%20else%20if%20%28ay%20%3C%2010%29%20this.cSpeedY%20%3D%200%3B%0A%20%20%7D%2C%0A%0A%20%20scroll%3A%20function%28e%29%7B%0A%20%20%20%20var%20minScroll%20%3D%20this.Bug1209100%3B%20//%20prevent%20Bug%201209100%2C%2010px%20%3Cfx46.%201px%20%3E%3Dfx46%0A%20%20%20%20this._mtimer%20%3D%20true%3B%0A%20%20%20%20var%20flg%20%3D%20false%3B%0A%20%20%20%20if%20%28this.NS%20%26%26%20this.NS%20%3D%3D%20this.EW%20%26%26%0A%20%20%20%20%20%20%20%20%28Math.abs%28this.cSpeedX%29%20%3E%20minScroll%20%7C%7C%20Math.abs%28this.cSpeedY%29%20%3E%20minScroll%29%29%20%7B%0A%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%20%20%20%20%20%20%20%20this.NS.scrollBy%28this.cSpeedX%2C%20this.cSpeedY%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.NS.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%20%20%20%20%20%20%20%20this.NS.scrollTop%20%20+%3D%20this.cSpeedY%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20if%20%28this.NS%20%26%26%20Math.abs%28this.cSpeedY%29%20%3E%20minScroll%29%20%7B%0A%20%20%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.NS%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.NS.scrollBy%280%2C%20this.cSpeedY%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.NS.scrollTop%20+%3D%20this.cSpeedY%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28this.EW%20%26%26%20Math.abs%28this.cSpeedX%29%20%3E%20minScroll%29%7B%0A%20%20%20%20%20%20%20%20flg%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20if%20%28%22scrollBy%22%20in%20this.EW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.EW.scrollBy%28this.cSpeedX%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.EW.scrollLeft%20+%3D%20this.cSpeedX%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20setTimeout%28function%28self%29%7B%0A%20%20%20%20%20%20self._mtimer%20%3D%20false%3B%0A%20%20%20%20%7D%2C%2020%2C%20this%29%3B%0A%20%20%20%20return%20flg%3B%0A%20%20%7D%2C%0A%0A%20%20isText%3A%20function%28e%29%20%7B%0A%20%20%20%20return%20e.explicitOriginalTarget.nodeType%20%3D%3D%20document.TEXT_NODE%3B%0A%20%20%7D%2C%0A%0A%20%20isImage%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.target%20instanceof%20Ci.nsIImageLoadingContent%29%0A%20%20%20%20%20%20return%20e.target%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isIgnore%3A%20function%28aNode%29%7B%0A%20%20%20%20%20while%20%28aNode%29%7B%0A%20%20%20%20%20%20var%20name%20%3D%20aNode.nodeName.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28name%20%3D%3D%20%22html%22%29%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20if%20%28/%28scrollbar%7Cselect%7Coption%7Cembed%7Cobject%7Ctree%7Capplet%7Cstatusbar%29/.test%28name%29%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20aNode%20%3D%20aNode.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20isParentClickableNode%20%3A%20function%28aNode%29%20%7B%0A%20%20%20%20if%20%28%21aNode%29%20return%20null%3B%0A%20%20%20%20var%20d%20%3D%20aNode.ownerDocument%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20var%20xpathResult%20%3D%20d.evaluate%28%0A%20%20%20%20%20%20%20%20%20%20%27ancestor-or-self%3A%3A*%5B%28%28local-name%28%29%20%3D%20%22a%22%20or%20local-name%28%29%20%3D%20%22A%22%29%29%20or%20local-name%28%29%20%3D%20%22button%22%20or%20local-name%28%29%20%3D%20%22BUTTON%22%20or%20%28%28local-name%28%29%20%3D%20%22input%22%20or%20local-name%28%29%20%3D%20%22INPUT%22%29%20and%20%28@type%20%3D%20%22SUBMIT%22%20or%20@type%20%3D%20%22submit%22%20or%20@type%20%3D%20%22BUTTON%22%20or%20@type%20%3D%20%22button%22%20or%20@type%20%3D%20%22IMAGE%22%20or%20@type%20%3D%20%22image%22%29%29%5D%27%2C%0A%20%20%20%20%20%20%20%20%20%20aNode%2C%0A%20%20%20%20%20%20%20%20%20%20this.NSResolver%2C%0A%20%20%20%20%20%20%20%20%20%20XPathResult.FIRST_ORDERED_NODE_TYPE%2C%0A%20%20%20%20%20%20%20%20%20%20null%0A%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20xpathResult.singleNodeValue%3B%0A%20%20%7D%2C%0A%0A%20%20NSResolver%20%3A%20%7B%0A%20%20%20%20lookupNamespaceURI%20%3A%20function%28aPrefix%29%20%7B%0A%20%20%20%20%20%20switch%20%28aPrefix%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27xul%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%27%3B%0A%20%20%20%20%20%20%20%20case%20%27html%27%3A%0A%20%20%20%20%20%20%20%20case%20%27xhtml%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.w3.org/1999/xhtml%27%3B%0A%20%20%20%20%20%20%20%20case%20%27xlink%27%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27http%3A//www.w3.org/1999/xlink%27%3B%0A%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20return%20%27%27%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20isParentEditableNode%20%3A%20function%28node%29%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20if%20%28node.ownerDocument.designMode%20%3D%3D%20%27on%27%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21%28node%20instanceof%20Ci.nsIDOMNSEditableElement%29%29%0A%20%20%20%20%20%20%20%20%20%20throw%200%3B%0A%20%20%20%20%20%20%20%20node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isParentDraggableNode%20%3A%20function%28node%29%7B%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20if%20%28node.getAttribute%28%27draggable%27%29%20%3D%3D%20%27true%27%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20isVideoControl%3A%20function%28node%29%20%7B%0A%20%20%20%20if%20%28/%5E%28audio%7Cvideo%29%24/i.test%28node.localName%29%29%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20var%20i%20%3D%200%3B%0A%20%20%20%20%20%20while%20%28i%20%3C%20node.childNodes.length%29%20%7B%0A%20%20%20%20%20%20%20%20var%20child%20%3Dnode.childNodes%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28child.hasAttribute%28%27controls%27%29%20%26%26%20child.getAttribute%28%27controls%27%29%20%3D%3D%20%27controls%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20i++%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20convert2RegExp%3A%20function%28%20pattern%20%29%20%7B%0A%20%20%20%20var%20s%20%3D%20new%20String%28pattern%29%3B%0A%20%20%20%20var%20res%20%3D%20new%20String%28%22%5E%22%29%3B%0A%0A%20%20%20%20for%20%28var%20k%20%3D%200%20%3B%20k%20%3C%20s.length%20%3B%20k++%29%20%7B%0A%20%20%20%20%20%20switch%28s%5Bk%5D%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27*%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22.*%22%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27.%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%3F%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5E%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%24%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27+%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%7B%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5B%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%7C%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%28%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%29%27%20%3A%0A%20%20%20%20%20%20%20%20case%20%27%5D%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22%5C%5C%22%20+%20s%5Bk%5D%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27%5C%5C%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20%22%5C%5C%5C%5C%22%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27%20%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20//%20Remove%20spaces%20from%20URLs.%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20default%20%3A%0A%20%20%20%20%20%20%20%20%20%20res%20+%3D%20s%5Bk%5D%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20new%20RegExp%28res%20+%20%27%24%27%2C%20%22i%22%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20toggle%3A%20function%28%29%7B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.enable%22%2C%20%21cbu.getPrefs%28%22grabScroll.enable%22%29%29%3B%0A%20%20%20%20this.setIcon%28%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20button%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%u0412%u044B%u0431%u0435%u0440%u0438%u0442%u0435%20%u043A%u043D%u043E%u043F%u043A%u0443%3A%20L-%u043B%u0435%u0432%u0430%u044F%2C%20M-%u0441%u0440%u0435%u0434%u043D%u044F%u044F%2C%20R-%u043F%u0440%u0430%u0432%u0430%u044F%22%2C%20%22LMR%22.substr%28this.MOUSEBUTTON%2C1%29%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20switch%28value.toUpperCase%28%29%29%7B%0A%20%20%20%20%20%20case%20%22M%22%3A%20value%20%3D1%3B%20break%3B%0A%20%20%20%20%20%20case%20%22R%22%3A%20value%20%3D2%3B%20break%3B%0A%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20case%20%22L%22%3A%20value%20%3D0%3B%20break%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.MOUSEBUTTON%20%3D%20value%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.button%22%2C%20value%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20threshold%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442e%20%u0432%u0440%u0435%u043C%u044F%20%u0432%20ms%281000%u043C%u0441%20%3D%201%u0441%u0435%u043A%29%22%2Cthis.TIMER%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.TIMER%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20this.TIMER%20%3C%3D0%20%7C%7C%20%21this.TIMER%20%29%20this.TIMER%20%3D%201000%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.timer%22%2C%20this.TIMER%29%3B%0A%20%20%7D%2C%0A%0A%20%20moverate%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442e%20%5B+-%5D%u0432%u0435%u043B%u0438%u0447%u0438%u043D%u0443%5Cn%20%u0415%u0441%u043B%u0438%20%5B+%5D%20c%u0442%u0440%u0430%u043D%u0438%u0446%u0430%20%u0431%u0443%u0434%u0435%u0442%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u0442%u0441%u044F%20%u043F%u0440%u043E%u0442%u0438%u0432%u043E%u043F%u043E%u043B%u043E%u0436%u043D%u043E%20%u0434%u0432%u0438%u0436%u0435%u043D%u0438%u044E%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20%20%22%2Cthis.MOVERATE%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.MOVERATE%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.MOVERATE%20%29%20this.MOVERATE%20%3D%20-1%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.moverate%22%2C%20this.MOVERATE%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20inertiaThreshold%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442e%20%u0441%u043A%u043E%u0440%u043E%u0441%u0442%u044C%20%u043F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u044F%20%u043F%u0440%u0438%20%u043A%u043E%u0442%u043E%u0440%u043E%u0439%20%u043F%u043E%u044F%u0432%u043B%u044F%u0435%u0442%u0441%u044F%20%u0430%u0432%u0442%u043E%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0430%22%2Cthis.INERTIATHRESHOLD%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.INERTIATHRESHOLD%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.INERTIATHRESHOLD%20%29%20this.INERTIATHRESHOLD%20%3D%2020%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.inertiathreshold%22%2C%20this.INERTIATHRESHOLD%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20inertiarate%3A%20function%28%29%7B%0A%20%20%20%20var%20value%20%3D%20prompt%28%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442e%20%u0434%u043B%u0438%u043D%u0443%20%u0430%u0432%u0442%u043E%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0438%22%2Cthis.INERTIARATE%29%3B%0A%20%20%20%20if%20%28%21value%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.INERTIARATE%20%3D%20parseInt%28value%2C10%29%3B%0A%20%20%20%20if%28%20%21this.INERTIARATE%20%29%20this.INERTIARATE%20%3D%2020%3B%0A%20%20%20%20cbu.setPrefs%28%22grabScroll.inertiarate%22%2C%20this.INERTIARATE%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20setIcon%3A%20function%28%29%7B%0A%20%20%20%20document.getAnonymousNodes%28self%29%5B1%5D.src%20%3D%20%21cbu.getPrefs%28%22grabScroll.enable%22%29%0A%20%20%20%20%3F%20self.image%0A%20%20%20%20%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH4AQXCg4QbH3A+AAAAZpJREFUOMuNk79qVUEQxn+zf06MCFZ2YnURBMHi+hp5ARtJY7PFhTRiY2ETkNuId5vbhLSmCeQtLAQhhTEpLeILaHL27K7FOXvYe+SiHwwzsMw33zfMinMOAO+9ooJzLnnv81ALWyBAaVRAGGoLhNPLNVose7P9mniDTA1hgHByseLkYkVFRMx9eXZ1xNnVEUVVTWCGIKSWkNrxMaSWLnUbRAWFqBA0wIMXTw646X5xfH4IQJc6Mukv3977XNSUZltUdKklDmvpKjVTO7UFC1wDP4DHr5694zb+Zv31LSG1xBz49O3jaGUKA1yvvrwm5shivvzeT4q08RZBEUUTJSLSL//0cs10icQciTnw/rMbpcYcyaQxT7E328c5Jwp4tJgvx4dC8r9QQAJmB88/YJTBKIMWixaNoMa8DQbogBZAi6XPmkbvoJXpoyIpl1kuspxvCzxczJfsmrvs6F2MarCqQYtFRDDKbP0L96prVMDP4/PDYbLFKIOgRmv19KKgWLgZ4v7Lp29o1J2N5n/tQFW/smcWvdFY9jPFH7MJpWpDanM5AAAAAElFTkSuQmCC%22%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20getScrollView%3A%20function%20%28e%29%20%7B%0A%20%20%20%20var%20NS%2CEW%2CNSEW%3B%0A%20%20%20%20NS%20%3D%20EW%20%3D%20NSEW%20%3D%20null%3B%0A%20%20%20%20var%20_scrollingView%20%3D%20null%3B%0A%20%20%20%20var%20overflowx%2C%20overflowy%2C%20ox%2C%20oy%3B%0A%20%20%20%20var%20scw%2C%20sch%2C%20horz%2C%20vert%3B%0A%20%20%20%20var%20doc%2C%20style%3B%0A%20%20%20%20var%20borderTop%3B%0A%20%20%20%20var%20borderBottom%3B%0A%20%20%20%20var%20borderLeft%3B%0A%20%20%20%20var%20borderRight%3B%0A%0A%20%20%20%20if%20%28e.originalTarget.ownerDocument.contentType%20%3D%3D%20%22application/xml%22%29%20%7B%0A%20%20%20%20%20%20_scrollingView%20%3D%20e.originalTarget.ownerDocument.defaultView%3B%0A%0A%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%21%3D%20_scrollingView.scrollMinX%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%20%20NS%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%20%20EW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20EW%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20NS%20%3D%20_scrollingView%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20for%20%28_scrollingView%20%3D%20e.originalTarget%3B%20_scrollingView%3B%20_scrollingView%20%3D%20_scrollingView.parentNode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28_scrollingView%20instanceof%20HTMLElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.localName.toUpperCase%28%29%20%3D%3D%20%22HTML%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.localName.toUpperCase%28%29%20%3D%3D%20%22BODY%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView%20%3D%20_scrollingView.ownerDocument.defaultView%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%21%3D%20_scrollingView.scrollMinX%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%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%20%7D%20else%20if%20%28_scrollingView.scrollMaxY%20%21%3D%20_scrollingView.scrollMinY%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.scrollMaxX%20%3E%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%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%20if%20%28_scrollingView.scrollMaxX%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%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%20if%20%28_scrollingView.scrollMaxY%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%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%20if%20%28_scrollingView.frameElement%20%26%26%20%21NS%20%26%26%20%21EW%20%26%26%20%21NSEW%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this.getScrollView%28%7BoriginalTarget%20%3A%20_scrollingView.frameElement%7D%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%20%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28_scrollingView.localName.toLowerCase%28%29%20%3D%3D%20%22select%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20_scrollingView.parentNode.focus%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20overflowx%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20overflowy%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20ox%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20oy%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20doc%20%3D%20_scrollingView.ownerDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20overflowx%20%3D%20style.getPropertyValue%28%22overflow-x%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20ox%20%3D%20overflowx%20%21%3D%20%22hidden%22%20%26%26%20overflowx%20%21%3D%20%22visible%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20overflowy%20%3D%20style.getPropertyValue%28%22overflow-y%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20oy%20%3D%20overflowy%20%21%3D%20%22hidden%22%20%26%26%20overflowy%20%21%3D%20%22visible%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20borderTop%20%20%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderBottom%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderLeft%20%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20borderRight%20%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28/%5E%28table%7Ctd%7Cth%29%24/i.test%28_scrollingView.localName%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc%20%3D%20_scrollingView.ownerDocument%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20style%20%3D%20doc.defaultView.getComputedStyle%28_scrollingView%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderTop%20%20%20%20%3D%20style.getPropertyValue%28%22border-top-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderBottom%20%3D%20style.getPropertyValue%28%22border-bottom-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderLeft%20%20%20%3D%20style.getPropertyValue%28%22border-left-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20borderRight%20%20%3D%20style.getPropertyValue%28%22border-right-width%22%29.replace%28%27px%27%2C%20%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28ex%29%20%7B%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%7D%0A%20%20%20%20%20%20%20%20%20%20scw%20%3D%20_scrollingView.clientWidth%3B%0A%20%20%20%20%20%20%20%20%20%20horz%20%3D%20ox%20%26%26%20scw%20%21%3D%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scw%20+%20borderLeft%20+%20borderRight%20%3C%20_scrollingView.scrollWidth%3B%0A%20%20%20%20%20%20%20%20%20%20sch%20%3D%20_scrollingView.clientHeight%3B%0A%20%20%20%20%20%20%20%20%20%20vert%20%3D%20oy%20%26%26%20sch%20%21%3D%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sch%20+%20borderTop%20+%20borderBottom%20%3C%20_scrollingView.scrollHeight%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28horz%20%26%26%20vert%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NSEW%20%3D%20%21NSEW%20%3F%20_scrollingView%20%3A%20NSEW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28horz%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20EW%20%3D%20%21EW%20%3F%20_scrollingView%20%3A%20EW%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28vert%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NS%20%3D%20%21NS%20%3F%20_scrollingView%20%3A%20NS%3B%0A%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%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20%5BNS%2C%20EW%2C%20NSEW%5D%3B%0A%20%20%7D%0A%7D%3B%0AGrabScroll.initGrabScroll%28%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 |
bezuma > 25-04-2016 17:28:29 |
bunda1 |
bunda1 > 25-04-2016 18:20:16 |
bezuma пишет
Мне тоже вид кисти раздражал, наверно, вообще уберу изменение курсора из GrabScroll |
bezuma > 25-04-2016 18:43:06 |
bunda1 Я в Grab and Drug делал его невидимым - эстетично, на мой взгляд |
bunda1 > 25-04-2016 18:55:00 |
bezuma пишет
Интересно |
bezuma > 25-04-2016 19:14:12 |
Да и сразу видно, в каком ты режиме - курсора нет - можно "граблями махать" |
bunda1 > 25-04-2016 19:21:49 |
bezuma пишет
Знать бы еще как этот курсор удалить, может CSS кодом во время перетаскивания страницы и все дела |
turbot > 25-04-2016 19:35:28 |
bunda1 |
bunda1 > 25-04-2016 19:46:39 |
turbot пишет
Спасибо! Надо будет это в описании кнопки добавить. Может, ты еще про какие настройки кнопки что знаешь? |
turbot > 25-04-2016 19:50:15 |
bunda1 |
bezuma > 25-04-2016 20:01:58 |
bunda1 |
turbot > 25-04-2016 20:03:55 |
bezuma > 25-04-2016 20:08:34 |
turbot |
bunda1 > 25-04-2016 20:32:00 |
bezuma пишет
Какой хоткей? |
bezuma > 25-04-2016 20:58:48 |
В смысле горячая клавиша на CB |
turbot > 26-04-2016 03:07:09 |
Dumby скрытый текст Ок, допустим я разобрался. ![]() Если нет, и установить два аттрибута, и oncommand и onclick, - единственный вариант, то как сделать, чтобы, при команде с клавиатуры, меню не закрывалось? Или никак, если верить mdn? И почему Выделить код Код:mItem.setAttribute('oncommand', 'if (event.shiftKey) {event.preventDefault(); event.stopPropagation(); custombuttons.clearPrefs("' + m.pref + '")};' + browserRestart); - на menu не срабатывает? Первое нажатие комбинации клавиш все-равно субменю открывает... |
Dumby > 26-04-2016 06:02:07 |
turbot |
turbot > 26-04-2016 08:33:30 |
Dumby скрытый текст Но легче не стало. Если я меняю листенер на command, то не обрабатывается contextmenu, а для command ведь нельзя event.button задать, да? То есть, либо третий листенер вешать, либо отказываться от сброса параметров по пкм, либо все нахрен переделывать. Я в упадке... Это совсем плохо, если я туда еще на contextmenu впихну листенер? И главное, как быть со вторым вопросом? Что первая команда на пункте типа menu - открывает его субменю? и preventDefault не помогает. Может есть еще какой волшебный атрибут? Dumby |
Dumby > 26-04-2016 15:03:07 |
turbot пишет
Вовсе нет. Нисколько. скрытый текст
Так у <menu>, как такового, вроде же нет события command.
Ага, предлагаешь опять угадать что, как и где ты меняешь? И вообще, - будь ты проще. Оставь пока в покое свою кнопку. Вот, например, попробуй понажимать такую. Выделить код Код:var data = [ "foo", , {"bar": [ "sub1", "sub2", "sub3" ]}, "baz" ]; var popup = this.appendChild(document.createElement("menupopup")); popup.setAttribute("position", "after_start"); popup.setAttribute("oncommand", "parentNode.bla(event);"); popup.setAttribute("oncontextmenu", "event.preventDefault(); parentNode.bla(event);"); for(var item of data) { if (!item) popup.appendChild(document.createElement("menuseparator")); else if (typeof item == "string") { var menuitem = popup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("closemenu", "none"); menuitem.setAttribute("label", item); } else { var [str] = Object.keys(item); var menu = popup.appendChild(document.createElement("menu")); menu.setAttribute("label", str); var subPopup = menu.appendChild(document.createElement("menupopup")); for(var subitem of item[str]) { var menuitem = subPopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("closemenu", "none"); menuitem.setAttribute("label", subitem); } } } this._handleClick = () => popup.openPopup(this); this.bla = e => { if ("busy" in this) return; this.busy = true; var {target} = e, {label} = target; target.label = label + " " + e.type; target.style.cssText = "color: red !important; font-weight: bold !important;"; setTimeout(() => { target.label = label; target.removeAttribute("style"); delete this.busy; }, 700); } |
turbot > 26-04-2016 18:31:40 |
Dumby скрытый текст
Мне бы только домучать работу с клавиатуры, а дальше уже сам буду, потихоньку, в человеческий вид ее переписывать.
Виноват. Я про то, что добавил сброс значений с модификатором shift, но если с менюитемами нет проблем, то первый shift+enter на меню - всегда раскрывает их субменю. Т.е., я понял почему там preventDefault на oncommand не работает, спасибо, но может можно для этих меню вообще отрубить открытие субменю по enter'у, а лучше по shift+enter? Благо, стрелками открыть можно. Или это можно сделать, только если еще один листенер вешать?
Угу, спасибо. Не подумал об этом. Это, конечно, вариант, вот только
... Если уж делать, хотелось бы найти вариант без "если". Черт, как же мой, в мучения выношенный, выкидыш жутко смотрится рядом твоей "напобаловаця"... Но я своего все равно люблю! P.S.: Да, я смотрю, KeyboardEvent.keyCode как deprecated помечен? А в остальных нет независящих от платформы кодов для клавиш? Или плохо смотрел? |
Dumby > 27-04-2016 07:28:28 |
turbot пишет
Что-то мне это тоже на башку не налазит. Может так попробуй скрытый текст Выделить код Код:var data = [ "foo", , {"bar": [ "sub1", "sub2", "sub3" ]}, "baz" ]; var popup = this.appendChild(document.createElement("menupopup")); popup.setAttribute("position", "after_start"); popup.setAttribute("oncommand", "parentNode.bla(event);"); popup.setAttribute("oncontextmenu", "event.preventDefault(); parentNode.bla(event);"); for(var item of data) { if (!item) popup.appendChild(document.createElement("menuseparator")); else if (typeof item == "string") { var menuitem = popup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("closemenu", "none"); menuitem.setAttribute("label", item); } else { var [str] = Object.keys(item); var menu = popup.appendChild(document.createElement("menu")); menu.setAttribute("label", str); var subPopup = menu.appendChild(document.createElement("menupopup")); for(var subitem of item[str]) { var menuitem = subPopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("closemenu", "none"); menuitem.setAttribute("label", subitem); } } } this._handleClick = () => popup.openPopup(this); this.bla = e => { if ("busy" in this) return; this.busy = true; var {target} = e, {label} = target; var action = e.type == "contextmenu" || e.shiftKey ? "RESET" : "set"; target.label = label + " " + action; target.style.cssText = "color: red !important; font-weight: bold !important;"; setTimeout(() => { target.label = label; target.removeAttribute("style"); delete this.busy; }, 700); } var keyListener = { get data() { delete this.data; return this.data = "code" in KeyboardEvent.prototype ? {key: "code", val: "Enter"} : {key: "keyCode", val: KeyboardEvent.DOM_VK_RETURN}; }, handleEvent: function(e) { this[e.type](e); }, popupshown: function(e) { if (e.target != popup) return; popup.addEventListener("popuphidden", this, false); window.addEventListener("keydown", this, true); }, popuphidden: function(e) { if (e.target != popup) return; popup.removeEventListener("popuphidden", this, false); window.removeEventListener("keydown", this, true); }, keydown: function(e) { if (e.shiftKey && !e.ctrlKey && !e.altKey && e[this.data.key] == this.data.val) { var target = popup.querySelector("menu[_moz-menuactive]:not([open])"); if (!target) return; var {firstChild} = target; firstChild.remove(); setTimeout(() => target.appendChild(firstChild), 0); self.bla({target: target, type: "command", shiftKey: true}); } } }; addEventListener("popupshown", keyListener, false, popup); |
turbot > 27-04-2016 18:06:22 |
Dumby В общем, решил пока обойтись тем, что есть. Последняя просьба (клянусь): не подскажешь, как клавиша DOM_VK_CONTEXT_MENU по правильному называется, чтобы в описании указать. Не могу нагуглить. |
Dumby > 01-05-2016 02:26:23 |
turbot пишет
Нет, к сожалению, не смогу подсказать, не знаю как правильно её назвать. скрытый текст
Что-то не могу сообразить, а как собственно сам #quick-aboutconfig-menupopup
Это не так сложно, как кажется. Можно ничего в твоём коде не менять, Выделить код Код:addEventListener("popupshown", { handleEvent: function(e) { this[e.type](e); }, popupshown: function(e) { if (e.target != menuPopup) return; menuPopup.addEventListener("popuphidden", this, false); window.addEventListener("keydown", this, true); }, popuphidden: function(e) { if (e.target != menuPopup) return; menuPopup.removeEventListener("popuphidden", this, false); window.removeEventListener("keydown", this, true); }, popupshowing: function(e) { e.target.parentNode.removeEventListener("popupshowing", this, false); e.preventDefault(); }, get old() { delete this.old; this.e = new MouseEvent("contextmenu", {}); return this.old = parseInt(Services.appinfo.platformVersion) < 25; }, get prop() { delete this.prop; if ("key" in KeyboardEvent.prototype) this.prop = "key", this.val = "Enter"; else this.prop = "keyCode", this.val = KeyboardEvent.DOM_VK_RETURN; return this.prop; }, keydown: function(e) { if (!e.shiftKey || e.ctrlKey || e.altKey || e[this.prop] != this.val) return; var target = menuPopup.querySelector("menu[_moz-menuactive]:not([open])"); if (!target) return; this.old ? target.addEventListener("popupshowing", this, false) : e.stopPropagation(); target.dispatchEvent(this.e); menuPopup.dispatchEvent(this.e); } }, false, menuPopup); |
turbot > 01-05-2016 05:59:08 |
Dumby
Забыл вставить листенер. Добавил. Фух, на этом успокоюсь пока. Не слишком монструозно получилось? Или не стоит успокаиваться и надо переделывать под обсерверы? |
Dumby > 01-05-2016 22:16:12 |
turbot пишет
А чем обусловлен именно такой выбор EventTarget'а? |
turbot > 01-05-2016 22:19:20 |
Dumby А к чему тогда его присобачить? |
Dumby > 02-05-2016 00:23:35 |
turbot пишет
А вот прояви воображение, примерь ситуацию на себя.
Ну, предположу, что присобачить к window, и ещё, возможно, |
turbot > 02-05-2016 00:45:43 |
Примерил. Раз фокус со строки не убирается, при открытии менюшки, то хуже точно не станет. Сделаю.
Понял. Сделаю. Спасибо. |
Ferguss114 > 02-05-2016 10:21:46 |
Не могу понять. А сегодня в обоих случаях возвращает просто browser. |
Dumby > 02-05-2016 12:03:44 |
Ferguss114 |
Ferguss114 > 02-05-2016 14:49:18 |
Dumby |
KOT040188 > 06-05-2016 17:24:40 |
Выделить код Код:// полноценная строка поиска function onFind() { gFindBar.onFindCommand(); setTimeout(()=> gFindBar._findField.selectionStart = 2, 0) }; messageManager.addMessageListener("Findbar:Keypress", onFind); addDestructor(()=> messageManager.removeMessageListener("Findbar:Keypress", onFind)); Как исправить код, чтобы он не реагировал на клавиши верх/вниз/влево/вправо, ентер и пробел? |
VORON > 08-05-2016 07:11:38 |
Подскажите,а не существует ли кнопки,которая может заменить Tab History Menu ? |
turbot > 08-05-2016 07:24:12 |
KOT040188 > 08-05-2016 14:23:25 |
turbot |
turbot > 08-05-2016 17:40:58 |
Не знаю. |
KOT040188 > 08-05-2016 17:41:57 |
|
selevo > 10-05-2016 15:17:18 |
если CB позволяющая скопировать ссылку на изображение при нажатом ALT например ? |
KOT040188 > 10-05-2016 15:19:01 |
Сыылка прекрасно копируется и без alt. Но если вам надо принципиально с alt… |
selevo > 10-05-2016 15:28:55 |
KOT040188 пишет
ну чтоб одним кликом сохранялась в буфер ЛКМ+ALT например или колесо+ALT |
KOT040188 > 10-05-2016 15:30:34 |
Ах вот оно что… |
turbot > 10-05-2016 20:41:53 |
selevo Выделить код Код:addEventListener('dblclick', (e)=> { var img = e.originalTarget.tagName.toLowerCase() == "img"; var win = e.originalTarget.ownerDocument.defaultView; if (img && e.button == 2 && win.top == content) { e.preventDefault(); e.stopPropagation(); document.getElementById("contentAreaContextMenu").hidePopup(); var imgLink = e.originalTarget.src; if (imgLink && e.originalTarget.parentNode.tagName.toLowerCase() == "a" && e.originalTarget.parentNode.href.match(/\.(jpg|jpeg|png|gif|apng|webp)$/)) { imgLink = e.originalTarget.parentNode.href; } gClipboard.write(imgLink); custombuttons.alertSlide('Ссылка на изображение скопирована', imgLink); } }, false, gBrowser); Двойным ПКМ по картинкам. Если картинка - ссылка на картинку, то копируется ссылка на картинку. Только если ссылка прямая (можно изменить, удалив -тогда скопируется любая ссылка). |
VORON > 11-05-2016 06:28:59 |
turbot пишет Не работает на 28,38 лисах.Запустилась только с 45 и 46 |
turbot > 11-05-2016 07:30:44 |
VORON Но вот, хозяин барин: Выделить код Код:for (var type of ["mousedown", "dragstart", "TabClose"]) { addEventListener(type, (e)=> { if (e.target != gBrowser.selectedTab) return; var menuPopup = document.getElementById("backForwardMenu"); if (e.type == "mousedown" && e.button == 0) { menuPopup.showPopup(e.target, -1, -1, "popup", "bottomleft", "topleft") } else { menuPopup.hidePopup(); } }, true, gBrowser.tabContainer) }; На 24+ точно работает |
VORON > 11-05-2016 07:56:15 |
turbot пишет
Ну так ради уменьшения количества расширений,не только функционала для |
selevo > 11-05-2016 11:35:34 |
turbot |
turbot > 11-05-2016 19:01:21 |
Dumby скрытый текст Я пытаюсь сделать из кнопки плавающую панель, которая появляется при фокусе текстовых форм (ну, как пытаюсь... Просто добавил туда Выделить код Код:addEventListener("click", (e)=> { if (document.activeElement != gBrowser.selectedBrowser) return; var text = e.target.tagName.toLowerCase() == "textarea"; if (text && e.button == 0) { popup.showPopup(e.target, -1, -1, "panel", "topright", "bottomright"); e.target.focus(); } else popup.hidePopup(); }, false, window); заменил menupopup на panel и поставил ), но есть пара проблем: Собственно, вот. Главная проблема. Остальное - мелочи, но может тоже подскажете: |
turbot > 12-05-2016 01:34:53 |
VORON Выделить код Код:addEventListener('mousedown', e=> { let tab = e.originalTarget; while (tab && tab.localName != 'tab') tab = tab.parentNode; var selTab = tab.hasAttribute('visuallyselected') || tab.hasAttribute('selected'); if (!tab) return; var menuPopup = document.getElementById("backForwardMenu"); var controlItem = e.originalTarget.localName == 'toolbarbutton' || e.originalTarget.localName == 'image'; tab.onmouseup = (tab && selTab && e.button == 0 && !controlItem) ? e=> menuPopup.openPopup(tab, 'after_start') : delete e; }, true, gBrowser.tabContainer); - попап не будет появляться/скрываться когда не нужен (при закрытии вкладки/перетаскивании/отключении звука), но с минусом - закроется он только при клике по его пунктам или не по активной вкладке. UPD: Переделал снова. Ничего существенного, но так вроде правильнее будет. Старый вариант - под спойлером. скрытый текст Выделить код Код:addEventListener('mousedown', (e)=> { let tab = e.originalTarget; while (tab && tab.localName != 'tab') { tab = tab.parentNode; } var selTab = tab.hasAttribute('visuallyselected') || tab.hasAttribute('selected'); var menuPopup = document.getElementById("backForwardMenu"); var controlItem = e.originalTarget.localName == 'toolbarbutton' || e.originalTarget.localName == 'image'; tab.onmouseup =e=> null; if (tab && selTab && e.button == 0 && !controlItem) { tab.onmouseup =e=> { menuPopup.showPopup(tab, -1, -1, "popup", "bottomleft", "topleft"); } } }, true, gBrowser.tabContainer); |
Dumby > 15-05-2016 23:41:42 |
turbot пишет
Код не мой. скрытый текст Это я просто когда-то пытался пережать чужой код, потому что он был очень большой, и с использованием E4X.
Это несложно. Если там, где ты «заменил menupopup на panel» Но menupopup какой-то жадный до клавиш, впрочем
Не знаю. Но, например, есть метод moveToAnchor.
Да, focus это стрёмно. Может осторожно попробуй дописать вместо своего Выделить код Код:(listener => { addEventListener("focus", listener, true, gBrowser); addDestructor(() => listener.textarea && listener.destroy()); })({ position: "before_end", updatePositionInterval: 100, handleEvent(e) { if (!this.isTarget(e.target)) return; var xblURL = "data:application/xml," + encodeURIComponent(` <bindings xmlns="http://www.mozilla.org/xbl" xmlns:xul="${xulns}"> <binding id="${'CB' + _id.slice(20) + '-bbc-panels'}" role="xul:menupopup" extends="chrome://global/content/bindings/popup.xml#panel"> <content> <xul:arrowscrollbox class="popup-internal-box" flex="1" orient="vertical" smoothscroll="false"> <children/> </xul:arrowscrollbox> </content> </binding> </bindings> `.trim().replace(/>\s+</g, "><")); for(var subPopup of this.subPopups) subPopup.nodeName == "panel" && subPopup.style.setProperty("-moz-binding", `url("${xblURL}")`, "important"); this.handleEvent = e => this[e.type](e); this.init(e.target); }, isTarget(node) { return node instanceof HTMLTextAreaElement && !node.readOnly && node.ownerDocument.defaultView.top == content; }, focus(e) { !this.textarea && this.isTarget(e.target) && this.init(e.target); }, init(textarea) { this.textarea = textarea; popup.setAttribute("noautohide", true); this.intervalId = setInterval(() => this.moveToAnchor(), this.updatePositionInterval); popup.firstChild.addEventListener("popuphiding", this, false); popup.addEventListener("mousedown", this, true); popup.openPopup(textarea, this.position); setTimeout(() => textarea.focus() || textarea.addEventListener("blur", this, false), 0); }, destroy() { popup.removeAttribute("noautohide"); clearInterval(this.intervalId); this.textarea.removeEventListener("blur", this, false); popup.firstChild.removeEventListener("popuphiding", this, false); popup.removeEventListener("mousedown", this, true); popup.hidePopup(); for(var subPopup of this.subPopups) subPopup.state == "open" && subPopup.hidePopup(); this.textarea = null; }, moveToAnchor() { popup.moveToAnchor(this.textarea, this.position); for(var subPopup of this.subPopups) subPopup.anchorNode && subPopup.moveToAnchor(subPopup.anchorNode); }, get subPopups() { delete this.subPopups; return this.subPopups = [...popup.querySelectorAll("popupset > :first-child")]; }, blur(e) { !popup.matches(":hover") ? this.destroy() : setTimeout(() => this.textarea.ownerDocument.defaultView.top != content || this.textarea.ownerDocument.visibilityState == "hidden" ? this.destroy() : this.textarea.focus() , 0); }, popuphiding(e) { popup.matches(":hover") && e.preventDefault(); }, mousedown() { var subPopup = popup.querySelector(`#${popup.id} > hbox > button:hover + popupset > :first-child`); if (!subPopup || subPopup.state != "open") return; var parent = subPopup.parentNode; subPopup.remove(); setTimeout(() => parent.appendChild(subPopup), 100); } }); |
turbot > 16-05-2016 00:10:17 |
Dumby пишет
Ух, спасибо. Я б такое ни в жизнь не сотворил. Вроде, все отлично работает, еще раз спасибо. |
turbot > 16-05-2016 17:20:49 |
Сам поправил. |
VORON > 16-05-2016 20:38:41 |
turbot |
turbot > 16-05-2016 21:11:55 |
VORON |
thrower > 24-05-2016 16:43:31 |
Infocatcher Давным-давно пользуюсь кнопкой Back_to_Close, и всё никак не спрошу... А можно сделать так, чтобы она не изменяла дефолтный вид BACK-стрелки, т.е. когда "Go Back" возврата больше нет, стрелка тускнеет. (?) |
Infocatcher > 24-05-2016 19:49:59 |
thrower пишет
По идее (лень тестовый профиль запускать |
thrower > 24-05-2016 21:31:51 |
Infocatcher Спасибо. |
thrower > 25-05-2016 21:22:29 |
thrower пишет
В общем, пока придумал такой воркераунд, без удаления стиля из кнопки. Взял из chrome://browser/skin/Toolbar.png иконку, перегнал ее в base64, и с добавлением opacity: 0.4 получил желаемый результат. За подсказку про opacity спасибо okkamas_knife. |
Infocatcher > 25-05-2016 21:44:12 |
thrower Выделить код Код:var cssStr = '\ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\ @-moz-document url("' + window.location.href + '") {\n\ #back-button[_cb_backToClose] > .toolbarbutton-icon {\n\ opacity: 0.4 !important;\n\ }\n\ }'; (заменить там аналогичный var cssStr = ...) thrower пишет
Да там все равно идет вмешательство в функции браузера насчет переходов назад и обновления состояния кнопок и пунктов меню, что-то отдельное сделать сложнее, чем все разом. |
thrower > 25-05-2016 22:18:43 |
Infocatcher Спасибо! |
rbfyec > 28-05-2016 13:12:49 |
У меня в браузере создаётся на веб-страницах див с моим текстом. Можно ли сделать, чтобы размер текста в этом диве Шрифт на странице я меняю СВ кнопкой "Zoom", если это имеет значение. |
turbot > 30-05-2016 06:02:10 |
Dumby Выделить код Код:else if (trg.nodeName == "menuitem" && trg.hasAttribute("value")) { insertCodeAtCaret(trg.value); codeElementWrapper.focus(); } моя фантазия зашла в тупик. Это что-то из самого Stylish'а? Можно тебя попросить о помощи? |
Dumby > 30-05-2016 19:45:54 |
turbot пишет
Да, insertCodeAtCaret это из самого́ Stylish'а. скрытый текст turbot пишет
Разумеется можно, но смогу ли я помочь... . А вместо того, чтобы ногой шаркать, И почему бы не уточнить что-нибудь про тот CB-редактор, Может попробуй так Выделить код Код:else if (trg.nodeName == "menuitem" && trg.hasAttribute("value")) { var controller = commandDispatcher.getControllerForCommand("cmd_insertText"); if (!controller || !controller.isCommandEnabled("cmd_insertText")) return; controller.QueryInterface(Ci.nsICommandController); var params = Cc["@mozilla.org/embedcomp/command-params;1"].createInstance(Ci.nsICommandParams); params.setStringValue("state_data", trg.value); controller.doCommandWithParams("cmd_insertText", params); // Select var se = activeElement.parentNode.__sourceEditor; if (se) { var endPosition = se.getOffset(se.getCursor("end")); se.setSelection(se.getPosition(endPosition - trg.value.length), se.getPosition(endPosition)); } else activeElement.selectionStart = activeElement.selectionEnd - trg.value.length; } |
turbot > 30-05-2016 20:06:25 |
Dumby пишет
Э, не подумал. Собственно, окромя элемента, за который цепляться будет и адреса окна, ничего и не менял. Редактор - да, использую тот что "красава". скрытый текст Выделить код Код:gBrowser.currentURI.spec == "about:customizing" || (() => { var obsId = "CB" + _id.slice(20) + "_PasteButtonsForCB"; var storageId = obsId + "Storage"; var help = self.Help; // ----------------------------------- Storage ---------------------------------- // Simple replacement for Application.storage // See https://github.com/Infocatcher/Custom_Buttons/commit/14d4c33bee20528da14793d3b4a3773a8a34d048 var storage = (function() { var global = Cu.import("resource://gre/modules/Services.jsm", {}); var ns = storageId; var storage = global[ns] || (global[ns] = global.Object.create(null)); return { get: function(key, defaultVal) { if(key in storage) return storage[key]; return defaultVal; }, set: function(key, val) { if(key === null) delete storage[key]; else storage[key] = val; } }; })(); // ------------------------------------------------------------------------------ var obs = storage.get(obsId, null); if (!obs) { obs = { id: obsId, boxId: obsId + "_Box", brURL: location.href, topic: "document-shown", init: function() { this.proceedAll(true); Services.obs.addObserver(this, this.topic, false); }, destroy: function() { this.proceedAll(false); try {Services.obs.removeObserver(this, this.topic);} catch(ex) {Cu.reportError(ex);} }, // ----------------------------------- OBS ---------------------------------- observe: function(doc) {this.proceedDoc(doc, true)}, isCBDoc(doc) { return doc.location && doc.location.href.startsWith("chrome://custombuttons/content/editor.xul") }, isBrowserDoc(doc) { return doc.location && doc.location.href == this.brURL }, proceedAll(init) { var en = Services.wm.getEnumerator(null); while(en.hasMoreElements()) { var doc = en.getNext().document; if (this.isBrowserDoc(doc)) { for(var br of doc.defaultView.gBrowser.browsers) { this.proceedDoc(br.contentDocument, init); } var sidebarDoc = doc.getElementById("sidebar").contentDocument; this.proceedDoc(sidebarDoc, init); var wpb = sidebarDoc.getElementById("web-panels-browser"); wpb && this.proceedDoc(wpb.contentDocument, init); } else this.proceedDoc(doc, init); } }, proceedDoc(doc, add) { if (!this.isCBDoc(doc) || doc.readyState != "complete") return; var box = doc.getElementById(this.boxId); if (add && !box) { var tabbox = doc.getElementById("custombuttons-editbutton-tabbox"); var before = tabbox.getElementsByTagName("tabs")[0]; this.addBox(before); } else if (!add && box) { box && box.remove(); } }, // --------------------------------------------- BOX -------------------------------------------- get box() { delete this.box; return this.box = this.createBox(); }, createBox() { var box = this.insertElement("hbox", null, { id: this.boxId, onclick: ` if (event.button != 2) return; var popup = this.linkedPopup; if (popup.state != "closed") popup.hidePopup(); popup.linkedTarget = event.originalTarget; popup.openPopupAtScreen(event.screenX, event.screenY); `, oncommand: ` event.stopPropagation(); var trg = event.originalTarget; if (trg.nodeName == "toolbarbutton") trg.firstChild.openPopup(trg); else if (trg.nodeName == "menuitem" && trg.hasAttribute("value")) { var controller = commandDispatcher.getControllerForCommand("cmd_insertText"); if (!controller || !controller.isCommandEnabled("cmd_insertText")) return; controller.QueryInterface(Ci.nsICommandController); var params = Cc["@mozilla.org/embedcomp/command-params;1"].createInstance(Ci.nsICommandParams); params.setStringValue("state_data", trg.value); controller.doCommandWithParams("cmd_insertText", params); // Select var se = activeElement.parentNode.__sourceEditor; if (se) { var endPosition = se.getOffset(se.getCursor("end")); se.setSelection(se.getPosition(endPosition - trg.value.length), se.getPosition(endPosition)); } else activeElement.selectionStart = activeElement.selectionEnd - trg.value.length; } ` }); return box; }, get boxContent() { delete this.boxContent; return this.boxContent = help.trim(); }, addBox(before) { var box = before.appendChild(this.box.cloneNode(false)); box.innerHTML = this.boxContent; box.linkedPopup = box.appendChild(this.popup.cloneNode(true)); box.linkedPopup.creator = this; box.style.cssText = "max-height: 32px !important; max-width: 320px !important;"; }, // ------------------------------------------- CONTEXT ------------------------------------------ popupXUL: ` <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="${obsId + "_Context"}" oncommand="event.stopPropagation(); creator.cmdDispatcher(event);" onpopupshowing="creator.contextPopupshowing(this);"> <menuitem label="Изменить" value="openEditor"/> <menuseparator/> <menuitem label="Выше" value="moveUp"/> <menuitem label="Ниже" value="moveDown"/> <menuseparator/> <menuitem label="Копировать" value="copyItem" closemenu="none"/> <menuitem label="Вставить" value="pasteItem"/> <menuitem label="Удалить" value="deleteItem"/> <menuseparator/> <menuitem label="Новый menuitem" value="newMenuitem"/> <menuitem label="Новoe menu" value="newMenu"/> <menuitem label="Новый toolbarbutton" value="newButton"/> <menuitem label="Новый menuseparator" value="newSeparator"/> <menuseparator/> <menuitem label="Картинка base64" value="imgBase64"/> </menupopup> `, get popup() { delete this.popup; return this.popup = this.createPopup(); }, createPopup() { var xul = this.popupXUL.trim().replace(/>\s+</g, "><"); var popup = new DOMParser().parseFromString(xul, "application/xml").documentElement; popup.creator = this; return popup; }, cmdDispatcher(e) { var trg = e.originalTarget, popup = trg.parentNode, cmd = trg.value; if (!cmd) return; var popupNode = popup.linkedTarget; cmd.startsWith("new") ? this.newItem(popupNode, cmd.slice(3)) : this[cmd](popupNode, popup); "copyItem openEditor imgBase64".includes(cmd) || this.save(popupNode); }, get emptySeparator() { delete this.emptySeparator; return this.emptySeparator = this.insertElement("menuseparator"); }, get emptyMenuitem() { delete this.emptyMenuitem; return this.emptyMenuitem = this.insertElement("menuitem", null, {label: "menuitem", value: ""}); }, get emptyMenupopup() { delete this.emptyMenupopup; var popup = this.insertElement("menupopup"); popup.appendChild(this.emptyMenuitem.cloneNode(false)); return this.emptyMenupopup = popup; }, get emptyMenu() { delete this.emptyMenu; var menu = this.insertElement("menu", null, {label: "menu"}); menu.appendChild(this.emptyMenupopup.cloneNode(true)); return this.emptyMenu = menu; }, get emptyButton() { delete this.emptyButton; var btn = this.insertElement("toolbarbutton", null, { image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////////////////////////////////////////////////////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP//////AAAA/wAAAP///////////////////////////////////////////////////////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEH4KxBB+CsQQfgrEEH4KxBB+CsQQfgrEEAAKxBAACsQQAArEEAAKxBAACsQQ==" }); btn.appendChild(this.emptyMenupopup.cloneNode(true)); return this.emptyButton = btn; }, newItem(node, name) { var newItem = this["empty" + name].cloneNode(true); node.parentNode.insertBefore(newItem, node.nextSibling); if (name == "Button") newItem.firstChild.setAttribute("position", "after_start"); }, deleteItem(node) { var win = this.top(node); if (!win.confirm("Удалить ?")) return; node.remove(); }, moveUp(node) { node.parentNode.insertBefore(node, node.previousSibling); }, moveDown(node) { node.parentNode.insertBefore(node, node.nextSibling.nextSibling); }, copyItem(node, popup) { this.transactionNode = node.cloneNode(true); popup.querySelector('menuitem[value="pasteItem"]').disabled = false; }, pasteItem(node) { node.parentNode.insertBefore(this.transactionNode, node); }, imgBase64(node) { var obs = this; var picker = makeFilePicker(); picker.appendFilters(picker.filterImages); picker.init(this.top(node), "Изображение", picker.modeOpen); picker.open({done: function(result) { if (result != picker.returnOK) return; var reader = new FileReader(); reader.onload = function() { if (!reader.result) return; var name = node.nodeName; "menuitem".includes(name) && node.classList.add(name + "-iconic"); node.setAttribute("image", reader.result); obs.save(node); } reader.readAsDataURL(new File(picker.file)); }}); }, disablers: { moveUp(node) {return !node.previousSibling}, moveDown(node) {return !node.nextSibling || node.nextSibling.nodeName == "menupopup"}, deleteItem(node) { var count = node.parentNode.childElementCount; return count == 1 || (node.nodeName == "toolbarbutton" && count == 2); }, top(node) {return "toolbarbutton hbox".includes(node.nodeName);}, newMenuitem(node) {return this.top(node);}, newMenu(node) {return this.top(node);}, newSeparator(node) {return this.top(node);}, newButton(node) {return !this.top(node);}, copyItem(node) {return node.nodeName == "hbox";}, pasteItem() {return !("transactionNode" in this.obs);}, imgBase64(node) {return !"toolbarbutton menu menuitem".includes(node.nodeName);} }, contextPopupshowing(popup) { this.disablers.obs = this; var node = popup.linkedTarget; for(var key in this.disablers) { var menuitem = popup.querySelector(`menuitem[value="${key}"]`); if (menuitem) menuitem.disabled = this.disablers[key](node) || node.nodeName == "menupopup"; } popup.querySelector('menuitem[value="openEditor"]').disabled = node.nodeName == "hbox"; }, // ----------------------------------------------- EDITOR ---------------------------------------------- editorXUL: ` <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/"?> <?xml-stylesheet href="chrome://custombuttons/content/codeeditor.css" type="text/css"?> <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" title="Изменить" onload="obs = Components.utils.import('resource://gre/modules/Services.jsm')['${storageId}']['${obsId}']; obs.initEditor(window);" ondialogaccept="obs.setAttributes(window);" buttons="extra2,accept,cancel" buttonlabelextra2="Удалить атрибут" ondialogextra2="obs.deleteAttribute(window);"> <hbox align="center"> <label value="Новый атрибут"/> <textbox flex="1" multiline="false" onkeydown="obs.onTexboxKeydown(event);"/> <button label="Добавить" oncommand="obs.newAttribute(window, textbox.value);"/> </hbox> <tabbox flex="1"> <tabs/> <tabpanels flex="1"/> </tabbox> </dialog> `, get editorURL() { delete this.editorURL; var xul = this.editorXUL.trim(); return this.editorURL = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(xul); }, openEditor(node) { this.node = node; this.elm = this.insertElement("box"); Services.ww.openWindow(this.top(node), this.editorURL, "", "chrome,modal,resizable,centerscreen,width=700,height=500" , null); }, initEditor(win) { for(var str of ["tabs", "tabpanels", "textbox"]) { win[str] = win.document.querySelector(str); } for(var {name, value} of this.node.attributes) { var isVal = name == "value"; var tab = this.addTab(win, name, value, isVal); if (isVal) tab.style.cssText = "font-weight: bold; color: navy;"; } if (win.tabs.selectedIndex == -1) win.tabs.selectedIndex = 0; }, addTab(win, name, value, sel) { var tab = this.insertElement("tab", win.tabs, {label: name}); tab.linkedCbeditor = this.insertElement("cbeditor", win.tabpanels, { class: "custombuttons-editor-codeBox", multiline: "true", flex: "1", value: value }); if (sel) { win.tabs.selectedItem = tab; tab.linkedCbeditor.focus(); } return tab; }, newAttribute(win, name) { name && this.addTab(win, name, "", true); win.textbox.value = ""; }, onTexboxKeydown(e) { if (e.keyCode == e.DOM_VK_RETURN) { e.preventDefault(); this.newAttribute(e.target.ownerGlobal, e.target.value); } else try { var attr = e.target.value + e.key; this.elm.setAttribute(attr, true); this.elm.removeAttribute(attr); } catch(ex) { e.preventDefault(); } }, setAttributes(win) { for(var tab of win.tabs.childNodes) { var val = tab.linkedCbeditor.value; this.node.setAttribute(tab.label, val); } this.save(); }, deleteAttribute(win) { var tab = win.tabs.selectedItem; var attr = tab.label; if (!win.confirm("Удалить атрибут " + attr + " ?")) return; this.node.removeAttribute(tab.label); tab.linkedCbeditor.remove(); tab.remove(); win.tabs.selectedIndex = 0; }, save(node = this.node) { var box = node.ownerDocument.getElementById(this.boxId); if (!box) return; box.removeChild(box.linkedPopup); var xul = box.innerHTML.replace(/\t/g, "	").replace(/\n/g, "
").replace(/\r/g, "
"); var link = custombuttons.makeButtonLink("edit", _id); var param = custombuttons.cbService.getButtonParameters(link); param = param.wrappedJSObject || param; param.help = xul; custombuttons.cbService.installButton(param); }, // ----------------------------------------------- MISC ------------------------------------------ insertElement(element, parent, attributes, before = null) { var notExist = typeof element != "object"; if (notExist) element = document.createElement(element); if (notExist && attributes) { for(var attribute in attributes) { attribute == "data" || element.setAttribute(attribute, attributes[attribute]); } } parent && parent.insertBefore(element, before); return element; }, top(node) { var win = node.ownerGlobal; if (!(win instanceof ChromeWindow)) win = Services.wm.getMostRecentWindow("navigator:browser"); return win; } }; storage.set(obsId, obs); obs.init(); } function destructor(reason) { if (reason[5] != "e") return; var obs = storage.get(obsId, null); if (obs) { obs.destroy(); storage.set(obsId, null); } } addDestructor(reason => { destructor(reason); setTimeout(function() { custombuttons.palette.querySelector('toolbarbutton[id="' + _id + '"]') && destructor("delete"); }, 500); }); })(); Это уже с "попробуй". Спасибо, все работает. ![]() 30-05-2016 20:26:41 Infocatcher |
toxa > 31-05-2016 17:36:21 |
Если мне надо заменить в строке все вхождения подстроки через регулярку, как будет быстрее работать или так |
Dumby > 31-05-2016 20:01:01 |
toxa пишет
У меня так алертится разница примерно раза в три-четыре скрытый текст Выделить код Код:var string = "Preference", num = 200000, str; var now = Date.now(); for(let n = num; n; n--) str = string.replace(/re/g, 'abc'); var delta1 = Date.now() - now; now = Date.now(); for(let n = num; n; n--) str = string.split(/re/).join('abc'); var delta2 = Date.now() - now; var res = delta1/delta2, factor = (res < 1 ? 1/res : res).toFixed(2); alert( "string.replace(/re/g, 'abc')\t" + delta1 + "\n" + "string.split(/re/).join('abc')\t" + delta2 + "\n" + "factor\t" + factor ); |
toxa > 31-05-2016 21:15:34 |
Dumby пишет
Ясно. Спасибо большое! |
Stkvsky > 01-06-2016 18:14:04 |
del. не туда |
beggrr > 01-06-2016 21:39:05 |
Подскажите, что я неправильно делаю? Алерт показывает мне те же самые символы. |
turbot > 01-06-2016 22:26:12 |
beggrr |
beggrr > 01-06-2016 22:49:06 |
turbot пишет
А почему он-лайновый декодер http://pressbin.com/tools/urlencode_urldecode/ заменяет эти спецсимволы через decodeURIComponent() и decodeURI() и unescape() |
rbfyec > 01-06-2016 23:40:11 |
turbot пишет
Я вот нашёл в Интернете интересное решение. Выделить код Код:var string = '" "'; var textarea = document.createElement('textarea'); textarea.innerHTML = string; alert(textarea.value) Только непонятно, эту textarea надо потом удалять? Как? |
turbot > 01-06-2016 23:44:32 |
rbfyec пишет
Ну так там у beggrr по ссылке так и сделано: скрытый текст Выделить код Код:function encode(text) { if (document.getElementById('which_urlencode').checked == true) { document.getElementById('escape').innerHTML = escape(text); document.getElementById('encodeURI').innerHTML = encodeURI(text); document.getElementById('encodeURIComponent').innerHTML = encodeURIComponent(text); document.getElementById('urlencode').innerHTML = urlencode(text); } else { document.getElementById('unescape').innerHTML = unescape(text); document.getElementById('decodeURI').innerHTML = decodeURI(text); document.getElementById('decodeURIComponent').innerHTML = decodeURIComponent(text); document.getElementById('urldecode').innerHTML = urldecode(text); } } Видимо, дело в innerHTML. А уж почему, не знаю. Сам чайник. ![]() |
Infocatcher > 02-06-2016 13:18:29 |
rbfyec пишет
Там textarea не вставляется в документ (через appendChild/insertBefore), поэтому ее удалит сборщик мусора, когда выполнение кода выйдет из функции, в которой есть ссылка на textarea. Если, конечно, не передать каким-нибудь образом ссылку вовне. |
rbfyec > 03-06-2016 01:14:35 |
Infocatcher пишет
А как можно потом проверить, поудалялись ли эти textarea? |
Infocatcher > 03-06-2016 23:27:31 |
rbfyec Если делать расширение, можно в about:memory смотреть, там по адресу скрипта видно будет, если что-то в памяти осталось после выключения. |
rbfyec > 05-06-2016 09:44:00 |
Infocatcher |
oleg.sgh > 07-06-2016 07:44:34 |
В [CB]Изменить масштаб тоже перестает работать после перезапуска |
bunda1 > 07-06-2016 20:49:25 |
oleg.sgh пишет
|
bezuma > 07-06-2016 21:01:24 |
bunda1 Спасибо! Заработала Menuitem hider |
oleg.sgh > 07-06-2016 21:06:35 |
bunda1 |
bunda1 > 07-06-2016 21:46:22 |
oleg.sgh пишет
Упс |
oleg.sgh > 07-06-2016 22:06:14 |
bunda1 |
bezuma > 07-06-2016 22:26:09 |
bunda1 1. FF Exp Imp CB - не фурычит совсем |
oleg.sgh > 07-06-2016 22:49:58 |
bezuma |
1fesFFFF > 08-06-2016 08:40:38 |
bunda1 Весь код только в поле "инициализация". скрытый текст Выделить код Код:// Context Search, от 29.01.2014. ................................ (function () { var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var searchSelect = document.getElementById('context-searchselect'); searchSelect.collapsed = false; // удалить стандартный пункт меню для поиска // Создать новый пункт меню для поиска .... var contextMenu = document.getElementById("contentAreaContextMenu"); var menu = contextMenu.insertBefore( document.createElement('menu'), searchSelect ); // над каким пунктом меню показывать menu.setAttribute("class", "menu-iconic"); // устанавливать иконку, название и поисковик для нового пункта меню function setMenu() { menu.engine = searchService.currentEngine; menu.setAttribute("label", "Искать в..."); }; setMenu(); // наблюдатель за стандартным пунктом меню 'Копировать' прячет меню поиска var copy = document.getElementById('context-copy'); var setHiddenMenu = new MutationObserver(function() { menu.hidden = copy.hidden || copy.disabled; }); setHiddenMenu.observe( copy, { attributes: true, attributeFilter: ["hidden", "disabled"] } ); // Создать подменю с поисковиками .... var menuPopup = menu.appendChild( document.createElement("menupopup") ); menuPopup.setAttribute('style', 'overflow: scroll'); // создать пункты в подменю function setItemsToMenuPopup(e) { menuPopup.textContent = ""; var engines = searchService.getVisibleEngines({}); engines.forEach(function( engine ) { var mItem = document.createElement("menuitem"); mItem.setAttribute("label", engine.name ); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("src", engine.iconURI.spec ); mItem.engine = engine; menuPopup.appendChild( mItem ); }); }; setItemsToMenuPopup(); // Установить действие для клика на меню и подменю .... menu.setAttribute("onmouseup", "\ var background = ( event.button == 0 ) ? false : true;\ var clip = gClipboard.read();\ goDoCommand('cmd_copy');\ setTimeout(function() {\ document.getElementById('contentAreaContextMenu').hidePopup();\ var submission = event.target.engine.getSubmission( gClipboard.read(), null );\ gBrowser.loadOneTab( submission.uri.spec, null, null, submission.postData, background, false );\ gClipboard.write( clip );\ }, 0);\ "); // Наблюдатель за изменениями в поисковиках пересоздаёт меню и подменю .... var getEngineModified = { observe: function(subject, topic, data) { if ( /changed|removed|current/.test( data ) ) { setMenu(); setItemsToMenuPopup() }; } }; Services.obs.addObserver( getEngineModified, "browser-search-engine-modified", false ); // Удалять наблюдатели и меню, показать стандартный пункт .... addDestructor(function() { contextMenu.removeChild( menu ); setHiddenMenu.disconnect(); Services.obs.removeObserver( getEngineModified, "browser-search-engine-modified", false ); searchSelect.collapsed = false; }); })(); // Добавить новый пункт "Перезапуск" в главном меню ..................................................... (function() { // блокировать дублирование пункта при открытии настройки панелей if ( document.getElementById("restart_firefox") ) return; var menuItem = document.createElement("menuitem"); menuItem.setAttribute("id", "restart_firefox"); menuItem.setAttribute("label", "Restart"); menuItem.setAttribute("oncommand", "Application.restart()"); var QuitItem = document.getElementById("menu_FileQuitItem"); // в меню 'Файл' QuitItem.parentNode.insertBefore( menuItem, QuitItem ); var appmenuQuit = document.getElementById("appmenu_quit") || document.getElementById("appmenu-quit"); // в меню kнопки "Firefox" if ( appmenuQuit ) appmenuQuit.parentNode.insertBefore( menuItem.cloneNode(true), appmenuQuit ); })(); // Добавить новый пункт "Поиск изображения в google" в контекстном меню изображений ........................... (function() { if ( document.getElementById("image-search") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "image-search"; menuItem.setAttribute("label", "Поиск изображения в google"); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('http://www.google.com/searchbyimage?image_url=' + encodeURIComponent( gContextMenu.mediaURL || gContextMenu.imageURL || gContextMenu.bgImageURL ) )"); document.getElementById("context-viewimage").parentNode.insertBefore( menuItem, document.getElementById("context-viewimage") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.onImage; }, false); })(); // Кнопка для управления масштабом страницы в адресной строке 2, от 14.12.2014. ................................ (function f() { // Создать в адресной строке кнопку масштаба .... var zoomButton = document.createElement("statusbarpanel"); zoomButton.setAttribute("context", "event.stopPropagation()"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( zoomButton, urlbarIcons.lastChild ); // перед последней кнопкой адресной строки addDestructor(function() { urlbarIcons.removeChild( zoomButton ) }); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -5px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Сбросить масштаб на 100%\nС: Единый масштаб для всех страниц \nП: Открыть меню управления масштабом "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", function(e) { // сбросить масштаб if ( e.button == 0 && e.target.localName !== "menuitem" ) FullZoom.reset(); // единый масштаб для всех страниц if ( e.button == 1 ) { cbu.isPref("CB.zoom.allEvenly", false ); cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") ); cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ); updateZoomButton(); } // открыть меню управления масштабом if ( e.button == 2 ) { zoomButton.textContent = ""; // удалить старое меню // создать новое меню управления масштабом var zoom = zoomButton.label.replace('%',''); var menu = zoomButton.appendChild( document.createElement("menupopup") ); cbu.getPrefs("toolkit.zoomManager.zoomValues").split(',').forEach(function( val ) { var mItem = menu.appendChild( document.createElement("menuitem") ); var str = Math.round(val*100); mItem.setAttribute("value", val ); mItem.setAttribute("label", str ); mItem.setAttribute('type', 'checkbox'); mItem.setAttribute('checked', str == zoom ); mItem.setAttribute("oncommand", "this.parentNode.setZoom(event)"); }); menu.setZoom = function(e) { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = e.target.value; updateZoomButton(); }; menu.appendChild( document.createElement("menuseparator") ); // добавить разделитель // добавить к новому меню стандартное меню масштаба var popup = document.getElementById("viewFullZoomMenu").lastChild; [...popup.childNodes].forEach(function( mItem ) { popup.lastChild.setAttribute('checked', !ZoomManager.useFullZoom ); menu.appendChild( mItem.cloneNode(true) ); }); menu.showPopup( zoomButton, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; }, false, zoomButton ); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", function(e) { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, zoomButton ); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "updateZoomButton(); $&"; var handleEvent = parseInt(Application.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, handleEvent]; array.forEach(function(func) { eval( (func.toString().match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace(/}$/, str)).replace('_', '.') ) }); addDestructor(function() { array.forEach(function(func) { eval( (func.toString().match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace('_', '.') ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(function() { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); // запомнить текущий масштаб в 'about:config' if ( e == undefined ) { try { window.clearTimeout( f.timeout ) } catch(e) {}; f.timeout = window.setTimeout(function() { cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }, 250 ); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", function(e) { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) { var value = cbu.getPrefs("CB.zoom.Percent"); if ( ZoomManager.zoom.toFixed(2) == value ) return; setTimeout(function() { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0) } else updateZoomButton(e); }, true, gBrowser.tabContainer ); })(); |
turbot > 08-06-2016 09:41:47 |
1fesFFFF скрытый текст Замените на: Выделить код Код:menuItem.setAttribute("oncommand", "Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart)"); и Выделить код Код:var handleEvent = parseInt(Application.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; на Выделить код Код:var handleEvent = parseInt(Services.appinfo.platformVersion) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; |
oleg953 > 08-06-2016 12:37:04 |
в 47 |
voqabuhe > 08-06-2016 12:52:59 |
oleg953 > 08-06-2016 13:15:50 |
voqabuhe пишет
вот она то и отвалилась в 47 08-06-2016 13:20:06 |
voqabuhe > 08-06-2016 14:14:42 |
oleg953 пишет
Странно, у меня работает. Возможно мне её уже правили, но не помню. Попробуй, если ещё нужна скрытый текст Выделить код Код: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%3EAbout%3A%20Menu%20Mod%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACIUlEQVQ4y42Tv09TcRTFP6+vQE0Ngs4maoK6IVipiAIuDkLYEaKTq4mzf4Kr0cTJWY0rRAmUaDSBmEBCdCFYopQWkKoU+8r73nsdXn/QxIGbfLdzzzk593w9M+PB65U5PIY5yhiZ55OpmwBBEBAHEHHDd69eaMKpgXkgTjHA80DVePl5tUkoDmAqAJTDCAwRWAE1QzR6vu/VsU0EKlJ111BXqC/WSPAa2GYHEkYEFpEchI7puQyLS0sY0NvdzdDAdVqI17G1iUUZSFU5UpqanWVlPcfo6BgjI2N8yW7ybn4eUcXMmHz6tvO/GaiBqLKa3+HW4DV6us4SiqIG7xcW+bpTolIu4cfb1iaeTD0EXsSiDByihlMlECPZfpLcZoFsMeDbbpkf+TzJ9k52y5H98cHeDhX3rBGiCk6Vrb0KYsaJ48dYXF6msL2NmpHN5Rjq78dVbW/vO1QlcShERyCKUyOTmSG7WeD0mXNsfF8Hg3TqChfPd7GytQ9AsRxi4hoZiAhBqMzMTLO6tkaqL83AlcvEYjcQhb3A8aeiTenXgo8cOGGnWCSXz9GXTpO61MPG7wpS64IZyRa/udFOmq+QTLZzb+IO+K0USmG0CEj1tE6toR46zLR0iECpiBJ6rVQOjESLX6+yqNbbWJtPCx9/+W2J+wCemTH++NUHVRk4ymf0Yv5CLBa7/ebRxM8gCCKCRCJxCugA/CNw/AX2o98clP8BXEloo/iyk7kAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%0Avar%20%7Bclasses%3A%20Cc%2C%20interfaces%3A%20Ci%2C%20utils%3A%20Cu%7D%20%3D%20Components%3B%0Avar%20menu%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Amenu.setAttribute%28%22context%22%2C%20%22inspect%28event%29%22%29%3B%0Amenu.setAttribute%28%22oncontextmenu%22%2C%20%22toolbar-context-menu%22%29%3B%0Amenu.setAttribute%28%22onpopupshowing%22%2C%20%22populate%28this%29%22%29%3B%0Amenu.setAttribute%28%22oncommand%22%2C%20%22getTab%28event.target.label%29%22%29%3B%0Amenu.setAttribute%28%22onclick%22%2C%20%22middleClickHandler%28event%29%22%29%3B%0Amenu.id%20%3D%20%22aboutMenu%22%3B%0A%0Athis.appendChild%28menu%29%3B%0A%0Amenu.populate%20%3D%20populate.bind%28%29%3B%0Amenu.style.MozAppearance%20%3D%20%22none%22%3B%0Amenu.style.border%20%3D%20%222px%20outset%20%23999%22%3B%0Amenu.style.listStyleImage%20%3D%20%22none%22%3B%0A%0Afunction%20populate%28aNode%29%20%7B%0A%20%20while%28aNode.lastChild%29%20aNode.removeChild%28aNode.lastChild%29%3B%0A%20%20var%20protocols%20%3D%20%5B%5D%3B%0A%20%20var%20ios%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Ci.nsIIOService%29%3B%0A%20%20for%28var%20cid%20in%20Cc%29%20%7B%0A%20%20%20%20let%20res%20%3D%20cid.match%28/@mozilla.org%5C/network%5C/protocol%5C/about%3B1%5C%3Fwhat%5C%3D%28.*%29%24/%29%3B%0A%20%20%20%20if%28res%29%20%7B%0A%20%20%20%20%20%20let%20aboutType%20%3D%20res%5B1%5D%3B%0A%20%20%20%20%20%20let%20contract%20%3D%20%22@mozilla.org/network/protocol/about%3B1%3Fwhat%3D%22%20+%20aboutType%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20let%20am%20%3D%20Cc%5Bcontract%5D.getService%28Ci.nsIAboutModule%29%3B%0A%20%20%20%20%20%20%20%20let%20uri%20%3D%20ios.newURI%28%22about%3A%22%20+%20aboutType%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20let%20flags%20%3D%20am.getURIFlags%28uri%29%3B%0A%20%20%20%20%20%20%20%20if%28%21%28flags%20%26%20Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20protocols.push%28aboutType%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%0A%20%20%7D%20%7D%0A%20%20var%20newGecko%20%3D%20parseInt%28navigator.userAgent.match%28/%5Cd+.%5Cd+%28%3F%3D%5C%29%29/%29%29%20%3E%3D%204%3B%0A%20%20if%28newGecko%20%26%26%20%28protocols.length%20%3E%2010%29%29%20%7B%0A%20%20%20%20var%20hbox%20%20%3D%20aNode.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20var%20vbox1%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20var%20vbox2%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20protocols.sort%28%29.forEach%28function%28aProtocol%29%20%7B%0A%20%20%20%20%20%20let%20vbox%20%3D%20%28aProtocol%20%3C%20protocols%5BparseInt%28Math.round%28protocols.length%20/%202%29%29%5D%29%20%3F%20vbox1%20%3A%20vbox2%3B%0A%20%20%20%20%20%20addMenuItem%28vbox%2C%20%22about%3A%22%20+%20aProtocol%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20protocols.sort%28%29.forEach%28function%28aProtocol%29%20%7BaddMenuItem%28aNode%2C%20%22about%3A%22%20+%20aProtocol%29%3B%7D%29%3B%0A%7D%20%7D%0A%0Afunction%20addMenuItem%28aNode%2C%20aLabel%29%20%7B%0A%20%20var%20cb%20%3D%20document.createElement%28%22checkbox%22%29%3B%0A%20%20cb.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20cb.setAttribute%28%22class%22%2C%20%22about-menuitem%22%29%3B%0A%20%20aNode.appendChild%28cb%29%3B%0A%7D%0A%0Amenu.inspect%20%3D%20function%20inspect%28aEvent%29%20%7B%0A%20%20if%28%21%22inspectDOMNode%22%20in%20window%29%20return%3B%0A%20%20aEvent.preventDefault%28%29%3B%0A%20%20inspectDOMNode%28aEvent.target%29%3B%0A%20%20closeMenus%28aEvent.target%29%3B%0A%7D%0A%0Avar%20thisId%20%3D%20this.id%3B%0A%0Amenu.middleClickHandler%20%3D%20function%20middleClickHandler%28aEvent%29%20%7B%0A%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20var%20thisBtn%20%3D%20document.getElementById%28thisId%29%3B%20%0A%20%20%20%20thisBtn.firstChild.openPopup%28%29%3B%0A%20%20%20%20thisBtn.firstChild.autoPosition%20%3D%20false%3B%0A%20%20%7D%2C%2010%29%3B%0A%20%20if%28aEvent.button%20%21%3D%201%29%20return%3B%0A%20%20aEvent.preventDefault%28%29%3B%0A%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28aEvent.target.label%29%3B%0A%20%20closeMenus%28aEvent.target%29%3B%0A%7D%0A%0Athis.type%20%3D%20%22menu%22%3B%0Athis.label%20%3D%20this.tooltipText%20%3D%20%22About%3A%20Pages%22%3B%0A//%20this.boxObject.lastChild.collapsed%20%3D%20true%3B%0A%0Amenu.getTab%20%3D%20function%20getTab%28aURI%29%20%7B%0A%20%20function%20switchIfURIInWindow%28aWindow%29%20%7B%0A%20%20%20%20var%20browsers%20%3D%20aWindow.gBrowser.browsers%3B%0A%20%20%20%20for%28let%20i%20%3D%200%3B%20i%20%3C%20browsers.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20let%20browser%20%3D%20browsers%5Bi%5D%3B%0A%20%20%20%20%20%20if%28browser.currentURI.equals%28aURI%29%29%20%7B%0A%20%20%20%20%20%20%20%20aWindow.focus%28%29%3B%0A%20%20%20%20%20%20%20%20aWindow.gBrowser.tabContainer.selectedIndex%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%20%20if%28%21%28aURI%20instanceof%20Ci.nsIURI%29%29%20aURI%20%3D%20makeURI%28aURI%2C%20null%2C%20null%29%3B%0A%20%20var%20isBrowserWindow%20%3D%20%21%21window.gBrowser%3B%0A%20%20if%28isBrowserWindow%20%26%26%20switchIfURIInWindow%28window%29%29%20return%20true%3B%0A%20%20var%20wm%20%3D%20Cc%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D.getService%28Ci.nsIWindowMediator%29%3B%0A%20%20var%20winEnum%20%3D%20wm.getEnumerator%28%22navigator%3Abrowser%22%29%3B%0A%20%20while%28winEnum.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20let%20browserWin%20%3D%20winEnum.getNext%28%29%3B%0A%20%20%20%20if%28browserWin.closed%20%7C%7C%20browserWin%20%3D%3D%20window%29%20continue%3B%0A%20%20%20%20if%28switchIfURIInWindow%28browserWin%29%29%20return%20true%3B%0A%20%20%7D%0A%20%20gBrowser.loadOneTab%28aURI.spec%2C%20%7BinBackground%3A%20true%7D%29%3B%0A%20%20return%20false%3B%0A%7D%0A%0Avar%20Cc%20%3D%20Components.classes%2C%20Ci%20%3D%20Components.interfaces%3B%0Avar%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27%20+%20encodeURIComponent%28this.Help%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%27@mozilla.org/content/style-sheet-service%3B1%27%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Aif%28%21sss.sheetRegistered%28uri%2C%20sss.USER_SHEET%29%29%20sss.loadAndRegisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%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/*http%3A//custombuttons.sourceforge.net/forum/viewtopic.php%3Ff%3D4%26t%3D367%26sid%3D8ee7ae46e4cd942e759e413f9ac6666a*/%0A/*%20Custom%20Buttons%20%u2022%20View%20topic%20-%20About%20Menu%20http%3A//custombuttons.sourceforge.net/forum/viewtopic.php%3Ff%3D4%26t%3D276%26sid%3D8f724b7464cf9c69d86e3370407b5ed9%26start%3D20%23p3807*/%0Adata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACIUlEQVQ4y42Tv09TcRTFP6+vQE0Ngs4maoK6IVipiAIuDkLYEaKTq4mzf4Kr0cTJWY0rRAmUaDSBmEBCdCFYopQWkKoU+8r73nsdXn/QxIGbfLdzzzk593w9M+PB65U5PIY5yhiZ55OpmwBBEBAHEHHDd69eaMKpgXkgTjHA80DVePl5tUkoDmAqAJTDCAwRWAE1QzR6vu/VsU0EKlJ111BXqC/WSPAa2GYHEkYEFpEchI7puQyLS0sY0NvdzdDAdVqI17G1iUUZSFU5UpqanWVlPcfo6BgjI2N8yW7ybn4eUcXMmHz6tvO/GaiBqLKa3+HW4DV6us4SiqIG7xcW+bpTolIu4cfb1iaeTD0EXsSiDByihlMlECPZfpLcZoFsMeDbbpkf+TzJ9k52y5H98cHeDhX3rBGiCk6Vrb0KYsaJ48dYXF6msL2NmpHN5Rjq78dVbW/vO1QlcShERyCKUyOTmSG7WeD0mXNsfF8Hg3TqChfPd7GytQ9AsRxi4hoZiAhBqMzMTLO6tkaqL83AlcvEYjcQhb3A8aeiTenXgo8cOGGnWCSXz9GXTpO61MPG7wpS64IZyRa/udFOmq+QTLZzb+IO+K0USmG0CEj1tE6toR46zLR0iECpiBJ6rVQOjESLX6+yqNbbWJtPCx9/+W2J+wCemTH++NUHVRk4ymf0Yv5CLBa7/ebRxM8gCCKCRCJxCugA/CNw/AX2o98clP8BXEloo/iyk7kAAAAASUVORK5CYII%3D%0A%0Adata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACK0lEQVQ4y6WTwUvUURDHP++3b3WxkjSIiCApKaLCFNMyKSu6CQQEnQxPQX+Nx6BTnaJunQrBFcPcJMQuEQVIqrirRpqa7v5+b2YC3F1dEQh6MDDMvPm8N2++z5kZ/7P8w2fjAIMakqeqktmbjKJUMfLpJ8DzV497Dwa4lG/SEIYG73RlCn+kJnniUCrzYmx6KPL+DbB6EMANvv724UgmfbHeR/V72zHcrl+OO8C5nXgcpLRRCl+8Suh5cKkFB5irFICxayJW9V0ZppB5OTXT41UCDojFSLRyLwghMDw6yqfP0xjQ0dZOX+8tcBEAvi5CJeBVYpwrn+bAAaLGu+wIX2fz9Pffx8wYGc+RSJbbfXcBIFFUYrzECQao7RRWep7Jr3Dv5g3azp9FAYsc73OTxOU9JVNMFK8SanpVIKjR0NhMYWWZ4ydPk6iymF+mobGZzbh2Ul5DTBBloySslQQtg44cbmBiapr5/AqKMbewQM/1HrarD1UFJGyLsh4Lv2MBg49jwywUljjVcob8/Cxm0Hm1m9bWc2yK7QOosJkYsRqJKLnsW+Z+zNDeeY3urk5SUYRgrG8LP4tKyke1ABOhmAjFoPxaXWOpsMiVzm4ut3cwu5YggJoRxEhHjrr9UlYJFBPBOTjWfJRHAwO4dD3LGwEfOVKAAinARY5QndSOKr2DyexE7oL3vk5USaci4qCwR5UABmBGZQaqmpjZdwc0AQ1lc//4iw3YArb+Ak3uO3iDCbpzAAAAAElFTkSuQmCC%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E oleg953 пишет
Там слишком мало эбаутов |
oleg953 > 08-06-2016 15:13:59 |
voqabuhe пишет
скорее всего... всё заработало |
Ultima2m > 08-06-2016 16:31:23 |
Продублирую тут свой пост, может кто решил вопрос. mssign пишет
Поддерживаю. Помогите кто может. скрытый текст Выделить код Код: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%3E%u0426%u0432%u0435%u0442%20%u0441%u0441%u044B%u043B%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACx0lEQVQ4jWNgoCYQnXqVJ23Vw521e56/m3rs9d/+Qy9/1u989j5p0YPTEgXnFYgyRKHrhkfd8dc3jz399v/o42//HWfeXSWZdVaTgYGBkRj9jHp9NyYuuvL+o9WU24tytz69aNl5bZF03Elh4myvu5S44cbnX9q1l/qlM89aVO54ftu1/+YWqYzz1prNN+eY9dw7aNJxd7dJy53dpi03D2qUXlsG1yxTel61eMfzqzNOvXsjkXzaTDz2qM6UA69e+02+dUA6/ZyzcsXNyT5zH3/O3vjif+aaF/91Sq6vE4s9XwY3wKjlysxN1z/9mXvy3YcJ+1++mHHw9dsDNz/9j51154ygy245/fqb6/3nPfrn1HvnbuKyJ//Fo841M4SuYmNgcNjPIp1xOnbJmbeffafd2SsefDhSLOBQsKjvgbwpu5+/TZ5957JkwpmMmCVP/9u03rksFnXWPWLu4//Sked6IU6PO6GXvfrRpYkHXr4S9TtoCHORiMd29aTpdy5mzLr3wHXS/feu/XdfioWdthYLORUUOfPhf9XE8xD/t+989n3awVf/m7c++5I0/fY2BgYGBhG3ncZBPTdOLjv05n/0pHv/E5c8+S8ScaaWgYGBQTDopHf41Pv/tZPObyEYK2LRF2Ki5z/+n7zoyf+YOQ//+/bd+x8++d7/lLkP/2vGnd/C67wHd/QKR502s6q/cdmr9+432ahz04UCThQI+x3LUYs8vy555oP/unHnDvI67NfAaYBG9sU1CfMe/RcNOtHM4LuZCybO734o2KXixgfdqHMH+F32KGFoFAk9aywScqbYre3OB4/WO1+FfE8EMxjPZGVgYGDgdzuoKOB2sMGt8upX25yLj3kd9sdjGODeeeeTb9/d/749d/77dNz5b5h28RiD5SpOBgYGBrPkixc9q2/886q58d+r+sZ/9/KrPwkGJCEAAGPyWBBZxhFHAAAAAElFTkSuQmCC%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*/%0A%0A//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u0441%u0442%u0438%u043B%u044C%20..........%0Athis._handleClick%20%3D%20function%28%29%20setStyleForPages%28void%28run.value%20%3D%20%21run.value%29%29%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20about%3Aconfig%20%u0435%u0441%u043B%u0438%20%u043E%u043D%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20..........%0Avar%20s%20%3D%20%22CB%22%20+%20_id.slice%2820%29%20+%20%22.setStyleForPage%22%3B%0Acbu.isPref%28s%2C%20false%29%3B%0Avar%20previousUri%20%3D%20%22CB%22%20+%20_id.slice%2820%29%20+%20%22.previousUri%22%3B%0A%0A%0A//%20%u0418%u043A%u043E%u043D%u043A%u0430%20%u0434%u043B%u044F%20%u0432%u043A%u043B%u044E%u0447%u0435%u043D%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%20%20..........%0Avar%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Avar%20styleImage%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8ElEQVQ4jY2RaSzbcRjHf3S2N9sLU1UqC1lshFmMycZeOFpsUxbX3HHNimxZmGsZ3eIYosx9DEsakcWMTRwVXbQ2Vtrq3O3866q7rjl3WJ+9ECIxme/7z+f5PvkidCDqBYOnQ6snWhLYs8sFnfI/2e3zP+ktMytBzHE+8ZFIBx0nOhlih8Qvcknn9BZ0yLbAukRarRkuNEAIKR2HVzLOEucwB1a+W+SPMB80TvdeTx9ikvy71I53PbEv8L14/ZdhQl82KUx4LZ41O0LJljRo0USWBkmSMvPMUa5ZmrTVLBlrvZos4epHD1Xtw9rRIr0o1uxgcffyIjGYb67h12GUz1mQO+V945Du99iej5PkOZbL1iM+zEFYzRwYPR6uJfiJYvYFV5IHSuqH13bKu5ZXX7bNzxVz5UscyRr4lWICVXLruct0SZ1zxaTChoFJA6umQMO7Jwm5V59EyKrtBInG96sULK1TC7GPGq6fvAh32l3VqZyH+a2zS8GvsH7NAAHNt3IabqRg/QRvob1nuQxIXj2M3er+POOIt5N9OZz5BXUnrsleI7xD88WgIqyXVjo6TskdW6FkS+cJHnxLglu3i1fJBOgFinb/f9Eys13IXYCkxpmNoKKRJoQQwtu1mLpkiruq2hfBJ3cUAiunAO8pSEAIIVWXrtt3C8bAMEjU8N9VCD5ffX1eyyCYOQWMpylQ734B2DYqUOesDfHO/sNnbNlHz6vmzTe3oIv7bzGkW8897/F6Ii12thsZoBhiweabSOgOv6QoI+slHynQj+itCaiYBHUXXhKLjBvdamQA5FIBYlUBUnVBnmEFTeRTk4dAvLvQFO8miLJLxVYdUrDNs1SeK9sap1AIa+FgVuhEYFvjFIcE9unYGjVLCtRMDBzTMDAJ7e1sJuOmNsqDAehE+BGDYDkGwQQNB+9uEg8L/hWuh9YzXoje75lYXViIVwFpiBKwqbgdFkX5ybEECCH02V07jkVRHmNb4xQsirJsD/4L5j+KqY53NfUAAAAASUVORK5CYII%3D%22%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20css%20%u043A%u043E%u0434%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20..........%0Avar%20css%20%3D%20self.Help%3B%0Avar%20run%20%3D%20Application.prefs.get%28s%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20..........%0Afunction%20setStyleForPages%28reason%29%20%7B%0A%20%20%20if%20%28%20reason%20%3D%3D%20%22destructor%22%20%29%20return%3B%20%0A%0A%20%20%20var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%0A%20%20%20var%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%20%0A%20%20%20%0A%20%20%20try%20%7B%20sss.unregisterSheet%28Services%5B_id%20+%20%22previousUri%22%5D%20%7C%7C%20uri%2C%200%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20Services%5B_id%20+%20%22previousUri%22%5D%20%3D%20uri%3B%0A%20%20%20%0A%20%20%20run.value%20%26%26%20%21reason%20%26%26%20sss.loadAndRegisterSheet%28%20uri%2C%200%20%29%3B%0A%20%20%20icon.src%20%3D%20run.value%20%3F%20styleImage%20%3A%20self.image%3B%0A%7D%3B%0AaddDestructor%28setStyleForPages%29%3B%0Arun.value%20%26%26%20setStyleForPages%28%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/*AGENT_SHEET*/%0A%0A%20%20a%2C%20a%20span%20%0A%7B%0A%20%20text-decoration%3A%20none%20%21important%3B%20%0A%20%20color%3A%20%23BABAFF%20%21important%3B%0A%7D%0Aa%3Avisited%2C%20a%3Avisited%20span%20%7Bcolor%3A%20red%20%21important%3B%7D%0A%0Aa%3Ahover%2C%20a%3Ahover%20span%20%0A%7B%0A%20%20color%3A%20%239999ff%20%21important%3B%0A%20%20text-shadow%3A%200px%200px%208px%20%239999ff%20%21important%3B%20%0A%20%20transition%3A%20text-shadow%20.3s%20%20linear%20%21important%3B%0A%7D%0Aa%3Aactive%2C%20a%3Aactive%20span%20%20%7Bcolor%3A%20Silver%20%21important%3B%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Инициализация Выделить код Код:// ЛКМ переключить настройки кнопки и стиль .......... this._handleClick = function() setStyleForPages(void(run.value = !run.value)); // Создать настройки кнопки в about:config если они не существует .......... var s = "CB" + _id.slice(20) + ".setStyleForPage"; cbu.isPref(s, false); var previousUri = "CB" + _id.slice(20) + ".previousUri"; // Иконка для включеной кнопки .......... var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); var styleImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8ElEQVQ4jY2RaSzbcRjHf3S2N9sLU1UqC1lshFmMycZeOFpsUxbX3HHNimxZmGsZ3eIYosx9DEsakcWMTRwVXbQ2Vtrq3O3866q7rjl3WJ+9ECIxme/7z+f5PvkidCDqBYOnQ6snWhLYs8sFnfI/2e3zP+ktMytBzHE+8ZFIBx0nOhlih8Qvcknn9BZ0yLbAukRarRkuNEAIKR2HVzLOEucwB1a+W+SPMB80TvdeTx9ikvy71I53PbEv8L14/ZdhQl82KUx4LZ41O0LJljRo0USWBkmSMvPMUa5ZmrTVLBlrvZos4epHD1Xtw9rRIr0o1uxgcffyIjGYb67h12GUz1mQO+V945Du99iej5PkOZbL1iM+zEFYzRwYPR6uJfiJYvYFV5IHSuqH13bKu5ZXX7bNzxVz5UscyRr4lWICVXLruct0SZ1zxaTChoFJA6umQMO7Jwm5V59EyKrtBInG96sULK1TC7GPGq6fvAh32l3VqZyH+a2zS8GvsH7NAAHNt3IabqRg/QRvob1nuQxIXj2M3er+POOIt5N9OZz5BXUnrsleI7xD88WgIqyXVjo6TskdW6FkS+cJHnxLglu3i1fJBOgFinb/f9Eys13IXYCkxpmNoKKRJoQQwtu1mLpkiruq2hfBJ3cUAiunAO8pSEAIIVWXrtt3C8bAMEjU8N9VCD5ffX1eyyCYOQWMpylQ734B2DYqUOesDfHO/sNnbNlHz6vmzTe3oIv7bzGkW8897/F6Ii12thsZoBhiweabSOgOv6QoI+slHynQj+itCaiYBHUXXhKLjBvdamQA5FIBYlUBUnVBnmEFTeRTk4dAvLvQFO8miLJLxVYdUrDNs1SeK9sap1AIa+FgVuhEYFvjFIcE9unYGjVLCtRMDBzTMDAJ7e1sJuOmNsqDAehE+BGDYDkGwQQNB+9uEg8L/hWuh9YzXoje75lYXViIVwFpiBKwqbgdFkX5ybEECCH02V07jkVRHmNb4xQsirJsD/4L5j+KqY53NfUAAAAASUVORK5CYII="; // Получить настройки кнопки и css код из вкладки Справка .......... var css = self.Help; var run = Application.prefs.get(s); // Переключить css стиль для страницы .......... function setStyleForPages(reason) { if ( reason == "destructor" ) return; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent(css)); try { sss.unregisterSheet(Services[_id + "previousUri"] || uri, 0) } catch(e) {}; Services[_id + "previousUri"] = uri; run.value && !reason && sss.loadAndRegisterSheet( uri, 0 ); icon.src = run.value ? styleImage : self.image; }; addDestructor(setStyleForPages); run.value && setStyleForPages(); Спрятать панель дополнений скрытый текст Выделить код Код: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%3E%u0421%u043F%u0440%u044F%u0442%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB30lEQVR42mNkoBAwInPWHbjdsHDHrVsbO7yXkWVA7fwT/+XlxRjmrjq39Om961mPdtV+IsmA3Il7/jvbazL8/PmHYcPOG3dPX3oUfWdN6kmiDUhq2/jf3kqD4f9/EO8/w/Xbb37vOPqo7uWtI10vjk/7R9CA8OoV/20tNUF6Gf79/8fw7+9fhs9ffjDsO/V834P7j2Lvbyl+hteAwJKF/63MdYAu+M/wF6j5798/DL9//WL4/fsnw437n99cvf856ebKpM04DfArmPff1FSP4f+//xDNQI1fPn9lePf2PcPz5y8Z7j16/Z+BS3Ly/U35+VgNcM2Y8V9DU4fhz58/DN9//GL4/PkL0IBPDJ8/fWD4+P4dw7dv3/7/5xCZ9GBbRQFOAzS1DcEG/Pz5k+Hrt+9AzR8ZPn14x/D+w9tXHz//SHq8t30rTi945s76b2BgwfDr92+gbUDNX74yfPjwhuHurSs7Xz+5n/DmwooXeAPRp2jOf3NTe4bv338ANX9huPvw5s9LJ49Uvn9wccLXJ6f/E4xG39K5/20tXBjeAP18YP+Wa7dOH4/6cH3LRaITklfZnP+y8ir/t65aOPPtnctF35+e+c5AAKAYYJvfsfDKzr1r3t/YvZmQRqwGkAMAJ5ELIPTev5gAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0421%u043F%u0440%u044F%u0442%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%20%u043E%u0442%2011.02.2014.%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20pref.value%20%3D%20pref.value%20%3F%20false%20%3A%20true%3B%0A%7D%3B%0A%0A%0Avar%20right%20%3D%200%3B%20//%20%u043E%u0442%u0441%u0442%u0443%u043F%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0432%20px%20%20%0A%0Avar%20s%20%3D%20%27CB.hideAddonBar%27%0Acbu.isPref%28s%2C%20false%20%29%3B%0Avar%20pref%20%3D%20Application.prefs.get%28s%29%3B%0A%0A%0Afunction%20toggleButton%28%29%20%7B%20%20%20%0A%20%20%20document.getElementById%28%22ctraddon_addon-bar%22%29.setAttribute%28%27hideElements%27%2C%20pref.value%20%29%3B%20%20%20%20%20%0A%20%20%20%20%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28%20self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20//%20icon.style.transform%20%3D%20pref.value%20%3F%20%22rotate%28180deg%29%22%20%3A%20%22%22%3B%20%20%20//%20%u043F%u0435%u0440%u0435%u0432%u0435%u0440%u043D%u0443%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%0A%20%20%20%0A%20%20%20self.tooltipText%20%3D%20pref.value%20%3F%20%27%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%27%20%3A%20%27%u0421%u043F%u0440%u044F%u0442%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%27%3B%20%20%20%20%20%0A%7D%3B%0AtoggleButton%28%29%3B%0AgPrefService.addObserver%28%20s%2C%20toggleButton%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleButton%2C%20false%20%29%20%7D%29%3B%0A%0A//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u043F%u0430%u043D%u0435%u043B%u0438%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%20%20................................%0Avar%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A/*%20%u043C%u0438%u043D%u0438%u043C%u0430%u043B%u044C%u043D%u044B%u0439%20%u0438%20%u043F%u0440%u043E%u0437%u0440%u0430%u0447%u043D%u044B%u0439%20*/%5C%0A%23ctraddon_addon-bar%20%7B%5C%0Awidth%3A%20auto%3B%5C%0Aposition%3A%20fixed%3B%20bottom%3A%20906px%3B%5C%0Apadding-top%3A%202px%20%21important%3B%5C%0Apadding-left%3A%202px%20%21important%3B%5C%0Apadding-right%3A%200px%3B%5C%0Aright%3A%20%27%20+%20right%20+%20%27px%3B%5C%0Abackground%3A%20rgba%28120%2C120%2C250%2C.4%29%20%21important%3B%5C%0A%7D%5C%0A/*%20%u0435%u0441%u043B%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0443%20%u0438%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u043E%u0432%20*/%5C%0A%23ctraddon_addon-bar%5Bcustomizing%5D%20%7B%5C%0Abackground%3A%20-moz-Dialog%3B%5C%0Aborder-radius%3A%207px%200%200%200%3B%5C%0Aposition%3A%20fixed%3B%5C%0Avisibility%3A%20visible%20%21important%3B%5C%0A%7D%5C%0A/*%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u044B%2C%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0438%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%u0430%20hideElements%20*/%5C%0A%23ctraddon_addon-bar%20dropmarker%2C%5C%0A%23addonbar-closebutton%2C%5C%0A%23ctraddon_addon-bar%3Anot%28%5Bcustomizing%5D%29%5BhideElements%3D%22true%22%5D%20label%2C%5C%0A%23ctraddon_addon-bar%3Anot%28%5Bcustomizing%5D%29%5BhideElements%3D%22true%22%5D%20hbox%2C%5C%0A%23ctraddon_addon-bar%3Anot%28%5Bcustomizing%5D%29%5BhideElements%3D%22true%22%5D%20.statusbarpanel-iconic%2C%5C%0A%23ctraddon_addon-bar%3Anot%28%5Bcustomizing%5D%29%5BhideElements%3D%22true%22%5D%20toolbarbutton%3Anot%28%5Bid%3D%22%27%20+%20_id%20+%20%27%22%5D%29%2C%5C%0A%23ctraddon_addon-bar%3Anot%28%5Bcustomizing%5D%29%5BhideElements%3D%22true%22%5D%20%23UserScriptLoader-icon%20%7B%5C%0Adisplay%3A%20none%20%21important%3B%5C%0A%7D%5C%0A%5C%0A%23ctraddon_addon-bar%20%3E%20%23status-bar%20%3E%20.statusbar-resizerpanel%20%7B%5C%0Aposition%3A%20relative%3B%5C%0Amargin-right%3A-4px%3B%5C%0A%7D%5C%0A%27%29%29%3B%0A%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0AaddDestructor%28function%28%29%20%7B%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%20%7D%29%3B%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/*Addon%20Bar*/%0A%0A%23addon-bar%7B%0A%09%22-moz-appearance%3A%20none%20%21important%3B%0A%09border%3A%201px%20solid%20rgba%2810%25%2C10%25%2C10%25%2C.4%29%20%21important%3B%0A%09border-bottom%3A%20none%20%21important%3B%0A%09border-right%3A%20none%20%21important%3B%0A%09border-radius%3A%204px%200%200%200%20%21important%3B%0A%09background%3A%20rgba%28207%2C%20219%2C%20236%2C%20.85%29%3B%0A%09position%3A%20fixed%3B%0A%09bottom%3A%200%3B%0A%09right%3A%200%3B%0A%09height%3A%2022px%3B%0A%09width%3A%20auto%3B%0A%09min-width%3A%2018px%3B%0A%09vertical-align%3A%20top%3B%0A%09padding-left%3A%200%3B%0A%09margin%3A%200px%3B%22%0A%0A%7D%0A%0A%23browser-bottombox%7B%0A%09border%3A%20none%20%21important%3B%0A%7D%0A%0A%23addon-bar%20.chromeclass-toolbar-additional%7B%0A%09vertical-align%3A%20top%3B%0A%09%0A%7D%0A%0A%23addon-bar%20.toolbarbutton-1%7B%0A%09vertical-align%3A%20top%3B%0A%09padding%3A%201px%20%21important%3B%0A%7D%0A%0A%23addonbar-closebutton%7B%0A%09display%3A%20none%3B%0A%7D%0A%0A%23main-window%5Bsizemode%3D%22maximized%22%5D%20%23browser-bottombox%20%23addon-bar%7B%0A%20%20margin%3A%200%20%21important%3B%0A%7D%0A%0A%23status-bar%7B%0Aheight%3A%2022px%3B%0Aborder-bottom%3A%20none%20%21important%3B%0Amin-width%3A%2018px%3B%0Avertical-align%3A%20top%3B%0Apadding-left%3A%200%3B%0Amargin%3A%200px%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Инициализация Выделить код Код:// Спрятать панель дополнений от 11.02.2014. this.onclick = function(e) { if ( e.button == 0 ) pref.value = pref.value ? false : true; }; var right = 0; // отступ справа в px var s = 'CB.hideAddonBar' cbu.isPref(s, false ); var pref = Application.prefs.get(s); function toggleButton() { document.getElementById("ctraddon_addon-bar").setAttribute('hideElements', pref.value ); var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon"); // icon.style.transform = pref.value ? "rotate(180deg)" : ""; // перевернуть иконку self.tooltipText = pref.value ? 'Показать панель дополнений' : 'Спрятать панель дополнений'; }; toggleButton(); gPrefService.addObserver( s, toggleButton, false ); addDestructor(function() { gPrefService.removeObserver( s, toggleButton, false ) }); // Стиль для панели дополнений ................................ var uri = makeURI('data:text/css,'+ encodeURIComponent('\ /* минимальный и прозрачный */\ #ctraddon_addon-bar {\ width: auto;\ position: fixed; bottom: 906px;\ padding-top: 2px !important;\ padding-left: 2px !important;\ padding-right: 0px;\ right: ' + right + 'px;\ background: rgba(120,120,250,.4) !important;\ }\ /* если открыть настройку инструментов */\ #ctraddon_addon-bar[customizing] {\ background: -moz-Dialog;\ border-radius: 7px 0 0 0;\ position: fixed;\ visibility: visible !important;\ }\ /* убираем лишние элементы, убираем кнопки при добавлении атрибута hideElements */\ #ctraddon_addon-bar dropmarker,\ #addonbar-closebutton,\ #ctraddon_addon-bar:not([customizing])[hideElements="true"] label,\ #ctraddon_addon-bar:not([customizing])[hideElements="true"] hbox,\ #ctraddon_addon-bar:not([customizing])[hideElements="true"] .statusbarpanel-iconic,\ #ctraddon_addon-bar:not([customizing])[hideElements="true"] toolbarbutton:not([id="' + _id + '"]),\ #ctraddon_addon-bar:not([customizing])[hideElements="true"] #UserScriptLoader-icon {\ display: none !important;\ }\ \ #ctraddon_addon-bar > #status-bar > .statusbar-resizerpanel {\ position: relative;\ margin-right:-4px;\ }\ ')); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); =================== Спасибо, turbot Проблема частично решена Осталась только Открыть страницу или выделенную ссылку в другом браузере |
voqabuhe > 08-06-2016 21:31:08 |
bunda1 |
bunda1 > 09-06-2016 09:17:58 |
voqabuhe пишет
Добавь в начале инициализации: Выделить код Код:// Настройка функций кликов мыши для кнопки ..... this.onclick =e=> { // действие при клике СКМ .... if ( e.button == 1 ) { // запомнить текст из буфера обмена и скопировать текст на странице var clip = gClipboard.read(); window.content.focus(); goDoCommand("cmd_copy"); gBrowser.selectedTab = gBrowser.addTab('about:config?filter=' + gClipboard.read()); clip && gClipboard.write(clip); // вернуть текст в буфер обмена } // действие при клике ПКМ .... if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); gBrowser.selectedTab = gBrowser.addTab("about:config"); } }; |
voqabuhe > 09-06-2016 16:37:17 |
bunda1 09-06-2016 16:50:29 |
rubel > 12-06-2016 06:35:50 |
В 47.0 перестала работать кнопка Переключить JavaScript( Firefox17+ ) от 13.02.2016. Поправьте, пожалуйста. |
Ultima2m > 12-06-2016 10:01:04 |
rubel пишет
У меня, видимо, аналогичная кнопка Включить/Выключить JavaScript |
Ferguss114 > 12-06-2016 11:02:12 |
Подскажите если мне надо узнать скрыт ли элемент как лучше написать Выделить код Код:getComputedStyle(element, null).display или getComputedStyle(element, null).getPropertyValue('display') И в чем принципиальная разница? |
vitalii201 > 12-06-2016 11:08:00 |
Ultima2m ПКМ на строчке кнопки скрытый текст ![]() |
oleg953 > 12-06-2016 11:18:39 |
перестала работать закрыть/перезагрузить скрытый текст Выделить код Код:/*Initialization Code*/ this.tooltipText = "Left => Перезагрузить \nMiddle => Закрыть \nRight => Меню"; this.onclick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(Components.interfaces.nsIAppStartup); appStartup.quit(appStartup.eForceQuit | appStartup.eRestart); } else if(event.button == 1 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов goQuitApplication(); } };/*Initialization Code*/ // Настройка функций кликов мыши для кнопки ................. this.onclick = function(e) { if ( e.button == 0 ) Application.restart(); // ЛКМ if ( e.button == 1 ) gShowPopup(this); // СКМ if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); goQuitApplication(); } }; this.tooltipText = "Л: Перезагрузить \nС: CB Меню \nП: Закрыть";/*Initialization Code*//*Initialization Code*/ // Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. .............. (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; addEventListener('DOMMouseScroll', function(){ searchbar.textbox.value = ''; }, false, searchbar ); })(); вылечить можно? |
Ultima2m > 12-06-2016 11:37:19 |
vitalii201 пишет
Это было бы слишком просто |
bunda1 > 12-06-2016 12:42:29 |
Ultima2m пишет
Отключи в настройках Custom buttons инициализацию кнопок + рестарт, потом ПКМ на кнопке и все дела. По идеи удаление папки custombuttons при выключенным браузере должно было помочь, такая кнопка не могла ни где прописаться |
bunda1 > 12-06-2016 13:17:45 |
rubel пишет
|
Ultima2m > 12-06-2016 13:22:50 |
Извиняюсь перед всеми, но похоже, эта кнопка все-таки вшита. У меня Cyberfox и в принципе он от ФФ не отличается. Перешел на него, когда не было ФФ х64. |
bunda1 > 12-06-2016 13:35:57 |
oleg953 пишет
Выделить код Код:// Настройка функций кликов мыши для кнопки ................. this.onclick = function(e) { if ( e.button == 0 ) { // ЛКМ var startup = Services.startup; startup.quit(startup.eForceQuit | startup.eRestart); } if ( e.button == 1 ) gShowPopup(this); // СКМ if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); goQuitApplication(); } }; this.tooltipText = "Л: Перезагрузить \nС: CB Меню \nП: Закрыть"; // Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. .............. (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; addEventListener('DOMMouseScroll', function(){ searchbar.textbox.value = ''; }, false, searchbar ); })(); |
1fesFFFF > 12-06-2016 14:00:12 |
turbot пишет
Спасибо! |
Ferguss114 > 12-06-2016 16:05:17 |
Ну а мой вопрос чуть выше как же? |
rubel > 12-06-2016 16:52:33 |
bunda1 |
oleg953 > 12-06-2016 17:15:52 |
bunda1 пишет
спасибо |
yup > 12-06-2016 18:06:04 |
Ferguss114 пишет
Зависит от цели написания. "Печальное зрелище" (как сказал бы ослик Иа), связанное именно с этим вопросом, находится здесь: http://blogs.msmvps.com/luisabreu/blog/ … -at-first/ Ferguss114 пишет
Чаще всего, разницы между "element.attribute" и "element.getValue('attribute')" нет никакой. Хотя встречаются и исключения. |
Ferguss114 > 13-06-2016 02:10:56 |
yup |
Dumby > 13-06-2016 18:53:40 |
turbot скрытый текст Правильно ли я понимаю, что при клике по #sidebar'у, вроде, не требуется исполнять дальнейшую обработку, если кликнуто ПКМ, СКМ, или ЛКМ с модификаторами? Правильно ли я понимаю, что «&& link.src» это на тот случай, Ну, и чисто для шутки, зацени вариант. Код хамский и зависимый, Выделить код Код:((browser, listener, br) => { if (browser) { addEventListener("DOMFrameContentLoaded", listener, true, browser); var getBr = () => browser.contentDocument.querySelector(listener.selector); if ((br = getBr())) br.window = {parent: listener.parent}; addDestructor(() => { if ((br = getBr())) delete br.window; }); }})(SidebarUI.browser, { selector: "browser#web-panels-browser", handleEvent(e) { if (e.target.matches(this.selector) && !("window" in e.target)) e.target.window = {parent: this.parent}; }, get parent() { delete this.parent; var parent = {}; parent.contentAreaClick = eval(`(${ contentAreaClick.toString().replace( 'linkNode.getAttribute("onclick")', "!target && this.shouldLoadInPanelBrowser(linkNode) || $&" ) })`); parent.shouldLoadInPanelBrowser = link => { // Здесь можно что-нибудь проверить Services.console.logStringMessage([ "CB" + _id.slice(20), "LINK:\t" + link, "DOC:\t" + link.ownerDocument.location ].map(item => String(item).slice(0, 200)).join("\n")); return true; } return this.parent = parent; } }); |
thrower > 13-06-2016 19:51:48 |
Dumby |
turbot > 13-06-2016 21:52:54 |
Dumby скрытый текст
Угу. Я подозревал, что с этим проблемы будут.
Что-то затупил. Было не надо. Но я там уже ужас-ужас наваял в попытке восстановить работу контекстной навигации и теперь нужно. За код спасибо.Поздно заметил. Попытаюсь потом перенести наваянное в него. Если разберусь. |
Dumby > 14-06-2016 01:13:50 |
thrower пишет
Чем, собственно, расширение не угодило скрытый текст Выделить код Код:({ id: _id + "-torrent-observer", topic: "http-on-examine-response", cd: "Content-Disposition", re: /^\s*attachment/i, find() { var en = Services.obs.enumerateObservers(this.topic); while(en.hasMoreElements()) { var obs = en.getNext().wrappedJSObject; if (obs && obs.id == this.id) return obs; } }, init() { this.wrappedJSObject = this; addDestructor(reason => { if (reason[5] != "e") return; var obs = this.find(); obs && Services.obs.removeObserver(obs, this.topic); }, this); var obs = this.find(); obs || Services.obs.addObserver(this, this.topic, false); }, observe(channel) { try { channel.QueryInterface(Ci.nsIHttpChannel); var disp = channel.getResponseHeader(this.cd); channel.loadFlags & channel.LOAD_DOCUMENT_URI && channel.contentType == "application/x-bittorrent" && this.re.test(disp) && channel.setResponseHeader(this.cd, disp.replace(this.re, "inline"), false); } catch(ex) {} } }).init(); |
thrower > 14-06-2016 16:40:28 |
Dumby // |
Dook > 14-06-2016 16:50:23 |
как можно избавиться от тормозов Source Editor? невозможно работать. |
broker > 14-06-2016 22:16:35 |
Здравствуйте. Не работает кнопка должным образом, если нажать на силку то загружается страница на которой сейчас нахожусь. Выделить код Код:// Открывать ссылки длинным кликом, от 21.01.2014. .............................................................. (function func() { const time = 500; // время удержания в мс const background = true; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout( func.timer ); setTimeout(function() { try { func.removeListener() } catch(ev) {} }, 0); var lab = XULBrowserWindow.overLink; if ( e.button == 1 || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { removeEventListener('click', c, true) }; e.button == 0 ? gBrowser.loadOneTab( lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)} ) : gBrowser.loadURI( lab, makeURI(content.location.href) ); }, time ); } else clearTimeout( func.timer ); }; ["mouseup", "mousedown", "dragstart"] .forEach(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
turbot > 15-06-2016 05:37:33 |
Dumby скрытый текст Спасибо еще раз. Переделал Sidebar Sites под предложенный тобой код. ![]() Можно еще пару тупых вопросов: Подозреваю, что все эти вопросы связаны. Чертовы строки и массивы... |
bunda1 > 15-06-2016 09:33:36 |
broker пишет
Какой у тебя браузер? |
Dumby > 15-06-2016 14:14:31 |
turbot пишет
Конечно можно, но вопросы сформулированы так, скрытый текст
Вроде не должен никто ругаться. А если кто-то ругается,
У тебя params это массив образованый из строки методом split, Остальное не понял. Но вот, вариант Выделить код Код:var menuPopup = appendChild("menupopup", self, {context: ""}); var menugroup = appendChild("menugroup", menuPopup, { orient: "vertical", oncommand: "openPage(event.target);", oncontextmenu: "removePage(event.target);" }); var sep = "\n\n", items = self.Help.split(sep); items.forEach((item, index) => { var [title, url, icon] = item.split("\n"); appendChild("menuitem", menugroup, { tooltiptext: url, class: "menuitem-iconic", label: title || "Untitled", image: icon || "chrome://mozapps/skin/places/defaultFavicon.png" }).index = index; }); menugroup.openPage = ({index}) => openWebPanel(...items[index].split("\n")); menugroup.removePage = ({index}) => items.splice(index, 1) && installButton(items.join(sep)); function installButton(help) { var link = custombuttons.makeButtonLink("edit", _id); var param = custombuttons.cbService.getButtonParameters(link); param = param.wrappedJSObject || param; param.help = help; custombuttons.cbService.installButton(param); } function appendChild(type, parent, attrs) { var node = parent.appendChild(document.createElement(type)); for(var name in attrs) node.setAttribute(name, attrs[name]); return node; } // и так далее ... |
broker > 15-06-2016 14:53:28 |
bunda1 пишет
[firefox]48:( на 45 все хорошо. |
turbot > 15-06-2016 23:52:51 |
Dumby И за код тоже. Попробую присобачить. |
bunda1 > 16-06-2016 19:34:19 |
broker пишет
Я сейчас проверил код на Firefox 48 и у меня всё работает. Код никак не может загружать текущую страницу при нажатии на ссылку. Похоже у тебя установлено какое то расширение которое меняет сплывающую подсказку которая появляется при наведении курсора на ссылку: |
broker > 16-06-2016 23:06:22 |
bunda1 |
gyra > 17-06-2016 09:56:18 |
bunda1 |
turbot > 17-06-2016 10:35:15 |
gyra скрытый текст Выделить код Код:// Функции автоматически копирует выделенный текст на странице, если это разрешено в 'about:config' ................................ ({ PREF_ROOT: "Autocopy", PREF_BLINK: "Autocopy.selectingTextBlink", get blinkMenuitem() { delete this.blinkMenuitem; return this.blinkMenuitem = menuPopup.querySelector('[onclick*="' + this.PREF_BLINK + '"]'); }, init: function() { gPrefService.addObserver(this.PREF_ROOT, this, false); addDestructor(() => gPrefService.removeObserver(this.PREF_ROOT, this)); if (!gPrefService.getBoolPref(this.PREF_ROOT)) return; this.blink = gPrefService.getBoolPref(this.PREF_BLINK); this.setAutocopy(true); }, observe: function(subj, topic, data) { if (data == this.PREF_ROOT) this.setAutocopy(gPrefService.getBoolPref(data)); else if (data == this.PREF_BLINK) setTimeout(() => this.blinkMenuitem.setAttribute("checked", this.blink = gPrefService.getBoolPref(data)) , 100); }, setAutocopy: function(set) { var method = set ? addEventListener : removeEventListener; for(var type of ["mousedown", "mouseup"]) method(type, this, false, gBrowser); }, handleEvent: function(e) { if (e.button || e.target instanceof Ci.nsIDOMNSEditableElement) return; var win = e.target.ownerDocument.defaultView; if (win.top != content) return; var sel = win.getSelection().toString(); if (e.type == "mousedown") {this.sel = sel; return;} if (!sel || sel == this.sel) return; goDoCommand("cmd_copy"); if (!this.blink) return; gBrowser.selectedBrowser.blur(); setTimeout(() => gBrowser.selectedBrowser.focus(), 300); } }).init(); Код Dumby из того поста. |
gyra > 17-06-2016 11:13:13 |
turbot |
Dumby > 17-06-2016 12:33:11 |
citehala пишет
У меня это сработало скрытый текст Выделить код Код:// See https://gist.github.com/Noitidart/0de3be2442a0295eb386 // vk codes: https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx // Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up] var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]]; // Ctrl+Q [Ctrl-Down, Q-Down, Q-Up, Ctrl-Up] //var data = [[0x11, false], [0x51, false], [0x51, true], [0x11, true]]; var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {}); var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [ {wVk: ctypes.unsigned_short}, {wScan: ctypes.unsigned_short}, {dwFlags: ctypes.unsigned_long}, {time: ctypes.unsigned_long}, {dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long}, {padding0: ctypes.uint8_t.array(8)} ]); var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]); var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)())) )); var user32 = ctypes.open("user32"); try { var SendInput = user32.declare("SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int); SendInput(pInputs.length, pInputs, INPUT.size); } finally { user32.close(); } |
KOT040188 > 17-06-2016 20:58:07 |
На последней лисе перестал работать этот код: Выделить код Код:// закладка в последнюю папку (({panel}, prefName) => { cbu.isPref(prefName, PlacesUtils.unfiledBookmarksFolderId); addDestructor(reason => reason == "delete" && Services.prefs.clearUserPref(prefName)); var popupshownFolderId = Services.prefs.getIntPref(prefName); var handler = e => { if (e.target != panel) return; var id = PlacesUtils.bookmarks.getFolderIdForItem(StarUI._itemId); if (e.type == "popupshown") { popupshownFolderId = id; return; } if (StarUI._actionOnHide || popupshownFolderId == id) return; Services.prefs.setIntPref(prefName, id); } for(var type of ["popupshown", "popuphiding"]) addEventListener(type, handler, false, panel); var src = BookmarkingUI.onCommand.toString(); var res = src.replace("e(isBookmarked", `$&, isBookmarked || Services.prefs.getIntPref("${prefName}")`); var func = eval(`(${res})`).bind(BookmarkingUI); addEventListener("command", e => { e.stopPropagation(); func(e); }, true, document.getElementById("bookmarks-menu-button")); })(StarUI, "CB.lastEditBookmarkPanelFolderId"); Как исправить? |
Dumby > 18-06-2016 00:48:54 |
KOT040188 скрытый текст Выделить код Код:(({panel}, prefName, btn) => { var showEditUIIfNotBookmarked = true; if (!btn) return; cbu.isPref(prefName, PlacesUtils.unfiledBookmarksFolderId); addDestructor(reason => reason == "delete" && Services.prefs.clearUserPref(prefName)); var popupshownFolderId = Services.prefs.getIntPref(prefName); var handler = e => { if (e.target != panel) return; var id = PlacesUtils.bookmarks.getFolderIdForItem(StarUI._itemId); if (e.type == "popupshown") { popupshownFolderId = id; return; } if (StarUI._actionOnHide || popupshownFolderId == id) return; Services.prefs.setIntPref(prefName, id); } for(var type of ["popupshown", "popuphiding"]) addEventListener(type, handler, false, panel); var src = BookmarkingUI.onCommand.toString(); var res = src.replace("true", `${showEditUIIfNotBookmarked || "isBookmarked"}, isBookmarked || Services.prefs.getIntPref("${prefName}")`); if (!showEditUIIfNotBookmarked) res = res.replace( 'widget.node.removeAttribute("closemenu")', 'isBookmarked ? $& : widget.node.setAttribute("closemenu", "none")' ); var func = eval(`(${res})`).bind(BookmarkingUI); addEventListener("command", e => e.stopPropagation() || func(e), true, btn); })(StarUI, "CB.lastEditBookmarkPanelFolderId", document.getElementById("bookmarks-menu-button")); |
dimoniam > 18-06-2016 13:46:39 |
Здравствуйте ! Не работает кнопка Переключить язык интерфейса( Firefox ) (Отредактировано bunda1 (24-10-2013 18:52:48)) Как ни странно, и эта не работает : Сохранить ярлык страницы на ...( Firefox24+ ) от 09.06.2016 p.s. Проверил на Firefox 28.0 + 0.0.5.8.1-signed.1-let-fixed = не работает. |
KOT040188 > 18-06-2016 16:29:43 |
Dumby Выделить код Код:// Открывать библиотеку во вкладке и последнюю активную папку библиотеки, от 08.08.2014. ................................ --------------------------------------------------------------------------- */ (function () { var historyFolderNum = 1; // папка истории которую откроет код var sortHistoryFolder = true; // сортировать папку истории которую откроет код var command; const pn = "CB.lastUsedLibraryFolder"; const library = "chrome://browser/content/places/places.xul"; // Перехватывать открытие библиотеки и открывать её в вкладке рядом с текущей .... function libraryInTab(e) { command = e.target.getAttribute("oncommand"); if ( !/showPlacesOrganizer|DownloadsUI|DownloadsPanel/.test( command ) ) return; if ( /UnfiledBookmarks/.test( command ) && e.type == 'click' ) return; e.stopPropagation(); // закрыть все вкладки библиотеки кроме первой .... var libTab = null; Array.slice( gBrowser.tabs ).forEach(function(tab) { if ( tab.linkedBrowser.currentURI.spec !== library ) return; !libTab ? libTab = tab : gBrowser.removeTab( tab ); }); // переместить или открыть библиотеку рядом с текущей вкладкой .... var selTab = gBrowser.selectedTab; if ( libTab !== selTab ) { if ( libTab && gBrowser.visibleTabs.indexOf( libTab ) == -1 ) TabView.moveTabTo( libTab, TabView._window.GroupItems._activeGroupItem.id ); libTab = libTab || gBrowser.addTab( library ); var pos = selTab._tPos + ( libTab._tPos > selTab._tPos ); gBrowser.moveTabTo( libTab, pos ); gBrowser.selectedTab = libTab; // если уже открытая библиотека была перемещена if ( !libTab.hasAttribute('busy') ) openLastUsedFolder(); } else openLastUsedFolder(); // если библиотека уже в текущей вкладке }; addEventListener("command", libraryInTab, true, window ); addEventListener("click", libraryInTab, true, document.getElementById('appmenuSecondaryPane') ); // Открывать и запоминать последнюю активную папку если библиотека открыта как вкладка .... function openLastUsedFolder( e ) { var win = e ? e.target.defaultView : content.document.defaultView; if ( win.location != library ) return; // получить нужную папку try { var value = cbu.getPrefs( pn ) } catch(e) { value = '' }; if ( /DownloadsUI|DownloadsPanel/.test( command ) ) value = 'place:transition=7&sort=4'; if ( /UnfiledBookmarks/.test( command ) ) value = 'place:folder=UNFILED_BOOKMARKS&excludeItems=1&expandQueries=0'; // закрыть меню большой кнопки и кнопки загрузок setTimeout(function() { try { document.getElementById("appmenu-popup").hidePopup(); document.getElementById("downloadsPanel").hidePopup(); } catch(e) {} }, 10 ); // открыть нужную папку используя рекурсию (function f() { if ( win.location != library ) return; try { if ( /'History'/.test( command ) ) { var doc = win.document; var view = doc.getElementById('placesList').view; if ( view ) view.selection.select( historyFolderNum ); // открыть указанную папку // сортировать папку истории по адресу if ( sortHistoryFolder && view ) { doc.getElementById('viewMenu').open = true; doc.getElementById('viewSort').open = true; doc.getElementById('viewMenu').open = false; doc.getElementById('menucol_placesContentUrl').doCommand(); } } else { win.PlacesOrganizer.location = value; win.PlacesOrganizer._places.focus(); } } catch(e) { setTimeout(function() f(), 0) }; })(); // запоминать последнюю папку при закрытии библиотеки if ( e == undefined ) return; win.addEventListener("unload", function f(e) { win.removeEventListener( e.type, f); var loc = win.PlacesOrganizer.location; /place:folder|place:sort/.test( loc ) && cbu.setPrefs( pn, loc ); }); }; addEventListener("DOMContentLoaded", openLastUsedFolder, false, gBrowser ); })(); |
tom911 > 19-06-2016 13:42:28 |
Перестала работать кнопка Перезапуск браузера из контекстного меню скрытый текст // Добавить свои пункты в контекстное меню, от 09.02.2016. ............... (contextMenu=> { var menuItem1 = contextMenu.insertBefore(document.createElement("menuitem"), contextMenu.children[2]); addDestructor(()=> menuItem1.remove() ); menuItem1.setAttribute("label", "Открыть about:config"); menuItem1.setAttribute("oncommand", "gBrowser.selectedTab = gBrowser.addTab('about:config')"); var menuItem2 = contextMenu.insertBefore(document.createElement("menuitem"), contextMenu.children[2]); addDestructor(()=> menuItem2.remove() ); menuItem2.setAttribute("label", "Перезапуск"); menuItem2.setAttribute("oncommand", "Application.restart()"); } )(document.getElementById("contentAreaContextMenu")); Поправьте кто умеет это ![]() |
turbot > 19-06-2016 14:12:45 |
tom911 Вместо Application.restart() |
tom911 > 19-06-2016 15:52:27 |
turbot пишет
Спасибо, работает |
bunda1 > 20-06-2016 11:16:45 |
dimoniam пишет
20-06-2016 11:27:14 dimoniam пишет
|
bunda1 > 20-06-2016 20:35:04 |
KOT040188 пишет
|
bunda1 > 20-06-2016 22:03:02 |
broker пишет
Пробовал по разному но проблему которой ты пишешь я не могу повторить. Может так попробуй: Выделить код Код:// Открывать ссылки длинным кликом, от 20.06.2016. .................... (function func() { var time = 500; // время удержания в мс var background = true; // открывать в фоновой вкладке var nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout(func.timer); setTimeout(()=> { try { func.removeListener() } catch(e) {} }, 0); var lab = XULBrowserWindow.overLink; if ( e.button || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(()=> { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener =()=> { removeEventListener('click', c, true) }; gBrowser.loadOneTab(lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)}); }, time); } else clearTimeout(func.timer); }; ["mouseup", "mousedown", "dragstart"] .forEach(type=> { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
selevo > 21-06-2016 11:52:20 |
у меня кнопка пропала вообще пункта нет добавить кнопку |
bunda1 > 21-06-2016 12:52:46 |
selevo пишет
А ты установи последнюю версию Сustom Buttons. |
selevo > 21-06-2016 13:46:00 |
это второе что я сделал скрытый текст код по двойному клику ссылку на картинку копировал в буфер Выделить код Код:addEventListener('dblclick', (e)=> { var img = e.originalTarget.tagName.toLowerCase() == "img"; var win = e.originalTarget.ownerDocument.defaultView; if (img && e.button == 2 && win.top == content) { e.preventDefault(); e.stopPropagation(); document.getElementById("contentAreaContextMenu").hidePopup(); var imgLink = e.originalTarget.src; if (imgLink && e.originalTarget.parentNode.tagName.toLowerCase() == "a" && e.originalTarget.parentNode.href.match(/\.(jpg|jpeg|png|gif|apng|webp)$/)) { imgLink = e.originalTarget.parentNode.href; } gClipboard.write(imgLink); custombuttons.alertSlide('Ссылка на изображение скопирована', imgLink); } }, false, gBrowser); а встроеный блокнот жаваскрипт пишет ошибку |
selevo > 21-06-2016 14:33:17 |
не туда смотрел |
turbot > 21-06-2016 15:32:53 |
selevo |
selevo > 21-06-2016 16:41:48 |
не знаю что делал но сейчас всё работает нормально |
becool > 23-06-2016 17:44:50 |
Dumby, приветствую! На версии 47.0 (возможно даже на более ранних версиях, заметил только сейчас) перестал работать поиск на сайте: |
firefan > 24-06-2016 05:14:37 |
Здравствуйте. Помогите пожалуйста создать кнопку, которая открывала бы окно просмотра сертификата безопасности текущей страницы. Также подскажите пожалуйста, можно ли отключать отдельные кнопки не из меню Custom Buttons, а из safe mode или редактированием файлов в профиле? К примеру, на случай, если в Initialization оказался код, препятствующий загрузке браузера. (Прошу прощения за двойной постинг; судя по отсутствию ответов в моей теме, вопросы следует задавать сюда). |
bunda1 > 24-06-2016 11:51:15 |
firefan пишет
Папка профиля - текстовой файл prefs.js - user_pref("extensions.custombuttons.mode", 66); - 66 на 98, тогда при запуске браузера кнопки не будут инициализированы. 24-06-2016 11:52:57 |
firefan > 24-06-2016 13:04:30 |
bunda1 пишет
Супер. Благодарю. Что касается сертификата, вот исходный код кнопки "View Certificate" из pageInfo.xul: Выделить код Код:<!-- Cert button --> <hbox id="security-view-cert-box" pack="end"> <button id="security-view-cert" label="&securityView.certView;" accesskey="&securityView.accesskey;" oncommand="security.viewCert();"/> </hbox> Интересно, можно ли преобразовать это в код для Custom Buttons. |
becool > 24-06-2016 19:00:20 |
bunda1, перестало работать (( |
turbot > 24-06-2016 19:25:21 |
becool |
becool > 25-06-2016 16:43:10 |
turbot, и тот вариант не робит... (( |
turbot > 25-06-2016 17:29:42 |
becool 25-06-2016 17:32:36 |
becool > 26-06-2016 09:45:44 |
turbot пишет
Точно, причина была в другом... Перестал работать код для отжатия кнопки: Эта проблема тоже актуальна: |
bunda1 > 26-06-2016 11:05:49 |
becool пишет
|
turbot > 26-06-2016 11:52:39 |
becool пишет
скрытый текст Выделить код Код:Services.search.init(() => { var data = { "Google SiteSearch": { url: "https://encrypted.google.com/search?hl=ru&q={searchTerms}&ie=utf-8&oe=utf-8", description: "Поиск по сайту в Google", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABLklEQVQ4jZ3Tv6uCUBQHcP+9+psuejEXCaTZQBzMTXAxEQI3QdJBFAchKJKCTFrSRfD7pnd58QTN4Qzn3ns+nPuL43l+QSm9UUrxZdx4nl9wM4sZwg1NiKII13XheR7O5zP6vkcYhjAM49/aQSAIAniex7Dr9Yosywa7GATatoVlWSy3bRtd100HmqZBFEUs13Udj8djOuA4Drquw263gyzLOB6P2G630wFKKVRVxX6/B4CP7UwGKKVYrVZo2xaXywXr9Xo6YJomuwnf9/F+v/F8PqEoyjhwOBxwOp0gSRIbUxQFVVUhjuNxoK5r9gb+huu6SJJkHMjzHFVVYbPZfJxFURTQNG0ckGUZQRDg9XqhLEukaYo4jgeLf4HZn0kQhDtHCFkKgnCfAZSEkOUP0IqsHeSvVqEAAAAASUVORK5CYII=" }, "DuckDuckGo SiteSearch": { url: "https://duckduckgo.com/?kp=-1&kak=-1&kad=ru_RU&kae=d&kn=1&kf=fw&k1=-1&kd=-1&q={searchTerms}", description: "Поиск по сайту в DuckDuckGo", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdElEQVQ4jX2TX0tqWxTF/Rjns/Qa+AVEqNberbXXzr3UsqCgl0KNCIVIQ+jPiw+ShYSfQNlQFIKVFZ2nHo6PBUEQSdgf7Hcezm1z8x7ugPk0xxhzLtaYodAQkslk2BhT9TyPrzLGEI/Hq6lUKjzM/wZjTC+RSHBycsJgMODfODs7I5VKEY/He38Ve55HqVQC4OHhgcPDQxzHQUpJLpfj+voagK2tLYwxDIt7e3t7vL+/s7+/z9PTUzC5UCiglEJrzcHBAQDVahXP83pfa4/Ozs4CsLGxQSwWYxh3d3e4rovrumxvbwMwNzeHMWY0pLX+2el0aLfbSClpNps0Gg1ubm74+Pjg9fUV3/dpNpu4rovjOJyfn3N5eYnW+mdIaw1ANptFSonv+9zf3xMOh/F9HwClFI1GA6UUSilWVlYA0FoTchwnICml8H2fwWDA0dFR8ITHx0dqtRqFQoHd3V0WFxcDTUgpBcDU1BRSStbW1gLh8/Mzm5ub5PN5crkc6XSaWCzGl+abQTabZXJyMmgCfH5+UiwWWV1dZXl5mXw+TyaTIZPJACClJCSlrHY6HVqtFpZlMT4+zsvLS2BSr9cxxrC0tMT8/DxSSlqtFhcXF9i2XQ1prcPJZBKA9fV1xsbGuLq6Cgxub2+xbZtIJIKUkmKxCMD09DRa6z/RtizrV6VSod/vUyqVqNVqlMtlZmZmWFhYIJFIMDIyQrlc5u3tjUqlgmVZv76lUQjR+4pyt9vl+PiYSCRCOp2mXq8HX7qzs4MQ4u/3IIToSik5PT39Txrb7TZaa2zb7v7vRUaj0R8TExM1IURfCME/1RdC1KLR6I9h/m/LgGKpds8y0AAAAABJRU5ErkJggg==" } }; var pn = "CB.searchEngineIndexes", sep = "\u00A0"; custombuttons.isPref(pn, ""); var old = custombuttons.getPrefs(pn).split(sep); var ss = Services.search, names = []; function eng(name) ss.getEngineByName(name); for(var name of old) { if (name in data) continue; var engine = eng(name); engine && ss.removeEngine(engine); } for(var name in data) { var {url, description, icon} = data[name]; var engine = eng(name), was = true; if (!engine) { was = false; ss.addEngineWithDetails(name, icon, null, description, "GET", url); engine = eng(name); } if (!engine) continue; else engine = engine.wrappedJSObject; if (was) { engine._urls = []; engine._initFromMetadata(name, icon, null, description, "GET", url, null); } engine._queryCharset = "utf-8"; engine._urls[0].getSubmission = function(terms) { var {host, protocol} = content.location, suffix = ""; if (protocol.startsWith("http") && host) suffix += "+site:" + host; var url = this.template.replace("{searchTerms}", terms + suffix); return { uri: makeURI(url), postData: null }; } names.push(name); } custombuttons.setPrefs(pn, names.join(sep)); }); |
becool > 26-06-2016 12:23:40 |
bunda1, turbot, большое спасибо, теперь работает! |
oleg.sgh > 27-06-2016 07:59:31 |
Перестала работать кнопка Открыть видео в PotPlayerMini...как и одноименное дополнение...как и вообще открытие ссылок плеером. |
Coroner > 27-06-2016 10:57:28 |
oleg.sgh, ага, не работает. Плеер открывает и тот даже с ютюбом коннектится, судя по реакции Firewall. Но не кажет и в плейлист не заносит. |
zhulcov > 27-06-2016 11:54:02 |
Coroner У меня Firefox 47 (x32). Прочитав Ваш пост метнулся на ютуб, открыл первое попавшееся видео через PotPlayer (x32) этой кнопкой. Все ровно. И да, Windows 10 (x64) |
Coroner > 27-06-2016 12:10:41 |
zhulcov |
oleg.sgh > 27-06-2016 12:25:01 |
zhulcov |
zhulcov > 27-06-2016 12:29:26 |
Coroner Если Вы про ютуб, то любая ссылка какая под руки попадется. Но вот после этого я пробежался по киношным сайтам, и таки да там пичалька. При открытии кнопкой пишет перезагруз сервера. Я провел эксперимент: начал скачивать фильм через IDM, а потом скопировав из него ссылку и вставив ее в Pot она чудненько заработала. Так, что всетаки с кнопкой что-то не то, не правильно определяет ссылки. Пришел к выводу, что кнопка корректно считывает ссылки только видео HTML5. |
Coroner > 27-06-2016 12:47:00 |
zhulcov пишет
oleg.sgh пишет
И сама она их, видимо, определить не может ? Я имею в виду простыми способами, без дополнительных инструментов. |
zhulcov > 27-06-2016 12:57:37 |
Coroner Аналогично, пользуюсь редко. Но иногда очень спасает. Остается надеется на bunda1, что у него получится исправить. |
oleg.sgh > 27-06-2016 12:57:56 |
Coroner скрытый текст ![]() Но это не совсем удобно против кнопки. |
Coroner > 27-06-2016 13:34:03 |
zhulcov пишет
Как бы там совсем сложно не оказалось. Не представляю как можно определить HTML5 оно или нет. Но возможно всё проще чем кажется ? oleg.sgh пишет
Да, я тоже так пробовал. Вот почему и думаю что не всё так просто : ссылки-то на вид одинаковые, структурой вроде как не отличаются. |
oleg.sgh > 27-06-2016 13:43:00 |
Coroner ![]()
|
Coroner > 27-06-2016 14:44:52 |
|
ifln > 27-06-2016 18:17:44 |
oleg.sgh |
Coroner > 27-06-2016 20:19:16 |
oleg.sgh, само починилось что-ли ? Теперь внезапно всё открывается. Во всяком случае неоткрывающиеся не попадаются. |
oleg.sgh > 27-06-2016 20:23:33 |
Coroner |
Coroner > 27-06-2016 20:59:02 |
oleg.sgh, да, от России не открываются, зато бугагашечки - пожалуйста. Уж не в копирастии ли дело ? |
oleg.sgh > 27-06-2016 21:13:00 |
Coroner |
bunda1 > 27-06-2016 21:31:19 |
Coroner пишет
У меня из Латвии тоже не открывается, причём разными плеерами. Попробовал MPC-BE.1.4.6.1590 и вот он открывает то что остальные не открывают. Похоже youtube что то изменил у себя и не все разработчики плееров это заметили и соответственно обновили свои плеера. |
ifln > 27-06-2016 21:35:44 |
Coroner |
Coroner > 27-06-2016 21:41:10 |
oleg.sgh, bunda1, ifln спасибо. Хорошо что не в кнопке дело. Переедем пока на MPC-BE, благо код в кнопке поменять нетрудно. |
bunda1 > 27-06-2016 21:45:10 |
Coroner пишет
А какие параметры можно использовать при передачи ссылки в MPC-BE? |
Northtech > 27-06-2016 21:53:27 |
bunda1, |
ifln > 27-06-2016 22:08:24 |
bunda1 пишет
ПКМ > HELP > Command Line Switches |
Coroner > 27-06-2016 22:13:48 |
bunda1 Я пока не нашёл параметры для MPC-BE. Если предположить что они такие же как и command line switches for MPC-HC, то получается что параметр /add остаётся, он для MPC-HC ту-же функцию выполняет. Я возможно бы добавил /nofocus для открытия в фоне, иногда стартует долго, может быть так удобнее будет, и ещё опционально /play и /close для закрытия после воспроизведения. Но не знаю удобно-ли будет комбинировать нажатия с Shift или Ctrl. |
bunda1 > 27-06-2016 22:21:41 |
Спасибо, я нашёл параметры для передачи в MPC-BE: ![]() 27-06-2016 22:39:35 Northtech пишет
|
Northtech > 28-06-2016 13:36:01 |
bunda1 |
Dumby > 29-06-2016 14:23:29 |
KOT040188 пишет
скрытый текст Выделить код Код:(func => { var pos = .5; var scroll = tree => { // code from AI inspect() var tbo = tree.treeBoxObject; var cur = tbo.view.selection.currentIndex; var first = tbo.getFirstVisibleRow(); var visibleRows = tbo.height/tbo.rowHeight; var newFirst = cur - pos*visibleRows + 1; tbo.scrollByLines(Math.round(newFirst - first)); } gEditItemOverlay.toggleFolderTreeVisibility = eval(`(${ func.toString().replace("this._folderTree.focus();", "$& scroll(this._folderTree);") })`); addDestructor(() => gEditItemOverlay.toggleFolderTreeVisibility = func); })(gEditItemOverlay.toggleFolderTreeVisibility); Выделить код Код:(obs => { Services.prefs.addObserver(obs.pref, obs, false); addDestructor(() => obs.observe(Services.prefs.removeObserver(obs.pref, obs))); obs.observe(null, "", obs.pref); })({ msgName: "Findbar:Keypress", pref: "accessibility.typeaheadfind", observe(subject, topic, data) { if (data && data != this.pref) return; data && Services.prefs.getBoolPref(this.pref) ? messageManager.addMessageListener(this.msgName, this) : messageManager.removeMessageListener(this.msgName, this); }, receiveMessage(msg) { var {charCode, key} = msg.data.fakeEvent; if (!charCode || " /'".includes(key)) return true; gFindBar.onFindCommand().then(() => { gFindBar._findField.value = key; gFindBar._findField.selectionStart = 1; }, null); } }); bunda1 пишет
А у тебя так открывается окно просмотра сертификата текущей страницы? скрытый текст Выделить код Код:var {securityUI} = gBrowser; if (securityUI) { var {SSLStatus} = securityUI.QueryInterface(Ci.nsISSLStatusProvider); SSLStatus && SSLStatus.serverCert && Cc["@mozilla.org/nsCertificateDialogs;1"] .getService(Ci.nsICertificateDialogs).viewCert(window, SSLStatus.serverCert); } |
bunda1 > 29-06-2016 17:51:56 |
Dumby пишет
Открывается только на нашем форуме, на других сайтах ничего не открывается. |
Dumby > 29-06-2016 19:39:10 |
bunda1 пишет
Спасибо. У меня на FF45 открывается и на других |
bunda1 > 29-06-2016 21:43:23 |
Dumby пишет
На FF48: 29-06-2016 21:45:46 И у меня на FF48 открывается. |
Dumby > 29-06-2016 23:10:37 |
bunda1 пишет
Эээ, так это же не httpS ссылки |
bunda1 > 29-06-2016 23:19:42 |
Dumby пишет
Не httpS |
Dumby > 29-06-2016 23:39:42 |
bunda1 пишет
Вот и хорошо. Не до́лжно, значит и не должно́. |
Dobrov > 30-06-2016 10:34:27 |
bunda1 ваш код Двойным правым кликом мыши сохранить изображение без запроса в указанную папку |
thrower > 30-06-2016 19:42:08 |
bunda1 |
bunda1 > 30-06-2016 22:15:16 |
Dobrov пишет
Выделить код Код:// Двойным средным кликом мыши сохранить изображение в указанную папку без запроса, от 30.06.2016. ................ addEventListener("click", (e, targ = e.target)=> { if ( e.button !== 1 || targ.localName !== 'img' ) return; e.preventDefault(); e.stopPropagation(); var path = 'C:\\qwerty'; if ( self.flag ) { var run = cbu.getPrefs("browser.download.folderList"); var use = cbu.getPrefs("browser.download.useDownloadDir"); try { var dir = Services.prefs.getComplexValue("browser.download.dir", Ci.nsISupportsString).data } catch(e) { var dir = Services.downloads.defaultDownloadsDirectory.path }; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path)); var imgLink = e.originalTarget.src; saveImageURL(imgLink, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir)); } self.flag = true; setTimeout(()=> self.flag = false, 600); }, false, gBrowser); 30-06-2016 22:17:48 Dobrov пишет
Странно, но у меня там всё сохраняется. Может укажи какое то конкретное изображение которое не сохраняется. 30-06-2016 22:18:29 thrower пишет
Завтра или после завтра исправлю. |
Dobrov > 01-07-2016 02:53:59 |
bunda1 пишет
Спасибо за код на middle-click! |
turbot > 01-07-2016 08:55:00 |
Dumby пишет
А можно сделать, чтоб код пытался получить сертификат для текущего сайта? Как это в mozilla:exceptiondialog происходит? А то он не работает на about:certerror, когда чаще всего и нужно глянуть. 01-07-2016 08:56:25 |
thrower > 01-07-2016 21:30:45 |
turbot |
Dumby > 01-07-2016 21:41:45 |
turbot пишет
Вот и посмотри как это происходит. |
turbot > 01-07-2016 22:41:11 |
Dumby |
bunda1 > 02-07-2016 00:15:38 |
thrower пишет
Выделить код Код: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%3E%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20++%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD+//4B////APX69AV9vWaPVJsR9GabDPiQrDGn6OzRG////wD+/v0B////AP///gL///0B////AP///wD///8A////AP3+/gP///8ActGnhRyqVP83q0r8PqMu/kqZDf9yoh7Wu8t8YNjan07m4bM9+ffqCf///wD///4B////AP///wD8/v8C//7/AOL5/A4d1NrUFc/G/yHEov0qt3b/NKtM/UGeHv9WlAD/eJcB/peZAP+nphzH5+bAIP///wD+/v8A/fz/A/3+/wH///8A5/b+CyG8/c4Jz/z/ENfm/RrLuf8nu4b/M61S/UGgJvtbnBH8fqAQ/IKXAP+lrjax/v76AP7+/gH///8A7fD9CNni/Bb///8Ac7/4dQCn9/8P1f38ENbh/xzIsf8ouoD/NKtL/0GeHf9enA79dJ0M/4yiGOrx8d0c/f3/AJaT7105O+TOHTjn5GuP8n7u9v4AOK/3ugW/+/8N2vX9FdDN/yDDoP8rtXD/N6c//kqdGPpcnBD/dqIZ3/L05BCVht5rLhXE/zMj0f0nKuL/EkHp7+Dm/Bq64/wyBKz4/w/W/fwP1+X/Gsq4/ya+kPwwsWH+M58o/jSSAP+exXNr////AFkwrepXMrT8SjPG9icg2v8xRunM8fX+BfL5/gcdpPbOBMH8/w/b9vwX0dH+FcKk/yS3evFZum2rpdOaUPj79gD///8BZy6R8lsqn/8/Hbb/NSfS6MPE+DDj7PwI8vP9ALHe/DQXs/nWAs/9/wDV5v9C1Mmwye/jI////wD///8B////AP7+/gG/oclQgVSpuIhuy4/OyfIheHbpgx815+4vZ+7C2uf8Fuz5/we+8P83y/f8Jvb9/QL///8A8vv4CZPUpGO837Y5////AP///wD6+f0D////AIVy1IsgEsz/Lini+Qow5/+Gq/Vq////AM/t/Ruo6/4+6/z9C////wB817lzE6dQ/zGeJfOs05lI/Pv9Bf///wDXy+knTCOu7UYvxf89KtH4Fhrh/4yb9GTB3/sjCJH07QC9+v854Pio9///AFHOsrMktnX/NKtO/0KoPsz9/P0D////AMey2ElWJaL/UzG4+k0vv/4sGs/5vLn1Mkl68aoLcvD/G6j4+QDH+v+29f8xY9zUkA/Eo/8swpH3JL6M/P38/gL///8A08DcNF8kkPlgNar9Sh2m/3texp/i4PsPKTDk7hxP7P8eefD7Apb1/47Z/E2x8vw2AMrv/wXN5/8O0Ova////AP///wH8+/wAoHe0iWkukfN+U66v8+31C9PL7iA3H8n6KSzi/yNF6/sMVe3/rc35PP///wB/zv1qM7L7u53e/j7///8A////AP///wD7+fsB6NzqD/n2+gT///8A7uf0EV80rONFKcD/LCTU/zxC47/u8P4D////Af7+/gH//f4A///+AP///wD///8A//7/AP79/gL///8A/v7/Av38/gT///8AsZHEZmAplv5gOrPQzMbwKf///wD9/f4C/f//A/7//wL9/v8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20autoHighlight%28%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20toggleHighlightValue%28%27add%27%29%3B%0A%20%20%20%20%20%0A%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20toggleHighlightValue%28%27clear%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20..........%0Avar%20s%20%3D%20%22CB.autoHighlight%22%3B%0Avar%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20array%20%3D%20getArray%28%29.map%28str%3D%3E%20%7B%20return%20str.slice%280%2C50%29%20+%20%28str.length%20%3E%2050%20%3F%20%22...%22%20%3A%20%22%22%29%20%7D%29%3B%0A%20%20%20this.tooltipText%20%3D%20%22%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20++%20%5Cn%u041B%3A%20B%u043A%u043B%u044E%u0447%u0438%u0442%u044C/%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%5Cn%u0421%3A%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%5Cn%5Cn%u0422%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%20%5Cn%22%20+%20getArray%28%29.join%28%22%5Cn%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20..........%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAD///8A/v7+AP39/QH9/f0B/f39Af39/QH///8AmJiYKQAAALEDAwPqAAAA1gAAAGm7u7sA////Afv7+wD///8A////AP39/QH9/f0D////AP///wD7+/sB////AKKiogoAAADJAAAA/wAAAP0BAQH+AAAA/wsLC3HDw8MA////Bfb29gP+/v4A////Aefn5wDT09MJ1tbWCdTU1AT///8AXFxcSwAAAPsEBAT/AAAA/gAAAPwFBQX/AAAA63Nzczvu7u4A/Pz8Avz8/AHr6+sJMjIyZgAAAL8CAgLCAAAApsbGxhhoaGhLAAAA/gUFBf8AAAD+AAAA/wAAAP0DAwP/AAAA6hMTE5eHh4cr3d3dACsrK4gAAAD/AwMD/gMDA/wAAAD/Hh4emy0tLQwAAADwAQEB/wAAAP4AAAD/AAAA/wAAAP8BAQH9AwMD/wAAAOcrKys5AwMD7gYGBv4AAAD7BAQE/QAAAP9KSkp5////ABUVFcIAAAD/AQEB/QAAAP8AAAD/AAAA/wAAAP4BAQH6BwcH/wICAr8BAQGfAAAA/wEBAf8AAADrBQUFeMbGxgX///8AGhoawQAAAP8BAQH+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9BgYG66+vrwc1NTVCDw8PPgAAADUREREt0tLSF+7u7gAdHR27AAAA/wICAvsBAQH9AQEB/QEBAf0BAQH8AQEB+wICAv8BAQHC////AsHBwQAICAhzAAAA6AQEBP8AAADqWlpaL25ubj8AAAD4AgIC/wAAAP4AAAD/AAAA/wAAAP4CAgL/AAAA3VtbWznHx8cABgYGbwAAAP8BAQH+AAAA+AUFBf8AAAB18PDwAIyMjDwYGBiuGRkZwxgYGJQTExNzFhYWdQUFBWRgYGAb////ALS0tBwAAADXBQUF/wAAAPgFBQX/AAAA90tLSzunp6cApqamDaurqwP///8A////AP///wD///8A////AP///wD7+/sBtLS0LQAAAOwLCwv/CQkJ+wAAAP88PDyLkJCQDAICAqYAAADdAAAAkJCQkAP///8AW1tbLUlJSXFnZ2cR////AP7+/gHNzc0HDAwMpAAAAP8AAADuJycneRMTEw8PDw/AAQEB/wsLC/8AAAD6cnJyPHR0dB4AAADiAAAA/yAgIJX///8A/v7+Av///wC7u7sPgoKCRYqKii3T09MACgoKaAAAAP8BAQH4AgIC/AAAAP8vLy9GKysreQAAAP8FBQX/BwcH3LS0tAj///8A/f39Af39/QH///8A////AOzs7AYDAwPEAAAA/wAAAPsCAgL/AAAA8mtrawlMTEygAAAA/wgICP8AAADpampqGP///wD///8A/Pz8Afn5+QT+/v4B7e3tBAQEBMEAAAD/AQEB/QAAAP8TExNv////AFJSUosAAAD/AwMD/wEBAauurq4A////Av///wD///8A/v7+AP///wLv7+8AAwMDSwAAAOADAwPZAAAAZZOTkwP///8AT09PIQAAALYAAAC3oaGhIf///wD9/f0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%20%20%20%20%0A%20%20%20//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%27FindBar%20Tweak%27%20....%20%0A%20%20%20AddonManager.getAddonsByTypes%28%5B%22extension%22%5D%2C%20addons%3D%3E%20%7B%0A%20%20%20%20%20%20addons.forEach%28addon%3D%3E%20%7B%20if%20%28addon.name%20%3D%3D%20%27FindBar%20Tweak%27%29%20addon.userDisabled%20%3D%20cbu.getPrefs%28s%29%20%7D%29%3B%0A%20%20%20%7D%29%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%29%3B%20%0A%0A%0A//%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20..........%0Afunction%20autoHighlight%28%29%20%7B%0A%20%20var%20finder%20%3D%20gBrowser.finder%20%7C%7C%20gFindBar%3B%0A%20%20var%20lighted%20%3D%20%28finder._highlightDoc%20%7C%7C%20finder._highlight%29.bind%28finder%29%3B%0A%20%20lighted%28false%29%3B%20%20%20%0A%0A%20%20if%20%28%20cbu.getPrefs%28s%29%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20getArray%28%29%3B%0A%20%20%20%20%20%20%20while%28array.length%20%3E%200%29%20lighted%28true%2C%20array.shift%28%29%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u043E%u0439%20%u0438%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%u043C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u044E%u0442%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Avar%20listener%20%3D%20%7B%20%0A%20%20%20onStateChange%3A%20function%28wpr%2C%20req%2C%20flag%29%20%7B%0A%20%20%20%20%20%20if%20%28%20gBrowser.currentURI.spec.startsWith%28%22http%22%29%20%26%26%20flag%20%26%20Ci.nsIWebProgressListener.STATE_STOP%20%29%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20autoHighlight%28%29%2C%200%29%3B%0A%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20onLocationChange%3A%20function%28wpr%2C%20req%29%20%7B%0A%20%20%20%20%20%20if%20%28%20gBrowser.currentURI.spec.startsWith%28%22http%22%29%20%26%26%20%21req%20%26%26%20wpr.document.readyState%20%3D%3D%20%22complete%22%20%29%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20autoHighlight%28%29%2C%200%29%3B%0A%20%20%20%7D%20%20%20%20%20%20%20%0A%7D%3B%0AgBrowser.addProgressListener%28listener%29%3B%0AaddDestructor%28%28%29%3D%3E%20gBrowser.removeProgressListener%28listener%29%20%29%3B%0A%0A%20%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043B%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u0432%20%27about%3Aconfig%20..........%0Afunction%20toggleHighlightValue%28arg%29%20%7B%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27clear%27%29%0A%20%20%20%20%20%20%20var%20str%20%3D%20%27%27%2C%20notification%20%3D%20%22%u0422%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u0443%u0434%u0430%u043B%u0451%u043D%22%3B%0A%20%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27add%27%20%29%20%7B%20%20%0A%20%20%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20%28getArray%28%29%20%3D%3D%20%22%22%29%20%3F%20%22%22%20%3A%20getArray%28%29.join%28%22%7C%22%29%20+%20%22%7C%22%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20if%20%28%20sel%20%29%20%7B%20var%20str%20%3D%20array%20+%20sel%20%7D%0A%20%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20val%20%3D%20custombuttons.promptBox%28self.label%2C%20%27B%u0432%u0435%u0434%u0438%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%27%29%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20val%20%3D%3D%20%22%22%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20array%20+%20val%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20goDoCommand%28%22cmd_selectNone%22%29%3B%0A%20%20%20%20%20%20%20var%20notification%20%3D%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%3A%20%5Cn%22%20+%20%28sel%20%3F%20sel%20%3A%20val.replace%28/%5C%7C/g%2C%22%5Cn%22%29%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%0A%20%20cbu.setPrefs%28s%2C%20%28arg%20%3D%3D%20%27add%27%29%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20cbu.setPrefs%28%22CB.autoHighlight.value%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20str%29%29%3B%0A%20%20%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%0A%20%20autoHighlight%28%29%3B%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%u0437%20%27about%3Aconfig%27%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0442%u0435%u043A%u0441%u0442%u0430%u043C%u0438%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20..........%0Afunction%20getArray%28%29%20%7B%20%0A%20%20%20try%20%7B%20return%20Services.prefs.getComplexValue%28%22CB.autoHighlight.value%22%2C%20Ci.nsISupportsString%29.data.split%28%22%7C%22%29%20%7D%20%0A%20%20%20catch%28e%29%20%7B%20return%20%5B%5D%20%7D%3B%0A%7D%3B%20%20%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20false%20..........%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20el%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20try%20%7B%20return%20el.value.substring%28el.selectionStart%2C%20el.selectionEnd%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%20%20%20return%20%28sel%20%3D%3D%20%27%27%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 |
turbot > 02-07-2016 13:41:56 |
Вдруг, кому пригодится, "Проверить сертификат сайта": Выделить код Код: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%3E%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%20%u0434%u043B%u044F%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiB%20lbmNvZGluZz0id2luZG93cy0xMjUyIj8+DQo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTQ4LjI5cHgiIGhlaWdodD0iNTQ4LjI5MXB4IiB2aWV3Qm94PSIwIDAgNTQ4LjI5IDU0OC4yOTEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU0OC4yOSA1NDguMjkxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBkPSJNMzY4LjgyMyw0MTEuODc5Yy02LjQyNSwwLTEwLjA2OCwwLjUyNC0xMS45ODQsMC44NzJ2MzIuMjgzaDEwLjQyMWMxMy4xOTUsMCwyMS4wMDctNi41OTQsMjEuMDA3LTE2LjgzNCAgICAgQzM4OC4yNjcsNDE3LjQzOSwzODAuOTcsNDEyLjA1MywzNjguODIzLDQxMS44Nzl6Ii8+DQoJCQk8cGF0aCBkPSJNNDcyLjkyOSwxMzEuMzk5Yy0wLjAzMS0yLjUxOC0wLjgyOC01LTIuNTU2LTYuOTY0TDM2NC42NSwzLjY3N2MtMC4wMjEtMC4wMzEtMC4wNTItMC4wNDItMC4wODktMC4wNzMgICAgIGMtMC42MjUtMC43MDctMS4zNTUtMS4yODctMi4xMjctMS43OTVjLTAuMjMtMC4xNTItMC40NjItMC4yODYtMC43MDMtMC40MjFjLTAuNjgzLTAuMzY2LTEuMzg3LTAuNjY2LTIuMTI3LTAuODg3ICAgICBjLTAuMTk5LTAuMDYtMC4zNzEtMC4xMzktMC41NzEtMC4xOTRDMzU4LjIzLDAuMTE4LDM1Ny40LDAsMzU2LjU2NiwwSDk2Ljc1N0M4NC45MDQsMCw3NS4yNTUsOS42NTEsNzUuMjU1LDIxLjUwMlY1MjYuNzkgICAgIGMwLDExLjg1OCw5LjY0OSwyMS41MDEsMjEuNTAyLDIxLjUwMWgzNTQuNzc2YzExLjg2MiwwLDIxLjUwMi05LjY0MywyMS41MDItMjEuNTAxVjEzMi42MDMgICAgIEM0NzMuMDM1LDEzMi4xOTksNDcyLjk3MywxMzEuNzk1LDQ3Mi45MjksMTMxLjM5OXogTTE5NC41NzIsNDg5Ljk5MmM3Ljk4OSwwLDE2Ljg0Mi0xLjczNywyMi4wNS0zLjgyMmwzLjk5LDIwLjY2MSAgICAgYy00Ljg2MSwyLjQzMS0xNS43OTgsNS4wNC0zMC4wMjcsNS4wNGMtNDAuNDM5LDAtNjEuMjc5LTI1LjE3MS02MS4yNzktNTguNWMwLTM5LjkyNiwyOC40NzMtNjIuMTQ3LDYzLjg4Ni02Mi4xNDcgICAgIGMxMy43MTEsMCwyNC4xMjQsMi43ODcsMjguODA2LDUuMjA3bC01LjM3NSwyMS4wMDljLTUuMzg2LTIuMjYyLTEyLjg1NC00LjM0Mi0yMi4yMTUtNC4zNDIgICAgIGMtMjEuMDA5LDAtMzcuMzIxLDEyLjY2OC0zNy4zMjEsMzguNzFDMTU3LjA4LDQ3NS4yNDEsMTcwLjk1OCw0ODkuOTkyLDE5NC41NzIsNDg5Ljk5MnogTTMxMi41OTIsNTEwLjEzM2gtNzQuNjM5VjM5My4xNGg3Mi4yMTQgICAgIHYyMS43aC00NS42NnYyNC4yOTloNDMuMDU2djIxLjUxOWgtNDMuMDU2djI3Ljc3M2g0OC4wODVWNTEwLjEzM3ogTTM5MS45MSw1MTAuMTMzYy0xLjkxMS0zLjMwMy00LjY4My0xMi44NDctOC4xNTctMjcuMjU1ICAgICBjLTMuMTI5LTE0LjU3OC04LjE2Mi0xOC41NzgtMTguOTI0LTE4Ljc0NmgtNy45OXY0Ni4wMDZoLTI2LjIwNVYzOTQuNzA0YzguNTA0LTEuMzk2LDIxLjE3Mi0yLjQzNywzNS4yMzktMi40MzcgICAgIGMxNy4zNTUsMCwyOS40OTYsMi42MDQsMzcuODM4LDkuMTk4YzYuOTQ5LDUuNTYzLDEwLjc2MiwxMy43MTcsMTAuNzYyLDI0LjQ4MWMwLDE0LjkyLTEwLjU4OCwyNS4xNjctMjAuNjUxLDI4Ljh2MC41NCAgICAgYzguMTU3LDMuMjkzLDEyLjY2NiwxMS4xMDMsMTUuNjE3LDIxLjg2NGMzLjY0NywxMy4xODcsNy4yOCwyOC40NjIsOS41MzcsMzIuOTg3SDM5MS45MVY1MTAuMTMzeiBNOTYuNzU3LDM2NS4wODVWMjEuNTA3SDM0NS44MiAgICAgdjExMC4wMTVjMCw1LjkzNSw0LjgwOSwxMC43NSwxMC43NTEsMTAuNzVoOTQuOTYybDAuMDEsMjIyLjgxM0g5Ni43NTd6Ii8+DQoJCTwvZz4NCgkJPHBhdGggZD0iTTM1OS4wODUsMTUxLjA0NGMwLTYuNDA3LTMuMzU5LTExLjk5OC04LjM5My0xNS4yMDhjMi45NjUtNC44NTQsMy42MTctMTEuMDA4LDEuMTcxLTE2LjYxNWwtMy4wMDgtNi44OTcgICAgYy0xLjktNC4zNjUtNS4zNDUtNy41NTctOS40MDgtOS4zMTVjLTAuMTg5LTQuMzM4LTEuODkxLTguNjI3LTUuMjA3LTExLjk0NGwtNS4zMjMtNS4zMjFjLTQuMjcyLTQuMjczLTEwLjE2Mi01LjkxOC0xNS43MDYtNS4wMSAgICBjLTEuMTIyLTUuODktNS4xMDMtMTEuMTA2LTExLjA5Mi0xMy40NmwtNy4wMDktMi43NjRjLTQuOTQ0LTEuOTI5LTEwLjE4My0xLjQ4OC0xNC42MDMsMC42OTYgICAgYy0zLjEzNy0yLjY1MS03LjEyNi00LjMwNy0xMS41NTgtNC4zMDdoLTcuNTM1Yy01LjU2MiwwLTEwLjQ3NSwyLjU3NS0xMy43OTIsNi41MzNjLTQuOTY2LTMuNDEtMTEuNDk5LTQuMzAyLTE3LjQxNS0xLjcxMSAgICBsLTYuODk3LDIuOTk1Yy01LjIyMSwyLjI4NC04LjczNiw2Ljc0Ni0xMC4xMzQsMTEuODQzYy00LjI3MywwLjI0Mi04LjQ3LDEuOTMtMTEuNzI4LDUuMTg3bC01LjMyMiw1LjMyMSAgICBjLTMuNzA0LDMuNzAxLTUuNDA3LDguNjA2LTUuMjMxLDEzLjQ1NmMtNS41NTEsMS4zMTUtMTAuMzk0LDUuMjI0LTEyLjY0MSwxMC45NDhsLTIuNzYzLDdjLTIuMDkzLDUuMzQ0LTEuNCwxMS4wNDIsMS4yNjcsMTUuNjQ4ICAgIGMtMy4zNzEsMy4yNjgtNS40ODgsNy44NDgtNS40ODgsMTIuOTI3djcuNTJjMCw1LjMyMywyLjMzMywxMC4wNTMsNS45OTUsMTMuMzQ3Yy0yLjM5NCw0LjY2Mi0yLjgzNSwxMC4yODktMC41NjQsMTUuNDY1ICAgIGwzLjAwNSw2Ljg5N2MyLjE4MSw1LjAzMiw2LjQxMiw4LjQ3OCwxMS4yNzYsOS45NjdjLTAuNDQxLDUuMTIzLDEuMjIsMTAuMzg1LDUuMTQ1LDE0LjI5OWw1LjMyMiw1LjMyICAgIGM0LjAzMiw0LjA0Nyw5LjUxNSw1LjY5NCwxNC43OTMsNS4wOThjMS43NSw0LjU2OSw1LjI4OSw4LjQyOCwxMC4yMDIsMTAuMzYybDEuMDkyLDAuNDM3TDE3OC41LDMyMmwzNy4zMjEtMjAuNDYzICAgIGMwLDAsOS42MzgsNjAuNzk5LDkuNjM4LDU4Ljk5OWMwLTEuNDU0LDIyLjMwNy04MS42MTMsMzAuOTUzLTExMi41NjFjMS41ODUsMC40NzMsMy4yNjMsMC43NDYsNS4wMDgsMC43NDZoMy4xMzlsMzYuNzQ2LDk3Ljk3MiAgICB2LTUxLjE3bDM1LjUxNywyNC4wNzhsLTMyLjE2My04MS40NTJsMC42LTAuMjU3YzQuMTczLTEuODMsNy4yNTQtNS4wNzYsOS4wNjUtOC44OThjNS4yMDcsMC41MzksMTAuNjE0LTEuMTEzLDE0LjYwNC01LjExOSAgICBsNS4zMjMtNS4zMmM0LjU4OC00LjU4NSw2LjE0Mi0xMS4wMTMsNC43NTUtMTYuOWM0Ljk4OC0xLjYwNiw5LjI1LTUuMjYyLDExLjMwOC0xMC41MDlsMi43NjItNy4wMDQgICAgYzEuNjE2LTQuMTMzLDEuNTMzLTguNDcxLDAuMjIxLTEyLjM2OWMzLjUzOC0zLjI5OSw1Ljc5NS03Ljk3MSw1Ljc5NS0xMy4yMDN2LTcuNTI1SDM1OS4wODV6IE0yNjUuMTg5LDIxOS4wNzEgICAgYy0zNS41LDAtNjQuMjYzLTI4Ljc3NC02NC4yNjMtNjQuMjU3YzAtMzUuNDk1LDI4Ljc2OS02NC4yNTgsNjQuMjYzLTY0LjI1OGMzNS40ODUsMCw2NC4yNTIsMjguNzY5LDY0LjI1Miw2NC4yNTggICAgQzMyOS40NDEsMTkwLjI5NywzMDAuNjc1LDIxOS4wNzEsMjY1LjE4OSwyMTkuMDcxeiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0412%u044B%u043F%u043E%u043B%u043D%u044F%u0442%u044C%20%u043F%u043E%20%u041F%u041A%u041C%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20HTTPS%20Everywhere%0Avar%20HEBtn%20%3D%20document.getElementById%28%27https-everywhere-button%27%29%3B%0Aif%20%28%21HEBtn%29%20return%3B%0AHEBtn.oncontextmenu%20%3De%3D%3E%20this.click%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20soundService%20%3D%20Cc%5B%22@mozilla.org/sound%3B1%22%5D.createInstance%28Ci.nsISound%29%3B%0Aconst%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0Aconst%20directoryService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29%3B%0Aconst%20foStream%20%3D%20Cc%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.createInstance%28Ci.nsIFileOutputStream%29%3B%0Aconst%20fus%20%3D%20Cc%5B%22@mozilla.org/docshell/urifixup%3B1%22%5D.getService%28Ci.nsIURIFixup%29%3B%0Aconst%20sertViewer%20%3D%20Cc%5B%22@mozilla.org/nsCertificateDialogs%3B1%22%5D.getService%28Ci.nsICertificateDialogs%29%3B%0A%0Avar%20img%20%3D%20self.image%2C%20lbl%20%3D%20self.label%2C%20hlp%20%3D%20self.Help%3B%0A%0Alet%20loc%20%3D%20window.gBrowser.selectedBrowser.contentWindow.location%3B%0A%0A//%20%u041E%u043F%u0446%u0438%u0438%3A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%2C%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20HTTPSEverywhereUserRules%2C%20xml-%u0444%u0430%u0439%u043B%20%u0441%20%u043F%u0440%u0430%u0432%u0438%u043B%u043E%u043C%20%u0434%u043B%u044F%20%u0430%u0434%u0434%u043E%u043D%u0430%20HTTPS%20Everywhere%0A//%20%u0428%u0430%u0431%u043B%u043E%u043D%20%u043F%u0440%u0430%u0432%u0438%u043B%20%u043D%u0430%u0445%u043E%u0434%u0438%u0442%u0441%u044F%20%u0432%u043E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%22%u041F%u043E%u043C%u043E%u0449%u044C%22%0Avar%20HTTPSEverywhereRules%20%3D%20true%2C%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u044F%20%28%u0432%20%u0430%u0441%u0441%u043E%u0446%u0438%u0438%u0440%u043E%u0432%u0430%u043D%u043D%u043E%u0439%20%u0441%20xml-%u0444%u0430%u0439%u043B%u0430%u043C%u0438%20%u043F%u0440%u043E%u0433%u0440%u0430%u043C%u043C%u0435%29%20%u0441%u043E%u0437%u0434%u0430%u043D%u043D%u043E%u0435%20%u043F%u0440%u0430%u0432%u0438%u043B%u043E%0A%20%20%20%20HTTPSEverywhereRulesEdit%20%3D%20true%2C%0A//%20%u041F%u0435%u0440%u0435%u043D%u0430%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u043D%u0430%20https%20%u0432%u0435%u0440%u0441%u0438%u044E%20%u0441%u0430%u0439%u0442%u0430%2C%20%u043F%u0440%u0438%20%u043D%u0430%u043B%u0438%u0447%u0438%u0438%20%u0443%20%u043D%u0435%u0433%u043E%20%u0432%u0430%u043B%u0438%u0434%u043D%u043E%u0433%u043E%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20redirect%20%3D%20true%2C%0A//%20%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20showSert%20%3D%20false%2C%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0443%u0432%u0435%u0434%u043E%u043C%u043B%u0435%u043D%u0438%u0435%20%u0441%u043E%20%u0441%u0442%u0430%u0442%u0443%u0441%u043E%u043C%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A//%20%u041A%u043B%u0438%u043A%20%u043F%u043E%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u0448%u043A%u0435%20-%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%20%28%u043F%u0440%u0438%20%u043D%u0430%u043B%u0438%u0447%u0438%u0438%20%u043E%u043D%u043E%u0433%u043E%20%u0443%20%u0441%u0430%u0439%u0442%u0430%29%0A%20%20%20%20alert%20%3D%20true%2C%0A//%20%u0417%u0432%u0443%u043A%u043E%u0432%u043E%u0435%20%u0443%u0432%u0435%u0434%u043E%u043C%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0438%20%u0434%u0438%u0430%u043B%u043E%u0433%u0430%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20alertSound%20%3D%20true%3B%0A%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20badCertListener%28%29%20%7B%7D%0AbadCertListener.prototype%20%3D%20%7B%0A%20%20getInterface%3A%20function%20%28aIID%29%20%7B%0A%20%20%20%20return%20this.QueryInterface%28aIID%29%3B%0A%20%20%7D%2C%0A%20%20QueryInterface%3A%20function%28aIID%29%20%7B%0A%20%20%20%20if%20%28aIID.equals%28Ci.nsIBadCertListener2%29%20%7C%7C%0A%20%20%20%20%20%20%20%20aIID.equals%28Ci.nsIInterfaceRequestor%29%20%7C%7C%0A%20%20%20%20%20%20%20%20aIID.equals%28Ci.nsISupports%29%29%20%7B%0A%20%20%20%20%20%20return%20this%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20throw%20new%20Error%28Components.results.NS_ERROR_NO_INTERFACE%29%3B%0A%20%20%7D%2C%0A%20%20handle_test_result%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28gSSLStatus%29%20%7B%0A%20%20%20%20%20%20gCert%20%3D%20gSSLStatus.QueryInterface%28Ci.nsISSLStatus%29.serverCert%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20notifyCertProblem%3A%20function%20MSR_notifyCertProblem%28socketInfo%2C%20sslStatus%2C%20targetHost%29%20%7B%0A%20%20%20%20gBroken%20%3D%20true%3B%0A%20%20%20%20gSSLStatus%20%3D%20sslStatus%3B%0A%20%20%20%20this.handle_test_result%28%29%3B%0A%20%20%20%20return%20true%3B%20//%20suppress%20error%20UI%0A%20%20%7D%0A%7D%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20getURI%28%29%20%7B%0A%20%20let%20uri%20%3D%20fus.createFixupURI%28loc.href%2C%200%29%3B%0A%0A%20%20if%20%28%21uri%29%20%7B%0A%20%20%20%20return%20null%3B%0A%20%20%7D%0A%0A%20%20if%20%28uri.scheme%20%3D%3D%20%22http%22%29%20%7B%0A%20%20%20%20uri.scheme%20%3D%20%22https%22%3B%0A%20%20%7D%0A%0A%20%20if%20%28uri.port%20%3D%3D%20-1%29%20%7B%0A%20%20%20%20uri.port%20%3D%20443%3B%0A%20%20%7D%0A%0A%20%20return%20uri%3B%0A%7D%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20getCert%28%29%20%7B%0A%20%20gCert%20%3D%20null%3B%0A%20%20gSSLStatus%20%3D%20null%3B%0A%20%20gChecking%20%3D%20true%3B%0A%20%20gBroken%20%3D%20false%3B%0A%0A%20%20var%20uri%20%3D%20getURI%28%29%3B%0A%20%20var%20req%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%0A%20%20try%20%7B%0A%20%20%20%20if%20%28uri%29%20%7B%0A%20%20%20%20%20%20req.open%28%27GET%27%2C%20uri.prePath%2C%20false%29%3B%0A%20%20%20%20%20%20req.channel.notificationCallbacks%20%3D%20new%20badCertListener%28%29%3B%0A%20%20%20%20%20%20req.send%28null%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20Cu.reportError%28%22Attempted%20to%20connect%20to%20a%20site%20with%20a%20bad%20certificate%20in%20the%20add%20exception%20dialog.%20%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%20%20%20%20%20%20%20%20%20%20%22This%20results%20in%20a%20%28mostly%20harmless%29%20exception%20being%20thrown.%20%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%20%20%20%20%20%20%20%20%20%20%22Logged%20for%20information%20purposes%20only%3A%20%22%20+%20e%29%3B%0A%20%20%7D%20finally%20%7B%0A%20%20%20%20gChecking%20%3D%20false%3B%0A%20%20%7D%0A%0A%20%20if%20%28req.channel%20%26%26%20req.channel.securityInfo%29%20%7B%0A%20%20%20%20gSSLStatus%20%3D%20req.channel.securityInfo%0A%20%20%20%20%20%20.QueryInterface%28Ci.nsISSLStatusProvider%29.SSLStatus%3B%0A%20%20%20%20gCert%20%3D%20gSSLStatus.QueryInterface%28Ci.nsISSLStatus%29.serverCert%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20createRule%28%29%20%7B%0A%20%20//%20http%3A//stackoverflow.com/questions/6449340/how-to-get-top-level-domain-base-domain-from-the-url-in-javascript%0A%20%20let%20domain%20%3D%20loc.host.match%28/%5B-%5Cw%5D+%5C.%28%3F%3A%5B-%5Cw%5D+%5C.xn--%5B-%5Cw%5D+%7C%5B-%5Cw%5D%7B3%2C%7D%7C%5B-%5Cw%5D+%5C.%5B-%5Cw%5D%7B2%7D%29%24/i%29%5B0%5D%3B%0A%0A%20%20var%20rule%20%3D%20convertFromUnicode%28%22UTF-8%22%2C%20hlp.replace%28/%5C%5Bdomain%5C%5D/g%2C%20domain%29%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%20.replace%28/%5C%5Bdomainesc%5C%5D/g%2C%20domain.replace%28/%5C./g%2C%20%27%5C%5C.%27%29%29%29%3B%20%0A%0A%20%20var%20file%20%3D%20directoryService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20file.append%28%22HTTPSEverywhereUserRules%22%29%3B%0A%20%20file.append%28domain%20+%20%27.xml%27%29%3B%0A%20%20foStream.init%28file%2C%200x02%7C0x08%7C0x20%2C%200666%2C%200%29%3B%0A%20%20foStream.write%28rule%2C%20rule.length%29%3B%0A%20%20foStream.close%28%29%3B%0A%20%20HTTPSEverywhereRulesEdit%20%26%26%20file.launch%28%29%3B%0A%7D%0A%0Afunction%20viewCert%28%29%20%7B%0A%20%20getCert%28%29%3B%0A%0A%20%20if%20%28%21gCert%20%7C%7C%20%21gSSLStatus%29%20%7B%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%20%u043D%u0435%20%u043C%u043E%u0436%u0435%u0442%20%u0431%u044B%u0442%u044C%20%u043F%u043E%u043B%u0443%u0447%u0435%u043D%21%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%0A%20%20if%20%28showSert%29%20%7B%0A%20%20%20%20sertViewer.viewCert%28window%2C%20gCert%29%3B%0A%20%20%20%20alertSound%20%26%26%20soundService.playEventSound%28%27EVENT_ALERT_DIALOG_OPEN%27%29%3B%0A%20%20%7D%0A%0A%20%20var%20sertListener%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28aSubject%2C%20aTopic%2C%20aData%29%20%7B%0A%20%20%20%20%20%20if%20%28aTopic%20%21%3D%20%27alertclickcallback%27%29%20return%3B%0A%20%20%20%20%20%20sertViewer.viewCert%28window%2C%20gCert%29%3B%0A%20%20%20%20%20%20alertSound%20%26%26%20soundService.playEventSound%28%27EVENT_ALERT_DIALOG_OPEN%27%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20if%20%28gSSLStatus.isUntrusted%0A%20%20%20%20%20%20%7C%7C%20gSSLStatus.isDomainMismatch%0A%20%20%20%20%20%20%7C%7C%20gSSLStatus.isNotValidAtThisTime%29%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0430%u0439%u0442%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%20%u043D%u0435%u0432%u0430%u043B%u0438%u0434%u043D%u044B%u0439%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%21%5Cn%u041D%u0430%u0436%u043C%u0438%u0442%u0435%20%u0434%u043B%u044F%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%27%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20true%2C%20null%2C%20sertListener%2C%20%22%22%29%3B%0A%20%20else%20%7B%0A%20%20%20%20if%20%28loc.protocol%20%21%3D%20%27https%3A%27%29%20%7B%0A%20%20%20%20%20%20redirect%20%26%26%20%28loc.protocol%20%3D%20%27https%27%29%3B%0A%20%20%20%20%20%20HTTPSEverywhereRules%20%26%26%20createRule%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0430%u0439%u0442%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%20%u0432%u0430%u043B%u0438%u0434%u043D%u044B%u0439%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%21%5Cn%u041D%u0430%u0436%u043C%u0438%u0442%u0435%20%u0434%u043B%u044F%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%27%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20true%2C%20null%2C%20sertListener%2C%20%22%22%29%3B%0A%20%20%7D%0A%7D%0AviewCert%28%29%3B%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%3Cruleset%20name%3D%22%28USER%20RULE%29%20%5Bdomain%5D%22%3E%0A%3Ctarget%20host%3D%22%5Bdomain%5D%22/%3E%0A%3Ctarget%20host%3D%22*.%5Bdomain%5D%22/%3E%0A%3Csecurecookie%20host%3D%22%5E%28%3F%3A.*%5C.%29%3F%5Bdomainesc%5D%24%22%20name%3D%22.+%22/%3E%0A%3Crule%20from%3D%22%5Ehttp%3A//%22%20to%3D%22https%3A//%22/%3E%0A%3C/ruleset%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E UPD: Исправил кое-что. (если у кого svg-иконка кнопки корежит интерфейс, то вот png 16x16: Выделить код Код:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAnNCSVQICFXsRgQAAAAJcEhZcwAAAGcAAABnAdUo1CYAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAA7UlEQVQoU3XQvyvEcRgH8FchJqNBLAyOSQyKxXyDsp1N/gN1wxUmRtvtXMqPLGy6MpBiEZcbDLdd1F0WkwH1GO7ie+eud32e5/n06vOpRwh2FVpSMRIaaRyF5tBv3FBQ82TwHzCh4k5dVk0o6m0H15aDAQ/qQsi3gxc9IdiQlZJy3A4upYM+t6YTt4l2SllR1WboCIJTB76NdgEWfRhzJdcNDFsPFn43kADnMjIy1pq1kfM/UBLKttzIybmXcyaUkuDTvGdVs4qO7Jj01QpepYV3KXkn5iwJj61fbFtxYcaqfYfWvCVf2BMdshfCD+SMw3jJ6NpdAAAAAElFTkSuQmCC ) Клик по кнопке (или ПКМ по кнопке аддона HTTPS Everywhere (при наличии оного) - проверяет сертификат текущего сайта и (в зависимости от опций (в коде откомментированно, где что и за что отвечает)): А неплохо вышло. Это я про результат, а не качество кода. Прикрутить еще листенер на смену локации и может выйти какая-никакая, а замена почившему HTTPS-Finder'у. Может, bunda1, возьметесь привести в божеский вид и допилить? |
thrower > 02-07-2016 15:15:42 |
bunda1 Спасибо! |
bunda1 > 02-07-2016 15:55:57 |
turbot пишет
:) ну нет, я не знаю где взять время что бы допилить свои кнопки, а тут для меня незнакомая тема. |
turbot > 02-07-2016 16:31:14 |
bunda1 |
firefan > 04-07-2016 19:26:24 |
turbot, огромное спасибо за кнопку сертификата. Я правильно понимаю, что всплывающее сообщение о том, что сертификат валиден - это просто дублирование информации с цветных замочков перед адресной строкой? Было бы интересней, если бы по нажатию на кнопку (опционально) сертификат проверялся бы в OCSP. Это будет полезно для тех, кто отключил эту опцию в настройках Firefox, но при этом хотел бы иметь возможность выборочной проверки. Также во всплывающем сообщении очень уместно смотрелись бы страны выпуска всей цепочки сертификатов типа US-US-RU. Это позволило бы на глаз определять любителей государственного или корпоративного MITM (к примеру, цепочка CN-CN-US для google.com сходу указывала бы, что, во-первых, вы в Китае, а во-вторых большой брат слишком сильно заботится о вас, и незаконно использует свой CA, на который пора писать абузу). |
turbot > 04-07-2016 20:06:31 |
firefan firefan пишет
Не спорю. Но я не осилю. Это надо парсить полученные ответные данные. Даж не предположу, как к этому подступиться. Если только кто другой возьмется. |
Dumby > 05-07-2016 15:05:38 |
turbot пишет
А что ты предполагаешь парсить? Если наличие и информацию из этой строки скрытый текст Выделить код Код:data:image/png;base64,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1KnhFd59V0ybJlascEv23FNcfbVef790PnAAaGBEXSrR0m7NGjFzZqw6K1fqI7yXX3ZLWrfWf056yhRmwgOAUERdivnqK7H//jVX08Z2t9yix56jXTv98RYt8LQFAICEqEtnxcX6CO/dd90SbWB37bX6f7ShHgDAQNSlv2XL9OdTSkrckv3204d3V18tWrVKducAIPmIOiVUV+tfSLjlFvHRR25hly56BF5xhf70CgA0YUSdQnbv1n9jZeZM/evnju7d9ac6R4xIducAIGmIOuVogVdQoAfeunVuYVGROOusZPcMAJKDqFNUVZV45BFx883i88/1lwsXissuS3afACA5iDql/fSTeOopsW2bGD1aNG+e7N4AQHIQdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFEXUAAMURdQAAxRF1AADFKRV1LVvvuf8+HRrz9AEAUtxXm77/YfNWRaJuy5bt327Z3pinDwCQFjq1bdW2batabJhyUQcAQP0i6gAAiiPqAACKI+oAAIoj6gAAiiPqAACKI+oAAIoj6gAAiiPqAACKI+oAAIpL3ai77777NmzYsGPHjmSfonTVsmXLbt26XX311cnuCAAkWYpG3e1z5rRq2XL48OH77rtvsk9Ruvrmm28WL168fceOG6ZMSXZfACCZUjTqbrhBuz5P6dix4/bt/PRzLbVq1eq7776bM2fO7bffnuy+AEAypWjUTZ48+Y477ti6dWuyz096a9OmzfXXX3/33XcnuyMAkEypG3XacISoqyMt6rTBMVEHoIlL6ajbsmVLss9Pemvbti1RBwApHXU//vhjss9PemvXrh1RBwDpE3UvTu407BFz8ehZq1+4sley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 то, вроде, парсить не сложно. Вот, попробуй понажимать скрытый текст Выделить код Код:try { var result = [], {SSLStatus} = gBrowser.securityUI.QueryInterface(Ci.nsISSLStatusProvider); var tree = Cc["@mozilla.org/security/nsASN1Tree;1"].createInstance(Ci.nsIASN1Tree); for(var cert = SSLStatus.serverCert; cert; cert = cert.issuer) { tree.loadASN1Structure(cert.ASN1Structure); for(var res, ind = 0; ind < tree.rowCount; ind++) if (tree.getCellText(ind, {}) == "Subject") { res = tree.getDisplayData(ind); break; } var array = res.split("\n"); var country = array.find(str => str.startsWith("C = ")); result.unshift((country ? country.slice(4) : "??") + array.map(str => "\t\t" + str).join("\n")); } alert(result.join("\n\n\n")); } catch(ex) {} |
turbot > 05-07-2016 20:06:28 |
Dumby
Для меня - сложно. firefan
Готово: Выделить код Код: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%3E%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%20%u0434%u043B%u044F%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiB%20lbmNvZGluZz0id2luZG93cy0xMjUyIj8+DQo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTQ4LjI5cHgiIGhlaWdodD0iNTQ4LjI5MXB4IiB2aWV3Qm94PSIwIDAgNTQ4LjI5IDU0OC4yOTEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU0OC4yOSA1NDguMjkxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBkPSJNMzY4LjgyMyw0MTEuODc5Yy02LjQyNSwwLTEwLjA2OCwwLjUyNC0xMS45ODQsMC44NzJ2MzIuMjgzaDEwLjQyMWMxMy4xOTUsMCwyMS4wMDctNi41OTQsMjEuMDA3LTE2LjgzNCAgICAgQzM4OC4yNjcsNDE3LjQzOSwzODAuOTcsNDEyLjA1MywzNjguODIzLDQxMS44Nzl6Ii8+DQoJCQk8cGF0aCBkPSJNNDcyLjkyOSwxMzEuMzk5Yy0wLjAzMS0yLjUxOC0wLjgyOC01LTIuNTU2LTYuOTY0TDM2NC42NSwzLjY3N2MtMC4wMjEtMC4wMzEtMC4wNTItMC4wNDItMC4wODktMC4wNzMgICAgIGMtMC42MjUtMC43MDctMS4zNTUtMS4yODctMi4xMjctMS43OTVjLTAuMjMtMC4xNTItMC40NjItMC4yODYtMC43MDMtMC40MjFjLTAuNjgzLTAuMzY2LTEuMzg3LTAuNjY2LTIuMTI3LTAuODg3ICAgICBjLTAuMTk5LTAuMDYtMC4zNzEtMC4xMzktMC41NzEtMC4xOTRDMzU4LjIzLDAuMTE4LDM1Ny40LDAsMzU2LjU2NiwwSDk2Ljc1N0M4NC45MDQsMCw3NS4yNTUsOS42NTEsNzUuMjU1LDIxLjUwMlY1MjYuNzkgICAgIGMwLDExLjg1OCw5LjY0OSwyMS41MDEsMjEuNTAyLDIxLjUwMWgzNTQuNzc2YzExLjg2MiwwLDIxLjUwMi05LjY0MywyMS41MDItMjEuNTAxVjEzMi42MDMgICAgIEM0NzMuMDM1LDEzMi4xOTksNDcyLjk3MywxMzEuNzk1LDQ3Mi45MjksMTMxLjM5OXogTTE5NC41NzIsNDg5Ljk5MmM3Ljk4OSwwLDE2Ljg0Mi0xLjczNywyMi4wNS0zLjgyMmwzLjk5LDIwLjY2MSAgICAgYy00Ljg2MSwyLjQzMS0xNS43OTgsNS4wNC0zMC4wMjcsNS4wNGMtNDAuNDM5LDAtNjEuMjc5LTI1LjE3MS02MS4yNzktNTguNWMwLTM5LjkyNiwyOC40NzMtNjIuMTQ3LDYzLjg4Ni02Mi4xNDcgICAgIGMxMy43MTEsMCwyNC4xMjQsMi43ODcsMjguODA2LDUuMjA3bC01LjM3NSwyMS4wMDljLTUuMzg2LTIuMjYyLTEyLjg1NC00LjM0Mi0yMi4yMTUtNC4zNDIgICAgIGMtMjEuMDA5LDAtMzcuMzIxLDEyLjY2OC0zNy4zMjEsMzguNzFDMTU3LjA4LDQ3NS4yNDEsMTcwLjk1OCw0ODkuOTkyLDE5NC41NzIsNDg5Ljk5MnogTTMxMi41OTIsNTEwLjEzM2gtNzQuNjM5VjM5My4xNGg3Mi4yMTQgICAgIHYyMS43aC00NS42NnYyNC4yOTloNDMuMDU2djIxLjUxOWgtNDMuMDU2djI3Ljc3M2g0OC4wODVWNTEwLjEzM3ogTTM5MS45MSw1MTAuMTMzYy0xLjkxMS0zLjMwMy00LjY4My0xMi44NDctOC4xNTctMjcuMjU1ICAgICBjLTMuMTI5LTE0LjU3OC04LjE2Mi0xOC41NzgtMTguOTI0LTE4Ljc0NmgtNy45OXY0Ni4wMDZoLTI2LjIwNVYzOTQuNzA0YzguNTA0LTEuMzk2LDIxLjE3Mi0yLjQzNywzNS4yMzktMi40MzcgICAgIGMxNy4zNTUsMCwyOS40OTYsMi42MDQsMzcuODM4LDkuMTk4YzYuOTQ5LDUuNTYzLDEwLjc2MiwxMy43MTcsMTAuNzYyLDI0LjQ4MWMwLDE0LjkyLTEwLjU4OCwyNS4xNjctMjAuNjUxLDI4Ljh2MC41NCAgICAgYzguMTU3LDMuMjkzLDEyLjY2NiwxMS4xMDMsMTUuNjE3LDIxLjg2NGMzLjY0NywxMy4xODcsNy4yOCwyOC40NjIsOS41MzcsMzIuOTg3SDM5MS45MVY1MTAuMTMzeiBNOTYuNzU3LDM2NS4wODVWMjEuNTA3SDM0NS44MiAgICAgdjExMC4wMTVjMCw1LjkzNSw0LjgwOSwxMC43NSwxMC43NTEsMTAuNzVoOTQuOTYybDAuMDEsMjIyLjgxM0g5Ni43NTd6Ii8+DQoJCTwvZz4NCgkJPHBhdGggZD0iTTM1OS4wODUsMTUxLjA0NGMwLTYuNDA3LTMuMzU5LTExLjk5OC04LjM5My0xNS4yMDhjMi45NjUtNC44NTQsMy42MTctMTEuMDA4LDEuMTcxLTE2LjYxNWwtMy4wMDgtNi44OTcgICAgYy0xLjktNC4zNjUtNS4zNDUtNy41NTctOS40MDgtOS4zMTVjLTAuMTg5LTQuMzM4LTEuODkxLTguNjI3LTUuMjA3LTExLjk0NGwtNS4zMjMtNS4zMjFjLTQuMjcyLTQuMjczLTEwLjE2Mi01LjkxOC0xNS43MDYtNS4wMSAgICBjLTEuMTIyLTUuODktNS4xMDMtMTEuMTA2LTExLjA5Mi0xMy40NmwtNy4wMDktMi43NjRjLTQuOTQ0LTEuOTI5LTEwLjE4My0xLjQ4OC0xNC42MDMsMC42OTYgICAgYy0zLjEzNy0yLjY1MS03LjEyNi00LjMwNy0xMS41NTgtNC4zMDdoLTcuNTM1Yy01LjU2MiwwLTEwLjQ3NSwyLjU3NS0xMy43OTIsNi41MzNjLTQuOTY2LTMuNDEtMTEuNDk5LTQuMzAyLTE3LjQxNS0xLjcxMSAgICBsLTYuODk3LDIuOTk1Yy01LjIyMSwyLjI4NC04LjczNiw2Ljc0Ni0xMC4xMzQsMTEuODQzYy00LjI3MywwLjI0Mi04LjQ3LDEuOTMtMTEuNzI4LDUuMTg3bC01LjMyMiw1LjMyMSAgICBjLTMuNzA0LDMuNzAxLTUuNDA3LDguNjA2LTUuMjMxLDEzLjQ1NmMtNS41NTEsMS4zMTUtMTAuMzk0LDUuMjI0LTEyLjY0MSwxMC45NDhsLTIuNzYzLDdjLTIuMDkzLDUuMzQ0LTEuNCwxMS4wNDIsMS4yNjcsMTUuNjQ4ICAgIGMtMy4zNzEsMy4yNjgtNS40ODgsNy44NDgtNS40ODgsMTIuOTI3djcuNTJjMCw1LjMyMywyLjMzMywxMC4wNTMsNS45OTUsMTMuMzQ3Yy0yLjM5NCw0LjY2Mi0yLjgzNSwxMC4yODktMC41NjQsMTUuNDY1ICAgIGwzLjAwNSw2Ljg5N2MyLjE4MSw1LjAzMiw2LjQxMiw4LjQ3OCwxMS4yNzYsOS45NjdjLTAuNDQxLDUuMTIzLDEuMjIsMTAuMzg1LDUuMTQ1LDE0LjI5OWw1LjMyMiw1LjMyICAgIGM0LjAzMiw0LjA0Nyw5LjUxNSw1LjY5NCwxNC43OTMsNS4wOThjMS43NSw0LjU2OSw1LjI4OSw4LjQyOCwxMC4yMDIsMTAuMzYybDEuMDkyLDAuNDM3TDE3OC41LDMyMmwzNy4zMjEtMjAuNDYzICAgIGMwLDAsOS42MzgsNjAuNzk5LDkuNjM4LDU4Ljk5OWMwLTEuNDU0LDIyLjMwNy04MS42MTMsMzAuOTUzLTExMi41NjFjMS41ODUsMC40NzMsMy4yNjMsMC43NDYsNS4wMDgsMC43NDZoMy4xMzlsMzYuNzQ2LDk3Ljk3MiAgICB2LTUxLjE3bDM1LjUxNywyNC4wNzhsLTMyLjE2My04MS40NTJsMC42LTAuMjU3YzQuMTczLTEuODMsNy4yNTQtNS4wNzYsOS4wNjUtOC44OThjNS4yMDcsMC41MzksMTAuNjE0LTEuMTEzLDE0LjYwNC01LjExOSAgICBsNS4zMjMtNS4zMmM0LjU4OC00LjU4NSw2LjE0Mi0xMS4wMTMsNC43NTUtMTYuOWM0Ljk4OC0xLjYwNiw5LjI1LTUuMjYyLDExLjMwOC0xMC41MDlsMi43NjItNy4wMDQgICAgYzEuNjE2LTQuMTMzLDEuNTMzLTguNDcxLDAuMjIxLTEyLjM2OWMzLjUzOC0zLjI5OSw1Ljc5NS03Ljk3MSw1Ljc5NS0xMy4yMDN2LTcuNTI1SDM1OS4wODV6IE0yNjUuMTg5LDIxOS4wNzEgICAgYy0zNS41LDAtNjQuMjYzLTI4Ljc3NC02NC4yNjMtNjQuMjU3YzAtMzUuNDk1LDI4Ljc2OS02NC4yNTgsNjQuMjYzLTY0LjI1OGMzNS40ODUsMCw2NC4yNTIsMjguNzY5LDY0LjI1Miw2NC4yNTggICAgQzMyOS40NDEsMTkwLjI5NywzMDAuNjc1LDIxOS4wNzEsMjY1LjE4OSwyMTkuMDcxeiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0412%u044B%u043F%u043E%u043B%u043D%u044F%u0442%u044C%20%u043F%u043E%20%u041F%u041A%u041C%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20HTTPS%20Everywhere%0Avar%20HEBtn%20%3D%20document.getElementById%28%27https-everywhere-button%27%29%3B%0Aif%20%28%21HEBtn%29%20return%3B%0AHEBtn.oncontextmenu%20%3De%3D%3E%20this.click%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20soundService%20%3D%20Cc%5B%22@mozilla.org/sound%3B1%22%5D.createInstance%28Ci.nsISound%29%3B%0Aconst%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0Aconst%20directoryService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29%3B%0Aconst%20foStream%20%3D%20Cc%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.createInstance%28Ci.nsIFileOutputStream%29%3B%0Aconst%20fus%20%3D%20Cc%5B%22@mozilla.org/docshell/urifixup%3B1%22%5D.getService%28Ci.nsIURIFixup%29%3B%0Aconst%20sertViewer%20%3D%20Cc%5B%22@mozilla.org/nsCertificateDialogs%3B1%22%5D.getService%28Ci.nsICertificateDialogs%29%3B%0A%0Avar%20img%20%3D%20self.image%2C%20lbl%20%3D%20self.label%2C%20hlp%20%3D%20self.Help%3B%0A%0Alet%20loc%20%3D%20window.gBrowser.selectedBrowser.contentWindow.location%3B%0A%0A//%20%u041E%u043F%u0446%u0438%u0438%3A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%2C%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20HTTPSEverywhereUserRules%2C%20xml-%u0444%u0430%u0439%u043B%20%u0441%20%u043F%u0440%u0430%u0432%u0438%u043B%u043E%u043C%20%u0434%u043B%u044F%20%u0430%u0434%u0434%u043E%u043D%u0430%20HTTPS%20Everywhere%0A//%20%u0428%u0430%u0431%u043B%u043E%u043D%20%u043F%u0440%u0430%u0432%u0438%u043B%20%u043D%u0430%u0445%u043E%u0434%u0438%u0442%u0441%u044F%20%u0432%u043E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%22%u041F%u043E%u043C%u043E%u0449%u044C%22%0Avar%20HTTPSEverywhereRules%20%3D%20true%2C%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u044F%20%28%u0432%20%u0430%u0441%u0441%u043E%u0446%u0438%u0438%u0440%u043E%u0432%u0430%u043D%u043D%u043E%u0439%20%u0441%20xml-%u0444%u0430%u0439%u043B%u0430%u043C%u0438%20%u043F%u0440%u043E%u0433%u0440%u0430%u043C%u043C%u0435%29%20%u0441%u043E%u0437%u0434%u0430%u043D%u043D%u043E%u0435%20%u043F%u0440%u0430%u0432%u0438%u043B%u043E%0A%20%20%20%20HTTPSEverywhereRulesEdit%20%3D%20true%2C%0A//%20%u041F%u0435%u0440%u0435%u043D%u0430%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u043D%u0430%20https%20%u0432%u0435%u0440%u0441%u0438%u044E%20%u0441%u0430%u0439%u0442%u0430%2C%20%u043F%u0440%u0438%20%u043D%u0430%u043B%u0438%u0447%u0438%u0438%20%u0443%20%u043D%u0435%u0433%u043E%20%u0432%u0430%u043B%u0438%u0434%u043D%u043E%u0433%u043E%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20redirect%20%3D%20true%2C%0A//%20%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20showSert%20%3D%20false%2C%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0443%u0432%u0435%u0434%u043E%u043C%u043B%u0435%u043D%u0438%u0435%20%u0441%u043E%20%u0441%u0442%u0430%u0442%u0443%u0441%u043E%u043C%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A//%20%u041A%u043B%u0438%u043A%20%u043F%u043E%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u0448%u043A%u0435%20-%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%20%28%u043F%u0440%u0438%20%u043D%u0430%u043B%u0438%u0447%u0438%u0438%20%u043E%u043D%u043E%u0433%u043E%20%u0443%20%u0441%u0430%u0439%u0442%u0430%29%0A%20%20%20%20alert%20%3D%20true%2C%0A//%20%u0417%u0432%u0443%u043A%u043E%u0432%u043E%u0435%20%u0443%u0432%u0435%u0434%u043E%u043C%u043B%u0435%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0438%20%u0434%u0438%u0430%u043B%u043E%u0433%u0430%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u0430%0A%20%20%20%20alertSound%20%3D%20true%2C%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0432%u043E%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u043C%20%u0443%u0432%u0435%u0434%u043E%u043C%u043B%u0435%u043D%u0438%u0438%20%u043A%u043E%u0434%u044B%20%u0441%u0442%u0440%u0430%u043D%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0439%20%u0446%u0435%u043F%u043E%u0447%u043A%u0438%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0432%0A%20%20%20%20showIssuerCountryCode%20%3D%20true%3B%0A%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20badCertListener%28%29%20%7B%7D%0AbadCertListener.prototype%20%3D%20%7B%0A%20%20getInterface%3A%20function%20%28aIID%29%20%7B%0A%20%20%20%20return%20this.QueryInterface%28aIID%29%3B%0A%20%20%7D%2C%0A%20%20QueryInterface%3A%20function%28aIID%29%20%7B%0A%20%20%20%20if%20%28aIID.equals%28Ci.nsIBadCertListener2%29%20%7C%7C%0A%20%20%20%20%20%20%20%20aIID.equals%28Ci.nsIInterfaceRequestor%29%20%7C%7C%0A%20%20%20%20%20%20%20%20aIID.equals%28Ci.nsISupports%29%29%20%7B%0A%20%20%20%20%20%20return%20this%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20throw%20new%20Error%28Components.results.NS_ERROR_NO_INTERFACE%29%3B%0A%20%20%7D%2C%0A%20%20handle_test_result%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28gSSLStatus%29%20%7B%0A%20%20%20%20%20%20gCert%20%3D%20gSSLStatus.QueryInterface%28Ci.nsISSLStatus%29.serverCert%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20notifyCertProblem%3A%20function%20MSR_notifyCertProblem%28socketInfo%2C%20sslStatus%2C%20targetHost%29%20%7B%0A%20%20%20%20gBroken%20%3D%20true%3B%0A%20%20%20%20gSSLStatus%20%3D%20sslStatus%3B%0A%20%20%20%20this.handle_test_result%28%29%3B%0A%20%20%20%20return%20true%3B%20//%20suppress%20error%20UI%0A%20%20%7D%0A%7D%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20getURI%28%29%20%7B%0A%20%20let%20uri%20%3D%20fus.createFixupURI%28loc.href%2C%200%29%3B%0A%0A%20%20if%20%28%21uri%29%20%7B%0A%20%20%20%20return%20null%3B%0A%20%20%7D%0A%0A%20%20if%20%28uri.scheme%20%3D%3D%20%22http%22%29%20%7B%0A%20%20%20%20uri.scheme%20%3D%20%22https%22%3B%0A%20%20%7D%0A%0A%20%20if%20%28uri.port%20%3D%3D%20-1%29%20%7B%0A%20%20%20%20uri.port%20%3D%20443%3B%0A%20%20%7D%0A%0A%20%20return%20uri%3B%0A%7D%0A%0A//%20chrome%3A//pippki/content/exceptionDialog.js%0Afunction%20getCert%28%29%20%7B%0A%20%20gCert%20%3D%20null%3B%0A%20%20gSSLStatus%20%3D%20null%3B%0A%20%20gChecking%20%3D%20true%3B%0A%20%20gBroken%20%3D%20false%3B%0A%0A%20%20var%20uri%20%3D%20getURI%28%29%3B%0A%20%20var%20req%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%0A%20%20try%20%7B%0A%20%20%20%20if%20%28uri%29%20%7B%0A%20%20%20%20%20%20req.open%28%27GET%27%2C%20uri.prePath%2C%20false%29%3B%0A%20%20%20%20%20%20req.channel.notificationCallbacks%20%3D%20new%20badCertListener%28%29%3B%0A%20%20%20%20%20%20req.send%28null%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20Cu.reportError%28%22Attempted%20to%20connect%20to%20a%20site%20with%20a%20bad%20certificate%20in%20the%20add%20exception%20dialog.%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22This%20results%20in%20a%20%28mostly%20harmless%29%20exception%20being%20thrown.%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Logged%20for%20information%20purposes%20only%3A%20%22%20+%20e%29%3B%0A%20%20%7D%20finally%20%7B%0A%20%20%20%20gChecking%20%3D%20false%3B%0A%20%20%7D%0A%0A%20%20if%20%28req.channel%20%26%26%20req.channel.securityInfo%29%20%7B%0A%20%20%20%20gSSLStatus%20%3D%20req.channel.securityInfo%0A%20%20%20%20%20%20.QueryInterface%28Ci.nsISSLStatusProvider%29.SSLStatus%3B%0A%20%20%20%20gCert%20%3D%20gSSLStatus.QueryInterface%28Ci.nsISSLStatus%29.serverCert%3B%0A%20%20%7D%0A%7D%3B%0A%0Afunction%20createRule%28%29%20%7B%0A%20%20//%20http%3A//stackoverflow.com/questions/6449340/how-to-get-top-level-domain-base-domain-from-the-url-in-javascript%0A%20%20let%20domain%20%3D%20loc.host.match%28/%5B-%5Cw%5D+%5C.%28%3F%3A%5B-%5Cw%5D+%5C.xn--%5B-%5Cw%5D+%7C%5B-%5Cw%5D%7B3%2C%7D%7C%5B-%5Cw%5D+%5C.%5B-%5Cw%5D%7B2%7D%29%24/i%29%5B0%5D%3B%0A%0A%20%20var%20rule%20%3D%20convertFromUnicode%28%22UTF-8%22%2C%20hlp.replace%28/%5C%5Bdomain%5C%5D/g%2C%20domain%29%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%20.replace%28/%5C%5Bdomainesc%5C%5D/g%2C%20domain.replace%28/%5C./g%2C%20%27%5C%5C.%27%29%29%29%3B%20%0A%0A%20%20var%20file%20%3D%20directoryService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20file.append%28%22HTTPSEverywhereUserRules%22%29%3B%0A%20%20file.append%28domain%20+%20%27.xml%27%29%3B%0A%20%20foStream.init%28file%2C%200x02%7C0x08%7C0x20%2C%200666%2C%200%29%3B%0A%20%20foStream.write%28rule%2C%20rule.length%29%3B%0A%20%20foStream.close%28%29%3B%0A%20%20HTTPSEverywhereRulesEdit%20%26%26%20file.launch%28%29%3B%0A%7D%3B%0A%0Afunction%20getCountries%28%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%2C%20%7BSSLStatus%7D%20%3D%20gBrowser.securityUI.QueryInterface%28Ci.nsISSLStatusProvider%29%3B%0A%20%20%20%20var%20tree%20%3D%20Cc%5B%22@mozilla.org/security/nsASN1Tree%3B1%22%5D.createInstance%28Ci.nsIASN1Tree%29%3B%0A%0A%20%20%20%20for%28var%20cert%20%3D%20SSLStatus.serverCert%3B%20cert%3B%20cert%20%3D%20cert.issuer%29%20%7B%0A%20%20%20%20%20%20tree.loadASN1Structure%28cert.ASN1Structure%29%3B%0A%20%20%20%20%20%20for%28var%20res%2C%20ind%20%3D%200%3B%20ind%20%3C%20tree.rowCount%3B%20ind++%29%0A%20%20%20%20%20%20%20%20if%20%28tree.getCellText%28ind%2C%20%7B%7D%29%20%3D%3D%20%22Subject%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20res%20%3D%20tree.getDisplayData%28ind%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20array%20%3D%20res.split%28%22%5Cn%22%29%3B%0A%20%20%20%20%20%20var%20country%20%3D%20array.find%28str%20%3D%3E%20str.startsWith%28%22C%20%3D%20%22%29%29%3B%0A%20%20%20%20%20%20result.unshift%28country%20%3F%20country.slice%284%29%20%3A%20%22%3F%3F%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result.join%28%22-%22%29%3B%0A%0A%20%20%7D%20catch%28ex%29%20%7B%7D%0A%7D%3B%0A%0Afunction%20viewCert%28%29%20%7B%0A%20%20getCert%28%29%3B%0A%0A%20%20if%20%28%21gCert%20%7C%7C%20%21gSSLStatus%29%20%7B%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%20%u043D%u0435%20%u043C%u043E%u0436%u0435%u0442%20%u0431%u044B%u0442%u044C%20%u043F%u043E%u043B%u0443%u0447%u0435%u043D%21%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%0A%20%20let%20cns%20%3D%20showIssuerCountryCode%20%3F%20%27%28%27%20+%20getCountries%28%29%20+%20%27%29%27%20%3A%20%27%27%3B%0A%0A%20%20if%20%28showSert%29%20%7B%0A%20%20%20%20sertViewer.viewCert%28window%2C%20gCert%29%3B%0A%20%20%20%20alertSound%20%26%26%20soundService.playEventSound%28%27EVENT_ALERT_DIALOG_OPEN%27%29%3B%0A%20%20%7D%0A%0A%20%20var%20sertListener%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28aSubject%2C%20aTopic%2C%20aData%29%20%7B%0A%20%20%20%20%20%20if%20%28aTopic%20%21%3D%20%27alertclickcallback%27%29%20return%3B%0A%20%20%20%20%20%20sertViewer.viewCert%28window%2C%20gCert%29%3B%0A%20%20%20%20%20%20alertSound%20%26%26%20soundService.playEventSound%28%27EVENT_ALERT_DIALOG_OPEN%27%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20if%20%28gSSLStatus.isUntrusted%0A%20%20%20%20%20%20%7C%7C%20gSSLStatus.isDomainMismatch%0A%20%20%20%20%20%20%7C%7C%20gSSLStatus.isNotValidAtThisTime%29%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0430%u0439%u0442%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%20%u043D%u0435%u0432%u0430%u043B%u0438%u0434%u043D%u044B%u0439%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%21%20%27%20+%20cns%20+%20%27%5Cn%u041D%u0430%u0436%u043C%u0438%u0442%u0435%20%u0434%u043B%u044F%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%27%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20true%2C%20null%2C%20sertListener%2C%20%22%22%29%3B%0A%20%20else%20%7B%0A%20%20%20%20if%20%28loc.protocol%20%21%3D%20%27https%3A%27%29%20%7B%0A%20%20%20%20%20%20redirect%20%26%26%20%28loc.protocol%20%3D%20%27https%27%29%3B%0A%20%20%20%20%20%20HTTPSEverywhereRules%20%26%26%20createRule%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20alert%20%26%26%20alertsService.showAlertNotification%28img%2C%20lbl%20+%20loc.host%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%u0421%u0430%u0439%u0442%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%20%u0432%u0430%u043B%u0438%u0434%u043D%u044B%u0439%20%u0441%u0435%u0440%u0442%u0438%u0444%u0438%u043A%u0430%u0442%21%20%27%20+%20cns%20+%20%27%5Cn%u041D%u0430%u0436%u043C%u0438%u0442%u0435%20%u0434%u043B%u044F%20%u043F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%u0430%27%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20true%2C%20null%2C%20sertListener%2C%20%22%22%29%3B%0A%20%20%7D%0A%7D%3B%0AviewCert%28%29%3B%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%3Cruleset%20name%3D%22%28USER%20RULE%29%20%5Bdomain%5D%22%3E%0A%3Ctarget%20host%3D%22%5Bdomain%5D%22/%3E%0A%3Ctarget%20host%3D%22*.%5Bdomain%5D%22/%3E%0A%3Csecurecookie%20host%3D%22%5E%28%3F%3A.*%5C.%29%3F%5Bdomainesc%5D%24%22%20name%3D%22.+%22/%3E%0A%3Crule%20from%3D%22%5Ehttp%3A//%22%20to%3D%22https%3A//%22/%3E%0A%3C/ruleset%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Спасибки, соответственно, Dumby. |
firefan > 05-07-2016 21:25:02 |
turbot, Dumby, вы лучшие, спасибо! Есть небольшая особенность: если в поле Issuer больше 4 строк, то страна отображается как ??. Примеры: https://vk.com https://www.livejournal.com |
bunda1 > 07-07-2016 15:37:02 |
lokiju просит помочь с кодом Link Tooltips: lokiju пишет
|
turbot > 07-07-2016 16:35:10 |
firefan пишет
Ну, там все правильно: параметр "country" - отсутствует: Subject - на Issuer. bunda1 пишет
У меня все корректно работает. |
voqabuhe > 07-07-2016 16:46:41 |
bunda1 пишет
А как у тебя в тултипе код кнопки возникает, как на втором скрине? |
turbot > 07-07-2016 17:11:25 |
voqabuhe |
voqabuhe > 07-07-2016 17:29:22 |
turbot |
turbot > 07-07-2016 17:40:23 |
Дык, смысл? В личку отправил. |
voqabuhe > 07-07-2016 17:53:57 |
turbot |
bunda1 > 07-07-2016 19:55:10 |
lokiju пишет
Попробуй: Выделить код Код:// Добавить подсказки к ссылкам на странице, от 07.07.2016. ................. addEventListener('mouseenter', (e, el = e.target)=> { var url = XULBrowserWindow.overLink; if (url) el.title = url; }, true, gBrowser); |
lokiju > 07-07-2016 22:12:37 |
bunda1, спасибо. Но у меня ваш код вобще не работает.Попробую ещё завтра с полной очисткой истории и перезапуском ОС turbot пишет
Нет. Это бесчётное количество раз правленный кусочками скрипт Greasemonkey Linkify Plus(Mar1,2013) Выделить код Код:// ==UserScript== // @name Linkify Plus(Mar1,2013) // @version 2.1.4 // @namespace http://arantius.com/misc/greasemonkey/ // @description Turn plain text URLs into links. Supports http, https, ftp, email addresses. // @include * // @exclude http://www.google.tld/search* // @exclude https://www.google.tld/search* // @exclude http://music.google.com/* // @exclude https://music.google.com/* // @exclude http://mail.google.com/* // @exclude https://mail.google.com/* // @exclude http://docs.google.com/* // @exclude https://docs.google.com/* // @exclude http://mxr.mozilla.org/* // ==/UserScript== // // Copyright (c) 2011, Anthony Lieuallen // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of Anthony Lieuallen nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /******************************************************************************* Loosely based on the Linkify script located at: http://downloads.mozdev.org/greasemonkey/linkify.user.js Version history: Version 2.1.4 (Aug 12, 2012): - Bug fix for when (only some) nodes have been removed from the document. Version 2.1.3 (Oct 24, 2011): - More excludes. Version 2.1.2: - Some bug fixes. Version 2.1.1: - Ignore certain "highlighter" script containers. Version 2.1: - Rewrite the regular expression to be more readable. - Fix trailing "." characters. Version 2.0.3: - Fix infinite recursion on X(HT)ML pages. Version 2.0.2: - Limit @include, for greater site/plugin compatibility. Version 2.0.1: - Fix aberrant 'mailto:' where it does not belong. Version 2.0: - Apply incrementally, so the browser does not hang on large pages. - Continually apply to new content added to the page (i.e. AJAX). Version 1.1.4: - Basic "don't screw up xml pretty printing" exception case Version 1.1.3: - Include "+" in the username of email addresses. Version 1.1.2: - Include "." in the username of email addresses. Version 1.1: - Fixed a big that caused the first link in a piece of text to be skipped (i.e. not linkified). *******************************************************************************/ var notInTags = [ 'a', 'code', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea']; var textNodeXpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+")]"; // Built based on: // - http://en.wikipedia.org/wiki/URI_scheme // - http://www.regular-expressions.info/regexbuddy/email.html var urlRE = new RegExp( '(' // leading scheme:// or "www." + '\\b([a-z][-a-z0-9+.]+://|www\\.)' // everything until non-URL character + '[^\\s\'"<>()]+' + '|' // email + '\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b' + ')', 'gi'); var queue = []; /******************************************************************************/ linkifyContainer(document.body); document.body.addEventListener('DOMNodeInserted', function(event) { linkifyContainer(event.target); }, false); /******************************************************************************/ function linkifyContainer(container) { // Prevent infinite recursion, in case X(HT)ML documents with namespaces // break the XPath's attempt to do so. (Don't evaluate spans we put our // classname into.) if (container.className && container.className.match(/\blinkifyplus\b/)) { return; } var xpathResult = document.evaluate( textNodeXpath, container, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var i = 0; function continuation() { var node = null, counter = 0; while (node = xpathResult.snapshotItem(i++)) { var parent = node.parentNode; if (!parent) continue; // Skip styled <pre> -- often highlighted by script. if ('PRE' == parent.tagName && parent.className) continue; linkifyTextNode(node); if (++counter > 50) { return setTimeout(continuation, 0); } } } setTimeout(continuation, 0); } function linkifyTextNode(node) { // fix for 4chan // traverse all siblings that are separated from this one with a <wbr> var toRemove = []; var addtxt = ''; var next; var current = node; while (true) { next = current.nextSibling; if (next == null) { break; } if (next.tagName != 'WBR') { break; } toRemove.push(next); next = next.nextSibling; if (next == null || next.nodeType != Node.TEXT_NODE) { toRemove.pop(); break; } toRemove.push(next); addtxt += next.textContent; current = next; } var i, l, m; var txt = node.textContent + addtxt; var span = null; var p = 0; while (m = urlRE.exec(txt)) { if (null == span) { // Create a span to hold the new text with links in it. span = document.createElement('span'); span.className = 'linkifyplus'; } //get the link without trailing dots l = m[0].replace(/\.*$/, ''); var lLen = l.length; //put in text up to the link span.appendChild(document.createTextNode(txt.substring(p, m.index))); //create a link and put it in the span a = document.createElement('a'); a.className = 'linkifyplus'; a.appendChild(document.createTextNode(l)); if (l.indexOf(":/") < 0) { if (l.indexOf("@") > 0) { l = "mailto:" + l; } else { l = "http://" + l; } } a.setAttribute('href', l); span.appendChild(a); //track insertion point p = m.index+lLen; } if (span) { //take the text after the last link span.appendChild(document.createTextNode(txt.substring(p, txt.length))); //replace the original text with the new span try { toRemove.forEach(function (n) { node.parentNode.removeChild(n); }); node.parentNode.replaceChild(span, node); } catch (e) { console.error(e); console.log(node); } } } var style = document.createElement('style'); style.type = 'text/css'; style.appendChild(document.createTextNode('a.linkifyplus {color: #006400!important; background-color: #FFFF00!important;}')); document.getElementsByTagName('head')[0].appendChild(style); |
bunda1 > 08-07-2016 09:01:58 |
lokiju пишет
У меня работает на разных версиях Firefox, проверь на чистом профиле. |
firefan > 16-07-2016 13:07:36 |
turbot пишет
Поменял. Благодарствую. Господа, помогите пожалуйста с такой задачей: Выделить код Код: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%3ESave%20Favicon%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%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*/%0Avar%20orgImg%3Dthis.image%3B%0Athis.onLeftClick%3Dfunction%28%29%0A%7B%0A%20%20%20this.image%20%3D%20gBrowser.selectedTab.image%3B%0A%7D%0A%0Athis.onMiddleClick%3Dfunction%28%29%0A%7B%0A%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28gBrowser.selectedTab.image%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%20function%28%29%20%7B%20saveDocument%28window.content.document%29%3B%0A%20%20%20%20%20%20%20%20gBrowser.removeTab%28gBrowser.selectedTab%29%3B%20%20%7D%2C%201000%29%3B%0A%7D%0A%0Athis.onRightClick%3Dfunction%28%29%0A%7B%0A%20%20%20this.image%3DorgImg%3B%0A%7D%0A%0A//**********%20No%20need%20to%20make%20any%20changes%20to%20below%20code%20**************%0Athis.execute%3D%20function%28evt%29%0A%7B%0A%0A%20%20%20if%28evt.shiftKey%29%20%7B%0A%20%20%20%20%20%20this.showPopup%28this%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%7D%0A%0A%20%20%20switch%28evt.button%29%0A%20%20%20%7B%0A%20%20%20%20%20%20case%200%3A%0A%20%20%20%20%20%20%20%20%20this.onLeftClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20this.onMiddleClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20this.onRightClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%7D%0A%0A%0Athis.showPopup%20%3D%20function%28node%29%20%7B%0A%20%20var%20popup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%20%20var%20x%20%3D%20node.boxObject.x%3B%0A%20%20var%20y%20%3D%20node.boxObject.y%20+%20node.boxObject.height%3B%0A%20%20document.popupNode%20%3D%20node%3B%0A%20%20popup.showPopup%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%0A%0Athis.setAttribute%28%22onclick%22%2C%20%22this.execute%28event%29%3B%22%29%3B%0A//this.setAttribute%28%22context%22%2C%20%22%22%29%3B%0Athis.tooltipText%20%3D%20this.label%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 Я хотел бы, чтобы иконка не сохранялась, а отправлялась расширению Image Assistant (расширение по правому клику из контекстного меню открывает в стороннем приложении выбранную картинку). Заранее спасибо за помощь. |
roadrunner > 20-07-2016 03:01:58 |
Перестала работать кнопка Http-Logger в Firefox 47, поправьте пожалуйста кто может. |
turbot > 20-07-2016 14:18:23 |
firefan пишет
Поменяйте там еще: скрытый текст Выделить код Код:function getCountries() { try { var result = []; for(var cert = gCert; cert; cert = cert.issuer) { tree.loadASN1Structure(cert.ASN1Structure); for(var res, ind = 0; ind < tree.rowCount; ind++) if (tree.getCellText(ind, {}) == "Issuer") { res = tree.getDisplayData(ind); break; } var array = res.split("\n"); var country = array.find(str => str.startsWith("C = ")); result.unshift(country ? country.slice(4) : "??"); } return result.join("-"); } catch(ex) {} }; А то не будет показывать при невалидном сертификате. Кстати, у "Issuer" тоже не всегда страна прописана. Например, у сертификатов от Let's Encrypt. |
firefan > 22-07-2016 20:56:46 |
Спасибо большое! turbot, не могли бы вы ответить на пару вопросов по поводу вашей кнопки Быстрое переключение параметров about:config 1) Как указать \ (слеш) для параметра string? К сожалению, не могу указать путь там, слеши съедаются. |
turbot > 22-07-2016 21:29:07 |
firefan Выделить код Код: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%3EIndexedDB%20on/off%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTYgMTYiPgo8ZyBmaWxsPSIjZWRmMGYxIj4KPHBhdGggZD0ibTEuMywxMi41di0yLjRjMCwwIDAsMi41IDYuNywyLjUgNi43LDAgNi43LTIuNSA2LjctMi41djIuNGMwLDAgMCwyLjctNi44LDIuNy02LjYsMC02LjYtMi43LTYuNi0yLjd6Ii8+CjxwYXRoIGQ9Im0xNC43LDMuNGMwLTEuNC0zLTIuNS02LjctMi41cy02LjcsMS4xLTYuNywyLjVjMCwuMiAwLC4zIC4xLC41LS4xLS4zLS4xLS40LS4xLS40djEuNWMwLDAgMCwyLjcgNi43LDIuNyA2LjcsMCA2LjgtMi43IDYuOC0yLjd2LTEuNmMwLC4xIDAsLjItLjEsLjUtMC0uMi0wLS4zLTAtLjV6Ii8+CjxwYXRoIGQ9Im0xLjMsOC43di0yLjRjMCwwIDAsMi41IDYuNywyLjUgNi43LDAgNi43LTIuNSA2LjctMi41djIuNGMwLDAgMCwyLjctNi44LDIuNy02LjYtMC02LjYtMi43LTYuNi0yLjd6Ii8+CjwvZz4KPC9zdmc+Cg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20s%20%3D%20%27dom.indexedDB.enabled%27%3B%0Athis._handleClick%20%3D%28%29%3D%3E%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20val%20%3D%20cbu.getPrefs%28s%29%3B%20%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20var%20label%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-text%22%29%3B%0A%20%20%20icon.style.filter%20%3D%20val%20%3F%20%27%27%20%3A%20%27opacity%2850%25%29%27%3B%20%20%20%0A%20%20%20label.style.filter%20%3D%20val%20%3F%20%27%27%20%3A%20%27opacity%2850%25%29%27%3B%20%20%20%0A%20%20%20self.checked%20%3D%20val%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%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 |
firefan > 22-07-2016 22:31:30 |
turbot пишет
Я видимо не очень понял принцип, но такой набор знаков /\ \/ \\// //\\ на выходе дает / / // // Помогите пожалуйста с конкретным примером: turbot пишет
Спасибо за пример. Как я понял, там не string, а boolean. Не совсем понятно, что поменять, чтобы это работало для изменения string. |
turbot > 22-07-2016 22:53:23 |
firefan пишет
Ух, косяк. Пока не могу сообразить. Надо подумать. UPD: Пока могу предложить \\\\ - прописывать для одного обратного слеша.
Тоже надо подумать. |
firefan > 22-07-2016 23:24:52 |
turbot пишет
То, что нужно. Спасибо вам! |
turbot > 22-07-2016 23:35:57 |
firefan |
firefan > 22-07-2016 23:48:01 |
turbot Сделать бы теперь еще, чтобы этот мой единственный параметр менялся просто по клику на кнопку, а не через меню. |
turbot > 23-07-2016 00:35:59 |
firefan пишет
Ну, это тоже костыли. В выходные подумаю, что сделать. firefan пишет
Выделить код Код: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%3ETest%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iQ2FwYV8xIgogICB4PSIwcHgiCiAgIHk9IjBweCIKICAgdmlld0JveD0iMCAwIDU4LjIwMSA1OC4yMDEiCiAgIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU4LjIwMSA1OC4yMDE7IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIxMzcyNSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iMTQ5NzQ5LnN2ZyI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNDciPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnM0NSIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY4OSIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzQzIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSI0LjA1NDkxMzEiCiAgICAgaW5rc2NhcGU6Y3g9IjI5LjEwMDUiCiAgICAgaW5rc2NhcGU6Y3k9IjI5LjEwMDUiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJDYXBhXzEiIC8+PGcKICAgICBpZD0iZzMiCiAgICAgc3R5bGU9ImZpbGw6Izc5N2M3ZjtmaWxsLW9wYWNpdHk6MSI+PHBhdGgKICAgICAgIGQ9Ik0zMS43MDcsMzMuMDdjLTAuODcsMC4wMjctMS43NCwwLjA0Mi0yLjYwNiwwLjA0MmMtMC44NjksMC0xLjc0Mi0wLjAxNC0yLjYxNC0wLjA0MiAgIGMtNy4zNDEtMC4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxN0M3LjEwNCwyOS42ODUsNS40MDksMjguODk5LDQuMSwyOHY3LjExMXYwLjV2MC41VjM3LjRjMi44NDYsMi45NzEsMTIuMzk0LDUuNzExLDI1LDUuNzExICAgczIyLjE1NC0yLjc0LDI1LTUuNzExdi0xLjI4OXYtMC41di0wLjVWMjhjLTEuMzE4LDAuOTA1LTMuMDI4LDEuNjk3LTUuMDI1LDIuMzY3QzQ0Ljg2NSwzMS44MzksMzkuMDI3LDMyLjg3LDMxLjcwNywzMy4wN3oiCiAgICAgICBpZD0icGF0aDUiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjxwYXRoCiAgICAgICBkPSJNNC4xLDE0Ljg4OVYyMnYwLjVWMjN2MS4yODljMi42MzgsMi43NTQsMTEuMDMzLDUuMzEsMjIuMjg2LDUuNjY4YzAuMTE1LDAuMDA0LDAuMjMzLDAuMDA1LDAuMzQ5LDAuMDA4ICAgYzAuMzI2LDAuMDA5LDAuNjUxLDAuMDE4LDAuOTgyLDAuMDIzQzI4LjE3NCwyOS45OTYsMjguNjM1LDMwLDI5LjEsMzBzMC45MjYtMC4wMDQsMS4zODMtMC4wMTEgICBjMC4zMy0wLjAwNSwwLjY1Ni0wLjAxNCwwLjk4Mi0wLjAyM2MwLjExNi0wLjAwMywwLjIzNC0wLjAwNSwwLjM0OS0wLjAwOGMxMS4yNTMtMC4zNTksMTkuNjQ4LTIuOTE1LDIyLjI4Ni01LjY2OFYyM3YtMC41VjIyICAgdi03LjExMUM0OS4yMzMsMTguMjMyLDM4Ljk0NCwyMCwyOS4xLDIwUzguOTY4LDE4LjIzMiw0LjEsMTQuODg5eiIKICAgICAgIGlkPSJwYXRoNyIKICAgICAgIHN0eWxlPSJmaWxsOiM3OTdjN2Y7ZmlsbC1vcGFjaXR5OjEiIC8+PHBhdGgKICAgICAgIGQ9Ik01My45NjUsOC41NDJDNTIuODQzLDQuMjQxLDQ0LjIxNSwwLDI5LjEsMEMxNC4wMjMsMCw1LjQwNCw0LjIyLDQuMjQ3LDguNTFDNC4xNjIsOC42NTcsNC4xLDguODE4LDQuMSw5djAuNXYxLjgwNiAgIEM2LjkzNywxNC4yNjcsMTYuNDE3LDE3LDI5LjEsMTdzMjIuMTY0LTIuNzMzLDI1LTUuNjk0VjkuNVY5QzU0LjEsOC44MzIsNTQuMDQ0LDguNjgxLDUzLjk2NSw4LjU0MnoiCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjxwYXRoCiAgICAgICBkPSJNNC4xLDQxdjguMjAxYzAsMC4xNjIsMC4wNDMsMC4zMTUsMC4xMTcsMC40NTFjMS4xODEsNC44OTUsMTEuNzQ3LDguNTQ5LDI0Ljg4Myw4LjU0OWMxMy4xMDYsMCwyMy42NTUtMy42MzksMjQuODc1LTguNTE2ICAgYzAuMDgtMC4xNDQsMC4xMjUtMC4zMDksMC4xMjUtMC40ODR2LTguMTk5Yy00LjEzNSwyLjkxMS0xMi42NTUsNS4xOTktMjUsNS4xOTlDMTYuNzU0LDQ2LjIwMSw4LjIzNCw0My45MTEsNC4xLDQxeiIKICAgICAgIGlkPSJwYXRoMTEiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjwvZz48ZwogICAgIGlkPSJnMTMiIC8+PGcKICAgICBpZD0iZzE1IiAvPjxnCiAgICAgaWQ9ImcxNyIgLz48ZwogICAgIGlkPSJnMTkiIC8+PGcKICAgICBpZD0iZzIxIiAvPjxnCiAgICAgaWQ9ImcyMyIgLz48ZwogICAgIGlkPSJnMjUiIC8+PGcKICAgICBpZD0iZzI3IiAvPjxnCiAgICAgaWQ9ImcyOSIgLz48ZwogICAgIGlkPSJnMzEiIC8+PGcKICAgICBpZD0iZzMzIiAvPjxnCiAgICAgaWQ9ImczNSIgLz48ZwogICAgIGlkPSJnMzciIC8+PGcKICAgICBpZD0iZzM5IiAvPjxnCiAgICAgaWQ9Imc0MSIgLz48L3N2Zz4%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20s%20%3D%20%27CB.test%27%3B%0Avar%20vals%20%3D%20%5B%0A%20%20%20%22test%5C%5Ctest%5C%5C1%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C2%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C3%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C4%22%0A%5D%0Avar%20userChoice%20%3D%20vals%5B1%5D%3B%0A%0Athis._handleClick%20%3D%28%29%3D%3E%20cbu.setPrefs%28s%2C%20%28vals.length%20%3C%3D%20vals.indexOf%28cbu.getPrefs%28s%29%29%20+%201%29%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%20%20%20%20%20%20%3F%20vals%5B0%5D%20%3A%20vals%5Bvals.indexOf%28cbu.getPrefs%28s%29%29%20+%201%5D%29%3B%0A%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20val%20%3D%20cbu.getPrefs%28s%29%3B%20%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20var%20label%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-text%22%29%3B%0A%20%20%20icon.style.filter%20%3D%20val%20%3D%3D%20userChoice%20%3F%20%27%27%20%3A%20%27hue-rotate%28140deg%29%20saturate%2810%29%20brightness%28.85%29%20contrast%283%29%27%3B%20%20%20%0A%20%20%20label.style.color%20%3D%20val%20%3D%3D%20userChoice%20%3F%20%27%27%20%3A%20%27red%27%3B%0A%20%20%20self.tooltipText%20%3D%20s%20+%20%27%3B%27%20+%20val%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%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 |
firefan > 23-07-2016 01:01:11 |
turbot пишет
turbot |
Dumby > 23-07-2016 22:37:59 |
Раскукоживатель коротких ссылок turbot пишет
ЛКМ ? |
turbot > 23-07-2016 23:04:22 |
Ух, поправил. Спасибо. |
turbot > 24-07-2016 19:19:39 |
firefan turbot пишет
Исправил кое-как: Быстрое переключение параметров about:config, от 24.07.2016 |
oleg.sgh > 04-08-2016 16:10:28 |
Кнопка Автоматически открыть - закрыть меню опять стала открывать лишнее. Исправьте пожалуйста, кто может. |
Caddy > 04-08-2016 20:35:07 |
Форсировал в |
Ultima2m > 04-08-2016 20:40:48 |
Caddy пишет
Некоторые дополнения несовместимы с этим режимом. |
Caddy > 04-08-2016 20:50:47 |
Ultima2m |
bunda1 > 04-08-2016 21:58:30 |
Caddy пишет
Наверно упомянутые кнопки можно исправить для совместимости с мультипроцессностю, но я пока не знаю как. |
Caddy > 04-08-2016 23:28:13 |
bunda1 |
Saenko > 05-08-2016 07:59:40 |
Доброго дня! Парни, где-то попадалась кнопка для всех about-ов. Может кто юзает - будьте добреньки, поделитесь Спасибо... |
vitalii201 > 05-08-2016 08:09:40 |
Saenko, не помню чья Выделить код Код: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%3Eabout%3Aabout%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKoSURBVDiNjZNLaJRnFIaf75vvy2UGTWr8NYkxl0IFUYkNXSSZQNWFWlxIEVy1FLLo0i4adddVXRnS4kJwYxci2GaRTWlSFGKFGRXNmFBF62VMO4TENBdjMv9k5p//Oy4SLzgqHs7yPc95eTlHiQjvqniPbVYRzuBoR+FQDEvId4neIPNCY945DayNVff/8NUvn9XXNJMv5hhKnTvYP3ymHmj/IMBSbmHjjP8fycxv+MEzGqtatUI1vK7R7wM4J32XUv3Li/l5imGBkbtXlsMw/PF1jXozg3iP3aM0Z8XRBFDr1fl7Og9EnTguXx30p/6fjAIozb/i6C4BdB2z6QOfH27ZUFNL0QUELs/tycs4J2zdGEerCADTM1P8df3PxyUZiKPF8zyGHpwGFLC6QCCRuYA4QQQ6mw4hjhYT77GN2qiBWFnV5sXc0xMAgfKx5foVYKURB2vLPbxoM8auODE6ws/fH+77dHtjhxp5OHzywpWf/IIsRk25Rq0CRFY4UVNNndkmqZFRf3YuWaYUS0aE3RP5MXX3/iCOgu3Y1WYfL90sdSDgxRoYTY5mZ2anjwC/AqEBdM4tMJ4dwYs1YiOGSBkYrVHqlQNxoC34OV8BdxK9gQ+guo7bwdYdrXu92nU6nR7Pzc/PSXxfazTj30IpRaWpIqbX4UQoBDkWJlRwLzVeLBTyGs2UcUX5duzvsfPqNpvDovQhnBIdELGaWFk1hclYmLx2fxmFbNm5qXJNvdi2DQ1WAsO1P/5petshyf6v25gJ0nxUUUeiP531s/kvAcor7MDOL2pjz3JzVKpqUoMTpb8QsSqdeTT98fomjyDv8LP5aKI3uAgQP2orCkGAVRVMZxbQhnQJIAzkm3s3Js6GSfkEQEd4+bpa8+TW71P1ANqoB65I93OA2DgV+Z+omgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.tooltipText%20%3D%20%22%u041B%20%3D%20about%3Aconfig%20%7C%20%u0421%20%3D%20about%3Asupport%20%7C%20%u041F%20%3D%20about%3Aabout%22%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%29%20%7B%0A//%20%u041F%u041A%u041C%0A%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aabout%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A//%20%u0421%u041A%u041C%0A%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Asupport%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%200%29%20%7B%0A//%20%u041B%u041A%u041C%0A%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aconfig%22%29%3B%0A%20%20%20%20%7D%0A%7D%3B%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 Выделить код Код:this.tooltipText = "Л = about:config | С = about:support | П = about:about"; this.onclick = function(event) { if(event.button == 2) { // ПКМ getBrowser (). selectedTab = getBrowser (). addTab ("about:about"); } else if(event.button == 1) { // СКМ getBrowser (). selectedTab = getBrowser (). addTab ("about:support"); } else if(event.button == 0) { // ЛКМ getBrowser (). selectedTab = getBrowser (). addTab ("about:config"); } }; |
Ultima2m > 05-08-2016 08:39:42 |
Saenko пишет
Вот еще одна скрытый текст Выделить код Код: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%3EAbout%3A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADC0lEQVQ4jX1TXUhTARj9iJCI6LGiJ+uhP3uICHuohygIiQr6ESoiiKKkiDK0h1Ja0g+mYsuyHzPbBg3vmlttbrapU++dOfe/dLnd6U1rm6mb1la3WtvpoYhM6byf833f+c4hmgUOh2O+x+PZbLM5d1qtPYfz8/OziIg0GtP2xwr1eiKaMxvvD+x2+9qpqSkkk0kMBEIpIlrIMIY14cgHMRz+AIfLP15Tq6iYISQIwhIiolaWXZ5IJAEA/jfBWE5OzgKvL/AKADKZDAK8IB4vKNo6jfzli3hjaCiaajFz55RK5dJYfBIA4PX1D6u1poui+BWp1A+MjcUhKas6P2Ntny9kZrtew+3hMfkxEY5Ex5DJZPC6nwcfGkEyISIW+4SH9Y2NRDR3hoBc3rTW4+VT6XQaXHs7gvwwkkkRg0PvMTH+EdFoHM1G67e8vAPZsxonCO/Xff+eShsZBcYMJXA4/RiNxuFyBTAwMAI+GEZbuxOFxVWKacTR0fHdocF3auFtVJiMx9AjWQn45ejscoLnwzCZbdA874DbFUJvbwDXy+Uprtvz0tBiLZdcu7uOPD6+3uXkEYlOgPe7EalbCHRthMHwi9Sk6cBIzxkwjAkc2wej0YZGVSvi8U8oOFV2gdTqlkMyha5Zq++MhYffglctBnw5UDNPYOX6IJMbkJ7IhalFCpPJAY7tQ+19DUqv3ON37D6Z9+eUq1fv5fbY+tNefSHE8DIoG2Xg2D7UN+jxOVmN8UAe7kgfob3NjQaZAfmHihv+MTGy6pnWIlosLthfXILy1kHoFdtgUa9GwLwcnFaK+oZmFF2UWjdt2bdh2istFstcry9kf9Xdj5raZ5DWqNJ6fTdYkxmsuQ06XTeqbzO4WaFAs5ETsrOz502brtPp5jdpO2yMqiNdWFz+IHfzjhXVNU81l6/UoVTyAPsPnC2RKV5UeLxBWDpd2LP/zN4ZOSgokiw6crR4J/0uiN7InnC7g2BUrQkiWkBEdPSkpGTX3tPniChr1jD9jcrKx2vKrj1UHSu4XEf/qe9PQrcUGXGfapEAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%28Mouse%20Click%20settings%29%20.......................................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aconfig%22%29%3B%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043F%u043E%u043C%u043D%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20....%0A%20%20%20%20%20%20%20%20%20%20var%20clip%20%3D%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20window.content.focus%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20goDoCommand%28%22cmd_copy%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%20%27about%3Aconfig%27%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20o%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0436%u0434%u0435%u0442%20%u043F%u043E%u043A%u0430%20%u043E%u0442%u043A%u0440%u043E%u0435%u0442%u0441%u044F%20%22about%3Aconfig%22%2C%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20....%0A%20%20%20%20%20%20%20%20%20%20gBrowser.addEventListener%28%22pageshow%22%2C%20function%28e%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%22pageshow%22%2C%20arguments.callee%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.document.getElementById%28%22textbox%22%29.value%20%3D%20gClipboard.read%28%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.document.getElementById%28%22textbox%22%29.doCommand%28%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20clip%20%29%20gClipboard.write%28%20clip%20%29%3B%20//%20%u0432%u0435%u0440%u043D%u0443%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0431%u0443%u0444%u0435%u0440%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%0A%7D%3B%0A%0A%20%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20..............................................................................................%0Athis.ss%20%3D%20%5B%0A%20%20%20%20%20%7B%20label%3A%22%u0412%u0441%u0435%20about%3A%22%2C%20value%3A%20%27about%3Aabout%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u041E%20%u043F%u043B%u0430%u0433%u0438%u043D%u0430%u0445%22%2C%20value%3A%20%27about%3Aplugins%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u041D%u043E%u0432%u0430%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%22%2C%20value%3A%20%27about%3Anewtab%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u0430%u043A%20%u0442%u0430%u0431%22%2C%20value%3A%20%27about%3Apreferences%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%20%u043A%u044D%u0448%u0435%22%2C%20value%3A%20%27about%3Acache%27%7D%2C%20%20%20%0A%20%20%20%20%20%7B%20label%3A%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0435%20%u0441%u0435%u0441%u0441%u0438%u0438%22%2C%20value%3A%20%27about%3Asessionrestore%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%u043C%u0438%22%2C%20value%3A%20%27about%3Apermissions%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u0434%u043B%u044F%20%u0440%u0435%u0448%u0435%u043D%u0438%u044F%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%22%2C%20value%3A%20%27about%3Asupport%27%7D%2C%0A%20%20%20%20%20%7B%20label%3A%22%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u0438%u0441%u043F%u043B%u044A%u0437%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043F%u043E%u0434%u0440%u043E%u0431%u043D%u043E%22%2C%20value%3A%20%27about%3Amemory%27%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%0Athis.mObj%20%3D%20custombuttons.getCbContextObj%28this%29%3B%0Athis.init%20%3D%20function%28x%29%20%7B%0A%20%20%20x.mObj.setSub%28%29%3B%0A%20%20%20var%20nItem%20%3D%20%7B%7D%2C%20mItem%20%3D%20%7B%7D%3B%0A%20%20%20document.getElementById%28CB2const.sCBCtxtMenu%29.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20%20for%20%28%20var%20i%20in%20x.ss%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20nItem%20%3D%20new%20x.mObj.getItem%28%29%3B%0A%20%20%20%20%20%20%20%20%20nItem.label%20%3D%20x.ss%5Bi%5D.label%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20nItem.label%20%3D%3D%20%22separator%22%20%29%20var%20nItem%20%3D%20document.createElement%28%22menuseparator%22%29%3B%0A%20%20%20%20%20%20%20%20%20var%20mItem%20%3D%20x.mObj.insertBefore%28nItem%2C%20x.mObj.oMenu.lastChild%29%3B%0A%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27onclick%27%2C%20%27getBrowser%28%29.selectedTab%20%3D%20getBrowser%28%29.addTab%28%22%27%20+%20x.ss%5Bi%5D.value%20+%20%27%22%29%27%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%3B%20%20%20%0A%20%20%20x.mObj.getItem%28%29%3B%0A%20%20%20nItem%20%3D%20x.mObj.getItem%28%29%3B%0A%20%20%20this.separator%20%3D%20x.mObj.insertBefore%28%20nItem%20%2C%20x.mObj.oMenu.lastChild%29%3B%0A%7D%3B%0Athis.init%28this%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20............................................................................................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%27about%3Aconfig%27%20%u0441%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u043E%u0439%20%28%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0439%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%29%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%27about%3Aconfig%27%5Cn%u041F%3A%20%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u0432%u0441%u0435%20about%3A%22%3B%20%20%20%0A%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0432%20%u043C%u0435%u043D%u044E%20About%3Aconfig%20%u043F%u0443%u043D%u043A%u0442%20%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u043B%u044F%20user.js%22%20........................................................................................%0AAboutConfigMultipleSelection%20%3D%20ACMS%20%3D%20%7B%0A%0A%09get%20isThunderbird%28%29%20%7B%0A%09%09return%20Services.appinfo.ID%20%3D%3D%3D%20%22%7B3550f703-e582-4d05-9a08-453d09bdfdc6%7D%22%3B%0A%09%7D%2C%0A%0A%09Init%3A%20function%28%29%20%7B%0A%09%09if%20%28ACMS.isThunderbird%29%0A%09%09%09Services.obs.addObserver%28ACMS.Observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0A%09%09window.addEventListener%28%27DOMContentLoaded%27%2C%20ACMS.Listener%2C%20true%29%3B%0A%0A%09%09addDestructor%28function%28aReason%29%20%7B%0A%09%09%09if%20%28aReason%20%3D%3D%3D%20%22delete%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22update%22%29%20%7B%0A%09%09%09%09if%20%28ACMS.isThunderbird%29%0A%09%09%09%09%09Services.obs.removeObserver%28ACMS.Observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0A%09%09%09%09window.removeEventListener%28%27DOMContentLoaded%27%2C%20ACMS.Listener%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%0A%09Observer%3A%20%7B%0A%09%09observe%3A%20function%28aSubject%2C%20aTopic%2C%20aData%29%20%7B%0A%09%09%09aSubject.addEventListener%28%27load%27%2C%20ACMS.Listener%2C%20true%29%3B%0A%09%09%7D%2C%0A%0A%09%09handleEvent%3A%20function%28aE%29%20%7B%0A%09%09%09aE.target.defaultView.removeEventListener%28%22load%22%2C%20ACMS.Listener%2C%20false%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09Listener%3A%20function%28aE%29%20%7B%0A%09%09var%20doc%20%3D%20aE.target%2C%0A%09%09%09win%3B%0A%09%09if%20%28ACMS.isThunderbird%20%26%26%20%28%21doc%20%7C%7C%20%21doc.location.href.startsWith%28%27chrome%3A//global/content/config.xul%27%29%29%29%0A%09%09%09return%3B%0A%09%09else%20if%20%28%21ACMS.isThunderbird%20%26%26%20%28%21doc%20%7C%7C%20%21doc.location.href.startsWith%28%27about%3Aconfig%27%29%29%29%0A%09%09%09return%3B%0A%09%09if%20%28%21doc.getElementById%28%27configTree%27%29%29%0A%09%09%09return%3B%0A%0A%09%09doc.getElementById%28%27configTree%27%29.setAttribute%28%27seltype%27%2C%20%27multiple%27%29%3B%0A%09%09win%20%3D%20doc.defaultView%3B%0A%0A%09%09var%20contextMenu%20%3D%20doc.getElementById%28%27configContext%27%29%2C%0A%09%09%09mItem%20%3D%20contextMenu.insertBefore%28doc.createElement%28%27menuitem%27%29%2C%20doc.getElementById%28%27copyValue%27%29.nextSibling%29%3B%0A%09%09mItem.id%20%3D%20%27copyAsFunction%27%3B%0A%09%09mItem.setAttribute%28%27label%27%2C%20%27%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u043B%u044F%20user.js%27%29%3B%0A%09%09mItem.setAttribute%28%27accesskey%27%2C%20%27u%27%29%3B%0A%09%09mItem.setAttribute%28%27oncommand%27%2C%20%27copyAsFunction%28%29%3B%27%29%3B%0A%0A%09%09win.getSelected%20%3D%20function%28%29%20%7B%0A%09%09%09var%20arr%20%3D%20%5B%5D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%09%09%09%09k%20%3D%200%2C%0A%09%09%09%09j%20%3D%20win.view.selection.getRangeCount%28%29%2C%0A%09%09%09%09start%20%3D%20%7B%7D%2C%0A%09%09%09%09end%20%3D%20%7B%7D%3B%0A%09%09%09for%20%28i%3B%20i%20%3C%20j%3B%20i++%29%20%7B%0A%09%09%09%09win.view.selection.getRangeAt%28i%2C%20start%2C%20end%29%3B%0A%09%09%09%09for%20%28k%20%3D%20start.value%3B%20k%20%3C%3D%20end.value%3B%20k++%29%20%7B%0A%09%09%09%09%09arr.push%28win.gPrefView%5Bk%5D%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20arr%3B%0A%09%09%7D%3B%0A%0A%09%09win.ResetSelected%20%3D%20function%28%29%20%7B%0A%09%09%09win.getSelected%28%29.forEach%28function%28i%29%20%7B%0A%09%09%09%09win.gPrefBranch.clearUserPref%28i.prefCol%29%3B%0A%09%09%09%7D%29%0A%09%09%7D%3B%0A%0A%09%09win.copyPref%20%3D%20function%28%29%20%7B%0A%09%09%09var%20arr%20%3D%20%5B%5D%3B%0A%09%09%09win.getSelected%28%29.forEach%28function%28i%29%20%7B%0A%09%09%09%09arr.push%28i.prefCol%20+%20%27%3B%27%20+%20i.valueCol%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09win.gClipboardHelper.copyString%28arr.join%28%27%5Cn%27%29%2C%20document%29%3B%0A%09%09%7D%3B%0A%0A%09%09win.copyName%20%3D%20function%28%29%20%7B%0A%09%09%09var%20arr%20%3D%20%5B%5D%3B%0A%09%09%09win.getSelected%28%29.forEach%28function%28i%29%20%7B%0A%09%09%09%09arr.push%28i.prefCol%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09win.gClipboardHelper.copyString%28arr.join%28%27%5Cn%27%29%2C%20document%29%3B%0A%09%09%7D%3B%0A%0A%09%09win.copyValue%20%3D%20function%28%29%20%7B%0A%09%09%09var%20arr%20%3D%20%5B%5D%3B%0A%09%09%09win.getSelected%28%29.forEach%28function%28i%29%20%7B%0A%09%09%09%09arr.push%28i.valueCol%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09win.gClipboardHelper.copyString%28arr.join%28%27%5Cn%27%29%2C%20document%29%3B%0A%09%09%7D%3B%0A%0A%09%09win.copyAsFunction%20%3D%20function%28%29%20%7B%0A%09%09%09var%20arr%20%3D%20%5B%5D%3B%0A%09%09%09win.getSelected%28%29.forEach%28function%28i%29%20%7B%0A%09%09%09%09if%20%28i.typeCol%20%3D%3D%3D%2032%29%20%7B%0A%09%09%09%09%09arr.push%28%27user_pref%28%22%27%20+%20i.prefCol%20+%20%27%22%2C%20%22%27%20+%20i.valueCol%20+%20%27%22%29%3B%27%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09arr.push%28%27user_pref%28%22%27%20+%20i.prefCol%20+%20%27%22%2C%20%27%20+%20i.valueCol%20+%20%27%29%3B%27%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%3B%0A%09%09%09win.gClipboardHelper.copyString%28arr.join%28%27%5Cn%27%29%2C%20document%29%3B%0A%09%09%7D%3B%0A%09%7D%0A%7D%3B%0A%0AAboutConfigMultipleSelection.Init%28%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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 |
Saenko > 05-08-2016 08:57:39 |
Ребятки, премного благодарен! |
toltec > 11-08-2016 11:18:52 |
2All, turbot |
turbot > 11-08-2016 15:09:11 |
toltec Выделить код Код:About About about:about chrome://mozapps/skin/places/defaultFavicon.png Результаты поиска | Форум Mozilla Россия https://forum.mozilla-russia.org/search.php?action=show_24h https://forum.mozilla-russia.org/favicon.ico Может в этом причина. Если у вас там есть ранее добавленные сайты без фавиконок, добавьте им вручную дефолтную иконку: chrome://mozapps/skin/places/defaultFavicon.png |
voqabuhe > 11-08-2016 16:58:12 |
turbot пишет
У меня кнопка работает. А вот попробовал обновить на последнюю версию, она стала не активной. Выделить код Код: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%3ESidebar%20Sites%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAiEAAAIhAENVwL6AAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAHqSURBVHjarJM9aBVBFIW/s2wkgmDnDxoUgoJWokXERlEbf5pY2AhCCkWUgCaNvs3b2Z335lmZoETRINhKLPxD0CZgI0GtLFQUG8FGmxSBmBRzbSYSJE2IB4b5u/cMc+65MjOWYsT57cAVM9sL7AIi8EnSuxjjWKdV/Vgar0WCRrPqknQDuAB0AR+BsbS+DOwEfku6GWNsdFpV/EvQaFa5pElJ+8xsFlhrZn2dVvUrkW+R9Bb4CWyW9CrGONBpVTEHkDQK9JvZHNADzEv6WpQ16R6gG9gELJjZ2SzLvgNNXRtx2yR9AS5JOmJmfcAQy+Me8Bz4AFw3s95cUi8wHLy7X5T1LPA4ePdkueyirNcDM8G7p0VZr5G0Q41mdTB497oo6/3Bu+mirA+b2beUEwGyLMuTXj0p9kDw7k1R1kfVaFYvgUfA3VSBfqANXAUMyNPsgQ7wEJgAzgOnMuA2MJ4O7gCjwbtpYKOkBUDAuuDd+/TIOHBxMTYzsxfAieDdA+BY8G4qKT8QYxyWNCjpHICZPQOOB+8mgJPBu6lc0iFgNzAFbCjK+nTwbrJdl5//FVHSGWAmbfcUZT2/6jLKzCjK+hYwCMwlw8ynsRTdydYLQLekdrsum3n625CkrSuw8mSM0f2/ZlpNO/8ZAGBFAEu2Gqq+AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D717296%23p717296*/%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%2C%0A%20%20%20%20help%20%3D%20self.Help%3B%0A%0Afor%20%28var%20item%20of%20help.split%28%27%5Cn%5Cn%27%29%29%20%7B%0A%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%2C%0A%20%20%20%20%20%20params%20%3D%20item.split%28%27%5Cn%27%29%2C%0A%20%20%20%20%20%20title%20%3D%20params%5B0%5D%2C%0A%20%20%20%20%20%20url%20%3D%20params%5B1%5D%3B%0A%20%20mItem.setAttribute%28%27label%27%2C%20title%29%3B%0A%20%20mItem.setAttribute%28%27oncommand%27%2C%20%27openWebPanel%28%22%27%20+%20title%20+%20%27%22%2C%20%22%27%20+%20url%20+%20%27%22%29%27%29%3B%0A%20%20mItem.setAttribute%28%27oncontextmenu%27%2C%20%27this.parentNode.parentNode.removePage%28%22%27%20+%20title%20+%20%27%22%2C%20%22%27%20+%20url%20+%20%27%22%29%3B%27%29%3B%0A%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%3B%0AmenuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0Avar%20addMItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AaddMItem.setAttribute%28%27label%27%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0441%u0430%u0439%u0442%27%29%3B%0AaddMItem.setAttribute%28%27oncommand%27%2C%20%22this.parentNode.parentNode.addPage%28%29%3B%22%29%3B%0AmenuPopup.setAttribute%28%27context%27%2C%20%27%27%29%3B%0A%0Athis.addPage%20%3D%28%29%3D%3E%20%7B%0A%20%20var%20newItem%20%3D%20%5B%2C%2Cwindow.content.document.title%2C%20window.content.document.location%5D.join%28%27%5Cn%27%29%2C%0A%20%20%20%20%20%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%2C%0A%20%20%20%20%20%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%20%20param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%20%20param.help%20%3D%20param.help%20+%20newItem%3B%0A%20%20custombuttons.cbService.installButton%28param%29%3B%0A%7D%3B%0A%0Athis.removePage%20%3D%28aTitle%2C%20aURL%29%3D%3E%20%7B%0A%20%20var%20itemsToRemove%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%2C%0A%20%20%20%20%20%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%20%20param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%20%20itemsToRemove.push%28%5B%2C%2CaTitle%2C%20aURL%5D.join%28%27%5Cn%27%29%2C%20%5BaTitle%2C%20aURL%2C%2C%2C%5D.join%28%27%5Cn%27%29%29%3B%0A%20%20for%20%28var%20item%20of%20itemsToRemove%29%0A%20%20%20%20param.help%20%3D%20param.help.replace%28item%2C%20%27%27%29%3B%0A%20%20custombuttons.cbService.installButton%28param%29%3B%0A%7D%3B%0A%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20if%20%28e.target%20%21%3D%3D%20this%29%20return%3B%0A%20%20var%20cl%20%3D%20gClipboard.read%28%29%3B%0A%20%20if%20%28e.button%20%3D%3D%200%29%0A%20%20%20%20openWebPanel%28window.content.document.title%2C%20window.content.document.location%29%3B%0A%20%20if%20%28e.button%20%3D%3D%201%29%0A%20%20%20%20openWebPanel%28cl%2C%20cl%29%3B%0A%20%20if%20%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%29%0A%20%20%20%20e.preventDefault%28%29%2C%20e.stopPropagation%28%29%2C%20menuPopup.openPopup%28this%2C%20%27after_start%27%29%3B%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%27%u041B%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%5Cn%u0421%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%5Cn%u041F%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%u043E%20%u0441%u043F%u0438%u0441%u043A%u043E%u043C%20%u0437%u0430%u0434%u0430%u043D%u043D%u044B%u0445%20%u0430%u0434%u0440%u0435%u0441%u043E%u0432%27%3B%0A%0A%28contextMenu%20%3D%3E%20%7B%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%0A%20%20menuitem.id%20%3D%20%22open-in-sidebar%22%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22Open%20in%20Sidebar%22%29%3B%0A%20%20menuitem.setAttribute%28%22oncommand%22%2C%20%22openWebPanel%28gContextMenu.getLinkURL%28%29%2C%20gContextMenu.getLinkURL%28%29%29%22%29%3B%0A%20%20contextMenu.insertBefore%28menuitem%2C%20document.getElementById%28%22context-sep-open%22%29%29%3B%0A%0A%20%20addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20menuitem.hidden%20%3D%20%21gContextMenu.onLink%2C%20false%2C%20contextMenu%29%3B%0A%20%20addDestructor%28%28%29%3D%3E%20contextMenu.removeChild%28menuitem%29%29%3B%0A%7D%29%28document.getElementById%28%22contentAreaContextMenu%22%29%29%3B%0A%0A%28sidebarWindow%20%3D%3E%20%7B%0A%20%20addEventListener%28%27click%27%2C%20e%3D%3E%20%7B%0A%20%20%20%20var%20webPanel%20%3D%20sidebarWindow.contentDocument.getElementById%28%22web-panels-browser%22%29%3B%0A%20%20%20%20if%20%28%21webPanel%29%20return%3B%0A%20%20%20%20var%20sidebarDoc%20%3D%20webPanel.contentDocument%3B%0A%20%20%20%20if%20%28%21%28sidebarDoc%0A%20%20%20%20%20%20%20%20%20%20%26%26%20%28sidebarDoc.location.protocol%20%3D%3D%20%22http%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20sidebarDoc.location.protocol%20%3D%3D%20%22https%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20sidebarDoc.location.protocol%20%3D%3D%20%22ftp%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20sidebarDoc.location.protocol%20%3D%3D%20%22ftps%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20sidebarDoc.location.protocol%20%3D%3D%20%22file%3A%22%29%29%29%20return%3B%0A%20%20%20%20let%20link%20%3D%20e.originalTarget%3B%0A%20%20%20%20while%20%28link%20%26%26%20link.tagName.toLowerCase%28%29%20%21%3D%20%27a%27%20%26%26%20link.src%29%20link%20%3D%20link.parentNode%3B%0A%20%20%20%20if%20%28%21%28link%20%26%26%20link.href%20%26%26%20%21%28sidebarDoc.location.protocol%20%3D%3D%20%22file%3A%22%20%26%26%20link.className%20%3D%3D%20%27file%27%29%29%29%20return%3B%0A%20%20%20%20link.target%20%3D%20%22_self%22%3B%0A%20%20%7D%2C%20true%2C%20sidebarWindow%29%0A%7D%29%28document.getElementById%28%22sidebar%22%29%29%3B%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%0ASidebar%20-%20Mozilla%20%7C%20MDN%0Ahttps%3A//developer.mozilla.org/en-US/Add-ons/Code_snippets/Sidebar%0A%0ACreating%20a%20Firefox%20sidebar%20-%20Mozilla%0Ahttps%3A//developer.mozilla.org/en-US/docs/Mozilla/Creating_a_Firefox_sidebar%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
turbot > 11-08-2016 17:37:13 |
voqabuhe Я проверил на чистой 48-ой с отключенной проверкой расширений и поправленным аддоном - все работает. |
bunda1 > 11-08-2016 18:02:52 |
turbot пишет
Вроде так тоже работает: |
voqabuhe > 11-08-2016 19:59:22 |
turbot пишет
Спасибо, теперь работает. |
toltec > 12-08-2016 10:21:15 |
turbot |
broker > 17-08-2016 03:33:53 |
bunda1 |
xrun1 > 17-08-2016 20:41:32 |
broker |
bunda1 > 17-08-2016 21:04:47 |
broker пишет
Есть такая кнопка Save которая добавляет в контекстное меню пункт для сохранения текста в текстовый файл или даёт возможность сохранить текст из меню самой кнопки Save. |
broker > 17-08-2016 23:04:25 |
bunda1 Выделить код Код:data:text/html;base64,PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48dGl0bGU+Tm90ZXBhZDwvdGl0bGU+CjxoZWFkPgogPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJkYXRhOmltYWdlL3gtaWNvbjtiYXNlNjQsQUFBQkFBRUFFUkVBQUFFQUlBRHdCQUFBRmdBQUFDZ0FBQUFSQUFBQUlnQUFBQUVBSUFBQUFBQUF5QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQWdBQUFBQXBLU2xSUmtaR2gwQkFRSHhCUVVGK1FVRkJma0ZCUVg1QlFVRitRRUJBZkVaR1JvZ2FHaG8xQUFBQUFBQUJBQUVDQWdJQ0FnSUNBZ1FFQkFVQUFBQUFNVEV3V2VMaTRmLy8vLy8vK3ZyNi8vcjYrdi82K3ZyLy9QejgvL3Y3Ky8vNStmbisrL3Y3LzdDd3NQZE5UVTJoQVFFQkFnQUFBQUFBQUFBQUF3TURCQUFBQUFCdmJtK3g4dkh5LytEZjRQZmk0K1A3NnVicisrTGg0dnZrNU9UNy9mMzkrLy8vLy92Ly8vLzc3L0R2L2F5c3JQOEJFQUVsS25nbnhEQ0RMZEV2Z1N6T0xYOHF5MEdUUHUxWnExYi9XYXRXL2xhc1UvOW9wMmYveGNQRi84UEV3Ly9pNStMLzh2ZngvL0gyNy8vcDYrbi9xcXFxL0VTYVFPUzY3YTcvdGVpcC9yYnBxdiszNnF2L3N1U20vNnpmb1ArczM2RC90ZU9vLzRiTmZQOTNzM2IvMzliZi85WFkxZi81L1BqLytQdjIvK3ZzNi8rcXFhci9UNlJLOGJ2anNQNnQycVQ4c055bS9MRGNwdnl4M2FmK3N0Nm8vN0xlcVArdzNhYi92dWF6LzFtcVZQKzJ3N2IvM2R2ZC8vRDA3Ly80Ky9mLzYrenIvNnFxcXY4Qk53RnZuZGlVLzhEanQveTM0YS8vdWVHdy83bmhzUCs1NGJEL3VlR3cvN2pnci8vQjVMai9tdFNTLzNxMWV2L1d6TmIvNHVmaC8vZjc5Zi9wNituL3FxcXEvd0FBQUFOSGswUGJ6dS9GLzczZ3RQM0E0N2Yvd09PMy84RGp0Ly9BNDdmL3dPTzQvNzNpdGYvRDVybi9ZN0plLzcvTXdQL2s0ZVAvK2YzNS8rdnM2LytxcXFyL0FBQUFBQUF6QUdhcDRLUC96ZWJHKzhUa3Z2L0c1Yi8veHVTLy84Ymx2Ly9GNWI3L3Z1SzIvOExrdVArVTBZdi9aYUJsLzk3VzN2L3U5ZTMvNiszci82cXFxdjhEQVFNQUFBQUFCRTZYUytEYjhkVC95dVBEL2N6bXh2L041c2Yvek9iRy84Ymx2Ly9BNDdqL3QrQ3UvN3Zqc1A5bnVXUC91TVc1Lyt6cjYvL3M3K3ovcWFtcS93QUNBQVFBQUFBQUFUUUJaclRpci8vYTZkWDcwdWZOLzlQb3p2L041c2YveHVTLy84RGp0Lys0NEsvL3UrT3cvNHpOZ3Y5dXFXNy82K1RyLytydTZ2K3FxYXIvQUFBQUFRTUJBd0FBQUFBSFZKaFMyT3IyNXYvVzU5TDkxT2pQLzh6bXh2L0c1Yi8vd09PMy83cmhzUCt3M2FiL3R1U3AvMWlzVS8rdnZhLy82K3JxLzZxcXF2OEFBQUFBQVFJQkF3QUFBQUFFTlFSa3YrUzcvK1ByM3Z2UjU4ei96T2JHLzhia3YvKy80cmYvdWVDdy83SGVwLyt6NEtmL2g4MTgvM0t1Y3YvcjR1di9xS3FvL2dBQUFBQUFBQUFCQXdFREFBQUFBQXBWbDFUVTdQYm8vOUhselAzUDU4ai94dVMvLzhManVmKzY0YkgvczkrcC82dmNvUCt0NEtEL1dxNVUvOGJTeC8yM3RMZjlBQUFBQUFBQUFBQUJBZ0VEQUFBQUFBazNDV2FxMzZiLzF1blIrY0xqdlB6RjVyNzh0K0N2L0xYZ3JQMnczNmI4b2RtVy9LemduLzF5eEdmN2dMS0EvNTJTbmUwQUFBQUFBQUFBQUFBQUFBRUNBUUlBQUFFQURVT0NRY2R3dDIzL1phdGk4MkdyWHZWanJXRDRYS2xZOUZxcFZ2WmFxbFgzVXFaTjgxT25UdnhZYkZuZEd4Y2JOQUFBQUFBQUFBQUFBQUFBQUFBQkFRRUFBQUFBRkJBVUhUQXpNR2NxS2lwUkpTY2xVUzh3TDE0bkp5Wk5LQ3NwVnk0dUxsc2lKQ0pLTmpVMmFRUUFCQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9InR5cGU9ImltYWdlL3gtaWNvbiI+CjwvaGVhZD4KCjxURVhUQVJFQT48L1RFWFRBUkVBPgo8c3R5bGU+CgpodG1sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICBvdmVyZmxvdzogaGlkZGVuOwp9CnRleHRhcmVhIHsKICBiYWNrZ3JvdW5kOiAjMzgzODM4OwogIG92ZXJmbG93LXk6IGF1dG87CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICBib3JkZXI6IDJweCBpbnNldCB3aGl0ZTsKICBjb2xvcjogMTk4Mzg0OwogIGZvbnQtZmFtaWx5OiBhcmlhbDsKZm9udC1zaXplOiAxMnB0Cn0KPC9zdHlsZT4K Сохранить ярлык страницы как… - сохраняет закладку текущей страницы с ярлыком сайта, иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\, Сохранить ярлык страницы без запроса на сохранение- сохраняет закладку текущей страницы с ярлыком сайта в последнюю папку где сохранялся ярлыком сайта без запроса на место сохранения, иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\, Сохранить значок веб-сайта- дает возможность сохранить значок веб-сайта с диалогом сохранения, Запомнить значок веб-сайта как base64- сохраняет иконку сайта в буфере обмена как код base64. Сохранить выбранную область страницы как PNG - сохраняет выделенную область страницы как PNG-изображение, Сохранить фрейм на странице как PNG - сохраняет фреймы на странице как PNG-изображение, Сохранить видимую часть страницы как PNG - сохраняет видимую область страницы как PNG-изображение, Сохранить всю страницу как PNG - сохраняет страницу как PNG-изображение(делает скриншот страницы), не сохранит всю страницу если страница слишком большая но сохранит часть страницы, Сохранить всю страницу как PDF - сохраняет страницу как PDF файл, через сервис http://pdfmyurl.com./, Добавить url и сохранить страницу - добавляет вверху странички ссылку на её адрес и вызывает диалог сохранения странички. Сохранить выделенный текст как txt файл - добавляет вверху странички ссылку на её адрес, сохраняет выделенный текст в текстовой txt файл, если текст не выделен сохраняет весь текст на странице в txt файл, Запомнить изображение как base64, в контекстном меню - добавляет в контекстного меню изображений новый пункт 'Запомнить изображение как base64', Сохранить выделенный текст в файл, в контекстном меню - добавляет в контекстного меню выделенного текста новый пункт 'Сохранить выделенный текст в файл'. Новый пункта позволяет сохранить выделенный текст в .txt файл на рабочем столе без запроса и с добавлением текста к тексту который уже был сохранен ранее, Открыть выделенный текст в внешнем редакторе, в контекстном меню - добавляет в контекстного меню выделенного текста новый пункт 'Открыть выделенный текст в внешнем редакторе'. Новый пункта позволяет открыть выделенный текст из страницы или текстового поля в внешнем текстовом редакторе, который у вас по умолчанию открывает теkстовые(.txt) файлы. Дополнительные возможности; Если нажать правой клавишей мыши пункт Сохранить изображение как… в контекстном меню изображений на странице, изображение будет сохранено как base64 код в буфере обмена. Это очень удобно когда ищешь иконки для CB кнопок. ЛКМ => Открыть меню кнопки. Если через ctrl+S сохраняет без кода но всегда нужно вибирать сохранить в тхт. Хотел нажать и сохранить . |
broker > 20-08-2016 21:28:27 |
Мастер bunda1 посмотрите кнопку save Выделить код Код:data:text/html;base64,PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz48dGl0bGU+Tm90ZXBhZDwvdGl0bGU+CjxoZWFkPgogPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJkYXRhOmltYWdlL3gtaWNvbjtiYXNlNjQsQUFBQkFBRUFFUkVBQUFFQUlBRHdCQUFBRmdBQUFDZ0FBQUFSQUFBQUlnQUFBQUVBSUFBQUFBQUF5QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQWdBQUFBQXBLU2xSUmtaR2gwQkFRSHhCUVVGK1FVRkJma0ZCUVg1QlFVRitRRUJBZkVaR1JvZ2FHaG8xQUFBQUFBQUJBQUVDQWdJQ0FnSUNBZ1FFQkFVQUFBQUFNVEV3V2VMaTRmLy8vLy8vK3ZyNi8vcjYrdi82K3ZyLy9QejgvL3Y3Ky8vNStmbisrL3Y3LzdDd3NQZE5UVTJoQVFFQkFnQUFBQUFBQUFBQUF3TURCQUFBQUFCdmJtK3g4dkh5LytEZjRQZmk0K1A3NnVicisrTGg0dnZrNU9UNy9mMzkrLy8vLy92Ly8vLzc3L0R2L2F5c3JQOEJFQUVsS25nbnhEQ0RMZEV2Z1N6T0xYOHF5MEdUUHUxWnExYi9XYXRXL2xhc1UvOW9wMmYveGNQRi84UEV3Ly9pNStMLzh2ZngvL0gyNy8vcDYrbi9xcXFxL0VTYVFPUzY3YTcvdGVpcC9yYnBxdiszNnF2L3N1U20vNnpmb1ArczM2RC90ZU9vLzRiTmZQOTNzM2IvMzliZi85WFkxZi81L1BqLytQdjIvK3ZzNi8rcXFhci9UNlJLOGJ2anNQNnQycVQ4c055bS9MRGNwdnl4M2FmK3N0Nm8vN0xlcVArdzNhYi92dWF6LzFtcVZQKzJ3N2IvM2R2ZC8vRDA3Ly80Ky9mLzYrenIvNnFxcXY4Qk53RnZuZGlVLzhEanQveTM0YS8vdWVHdy83bmhzUCs1NGJEL3VlR3cvN2pnci8vQjVMai9tdFNTLzNxMWV2L1d6TmIvNHVmaC8vZjc5Zi9wNituL3FxcXEvd0FBQUFOSGswUGJ6dS9GLzczZ3RQM0E0N2Yvd09PMy84RGp0Ly9BNDdmL3dPTzQvNzNpdGYvRDVybi9ZN0plLzcvTXdQL2s0ZVAvK2YzNS8rdnM2LytxcXFyL0FBQUFBQUF6QUdhcDRLUC96ZWJHKzhUa3Z2L0c1Yi8veHVTLy84Ymx2Ly9GNWI3L3Z1SzIvOExrdVArVTBZdi9aYUJsLzk3VzN2L3U5ZTMvNiszci82cXFxdjhEQVFNQUFBQUFCRTZYUytEYjhkVC95dVBEL2N6bXh2L041c2Yvek9iRy84Ymx2Ly9BNDdqL3QrQ3UvN3Zqc1A5bnVXUC91TVc1Lyt6cjYvL3M3K3ovcWFtcS93QUNBQVFBQUFBQUFUUUJaclRpci8vYTZkWDcwdWZOLzlQb3p2L041c2YveHVTLy84RGp0Lys0NEsvL3UrT3cvNHpOZ3Y5dXFXNy82K1RyLytydTZ2K3FxYXIvQUFBQUFRTUJBd0FBQUFBSFZKaFMyT3IyNXYvVzU5TDkxT2pQLzh6bXh2L0c1Yi8vd09PMy83cmhzUCt3M2FiL3R1U3AvMWlzVS8rdnZhLy82K3JxLzZxcXF2OEFBQUFBQVFJQkF3QUFBQUFFTlFSa3YrUzcvK1ByM3Z2UjU4ei96T2JHLzhia3YvKy80cmYvdWVDdy83SGVwLyt6NEtmL2g4MTgvM0t1Y3YvcjR1di9xS3FvL2dBQUFBQUFBQUFCQXdFREFBQUFBQXBWbDFUVTdQYm8vOUhselAzUDU4ai94dVMvLzhManVmKzY0YkgvczkrcC82dmNvUCt0NEtEL1dxNVUvOGJTeC8yM3RMZjlBQUFBQUFBQUFBQUJBZ0VEQUFBQUFBazNDV2FxMzZiLzF1blIrY0xqdlB6RjVyNzh0K0N2L0xYZ3JQMnczNmI4b2RtVy9LemduLzF5eEdmN2dMS0EvNTJTbmUwQUFBQUFBQUFBQUFBQUFBRUNBUUlBQUFFQURVT0NRY2R3dDIzL1phdGk4MkdyWHZWanJXRDRYS2xZOUZxcFZ2WmFxbFgzVXFaTjgxT25UdnhZYkZuZEd4Y2JOQUFBQUFBQUFBQUFBQUFBQUFBQkFRRUFBQUFBRkJBVUhUQXpNR2NxS2lwUkpTY2xVUzh3TDE0bkp5Wk5LQ3NwVnk0dUxsc2lKQ0pLTmpVMmFRUUFCQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9InR5cGU9ImltYWdlL3gtaWNvbiI+CjwvaGVhZD4KCjxURVhUQVJFQT48L1RFWFRBUkVBPgo8c3R5bGU+CgpodG1sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICBvdmVyZmxvdzogaGlkZGVuOwp9CnRleHRhcmVhIHsKICBiYWNrZ3JvdW5kOiAjMzgzODM4OwogIG92ZXJmbG93LXk6IGF1dG87CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICBib3JkZXI6IDJweCBpbnNldCB3aGl0ZTsKICBjb2xvcjogMTk4Mzg0OwogIGZvbnQtZmFtaWx5OiBhcmlhbDsKZm9udC1zaXplOiAxMnB0Cn0KPC9zdHlsZT4K |
bunda1 > 20-08-2016 22:08:03 |
broker пишет
Ты пытаешся сохранить текст из вкладки которую открывает кнопка Блокнот в вкладке Опиши свои действия при сохранение текста кнопкой Save. |
broker > 20-08-2016 22:41:09 |
bunda1 ЛК мыши "блокнот во вкладке" открывается вкладка, жму на кнопку save выбираю Сохранить выделенный текст как тхт файл. Открывается диалоговое окно куда сохранить выбираю рабочий стол. Сохраняется текстовый файл false 00·29·10.txt. вот так не зависимо пустой блокнот или с инфой первые строки сохраняется какой то код ниже инфа. |
bunda1 > 20-08-2016 22:48:23 |
broker пишет
Понятно. Буду исправлять. |
broker > 20-08-2016 22:55:33 |
bunda1 |
turbot > 20-08-2016 23:00:36 |
Этот код - адрес страницы. Выделить код Код:// создать название файла из заголовка страницы и текущего времени и сохранить текст .... var fileTitle = (getDocTitle() ? getDocTitle() : self.label) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent((content.location.href.startsWith('data:') ? "" : (content.location.href + "\r\n\r\n")) + getSelect()), fileTitle + ".txt", null, false, false, null, content.document); |
broker > 20-08-2016 23:21:13 |
turbot |
difabor > 27-08-2016 03:28:36 |
Уважаемый turbot, спасибо за Вашу "Раскукоживатель коротких ссылок(Firefox 24+), от 26.07.2016." - работает, как доктор прописал. |
turbot > 27-08-2016 15:32:48 |
difabor (Кстати, Dumby, если не лень будет, не посмотрите, что более щадяще будет: текущая конструкция или такая: скрытый текст Выделить код Код:((cntxtMenu, elm, mItem) => { mItem.id = "cb-unshorten-url"; mItem.setAttribute("label", "Раскукожить ссылку"); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", self.image); elm.parentNode.insertBefore(mItem, elm); const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); var url, link, isUnshortened, // Сервисы сокращения ссылок. Можно добавлять свои. Работать, в теории, должно с любыми shortenerServices = [ "tinyurl.com", "po.st", "img.ly", "bit.ly", "goo.gl", "youtu.be", "t.co", "db.tt", "u.to", "shortlinks.de" ], // Опции: options = { replaceShortenedLinks: true, // Заменять адрес ссылки на странице раскукоженной showAlert: true, // Показывать всплывающие уведомления clickAlertToOpen: true, // Клик по уведомлению с раскукоженной ссылкой - откроет ее в новой вкладке showOnShortenedTextLinks: true, // Показывать пункт контекстного меню на выделенных текстовых ссылках promptDialogForTextLinks: true, // Показывать диалог с результатом для текстовых ссылок copyToClipboard: true, // Копировать раскукоженную ссылку в буфер обмена changeColorForUnshortenedLinks: true, // Индикация цветом ссылки ожидания ответа и результата changeColorBackAfterTimeout: false, // Возвращать цвет ссылок к исходному, после паузы unshortenedLinksColor: "lightgreen" // Цвет раскукоженных ссылок }, isFF32 = (parseFloat(Services.appinfo.platformVersion) >= 32); function isShortenedURL(aURL) { if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink) || !aURL.match(/\s/) && !!aURL.match(/\//))) { if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3]; var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2]; if (shortenerServices.indexOf(host) !== -1) { url = aURL; return true; } } return false; }; function promptDialog(aURL) { var input = {value: aURL}; var prompt = Services.prompt.prompt(null, options.copyToClipboard ? "Раскукоженная ссылка скопирована!" : "Ссылка раскукожена!", "Отредактировать и открыть в новой вкладке?", input, null, {value: false}); if (prompt) gBrowser.selectedTab = gBrowser.addTab(input.value); }; function xhr(aURL, cb) { let reURL = null; let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); let alertListener = { observe: function(aSubject, aTopic, aData) { if (aTopic != 'alertclickcallback') return; gBrowser.selectedTab = gBrowser.addTab(aData); } } let handler = ev => { evf(m => xhr.removeEventListener(m, handler, !1)); switch (ev.type) { case 'load': if (xhr.status == 200 || (isFF32 ? xhr.responseURL : xhr.channel.URI.spec) != aURL) { reURL = isFF32 ? xhr.responseURL : xhr.channel.URI.spec; cb(reURL); options.showAlert && (options.clickAlertToOpen ? alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена!\nНажмите, чтобы открыть в новой вкладке:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), true, reURL, alertListener, "") : alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), false, "", null, "")); break; } default: cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Ошибка при попытке получить ссылку: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']', false, "", null, ""); break; } }; let evf = f => ['load', 'error', 'abort'].forEach(f); evf(m => xhr.addEventListener(m, handler, false)); try { xhr.mozBackgroundRequest = true; xhr.open('HEAD', aURL, true); xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING; xhr.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", false); xhr.setRequestHeader("Accept", "text/html,text/xml", false); xhr.send(null); } catch (ex) { cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка: ' + (ex.toString().length > 100 ? ([ex.toString().slice(0,45), ex.toString().slice(-45)]).join('...') : ex.toString()), false, "", null, ""); } }; function shouldDisplay() { mItem.label = "Раскукожить ссылку"; if (gContextMenu.onLink && !gContextMenu.isTextSelected) { url = gContextMenu.getLinkURL(); link = gContextMenu.link; isUnshortened = link.getAttribute("cb-short-url"); if (isUnshortened) mItem.label = "Скукожить ссылку"; } if (gContextMenu.onPlainTextLink) { url = gContextMenu.linkURL; } if (!gContextMenu.onPlainTextLink && gContextMenu.isTextSelected) { url = document.commandDispatcher.focusedWindow.content.document.getSelection().toString().trim(); } mItem.hidden = !((gContextMenu.onLink || (gContextMenu.onPlainTextLink || gContextMenu.isTextSelected) && options.showOnShortenedTextLinks) && isShortenedURL(url) || gContextMenu.onLink && isUnshortened); }; cntxtMenu.addEventListener("popupshowing", shouldDisplay, false); addDestructor(()=> { cntxtMenu.removeEventListener("popupshowing", shouldDisplay, false); cntxtMenu.removeChild(mItem); }); mItem.onclick =()=> { if (gContextMenu.onLink && !gContextMenu.isTextSelected) { if (!isUnshortened) { if (options.changeColorForUnshortenedLinks) { var linkClr = link.style.getPropertyValue('color'); linkClr && link.style.setProperty('-cb-old-color', linkClr, link.style.getPropertyPriority('color')); var oldClr = link.style.getPropertyValue('-cb-old-color'); var oldClrPrrt = link.style.getPropertyPriority('-cb-old-color'); link.style.setProperty("color", "orangered", "important"); } xhr(url, reURL => { if (!reURL) { options.changeColorForUnshortenedLinks && (oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color")); return; } if (options.changeColorForUnshortenedLinks) { link.style.setProperty("color", options.unshortenedLinksColor, "important"); options.changeColorBackAfterTimeout && setTimeout(()=> oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"), 1000); } options.copyToClipboard && gClipboard.write(reURL); options.replaceShortenedLinks && (link.setAttribute("cb-short-url", link.href), link.setAttribute("href", reURL)); }) } else { oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"); link.setAttribute("href", isUnshortened); link.removeAttribute("cb-short-url"); } } else { xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); options.promptDialogForTextLinks && promptDialog(reURL); }) } }; this._handleClick =()=> { url = gClipboard.read(); if (!url || !isShortenedURL(url)) { options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка!', false, "", null, ""); return; } xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); promptDialog(reURL); }) }; this.tooltipText = "ПКМ: Раскукожить ссылку в буфере обмена"; })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open"), document.createElement("menuitem")); ) 2. Нет. Во-первых, не желаю. Я противник использования коротких ссылок. А во-вторых, лень. Универсально не выйдет. Для каждого нужно использовать их API, получать левый ключ (либо вам регистрироваться, получать свой и прописывать в код) и т.д. |
Dumby > 27-08-2016 21:28:28 |
turbot пишет
Не, не знаю. Но предположу, что косвенно об этом можно судить скрытый текст Выделить код Код:var count = 4000; var links = [...content.document.links].map(link => link.href); if (!links.length) return; var url, shortenerServices = "tinyurl.com po.st img.ly bit.ly goo.gl youtu.be t.co db.tt u.to".split(" "); function test(func, start = Cu.now(), short = 0) { for(var ind = 0, stop = count/links.length; ind < stop; ind++) for(var url of links) short += func(url); return [func.name, short, Cu.now() - start].join("\t"); } alert(test(isShortenedURL_OLD) + "\n" + test(isShortenedURL_NEW)); function isShortenedURL_OLD(aURL) { if (aURL && !aURL.match(/\s/)) { var uri; try { uri = makeURI(aURL); } catch(ex) { aURL = 'http://' + aURL; uri = makeURI(aURL); } finally { if (uri && (uri.scheme == "http" || uri.scheme == "https") && shortenerServices.indexOf(uri.host) !== -1) { url = aURL; return true; } } } return false; }; function isShortenedURL_NEW(aURL) { if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink) || !aURL.match(/\s/) && !!aURL.match(/\//))) { if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3]; var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2]; if (shortenerServices.indexOf(host) !== -1) { url = aURL; return true; } } return false; }; |
Uxapb > 28-08-2016 12:26:20 |
В 48 не работает сохранение изображения без запроса в указанную папку. Поправьте плз. скрытый текст Выделить код Код:// Сохранять изображение без запроса в указанную папку .............. ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; var arr = path.split("\\"); var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в указанную папку: " + arr[arr.length-1]); addDestructor(()=> menuItem.remove() ); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var {get} = Application.prefs, run = get("browser.download.folderList"), dwnPath = get("browser.download.dir"), p, r; if ( dwnPath ) p = dwnPath.value, dwnPath.value = path; else Application.prefs.setValue("browser.download.dir", path); r = run.value, run.value = 2; saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); run.value = r; if (dwnPath) dwnPath.value = p; } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo")); bunda1, большое спасибо. Работает. |
bunda1 > 28-08-2016 13:56:04 |
Uxapb пишет
Выделить код Код:// Сохранять изображение без запроса в указанную папку, из контекстного меню, от 28.08.2016. ................ ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в указанную папку: " + path.split("\\").pop()); addDestructor(()=> menuItem.remove()); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var run = cbu.getPrefs("browser.download.folderList"); var use = cbu.getPrefs("browser.download.useDownloadDir"); try { var dir = Services.prefs.getComplexValue("browser.download.dir", Ci.nsISupportsString).data } catch(e) { var dir = Services.downloads.defaultDownloadsDirectory.path }; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path)); saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir)); } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo")); |
turbot > 28-08-2016 16:15:55 |
Dumby пишет
Ну, своего я точно не напишу. |
Mishania > 01-09-2016 14:11:31 |
День добрый. А в связи с выходом DownThemAll! 3.02 можно изменить кнопку под новые реалии?? |
bunda1 > 01-09-2016 18:34:05 |
Mishania пишет
Выделить код Код: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%3EDTA%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAcdJREFUKM990s9LG1EQwPHve9lN1PzYNU1SXaOXpKQU2ouhB6G3Iin0T+gxIOZfKPbQ4r+QIs2xf4PQXAsFqYdehZZqQaHG1bdxN6bZ3bweJEUtZC7DMPOZwzCCGzG/ufMW2OL/eHfxfuPNpJB3mlvSukfNGvLUcnloXZGw8sRGavPmkHF35QLnlOlhE+Axh88sR6SYihY5Z5ke8/goMiiyHLEwHd3ngiXhUsAjzZBTbWFSnI5KKMqcUUQxy4hjCphE01FBeCzisoSLSURBeCSIp6M8Pg4uy5yigTyXGIxvI7v1YRvEOgA6xiKghCJRjCn1FBYBgzhh263O12uiuxLEapBzqkHOqTesQzJckTUGUHlA1hiQZsjz3C8jyDn1IOdUQaxK1W420v2TPUCZRCQJ0RmBqK2hM4Ik4eQQKt0/2VPtZkMCTKBEK4lGGyBra9cZjUT/A7feSLWbjd1+Zegzg4hgfPAFEYHPDLuXVX8CAITd6jiROfdsnDAtJzzeWREuXWsb6lXY/86695rfMs9PWd6QcegZ4eCzALBbHTNMZiovk99WnsQHLwJpvIpSyYLxZ3SWHkcf98WjT93o8aE58n+odjP8C6dbrAZXOS2pAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsDTA%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20gFindBar.hidden%20%3F%20gFindBar.onFindCommand%28%29%20%3A%20gFindBar.close%28%29%3B%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsManager%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsPrefs%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0Athis.tooltipText%20%3D%20self.label%20+%20%22%5Cn%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043E%u043A%u043E%u0448%u043A%u043E%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u0437%u0430%u043A%u0430%u0447%u0435%u043A%20%u0434%u043B%u044F%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u0430%u0447%u0435%u043A%20%5Cn%u041F%3A%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%5CnCtrl+%u041F%3A%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 |
Mishania > 01-09-2016 18:49:27 |
bunda1 |
Uxapb > 07-09-2016 13:12:59 |
Приветствую. скрытый текст Инициализация Выделить код Код:/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Contributor(s): * - LouCypher (original code) */ var xul = this.Help; this.type = "menu"; this.tooltipText += "\nGenerate list of enabled extensions to selected output:" + "\nHTML, Markdown, BBCode, or plain text." var menupopup = this.appendChild(document.createElement("menupopup")); menupopup.setAttribute("oncommand", "generate(event);"); menupopup.generate = generate.bind(); ["HTML", "Markdown", "BBCode", "Plain text"].forEach(function(format) { var menuitem = menupopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("label", format); }) menupopup.appendChild(document.createElement("menuseparator")); var optionsMenu = menupopup.appendChild(document.createElement("menuitem")); optionsMenu.setAttribute("label", "Options"); optionsMenu.setAttribute("oncommand", "openOptions();"); optionsMenu.openOptions = openOptions.bind(); var rptCurrentDate, rptAddonsURLs, rptAddonsDescs, rptThemeScreenshot, rptInsideSpoiler; initPrefs(); function generate(aEvent) { if (aEvent.target.getAttribute("label") == "Options") return; initPrefs(); AddonManager.getAddonsByTypes(["theme", "extension"], function(addons) { var theme; var extArray = []; addons.forEach(function(addon) { if (addon.isActive) { if (addon.type == "theme") theme = addon; else extArray.push(addon); } }) extArray.sort(function(a, b) { a = a.name.toLowerCase(); b = b.name.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0; }) var title = "My " + Application.name + " information"; var date = new Date(); switch (aEvent.target.getAttribute("label")) { case "HTML": generateHTML(title, date, theme, extArray); break; case "Markdown": generateMarkdown(title, date, theme, extArray); break; case "BBCode": generateBBCode(title, date, theme, extArray); break; case "Plain text": generateText(title, date, theme, extArray); } }) } function generateHTML(aTitle, aDate, aTheme, aArray) { var extensions = '<!doctype html><html itemscope="itemscope"' + ' itemtype="http://schema.org/WebPage"><head>' + '<meta charset="utf-8"><meta itemprop="description"' + ' content="' + aTitle + '"><meta name="description"' + ' content="' + aTitle + '"><title>' + aTitle + '</title>' + '</head><body><h1>' + aTitle + '</h1>' + (rptCurrentDate ? "<p>Last updated: " + aDate + "</p>" : "") + "<h2>User agent</h2><p>" + navigator.userAgent + "</p><h2>Theme</h2><p>" + (rptAddonsURLs && !isDefaultTheme(aTheme) ? '<a href="' + getThemeURL(aTheme) + '">' + aTheme.name + '</a>' : aTheme.name) + "</p>" + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? '<p><img src="' + aTheme.screenshots[0].url + '" alt="' + aTheme.name + '"/></p>' : "") + "<h2>Extensions</h2>" + '<ol class="column">'; aArray.forEach(function(addon) { extensions += '<li style="margin-bottom:1em">' + (rptAddonsURLs ? ((addon.reviewURL ? '<a href="' + getAMOPage(addon.reviewURL) + '">' : addon.homepageURL ? '<a href="' + addon.homepageURL + '">' : '<a href="http://www.google.com/search?q="' + encodeURIComponent(addon.name + " extension") + '">') + addon.name + '</a>') : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "<br/>" + addon.description : "") + "</li>"; }) extensions += "</ol></body></html>"; doSomething(extensions, "text/html"); } function generateMarkdown(aTitle, aDate, aTheme, aArray) { var idx = 0; var extensions = "# " + aTitle + (rptCurrentDate ? "\n\nLast updated: " + aDate : "") + "\n\n## User agent\n\n" + navigator.userAgent + "\n\n## Theme\n\n" + (rptAddonsURLs && !isDefaultTheme(aTheme) ? "[" + aTheme.name + "](" + getThemeURL(aTheme) + ")" : aTheme.name) + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? "\n\n![" + aTheme.name + "](" + aTheme.screenshots[0].url + ")" : "") + "\n\n## Extensions"; aArray.forEach(function(addon) { idx++; extensions += "\n\n" + idx + ". " + (rptAddonsURLs ? ((addon.reviewURL ? "[" + addon.name + "](" + getAMOPage(addon.reviewURL) : addon.homepageURL ? "[" + addon.name + "](" + addon.homepageURL : "[" + addon.name + "](" + "http://www.google.com/search?q=" + encodeURIComponent(addon.name + " extension")) + ")") : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? " \n" + addon.description : "") }) doSomething(extensions, "text/plain", "%0A%0A.md"); } function generateBBCode(aTitle, aDate, aTheme, aArray) { var extensions = (rptInsideSpoiler ? "[spoiler=" + aTitle + "]" : "") + (rptCurrentDate ? "[b]Last updated: [/b]" + aDate : "") + "\n\n[b]User agent:[/b] " + navigator.userAgent + "\n\n[b]Theme:[/b] " + (rptAddonsURLs && !isDefaultTheme(aTheme) ? "[url=" + getThemeURL(aTheme) + "]" + aTheme.name + "[/url]" : aTheme.name) + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? "\n[img]" + aTheme.screenshots[0].url + "[/img]" : "") + "\n\n[b]Extensions:[/b]\n[list=1]" aArray.forEach(function(addon) { extensions += "[*]" + (rptAddonsURLs ? ((addon.reviewURL ? "[url=" + getAMOPage(addon.reviewURL) : addon.homepageURL ? "[url=" + addon.homepageURL : "[url=http://www.google.com/search?q=" + encodeURIComponent(addon.name + " extension")) + "]" + addon.name + "[/url]") : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "\n" + addon.description : ""); }) extensions += rptInsideSpoiler ? "[/list][/spoiler]" : "[/list]"; doSomething(extensions, "text/plain"); } function generateText(aTitle, aDate, aTheme, aArray) { var idx = 0; var extensions = aTitle + "\n" for (var i = 0; i < aTitle.length; i++) { extensions += "="; } extensions += (rptCurrentDate ? "\n\nLast updated: " + aDate : "") + "\n\nUser agent: " + navigator.userAgent + "\n\nTheme: " + aTheme.name + "\n\nExtensions\n----------"; aArray.forEach(function(addon) { idx++; extensions += "\n" + idx + ". " + addon.name + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "\n" + addon.description : "") + (rptAddonsURLs ? "\n" + (addon.reviewURL ? getAMOPage(addon.reviewURL) : addon.homepageURL ? addon.homepageURL : "") : "") + (rptAddonsDescs || rptAddonsURLs ? "\n" : ""); }) doSomething(extensions, "text/plain"); } function isDefaultTheme(aTheme) { return aTheme.id == "{972ce4c6-7e08-4474-a285-3208198ce6fd}" || aTheme.id == "modern@themes.mozilla.org"; } function getAMOPage(aReviewURL) { var url = aReviewURL.replace(/\/reviews\/.*$/, "/") .replace(/mozilla.org\/.*\/addon\//, "mozilla.org/addon/"); url += "?src=external-extension-list-generator"; return url; } function getThemeURL(aAddon) { var url; if (aAddon.reviewURL) { return getAMOPage(aAddon.reviewURL); } else { var id = aAddon.id.match(/\d+/).toString(); if (/getpersonas/.test(aAddon.screenshots[0].url)) { url = "http://getpersonas.com/persona/" + id; } else { url = "http://addons.mozilla.org/addon/" + id; } } url += "/?src=external-extension-list-generator"; return url; } function doSomething(aString, aContentType, aExt) { var doWhat = custombuttons.confirmBox3(self.name, "Extension list has been generated.", "Copy", "Cancel", "View"); switch (doWhat) { case 0: // Copy cbu.gClipboard.write(aString); Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService). showAlertNotification("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png", self.name, "Copied to clipboard!", false, "", null); break; case 2: // View var url = "data:" + aContentType + ";charset=utf-8," + encodeURIComponent(aString) + (aExt ? aExt : ""); if (Application.id == "{3550f703-e582-4d05-9a08-453d09bdfdc6}") { // Thunderbird openContentTab(url, "tab", "^https?:"); } else { switchToTabHavingURI(url, true); } default: // Close } } function getBoolPref(aPrefName, aDefVal) { var prefRoot = "custombuttons.extension-list-generator.report."; var prefBranch = cbu.ps.getBranch(prefRoot); try { return prefBranch.getBoolPref(aPrefName); } catch(ex) { prefBranch.setBoolPref(aPrefName, aDefVal); return aDefVal; } } function initPrefs() { rptCurrentDate = getBoolPref("currentDate", true); rptAddonsURLs = getBoolPref("addonsURLs", true); rptAddonsDescs = getBoolPref("addonsDescriptions", false); rptThemeScreenshot = getBoolPref("themeScreenshot", true); rptInsideSpoiler = getBoolPref("insideSpoiler", false); } function openOptions() { var em = Services.ww.getWindowEnumerator(); var winName = "extension-list-generator-options"; var index = 1; while (em.hasMoreElements()) { let win = em.getNext(); if(win.name == winName) { win.focus(); return; } index++ } openDialog("data:application/vnd.mozilla.xul+xml;base64," + encodeURIComponent(btoa(xul)), winName, "chrome, dialog, centerscreen, close"); } Справка Выделить код Код:<?xml version="1.0"?> <!-- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Contributor(s): - LouCypher (original code) --> <?xml-stylesheet href="chrome://global/skin/"?> <?xml-stylesheet href="data:text/css;base64,YnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%3D"?> <prefwindow xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="extension-list-generator-options" title="Extension List Generator Options" buttons="extra2, accept, cancel" buttonlabelextra2="Contribute" ondialogextra2="contribute(); close();" onload="sizeToContent();"> <script type="application/x-javascript"><![CDATA[ function contribute() { var url = "http://loucypher.github.io/userscripts/donate.html" + "?Extension+List+Generator" var win = window.opener; if ("openContentTab" in win) { win.openContentTab(url, "tab"); } else { win.openLinkIn(url, "tabshifted", {}); // Requires utilityOverlay.js } } ]]></script> <prefpane id="prefpane-menu" label="Prefpane menu"> <preferences> <preference id="date" name="custombuttons.extension-list-generator.report.currentDate" type="bool"/> <preference id="addonsURLs" name="custombuttons.extension-list-generator.report.addonsURLs" type="bool"/> <preference id="addonsDescriptions" name="custombuttons.extension-list-generator.report.addonsDescriptions" type="bool"/> <preference id="themeScreenshot" name="custombuttons.extension-list-generator.report.themeScreenshot" type="bool"/> <preference id="spoilerTag" name="custombuttons.extension-list-generator.report.insideSpoiler" type="bool"/> </preferences> <groupbox> <caption>Select which informations to include</caption> <checkbox label="Current date" preference="date"/> <checkbox label="Add-ons URLs" preference="addonsURLs"/> <checkbox label="Add-ons Descriptions" preference="addonsDescriptions"/> <checkbox label="Theme screenshot (for non-default theme)" preference="themeScreenshot"/> </groupbox> <groupbox> <caption>BBCode ouput</caption> <checkbox label="Inside [spoiler] tag" preference="spoilerTag"/> <label>Not all forum softwares support this tag.</label> </groupbox> </prefpane> </prefwindow> Почините, если возможно. Кнопки, использующие Справку работают. CB правил через cbbuttonimpl.js |
bunda1 > 08-09-2016 18:37:29 |
Uxapb пишет
|
bezuma > 08-09-2016 19:05:52 |
bunda1 |
Uxapb > 08-09-2016 21:59:31 |
bunda1 пишет
Спасибо. скрытый текст Выделить код Код: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%3EExtension%20List%20Generator%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%20*%0A%20*%20%20Contributor%28s%29%3A%0A%20*%20%20-%20LouCypher%20%28original%20code%29%0A%20*/%0A%0Avar%20xul%20%3D%20this.Help%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.tooltipText%20+%3D%20%22%5CnGenerate%20list%20of%20enabled%20extensions%20to%20selected%20output%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnHTML%2C%20Markdown%2C%20BBCode%2C%20or%20plain%20text.%22%0A%0Avar%20menupopup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amenupopup.setAttribute%28%22oncommand%22%2C%20%22generate%28event%29%3B%22%29%3B%0Amenupopup.generate%20%3D%20generate.bind%28%29%3B%0A%0A%5B%22HTML%22%2C%20%22Markdown%22%2C%20%22BBCode%22%2C%20%22Plain%20text%22%5D.forEach%28function%28format%29%20%7B%0A%20%20var%20menuitem%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20format%29%3B%0A%7D%29%0A%0Amenupopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%0Avar%20optionsMenu%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AoptionsMenu.setAttribute%28%22label%22%2C%20%22Options%22%29%3B%0AoptionsMenu.setAttribute%28%22oncommand%22%2C%20%22openOptions%28%29%3B%22%29%3B%0AoptionsMenu.openOptions%20%3D%20openOptions.bind%28%29%3B%0A%0Avar%20rptCurrentDate%2C%20rptAddonsURLs%2C%20rptAddonsDescs%2C%20rptThemeScreenshot%2C%0A%20%20%20%20rptInsideSpoiler%3B%0A%0AinitPrefs%28%29%3B%0A%0Afunction%20generate%28aEvent%29%20%7B%0A%20%20if%20%28aEvent.target.getAttribute%28%22label%22%29%20%3D%3D%20%22Options%22%29%20return%3B%0A%20%20initPrefs%28%29%3B%0A%20%20AddonManager.getAddonsByTypes%28%5B%22theme%22%2C%20%22extension%22%5D%2C%20function%28addons%29%20%7B%0A%20%20%20%20var%20theme%3B%0A%20%20%20%20var%20extArray%20%3D%20%5B%5D%3B%0A%20%20%20%20addons.forEach%28function%28addon%29%20%7B%0A%20%20%20%20%20%20if%20%28addon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28addon.type%20%3D%3D%20%22theme%22%29%20theme%20%3D%20addon%3B%0A%20%20%20%20%20%20%20%20else%20extArray.push%28addon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%20%20extArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%29%0A%20%20%20%20var%20title%20%3D%20%22My%20%22%20+%20Application.name%20+%20%22%20information%22%3B%0A%20%20%20%20var%20date%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20switch%20%28aEvent.target.getAttribute%28%22label%22%29%29%20%7B%0A%20%20%20%20%20%20case%20%22HTML%22%3A%20generateHTML%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Markdown%22%3A%20generateMarkdown%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22BBCode%22%3A%20generateBBCode%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Plain%20text%22%3A%20generateText%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20generateHTML%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%27%3C%21doctype%20html%3E%3Chtml%20itemscope%3D%22itemscope%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20itemtype%3D%22http%3A//schema.org/WebPage%22%3E%3Chead%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20itemprop%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Cmeta%20name%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Ctitle%3E%27%20+%20aTitle%20+%20%27%3C/title%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/head%3E%3Cbody%3E%3Ch1%3E%27%20+%20aTitle%20+%20%27%3C/h1%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%3Cp%3ELast%20updated%3A%20%22%20+%20aDate%20+%20%22%3C/p%3E%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EUser%20agent%3C/h2%3E%3Cp%3E%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%3Ch2%3ETheme%3C/h2%3E%3Cp%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getThemeURL%28aTheme%29%20+%20%27%22%3E%27%20+%20aTheme.name%20+%20%27%3C/a%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Cp%3E%3Cimg%20src%3D%22%27%20+%20aTheme.screenshots%5B0%5D.url%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%20alt%3D%22%27%20+%20aTheme.name%20+%20%27%22/%3E%3C/p%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EExtensions%3C/h2%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Col%20class%3D%22column%22%3E%27%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%27%3Cli%20style%3D%22margin-bottom%3A1em%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getAMOPage%28addon.reviewURL%29%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%27%3Ca%20href%3D%22%27%20+%20addon.homepageURL%20+%20%27%22%3E%27%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%3A%20%27%3Ca%20href%3D%22http%3A//www.google.com/search%3Fq%3D%22%27%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%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%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%20%20%20%27%22%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20addon.name%20+%20%27%3C/a%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%3Cbr/%3E%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/li%3E%22%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20%22%3C/ol%3E%3C/body%3E%3C/html%3E%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/html%22%29%3B%0A%7D%0A%0Afunction%20generateMarkdown%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20%22%23%20%22%20+%20aTitle%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20User%20agent%5Cn%5Cn%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Theme%5Cn%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20getThemeURL%28aTheme%29%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Cn%21%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Extensions%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%5Cn%22%20+%20idx%20+%20%22.%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20addon.homepageURL%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%3A%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%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%20%20%20%22http%3A//www.google.com/search%3Fq%3D%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%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%29%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%20%20%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%2C%20%22%250A%250A.md%22%29%3B%0A%7D%0A%0Afunction%20generateBBCode%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%28rptInsideSpoiler%20%3F%20%22%5Bspoiler%3D%22%20+%20aTitle%20+%20%22%5D%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Bb%5DLast%20updated%3A%20%5B/b%5D%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DUser%20agent%3A%5B/b%5D%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DTheme%3A%5B/b%5D%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getThemeURL%28aTheme%29%20+%20%22%5D%22%20+%20aTheme.name%20+%20%22%5B/url%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Bimg%5D%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%5B/img%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DExtensions%3A%5B/b%5D%5Cn%5Blist%3D1%5D%22%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%5B*%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%22%5Burl%3D%22%20+%20addon.homepageURL%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%3A%20%22%5Burl%3Dhttp%3A//www.google.com/search%3Fq%3D%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%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%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%22%5D%22%20+%20addon.name%20+%20%22%5B/url%5D%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20rptInsideSpoiler%20%3F%20%22%5B/list%5D%5B/spoiler%5D%22%20%3A%20%22%5B/list%5D%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20generateText%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20aTitle%20+%20%22%5Cn%22%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aTitle.length%3B%20i++%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%3D%22%3B%0A%20%20%7D%0A%20%20extensions%20+%3D%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnUser%20agent%3A%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnTheme%3A%20%22%20+%20aTheme.name%20+%20%22%5Cn%5CnExtensions%5Cn----------%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%22%20+%20idx%20+%20%22.%20%22%20+%20addon.name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%22%20+%20%28addon.reviewURL%20%3F%20getAMOPage%28addon.reviewURL%29%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20addon.homepageURL%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%7C%7C%20rptAddonsURLs%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20isDefaultTheme%28aTheme%29%20%7B%0A%20%20return%20aTheme.id%20%3D%3D%20%22%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20aTheme.id%20%3D%3D%20%22modern@themes.mozilla.org%22%3B%0A%7D%0A%0Afunction%20getAMOPage%28aReviewURL%29%20%7B%0A%20%20var%20url%20%3D%20aReviewURL.replace%28/%5C/reviews%5C/.*%24/%2C%20%22/%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/mozilla.org%5C/.*%5C/addon%5C//%2C%20%22mozilla.org/addon/%22%29%3B%0A%20%20url%20+%3D%20%22%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20getThemeURL%28aAddon%29%20%7B%0A%20%20var%20url%3B%0A%20%20if%20%28aAddon.reviewURL%29%20%7B%0A%20%20%20%20return%20getAMOPage%28aAddon.reviewURL%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20id%20%3D%20aAddon.id.match%28/%5Cd+/%29.toString%28%29%3B%0A%20%20%20%20if%20%28/getpersonas/.test%28aAddon.screenshots%5B0%5D.url%29%29%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//getpersonas.com/persona/%22%20+%20id%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//addons.mozilla.org/addon/%22%20+%20id%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20url%20+%3D%20%22/%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20doSomething%28aString%2C%20aContentType%2C%20aExt%29%20%7B%0A%20%20var%20doWhat%20%3D%20custombuttons.confirmBox3%28self.name%2C%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%20%20%20%20%20%20%20%20%20%22Extension%20list%20has%20been%20generated.%22%2C%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%20%20%20%20%20%20%20%20%20%22Copy%22%2C%20%22Cancel%22%2C%20%22View%22%29%3B%0A%20%20switch%20%28doWhat%29%20%7B%0A%20%20%20%20case%200%3A%20//%20Copy%0A%20%20%20%20%20%20cbu.gClipboard.write%28aString%29%3B%0A%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//mozapps/skin/xpinstall/xpinstallItemGeneric.png%22%2C%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%20self.name%2C%20%22Copied%20to%20clipboard%21%22%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20case%202%3A%20//%20View%0A%20%20%20%20%20%20var%20url%20%3D%20%22data%3A%22%20+%20aContentType%20+%20%22%3Bcharset%3Dutf-8%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20encodeURIComponent%28aString%29%20+%20%28aExt%20%3F%20aExt%20%3A%20%22%22%29%3B%0A%20%20%20%20%20%20if%20%28Application.id%20%3D%3D%20%22%7B3550f703-e582-4d05-9a08-453d09bdfdc6%7D%22%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Thunderbird%0A%20%20%20%20%20%20%20%20openContentTab%28url%2C%20%22tab%22%2C%20%22%5Ehttps%3F%3A%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20switchToTabHavingURI%28url%2C%20true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20default%3A%20//%20Close%0A%20%20%7D%0A%7D%0A%0Afunction%20getBoolPref%28aPrefName%2C%20aDefVal%29%20%7B%0A%20%20var%20prefRoot%20%3D%20%22custombuttons.extension-list-generator.report.%22%3B%0A%20%20var%20prefBranch%20%3D%20cbu.ps.getBranch%28prefRoot%29%3B%0A%20%20try%20%7B%0A%20%20%20%20return%20prefBranch.getBoolPref%28aPrefName%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20prefBranch.setBoolPref%28aPrefName%2C%20aDefVal%29%3B%0A%20%20%20%20return%20aDefVal%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20initPrefs%28%29%20%7B%0A%20%20rptCurrentDate%20%3D%20getBoolPref%28%22currentDate%22%2C%20true%29%3B%0A%20%20rptAddonsURLs%20%3D%20getBoolPref%28%22addonsURLs%22%2C%20true%29%3B%0A%20%20rptAddonsDescs%20%3D%20getBoolPref%28%22addonsDescriptions%22%2C%20false%29%3B%0A%20%20rptThemeScreenshot%20%3D%20getBoolPref%28%22themeScreenshot%22%2C%20true%29%3B%0A%20%20rptInsideSpoiler%20%3D%20getBoolPref%28%22insideSpoiler%22%2C%20false%29%3B%0A%7D%0A%0Afunction%20openOptions%28%29%20%7B%0A%20%20var%20em%20%3D%20Services.ww.getWindowEnumerator%28%29%3B%0A%20%20var%20winName%20%3D%20%22extension-list-generator-options%22%3B%0A%20%20var%20index%20%3D%201%3B%0A%20%20while%20%28em.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20let%20win%20%3D%20em.getNext%28%29%3B%0A%20%20%20%20if%28win.name%20%3D%3D%20winName%29%20%7B%0A%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20index++%0A%20%20%7D%0A%20%20openDialog%28%22data%3Aapplication/vnd.mozilla.xul+xml%3Bbase64%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28btoa%28xul%29%29%2C%20winName%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20centerscreen%2C%20close%22%29%3B%0A%7D%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%26lt%3B%3Fxml%20version%3D%221.0%22%3F%26gt%3B%0A%26lt%3B%21--%0A%20%20%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20%20%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20%20%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%0A%20%20%20%20Contributor%28s%29%3A%0A%20%20%20%20-%20LouCypher%20%28original%20code%29%0A--%26gt%3B%0A%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22data%3Atext/css%3Bbase64%2CYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%253D%22%3F%26gt%3B%0A%0A%26lt%3Bprefwindow%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20id%3D%22extension-list-generator-options%22%20title%3D%22Extension%20List%20Generator%20Options%22%0A%20%20buttons%3D%22extra2%2C%20accept%2C%20cancel%22%0A%20%20buttonlabelextra2%3D%22Contribute%22%0A%20%20ondialogextra2%3D%22contribute%28%29%3B%20close%28%29%3B%22%0A%20%20onload%3D%22sizeToContent%28%29%3B%22%26gt%3B%0A%0A%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%26lt%3B%21%5BCDATA%5B%0A%20%20%20%20function%20contribute%28%29%20%7B%0A%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//loucypher.github.io/userscripts/donate.html%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3FExtension+List+Generator%22%0A%20%20%20%20%20%20var%20win%20%3D%20window.opener%3B%0A%20%20%20%20%20%20if%20%28%22openContentTab%22%20in%20win%29%20%7B%0A%20%20%20%20%20%20%20%20win.openContentTab%28url%2C%20%22tab%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.openLinkIn%28url%2C%20%22tabshifted%22%2C%20%7B%7D%29%3B%20//%20Requires%20utilityOverlay.js%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%5D%26gt%3B%26lt%3B/script%26gt%3B%0A%0A%20%20%26lt%3Bprefpane%20id%3D%22prefpane-menu%22%20label%3D%22Prefpane%20menu%22%26gt%3B%0A%0A%20%20%20%20%26lt%3Bpreferences%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22date%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.currentDate%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22spoilerTag%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.insideSpoiler%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%26lt%3B/preferences%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BSelect%20which%20informations%20to%20include%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Current%20date%22%20preference%3D%22date%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20URLs%22%20preference%3D%22addonsURLs%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20Descriptions%22%20preference%3D%22addonsDescriptions%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Theme%20screenshot%20%28for%20non-default%20theme%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20preference%3D%22themeScreenshot%22/%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BBBCode%20ouput%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Inside%20%5Bspoiler%5D%20tag%22%20preference%3D%22spoilerTag%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Blabel%26gt%3BNot%20all%20forum%20softwares%20support%20this%20tag.%26lt%3B/label%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%26lt%3B/prefpane%26gt%3B%0A%0A%26lt%3B/prefwindow%26gt%3B%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
turbot > 08-09-2016 23:32:36 |
Uxapb Выделить код Код: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%3EExtension%20List%20Generator%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%20*%0A%20*%20%20Contributor%28s%29%3A%0A%20*%20%20-%20LouCypher%20%28original%20code%29%0A%20*/%0A%0Avar%20xul%20%3D%20this.Help%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.tooltipText%20+%3D%20%22%5CnGenerate%20list%20of%20enabled%20extensions%20to%20selected%20output%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnHTML%2C%20Markdown%2C%20BBCode%2C%20or%20plain%20text.%22%0A%0Avar%20menupopup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amenupopup.setAttribute%28%22oncommand%22%2C%20%22generate%28event%29%3B%22%29%3B%0Amenupopup.generate%20%3D%20generate.bind%28%29%3B%0A%0A%5B%22HTML%22%2C%20%22Markdown%22%2C%20%22BBCode%22%2C%20%22Plain%20text%22%5D.forEach%28function%28format%29%20%7B%0A%20%20var%20menuitem%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20format%29%3B%0A%7D%29%0A%0Amenupopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%0Avar%20optionsMenu%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AoptionsMenu.setAttribute%28%22label%22%2C%20%22Options%22%29%3B%0AoptionsMenu.setAttribute%28%22oncommand%22%2C%20%22openOptions%28%29%3B%22%29%3B%0AoptionsMenu.openOptions%20%3D%20openOptions.bind%28%29%3B%0A%0Avar%20rptCurrentDate%2C%20rptAddonsURLs%2C%20rptAddonsDescs%2C%20rptThemeScreenshot%2C%0A%20%20%20%20rptInsideSpoiler%3B%0A%0AinitPrefs%28%29%3B%0A%0Afunction%20generate%28aEvent%29%20%7B%0A%20%20if%20%28aEvent.target.getAttribute%28%22label%22%29%20%3D%3D%20%22Options%22%29%20return%3B%0A%20%20initPrefs%28%29%3B%0A%20%20AddonManager.getAddonsByTypes%28%5B%22theme%22%2C%20%22extension%22%5D%2C%20function%28addons%29%20%7B%0A%20%20%20%20var%20theme%3B%0A%20%20%20%20var%20extArray%20%3D%20%5B%5D%3B%0A%20%20%20%20addons.forEach%28function%28addon%29%20%7B%0A%20%20%20%20%20%20if%20%28addon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28addon.type%20%3D%3D%20%22theme%22%29%20theme%20%3D%20addon%3B%0A%20%20%20%20%20%20%20%20else%20extArray.push%28addon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%20%20extArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%29%0A%20%20%20%20var%20title%20%3D%20%22My%20%22%20+%20Services.appinfo.name%20+%20%22%20%22%20+%20Services.appinfo.version%20+%20%22%20information%22%3B%0A%20%20%20%20var%20date%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20switch%20%28aEvent.target.getAttribute%28%22label%22%29%29%20%7B%0A%20%20%20%20%20%20case%20%22HTML%22%3A%20generateHTML%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Markdown%22%3A%20generateMarkdown%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22BBCode%22%3A%20generateBBCode%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Plain%20text%22%3A%20generateText%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20generateHTML%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%27%3C%21doctype%20html%3E%3Chtml%20itemscope%3D%22itemscope%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20itemtype%3D%22http%3A//schema.org/WebPage%22%3E%3Chead%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20itemprop%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Cmeta%20name%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Ctitle%3E%27%20+%20aTitle%20+%20%27%3C/title%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/head%3E%3Cbody%3E%3Ch1%3E%27%20+%20aTitle%20+%20%27%3C/h1%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%3Cp%3ELast%20updated%3A%20%22%20+%20aDate%20+%20%22%3C/p%3E%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EUser%20agent%3C/h2%3E%3Cp%3E%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%3Ch2%3ETheme%3C/h2%3E%3Cp%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getThemeURL%28aTheme%29%20+%20%27%22%3E%27%20+%20aTheme.name%20+%20%27%3C/a%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Cp%3E%3Cimg%20src%3D%22%27%20+%20aTheme.screenshots%5B0%5D.url%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%20alt%3D%22%27%20+%20aTheme.name%20+%20%27%22/%3E%3C/p%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EExtensions%3C/h2%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Col%20class%3D%22column%22%3E%27%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%27%3Cli%20style%3D%22margin-bottom%3A1em%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getAMOPage%28addon.reviewURL%29%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%27%3Ca%20href%3D%22%27%20+%20addon.homepageURL%20+%20%27%22%3E%27%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%3A%20%27%3Ca%20href%3D%22http%3A//www.google.com/search%3Fq%3D%22%27%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%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%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%20%20%20%27%22%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20addon.name%20+%20%27%3C/a%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%3Cbr/%3E%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/li%3E%22%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20%22%3C/ol%3E%3C/body%3E%3C/html%3E%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/html%22%29%3B%0A%7D%0A%0Afunction%20generateMarkdown%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20%22%23%20%22%20+%20aTitle%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20User%20agent%5Cn%5Cn%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Theme%5Cn%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20getThemeURL%28aTheme%29%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Cn%21%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Extensions%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%5Cn%22%20+%20idx%20+%20%22.%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20addon.homepageURL%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%3A%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%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%20%20%20%22http%3A//www.google.com/search%3Fq%3D%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%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%29%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%20%20%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%2C%20%22%250A%250A.md%22%29%3B%0A%7D%0A%0Afunction%20generateBBCode%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%28rptInsideSpoiler%20%3F%20%22%5Bspoiler%3D%22%20+%20aTitle%20+%20%22%5D%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Bb%5DLast%20updated%3A%20%5B/b%5D%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DUser%20agent%3A%5B/b%5D%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DTheme%3A%5B/b%5D%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getThemeURL%28aTheme%29%20+%20%22%5D%22%20+%20aTheme.name%20+%20%22%5B/url%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Bimg%5D%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%5B/img%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DExtensions%3A%5B/b%5D%5Cn%5Blist%3D1%5D%22%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%5B*%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%3F%20%22%5Burl%3D%22%20+%20addon.homepageURL%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%3A%20%22%5Burl%3Dhttp%3A//www.google.com/search%3Fq%3D%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%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%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%22%5D%22%20+%20addon.name%20+%20%22%5B/url%5D%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20rptInsideSpoiler%20%3F%20%22%5B/list%5D%5B/spoiler%5D%22%20%3A%20%22%5B/list%5D%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20generateText%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20aTitle%20+%20%22%5Cn%22%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aTitle.length%3B%20i++%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%3D%22%3B%0A%20%20%7D%0A%20%20extensions%20+%3D%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnUser%20agent%3A%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnTheme%3A%20%22%20+%20aTheme.name%20+%20%22%5Cn%5CnExtensions%5Cn----------%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%22%20+%20idx%20+%20%22.%20%22%20+%20addon.name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%22%20+%20%28addon.reviewURL%20%3F%20getAMOPage%28addon.reviewURL%29%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20addon.homepageURL%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%7C%7C%20rptAddonsURLs%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20isDefaultTheme%28aTheme%29%20%7B%0A%20%20return%20aTheme.id%20%3D%3D%20%22%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20aTheme.id%20%3D%3D%20%22modern@themes.mozilla.org%22%3B%0A%7D%0A%0Afunction%20getAMOPage%28aReviewURL%29%20%7B%0A%20%20var%20url%20%3D%20aReviewURL.replace%28/%5C/reviews%5C/.*%24/%2C%20%22/%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/mozilla.org%5C/.*%5C/addon%5C//%2C%20%22mozilla.org/addon/%22%29%3B%0A%20%20url%20+%3D%20%22%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20getThemeURL%28aAddon%29%20%7B%0A%20%20var%20url%3B%0A%20%20if%20%28aAddon.reviewURL%29%20%7B%0A%20%20%20%20return%20getAMOPage%28aAddon.reviewURL%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20id%20%3D%20aAddon.id.match%28/%5Cd+/%29.toString%28%29%3B%0A%20%20%20%20if%20%28/getpersonas/.test%28aAddon.screenshots%5B0%5D.url%29%29%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//getpersonas.com/persona/%22%20+%20id%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//addons.mozilla.org/addon/%22%20+%20id%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20url%20+%3D%20%22/%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20doSomething%28aString%2C%20aContentType%2C%20aExt%29%20%7B%0A%20%20var%20doWhat%20%3D%20custombuttons.confirmBox3%28self.name%2C%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%20%20%20%20%20%20%20%20%20%22Extension%20list%20has%20been%20generated.%22%2C%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%20%20%20%20%20%20%20%20%20%22Copy%22%2C%20%22Cancel%22%2C%20%22View%22%29%3B%0A%20%20switch%20%28doWhat%29%20%7B%0A%20%20%20%20case%200%3A%20//%20Copy%0A%20%20%20%20%20%20cbu.gClipboard.write%28aString%29%3B%0A%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//mozapps/skin/xpinstall/xpinstallItemGeneric.png%22%2C%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%20self.name%2C%20%22Copied%20to%20clipboard%21%22%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20case%202%3A%20//%20View%0A%20%20%20%20%20%20var%20url%20%3D%20%22data%3A%22%20+%20aContentType%20+%20%22%3Bcharset%3Dutf-8%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20encodeURIComponent%28aString%29%20+%20%28aExt%20%3F%20aExt%20%3A%20%22%22%29%3B%0A%20%20%20%20%20%20if%20%28Services.appinfo.ID%20%3D%3D%20%22%7B3550f703-e582-4d05-9a08-453d09bdfdc6%7D%22%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Thunderbird%0A%20%20%20%20%20%20%20%20openContentTab%28url%2C%20%22tab%22%2C%20%22%5Ehttps%3F%3A%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20switchToTabHavingURI%28url%2C%20true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20default%3A%20return%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20getBoolPref%28aPrefName%2C%20aDefVal%29%20%7B%0A%20%20var%20prefRoot%20%3D%20%22custombuttons.extension-list-generator.report.%22%3B%0A%20%20var%20prefBranch%20%3D%20cbu.ps.getBranch%28prefRoot%29%3B%0A%20%20try%20%7B%0A%20%20%20%20return%20prefBranch.getBoolPref%28aPrefName%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20prefBranch.setBoolPref%28aPrefName%2C%20aDefVal%29%3B%0A%20%20%20%20return%20aDefVal%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20initPrefs%28%29%20%7B%0A%20%20rptCurrentDate%20%3D%20getBoolPref%28%22currentDate%22%2C%20true%29%3B%0A%20%20rptAddonsURLs%20%3D%20getBoolPref%28%22addonsURLs%22%2C%20true%29%3B%0A%20%20rptAddonsDescs%20%3D%20getBoolPref%28%22addonsDescriptions%22%2C%20false%29%3B%0A%20%20rptThemeScreenshot%20%3D%20getBoolPref%28%22themeScreenshot%22%2C%20true%29%3B%0A%20%20rptInsideSpoiler%20%3D%20getBoolPref%28%22insideSpoiler%22%2C%20false%29%3B%0A%7D%0A%0Afunction%20openOptions%28%29%20%7B%0A%20%20var%20em%20%3D%20Services.ww.getWindowEnumerator%28%29%3B%0A%20%20var%20winName%20%3D%20%22extension-list-generator-options%22%3B%0A%20%20var%20index%20%3D%201%3B%0A%20%20while%20%28em.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20let%20win%20%3D%20em.getNext%28%29%3B%0A%20%20%20%20if%28win.name%20%3D%3D%20winName%29%20%7B%0A%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20index++%0A%20%20%7D%0A%20%20openDialog%28%22data%3Aapplication/vnd.mozilla.xul+xml%3Bbase64%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28btoa%28xul%29%29%2C%20winName%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20centerscreen%2C%20close%22%29%3B%0A%7D%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%26lt%3B%3Fxml%20version%3D%221.0%22%3F%26gt%3B%0A%26lt%3B%21--%0A%20%20%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20%20%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20%20%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%0A%20%20%20%20Contributor%28s%29%3A%0A%20%20%20%20-%20LouCypher%20%28original%20code%29%0A--%26gt%3B%0A%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22data%3Atext/css%3Bbase64%2CYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%253D%22%3F%26gt%3B%0A%0A%26lt%3Bprefwindow%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20id%3D%22extension-list-generator-options%22%20title%3D%22Extension%20List%20Generator%20Options%22%0A%20%20buttons%3D%22extra2%2C%20accept%2C%20cancel%22%0A%20%20buttonlabelextra2%3D%22Contribute%22%0A%20%20ondialogextra2%3D%22contribute%28%29%3B%20close%28%29%3B%22%0A%20%20onload%3D%22sizeToContent%28%29%3B%22%26gt%3B%0A%0A%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%26lt%3B%21%5BCDATA%5B%0A%20%20%20%20function%20contribute%28%29%20%7B%0A%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//loucypher.github.io/userscripts/donate.html%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3FExtension+List+Generator%22%0A%20%20%20%20%20%20var%20win%20%3D%20window.opener%3B%0A%20%20%20%20%20%20if%20%28%22openContentTab%22%20in%20win%29%20%7B%0A%20%20%20%20%20%20%20%20win.openContentTab%28url%2C%20%22tab%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.openLinkIn%28url%2C%20%22tabshifted%22%2C%20%7B%7D%29%3B%20//%20Requires%20utilityOverlay.js%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%5D%26gt%3B%26lt%3B/script%26gt%3B%0A%0A%20%20%26lt%3Bprefpane%20id%3D%22prefpane-menu%22%20label%3D%22Prefpane%20menu%22%26gt%3B%0A%0A%20%20%20%20%26lt%3Bpreferences%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22date%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.currentDate%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22spoilerTag%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.insideSpoiler%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%26lt%3B/preferences%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BSelect%20which%20informations%20to%20include%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Current%20date%22%20preference%3D%22date%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20URLs%22%20preference%3D%22addonsURLs%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20Descriptions%22%20preference%3D%22addonsDescriptions%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Theme%20screenshot%20%28for%20non-default%20theme%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20preference%3D%22themeScreenshot%22/%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BBBCode%20ouput%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Inside%20%5Bspoiler%5D%20tag%22%20preference%3D%22spoilerTag%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Blabel%26gt%3BNot%20all%20forum%20softwares%20support%20this%20tag.%26lt%3B/label%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%26lt%3B/prefpane%26gt%3B%0A%0A%26lt%3B/prefwindow%26gt%3B%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
Uxapb > 09-09-2016 00:40:52 |
turbot, большое спасибо. |
Mishania > 12-09-2016 22:07:29 |
Есть кнопка для запуска VBscript, а такой же только |
turbot > 12-09-2016 22:44:43 |
Mishania |
Mishania > 13-09-2016 08:15:05 |
turbot |
turbot > 13-09-2016 17:15:08 |
Mishania пишет
Код, естественно, поправить нужно, чтоб сработала. Как минимум, позаменять document на window.content.document. |
_zt > 26-09-2016 17:04:11 |
Помогите пожалуйста сделать обе эти инициализации рабочими. Вместе, в одной или разных кнопках, очистка строки поиска не работает, fix работает. Напомню, фикс нужен для открытия новой вкладки при нажатии на лупу, без него новая вкладка открывается только по Enter. скрытый текст // ------ Очистка searchbar по ПКМ на иконке лупы var sbar = document.getElementById("searchbar"); var attr = '\ butt.setAttribute("onclick", attr); // ------ Фикс открытия новой вкладки при ЛКМ по лупе |
Mishania > 26-09-2016 19:06:30 |
В ESR 45.4.0 перестала работать Menuitem hider Выделить код Код: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%3EMenuitem%20hider%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8fHz/fHx8/3t7e/97e3v/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/6Gkyf9HWOP/OEas//f3+v////////////////////////////////////////////Ly8///////fHx8/3x8fP9ueNT/Rlzs/x810P+/xe///////////////////////////////////////9fX3f+Mjbb//////3x8fP98fHz/V2HM/0FZ5P8xRt3/P02w/3d6jv6FhYX+hYWF/oWFhf6FhYX+hYWF/oWFhf5HSZH/T1B6/oWFhf58fHz/fHx8/5me8v80TN3/HDfd/ztIu//IzfL///////////////////////////+6u87/NULL/+Dg5P//////fHx8/3x8fP/o6PX/VGPS/xYy2P8aMMv/ra3A///////////////////////o6Or/NUjT/3uCvP///////////3x8fP98fHz/hYWF/nd4k/4xRtb/Ei7a/yQwpv9ycXT+hYWF/oWFhf6AgYP+OUOb/yE1yf95eXz+hYWF/oWFhf58fHz/fHx8////////////e36v/x820P8QLd7/VVur//T09P//////cXjC/xs27v+qrMj/////////////////fHx8/3x8fP///////////42Njf+7vfX/ITjT/x444P9dZLD/YWq3/xUy8/9lb8P//////////////////////3x8fP98fHz/hYWF/oWFhf6FhYX+hYWF/nl7oP4aLbj/DSbT/w4r4f8sOrP/e3uC/oWFhf6FhYX+hYWF/oWFhf58fHz/fHx8////////////jY2N//T09v+ho9X/FCzS/wki2/8DHNP/OknJ/8fN9v//////////////////////fHx8/3x8fP///////////2xtf/9dZ7//GDPk/wcn6/8vQtH/ZnDX/wke0f8+S7n/ys7n/////////////////3x8fP98fHz/dXV7/mNolP9reeT/VGr5/0BX9f8yRMn/cHGG/oWFhf5rb7L+KkPy/zE8of9mZnT+hYWF/oWFhf58fHz/e3t8/2Vy0P+JmPj/h5b6/3qK9v9/idz/3Nzl/////////////////9na+P+Ik/j/Y27S/5CSrP/y8vP/fHx8/3x8fP+WpPn/coPp/4OP3/+ws9f/9vb6////////////////////////////+fn9/8XH+P+Mk+//ZWmq/3t7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20ids%20%3D%20%5B%0A%22%23context-viewsource%22%2C%20/*%20%u0418%u0441%u0445%u043E%u0434%u043D%u044B%u0439%20%u043A%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B*/%0A%22%23lpt_lpcontentareacontextmenu%22%2C%20/*%20LastPass*/%0A%22%23lpt_lpfillformsmenu4%22%2C%20/*%20LastPass%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0444%u043E%u0440%u043C*/%0A%22%23context-viewbgimage%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u043E%u043D%u043E%u0432%u043E%u0435%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435*/%0A%22%23context-viewinfo%22%2C%20/*%20%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435*/%0A%22%23context-sep-viewsource%22%2C%20/*%20menuseparator*/%0A%0A%22%23context-openlinkintab%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435*/%0A%22%23context-openlinkprivate%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u043C%20%u043F%u0440%u0438%u0432%u0430%u0442%u043D%u043E%u043C%20%u043E%u043A%u043D%u0435*/%0A%22%23context-openlink%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u043C%20%u043E%u043A%u043D%u0435*/%0A%0A%22%23context-bookmarklink%22%2C%20/*%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438*/%0A%22%23context-setDesktopBackground%22%2C%20/*%20%u0421%u0434%u0435%u043B%u0430%u0442%u044C%20%u0444%u043E%u043D%u043E%u0432%u044B%u043C%20%u0440%u0438%u0441%u0443%u043D%u043A%u043E%u043C%20%u0440%u0430%u0431%u043E%u0447%u0435%u0433%u043E%20%u0441%u0442%u043E%u043B%u0430%u2026*/%0A%22%23context-sendimage%22%2C%20/*%20%u041E%u0442%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u043F%u043E%20%u043F%u043E%u0447%u0442%u0435%u2026*/%0A%22%23context-copyimage-contents%22%2C%20/*%20%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435*/%0A%22%23context-saveimage%22%2C%20/*%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u043A%u0430%u043A%u2026*/%0A%22%23context-bookmarkpage%22%2C%20/*%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443*/%0A%22%23toggle_lpt_lastpass-toolbar%22%2C%20/*%20%u041F%u0430%u043D%u0435%u043B%u044C%20%u0438%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u043E%u0432%20LastPass*/%0A%22%23toggle_Gismeteo-toolbar%22%2C%20/*%20Gismeteo.Bar*/%0A%22%23toggle_Overlay_Toolbar%22%2C%20/*%20SimpleTV%20Toolbar*/%0A%0A%5D//menuitem%20hider%20mark%0A%0Avar%20button%20%3D%20this%2C%20currentImage%20%3D%20this.image%3B%0Aconst%20imgFalse%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8fHz/fHx8/3t7e/97e3v/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/6Gkyf9HWOP/OEas//f3+v////////////////////////////////////////////Ly8///////fHx8/3x8fP9ueNT/Rlzs/x810P+/xe///////////////////////////////////////9fX3f+Mjbb//////3x8fP98fHz/V2HM/0FZ5P8xRt3/P02w/3d6jv6FhYX+hYWF/oWFhf6FhYX+hYWF/oWFhf5HSZH/T1B6/oWFhf58fHz/fHx8/5me8v80TN3/HDfd/ztIu//IzfL///////////////////////////+6u87/NULL/+Dg5P//////fHx8/3x8fP/o6PX/VGPS/xYy2P8aMMv/ra3A///////////////////////o6Or/NUjT/3uCvP///////////3x8fP98fHz/hYWF/nd4k/4xRtb/Ei7a/yQwpv9ycXT+hYWF/oWFhf6AgYP+OUOb/yE1yf95eXz+hYWF/oWFhf58fHz/fHx8////////////e36v/x820P8QLd7/VVur//T09P//////cXjC/xs27v+qrMj/////////////////fHx8/3x8fP///////////42Njf+7vfX/ITjT/x444P9dZLD/YWq3/xUy8/9lb8P//////////////////////3x8fP98fHz/hYWF/oWFhf6FhYX+hYWF/nl7oP4aLbj/DSbT/w4r4f8sOrP/e3uC/oWFhf6FhYX+hYWF/oWFhf58fHz/fHx8////////////jY2N//T09v+ho9X/FCzS/wki2/8DHNP/OknJ/8fN9v//////////////////////fHx8/3x8fP///////////2xtf/9dZ7//GDPk/wcn6/8vQtH/ZnDX/wke0f8+S7n/ys7n/////////////////3x8fP98fHz/dXV7/mNolP9reeT/VGr5/0BX9f8yRMn/cHGG/oWFhf5rb7L+KkPy/zE8of9mZnT+hYWF/oWFhf58fHz/e3t8/2Vy0P+JmPj/h5b6/3qK9v9/idz/3Nzl/////////////////9na+P+Ik/j/Y27S/5CSrP/y8vP/fHx8/3x8fP+WpPn/coPp/4OP3/+ws9f/9vb6////////////////////////////+fn9/8XH+P+Mk+//ZWmq/3t7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3B%0A%0Aconst%20pn%20%3D%20%22custombutton.menuitem_hider.active%22%3B%0Avar%20prefs%20%3D%20Application.prefs%3B%0Aif%20%28%20%21prefs.has%28pn%29%20%29%20prefs.setValue%28%20pn%2C%20true%20%29%3B%0Avar%20pref%20%3D%20prefs.get%28%20pn%20%29%3B%0A%0Avar%20ios%20%3D%20Cc%5B%27@mozilla.org/network/io-service%3B1%27%5D.getService%28Ci.nsIIOService%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Aconst%20us%20%3D%20sss.USER_SHEET%3B%0A%0Afunction%20makeCssURI%28%29%20%7B%0A%20%20%20%20%20%20%20%20cssStr%20%3D%20ids%20+%20%22%20%7B%20display%3A%20none%20%21important%20%7D%22%0A%20%20%20%20%20%20%20%20return%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28cssStr%29%2C%20null%2C%20null%29%3B%0A%7D%0Avar%20currCssURI%20%3D%20makeCssURI%28%29%3B%0Aif%20%28%20pref.value%20%29%20regSheet%28%20currCssURI%2C%20true%20%29%3B%0A%0Afunction%20regSheet%28newCssURI%2C%20reg%29%20%7B%0A%0A%09if%20%28sss.sheetRegistered%28currCssURI%2C%20us%29%29%20sss.unregisterSheet%28currCssURI%2C%20us%29%3B%0A%09if%20%28%21reg%29%20return%3B%0A%09if%20%28%21sss.sheetRegistered%28newCssURI%2C%20us%29%29%20sss.loadAndRegisterSheet%28newCssURI%2C%20us%29%3B%0A%09currCssURI%20%3D%20newCssURI%3B%0A%7D%0Afunction%20onClick%28e%29%20%7B%0A%09if%20%28e.button%20%21%3D%201%29%20return%3B%0A%09var%20target%20%3D%20e.target%3B%0A%09var%20nn%20%3D%20target.nodeName%3B%0A%09if%20%28nn%20%21%3D%20%22menuitem%22%20%26%26%20nn%20%21%3D%20%22menu%22%20%26%26%20nn%20%21%3D%20%22menuseparator%22%29%20return%3B%0A%09var%20id%20%3D%20target.id%3B%0A%09if%20%28%21id%29%20return%3B%0A%09var%20label%20%3D%20target.label%20%7C%7C%20target.nodeName%3B%0A%0A%09var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20button.id%29%3B%0A%09var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%09param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%09var%20init%20%3D%20param.initCode%3B%0A%09var%20index%20%3D%20init.indexOf%28%22%5Cn%5D//menuitem%20hider%20mark%22%29%3B%0A%09var%20part1%20%3D%20init.substring%280%2C%20index%29%3B%0A%09var%20part2%20%3D%20init.substring%28index%2C%20init.length%29%3B%0A%09param.initCode%20%3D%20part1%20+%20%27%22%23%27%20+%20id%20+%20%27%22%2C%20/*%20%27%20+%20label%20+%20%27%5C*%5C/%27%20+%20%27%5Cn%27%20+%20part2%3B%0A%09custombuttons.cbService.installButton%28param%29%3B%09%0A%7D%0AaddEventListener%28%22click%22%2C%20onClick%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%09removeEventListener%28%22click%22%2C%20onClick%2C%20false%29%3B%0A%09regSheet%28currCssURI%2C%20false%29%3B%0A%09if%20%28reason%20%3D%3D%20%22delete%22%29%20pref.reset%28%29%3B%0A%7D%0Abutton.onclick%20%3D%20function%28e%29%20%7B%0A%09if%20%28e.button%29%20return%3B%0A%09pref.value%20%3D%20%21pref.value%3B%0A%09button.image%20%3D%20pref.value%20%3F%20currentImage%20%3A%20imgFalse%3B%0A%09pref.value%20%3F%20button.init%28%29%20%3A%20button.onDestroy%28%29%3B%0A%7D%0Abutton.image%20%3D%20pref.value%20%3F%20currentImage%20%3A%20imgFalse%3B%0Aif%20%28%20%21pref.value%20%29%20button.onDestroy%28%29%3B%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 |
bunda1 > 26-09-2016 19:32:26 |
Mishania пишет
|
bezuma > 26-09-2016 19:37:26 |
Mishania |
_zt > 26-09-2016 19:49:23 |
Ранее советовали код для скрытия панели в заголовке All-in-one sidebar, но сейчас он не работает. Может кто нибудь подправить? |
bunda1 > 26-09-2016 19:59:56 |
_zt пишет
Выделить код Код:// Очистка searchbar по ПКМ на иконке лупы // Фикс открытия новой вкладки при ЛКМ по лупе (bar => { if (!bar) return; var btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"); btn.setAttribute('onclick', '\ event.button == 0 && gPrefService.getBoolPref("browser.search.openintab")\ ? doSearch(value, event.shiftKey ? "tabshifted" : "tab")\ : event.preventDefault(); BrowserSearch.searchBar.value = "";\ '); addDestructor(()=> btn.setAttribute('onclick', 'handleSearchCommand(event);') ); })(BrowserSearch.searchBar); |
foxboy > 26-09-2016 21:25:49 |
Не работает кнопка менеджера загрузок в FF, в PM работает нормально. Выделить код Код: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%3EDownloads%20in%20tab%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%20%3F%20toggleSidebar%28%29%20%3A%20openWebPanel%28%22Downloads%22%2C%20downTabUrl%20%29%3B%20%20%20%20%20%09%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20var%20windows%20%3D%20Components.%20classes%20%5B%27@mozilla.org/appshell/window-mediator%3B1%27%5D.getService%28Components.%20interfaces.%20nsIWindowMediator%29.getEnumerator%20%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%28%20windows.%20hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20windows.getNext%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20win.document.documentURI%20%3D%3D%20%22chrome%3A//mozapps/content/downloads/downloads.xul%22%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.close%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%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%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20BrowserDownloadsUI%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20downloadManagerInTab%28%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20...................................................................%0Avar%20downTabUrl%20%3D%20%27chrome%3A//mozapps/content/downloads/downloads.xul%27%3B%0A%0A//%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0434%u043B%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20....%0Aconst%20trueDownloadsImg%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0Aconst%20falseDownloadsImg%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0A%0A%0A/*%20%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%20%u0432%20%u0442%u0430%u0431%u0435%20%u0438%u043B%u0438%20%u043F%u0435%u0440%u0435%u043C%u0435%u0441%u0442%u0438%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u0438%20%u0443%u0436%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%20%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%20..........................................*/%0Afunction%20downloadManagerInTab%28%20foregroundTab%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20%20%20%20setTimeout%28function%28%29%20%7B%20closeDownloadManager%28%29%20%7D%2C%200%29%3B%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u044B%u0439%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u043A%u0440%u043E%u043C%u0435%20%u043F%u0435%u0440%u0432%u043E%u0439%20....%0A%20%20%20%20%20var%20downTab%20%3D%20null%3B%0A%20%20%20%20%20Array.slice%28%20gBrowser.tabs%20%29.forEach%28function%28tab%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.linkedBrowser.currentURI.spec%20%21%3D%3D%20downTabUrl%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%21downTab%20%3F%20downTab%20%3D%20tab%20%3A%20gBrowser.removeTab%28tab%29%3B%0A%20%20%20%20%20%7D%29%0A%20%20%20%0A%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u043C%u0435%u0441%u0442%u0438%u0442%u044C%20%u0438%u043B%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20....%0A%20%20%20%20%20var%20selTab%20%3D%20gBrowser.selectedTab%3B%0A%20%20%20%20%20if%20%28%20downTab%20%21%3D%3D%20selTab%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20downTab%20%26%26%20gBrowser.visibleTabs.indexOf%28%20downTab%20%29%20%3D%3D%20-1%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20TabView.moveTabTo%28%20downTab%2C%20TabView._window.GroupItems._activeGroupItem.id%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20downTab%20%3D%20downTab%20%7C%7C%20gBrowser.addTab%28%20downTabUrl%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20pos%20%3D%20selTab._tPos%20+%20%28%20downTab._tPos%20%3E%20selTab._tPos%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.moveTabTo%28%20downTab%2C%20pos%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20downTab%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%7D%3B%0A%0A%0A%0A//%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043C%u0435%u043D%u044F%u0435%u043C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0442%u0430%u0431%u0430%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%20.........................................................%0AaddEventListener%28%22TabAttrModified%22%2C%20function%28e%29%20%7B%20%0A%20%20%20%20%20if%20%28%20e.target.linkedBrowser.currentURI.spec%20%3D%3D%20downTabUrl%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20tabIndex%20%3D%20gBrowser.getBrowserIndexForDocument%28%20e.target.linkedBrowser.contentDocument%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20gBrowser.mTabContainer.childNodes%5BtabIndex%5D%3B%0A%20%20%20%20%20%20%20%20%20%20LOG%28tab.label%29%0A%20%20%20%20%20%20%20%20%20%20tab.image%20%3D%20%28%20tab.label%20%3D%3D%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%20%29%3F%20falseDownloadsImg%3A%20trueDownloadsImg%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%7D%2C%20true%2C%20gBrowser.tabContainer%29%3B%0A%0A%0A%0A//%20%u041E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043A%u043E%u043C%u0430%u043D%u0434%u044B%20%u0441%u0432%u044F%u0437%u043D%u044B%u0435%20%u0441%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u043E%u0439%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20%u0438%20%u043A%u043E%u043C%u0430%u043D%u0434%u044B%20%20........%0Afunction%20getCommand%28e%29%20%7B%0A%20%20%20%20%20var%20command%20%3D%20e.target.getAttribute%28%22oncommand%22%29%3B%0A%20%20%20%20%20if%20%28%20command%20%3D%3D%20%22performCommand%28%27cmd_removeFromList%27%29%3B%22%20%7C%7C%20command%20%3D%3D%20%27clearDownloadList%28%29%3B%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20content.document.location%20%3D%3D%20downTabUrl%29%20document.getElementById%28%22Browser%3AReload%22%29.doCommand%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%20%29%20openWebPanel%28%22Downloads%22%2C%20downTabUrl%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%09%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%20%20%20%20%0AaddEventListener%28%22command%22%2C%20getCommand%2C%20true%2C%20window%29%3B%0A%0A%0A%0A//%20%u0418%u0441%u043F%u0440%u0430%u0432%u043B%u044F%u0435%u043C%20%u043E%u0448%u0438%u0431%u043A%u0438%20.......................................................................................%0Afunction%20setFakeArguments%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.target.location.href%20%3D%3D%20%27chrome%3A//mozapps/content/downloads/downloads.xul%27%20%29%20%7B%0A%20%20%20%20%20var%20win%20%3D%20e.target.defaultView%3B%0A%20%20%20%20%20win%20%3D%20win.wrappedJSObject%20%7C%7C%20win%3B%0A%20%20%20%20%20win.arguments%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22TabClose%22%2C%20setFakeArguments%2C%20true%2C%20gBrowser%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20setFakeArguments%2C%20true%2C%20gBrowser%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20setFakeArguments%2C%20true%2C%20document.getElementById%28%27sidebar-box%27%29%29%3B%0A%0A%0A%0A%0A//%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u044B%u0439%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20....................................................................%0Afunction%20closeDownloadManager%28%29%20%7B%0A%20%20%20%20%20var%20wm%20%3D%20Cc%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D.getService%28Ci.nsIWindowMediator%29%3B%0A%20%20%20%20%20var%20dm%20%3D%20wm.getMostRecentWindow%28%22Download%3AManager%22%29%3B%0A%20%20%20%20%20if%20%28%20dm%20%29%20dm.close%28%29%3B%20%20%0A%7D%3B%0A%0A%0A%09%09%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20.....................................................................................%0Athis.tooltipText%20%3D%20%22L%3A%20Download%20Manager%20in%20the%20Sidebar%5CnM%3A%20Download%20Manager%20%5CnR%3A%20Download%20Manager%20in%20the%20Tab%5CnCtrl+R%3A%20CB%20menu%20%22%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 И если можно поменять ЛКМ и ПКМ местами. |
bunda1 > 26-09-2016 21:40:08 |
foxboy пишет
На каком именно FF? |
foxboy > 26-09-2016 21:46:00 |
bunda1 пишет
45 ESR, 38 ESR. PM 24, 25, 25 работает. Т.е. отрывается во вкладке, но загрузок там нет. |
_zt > 26-09-2016 22:54:38 |
bunda1 Код для скрытия панели в заголовке All-in-one sidebar сам нашел по аналогии. Уверен, что понадобится не только мне. скрытый текст Выделить код Код:this._handleClick =()=> { setToolbarVisibility(bar, bar.collapsed); cbu.setPrefs('CB.extra-bar.hidden', bar.collapsed); }; var bar = document.getElementById("sidebar-header"); bar.collapsed = cbu.getPrefs('CB.navBar.hidden'); |
_zt > 26-09-2016 23:38:26 |
bunda1 |
IDDQDesnik > 26-09-2016 23:39:11 |
Приветствую! Выделить код Код:this.setAttribute('command', 'Browser:RestoreLastSession'); this.setAttribute('onncommand', 'doCommand();'); Прошу помочь с починкой. |
_zt > 27-09-2016 11:12:02 |
Есть кнопка добавляющая в контекстное меню вкладок пункт "Клонировать вкладку", но, по не выявленным мной событиям, она частенько размножается в этом меню, замечал до десяти клонов этого пункта. После перезагрузки пункт всегда один. Помогите пожалуйста исправить. скрытый текст Выделить код Код:(function(){ const PREFID = '@mozilla.org/preferences-service;1'; const nsIPrefBranch = Components.interfaces.nsIPrefBranch const PREF = Components.classes[PREFID].getService(nsIPrefBranch); if('TM_init' in window) return; if('MultipleTabService' in window && PREF.getBoolPref('extensions.multipletab.show.multipletab-context-duplicate')) return; gBrowser.duplicateTab = function(aTab) { var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].getService(Components.interfaces.nsISessionStore); var state = ss.getWindowState(aTab.ownerDocument.defaultView); state = JSON.parse(state); state.windows[0].tabs = state.windows[0].tabs.splice(aTab._tPos, 1); ss.setWindowState(window, JSON.stringify(state), false); return document.getAnonymousElementByAttribute(this, "linkedpanel", this.mPanelContainer.lastChild.id); }; gBrowser.duplicateTabInContextMenu = function(event){ const PREFID = '@mozilla.org/preferences-service;1'; const nsIPrefBranch = Components.interfaces.nsIPrefBranch const PREF = Components.classes[PREFID].getService(nsIPrefBranch); var tabs = []; tabs.push(gBrowser.mContextTab); for (var i= 0; i < tabs.length; i++){ var tab = gBrowser.duplicateTab(tabs[i]); if((function(){try{return PREF.getBoolPref('userChrome.openDuplicateNext',false)}catch(e){return false}})()) tab = gBrowser.moveTabTo(tab, tabs[i]._tPos + 1); if(i == 0 && !(function(){try{return PREF.getBoolPref('userChrome.openDuplicateInBackground',false)}catch(e){return false}})()) gBrowser.selectedTab = tab; } } //tab context menu const locale = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch2).getCharPref("general.useragent.locale"); var tabContext = document.getAnonymousElementByAttribute( gBrowser, "anonid", "tabContextMenu") || gBrowser.tabContainer.contextMenu; var menuitem = document.createElement("menuitem") menuitem.id = "duplicateTabContext"; menuitem.setAttribute("label", locale.indexOf("ja") == -1?"Клонировать вкладку":"\u30bf\u30d6\u3092\u8907\u88fd");//タブを複製 menuitem.setAttribute("oncommand", "gBrowser.duplicateTabInContextMenu(event);" ); tabContext.insertBefore(menuitem,tabContext.firstChild.nextSibling); })(); Заметил опечатку: Раскукоживатель коротких ссылок ошибка в тултипе кнопки, ПКМ вместо ЛКМ для работы с буфером (в самом конце инц). |
bunda1 > 27-09-2016 20:07:25 |
_zt пишет
Выделить код Код:// "Дублировать таб" в контекстном меню вкладки, от 27.09.2016. ................. (tabContextMenu => { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Дублировать вкладку"); menuitem.onclick =()=> gBrowser.selectedTab = gBrowser.duplicateTab(gBrowser.mCurrentTab); tabContextMenu.insertBefore(menuitem, tabContextMenu.children[1]); // [1] определяет место нахождение пункта меню addDestructor(()=> menuitem.remove()); })(document.getElementById("tabContextMenu")); 27-09-2016 20:09:05 _zt пишет
Подумаю. 27-09-2016 20:10:26 IDDQDesnik пишет
У меня на последних ночнушках Сustom Buttons вообще не работает. |
voqabuhe > 27-09-2016 20:34:40 |
bunda1 пишет
Работает исправленная №10462 |
IDDQDesnik > 27-09-2016 22:11:48 |
bunda1 пишет
Сам СВ работает, кнопка на тулбаре висит, но при нажатии ничего не происходит |
_zt > 28-09-2016 14:08:40 |
bunda1 Можно еще у вас попросить две кнопки для панелей?: |
bunda1 > 29-09-2016 09:06:44 |
_zt пишет
_zt пишет
Выделить код Код:if ( gBrowser.sessionHistory.index < 1 ) { Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) .showAlertNotification(self.image, self.label, "Нет истории в этой вкладке"); return; } gBrowser.gotoIndex(0); |
bunda1 > 29-09-2016 09:41:28 |
IDDQDesnik пишет
Выделить код Код: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%3ERestore%20Previous%20Session%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAASCAYAAAC9+TVUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY3QUJBMTFDRkIwNzExRTNBQUNCOEJFNEQwOEIwRkExIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY3QUJBMTFERkIwNzExRTNBQUNCOEJFNEQwOEIwRkExIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjdBQkExMUFGQjA3MTFFM0FBQ0I4QkU0RDA4QjBGQTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjdBQkExMUJGQjA3MTFFM0FBQ0I4QkU0RDA4QjBGQTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6mV3xWAAACuUlEQVR42pxUP2gaYRT/9E5NNOopMYFgpQRtG6EEMoWCJSDoEEMHcal0SLcOdeoQoeDSMUPaoUinLt1bsGsolJZgHSy0OrQklFSM8U/U0/PuzN3l94mGaBIoffB4333fu9/7vd/77nSaphFqs7OzLxVFyep0und6vZ70+32CtR3nCzjWsC4jthAH+aPYaDQIS4Y2MzPjNRgMj5rNZgNgB1g/MZlMayzLOvCCpqpqUxTFT7Isv0H6zxEItXMQbLY5jlOMRuN2p9Mh09PTCwATwUqgx5Qszh92u90QCm0B9MMlkCGQaLPZiNlsNmC9H41Gd/1+/x9BELRisXgrk8kEwNA5NTW1Xa1WawD6MgaCihpcYRhGRuyDNpbMPhi93djYUJFiDAaD95PJ5HMAzeP5GQp9Q5T1F4iwVGS4CleQqEun00/X19djoVBIqtfrfCAQ+Li5ufkKLYnQ6044HL43IDBCaLfbX1H1BC4PvevxeMTl5eXHqVRq3mq1ErRF7Hb7ewhcgl7s0tLSylg7Ozs7ryORyB4ocnhUz+mxLNVoUCwWi5FsNtuDwG3sa5IkOcZA4vG4jLA3ZKdd1Js+FwoFksvlCCZjA4iTDgHaSZemMzc39wK9hqjAZMKGehG0lUGr82DS8vl8v8ZAAGDF6FbQ8xHuikwv2CQQtDD3er04APqLi4sHEPr7JJObAGEdDscR7koH41WvADHiInowuV4ikciA9eEYCA4eQMCW0+k8gfNXgZyenjKlUuk3xny4urr6GVvdgWhoIwKAIL6d2y6Xq+x2u8sQTiDXGIS1INzI5/M/8PHtViqVHIv+t0D/GCDH0KOJlkTooVwHQlut1Wp/kX+X53kftnIsLk0B07BALAk9M0DmrhL1ouEdBsUFr9dLNeF0w//JGvl/a4+EbcEtE5fsX4zm82cCDACBqSbnY+m8dgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BrestoreLastSession%28%29%3B%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 |
_zt > 29-09-2016 12:15:44 |
bunda1
|
IDDQDesnik > 30-09-2016 10:19:59 |
bunda1 |
bunda1 > 01-10-2016 17:18:27 |
_zt пишет
|
ifln > 01-10-2016 20:21:48 |
Нужно скопом добавить все открытые вкладки в закладки. В отдельную новую папку на панель закладок. |
bunda1 > 01-10-2016 20:30:18 |
ifln пишет
|
ifln > 01-10-2016 22:51:52 |
bunda1 |
ifln > 02-10-2016 01:35:05 |
bunda1 |
bunda1 > 03-10-2016 22:36:10 |
ifln пишет
Выделить код Код: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%3E%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u043D%u0430%20%u043F%u0430%u043D%u0435%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAEFBwcD5TTywYtQTQHAAAAAAECAgAAAAABAgEDAAAAACZKJaoakiP/K4A0ywIAAAIBAQAAAAAAAAAAAAAAAQEBAQAAAAwaIj8ZrvD9GLr382eet7eKfnt7SkI9PBgQCg4CAAUAJGYouiDSL/87r0DbCgMABwAAAQACAgICAAAAAQMDBAAXFRYjGh8mahGR2O8fx///Ic3//obh/P+s2PD/W7HZ6CKe4NcvmWr7Ercb/0+6P++PTBBXCwUAAwAAAQAAAAAABQYHAxodHzcaFBdLDHrD3ifN//8oxvf6Hsb/+xeLff0FjED/DqRQ/x+hM/8KkhX/Qb1J+nS3UOtUoUjRNHg9vw0NDgEjIiUUIBMRHBstN0sep9/pLNH//y/O+v430v//E3pB/xClAP440zf9Ps1I/zekQv9EpE7/S79j/2jQeP9dpmL/DQ0OAR4jJxAfZoJ2I73u7i/T//8y0Pz+NdT8/zrX//8yp4r/O7ps/2jXlP9/5Iz/YdRr/2KoZf51mWP/Y4JY6ERbR70AAAAAGmV6ckbo//9D5v7+ONf+/jbV/P482f3/P9z9/0Df//9x4/7/fuP//2rTm/903Hj/Zp1f++q7jP+XelyoAAAAAAEBAQEAAQEBECQkITR8h3tJx+DZTN///0Hd/P5D4P3/YOf8/670/P+l8///asiV/3fKev9xnG7778qc/5yDY6gAAAAAAAAAAAAAAAAAAQEBAAAAAAAGBwA0oMfGTOn//4fs/PzN+P//l/D8/7T8//96u5//ZZVl/4Ocfvv84Lz/nIRkqAAAAAAAAAAAAAAAAAECAgIBBgcIAAAAAESAm6Jv5///1vv9++38///u+Pr/3PDz/+Di2v/j1rr/6Ne8+//v0P+ei3KoAAAAAAAAAAAAAAAAAAAAAAIDAwMAAAAAiJiho2zT///L9/z7+f3+//77+v/u7O7/7+Ta///qzP/35Mn7//PX/6KUgagAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACuqKWijdv//87t+Pv/////+fv7/+zu8P/t5dz//OrQ//np0fv/+d//o5eGqAAAAAAAAAAAAAAAAAAAAAADAwMEAAAAAKampaL/////+vr6+////v/8/Pv/7e7v/+/n3v//79f//O3Y+//+6P+kmoqoAAAAAAAAAAAAAAAAAAAAAAMDAwQAAAAApKSkoP/////4+fj5/f39/v39/f7z9Pb/8Oni///z4P/88eD7///y/6SdkKgAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACrq6ui//////v7+/v///////////7///728ez8+vHi/Prz5fn///n/pJ6VpwAAAAAAAAAAAAAAAAAAAAACAgIDAAAAAF5eXlrGxsXE0tLS0erq6un6+vr5////////////////+/v4+/////+opZ2oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwICExMTEisrKylHR0dFaGdnZYmKi4inpqam19TP2pGOiI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0Athis._handleClick%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20folderName%20%3D%20new%20Date%28%29.toLocaleFormat%28%22%25d.%25m.%25Y%20%25H%3A%25M%3A%25S%22%29%3B%0A%20%20%20PlacesUtils.bookmarks.createFolder%283%2C%20folderName%2C%20-1%29%3B%0A%20%20%20%0A%20%20%20var%20folderId%20%3D%20getBookFolderId%28folderName%29%3B%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20getTabsInfo%28%29.forEach%28m%3D%3E%20%0A%20%20%20%20%20%20PlacesUtils.bookmarks.insertBookmark%28folderId%2C%20m.uri%2C%20-1%2C%20m.label%29%29%3B%0A%0A%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20.showAlertNotification%28self.image%2C%20self.label%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3A%20%22%20+%20folderName%29%3B%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20id%20%u043F%u0430%u043F%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20..............%20%0Afunction%20getBookFolderId%28folderName%29%20%7B%0A%20%20%20var%20id%2C%20folder%20%3D%20PlacesUtils.getFolderContents%283%29.root%3B%0A%20%20%20%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20child.title%20%3D%3D%20folderName%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20id%20%3D%20child.itemId%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20return%20id%3B%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%u043C%u0438%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%20..............%20%0Afunction%20getTabsInfo%28%29%20%7B%0A%20%20%20var%20array%20%3D%20%5B%5D%2C%20seenURIs%20%3D%20%5B%5D%3B%0A%20%20%20%0A%20%20%20%5B...gBrowser.tabs%5D.forEach%28tab%3D%3E%20%7B%0A%20%20%20%20%20%20var%20label%20%3D%20tab.label%3B%0A%20%20%20%20%20%20var%20uri%20%3D%20tab.linkedBrowser.currentURI.spec%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20seenURIs%5Buri%5D%20%29%20return%3B%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0442%u0430%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%20%u0443%u0436%u0435%20%u0431%u044B%u043B%0A%20%20%20%20%20%20seenURIs%5Buri%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20array.push%28%7B%20uri%3A%20Services.io.newURI%28uri%2C%20null%2C%20null%29%2C%20label%3A%20label%20%7D%29%3B%0A%20%20%20%7D%29%3B%0A%0A%20%20%20return%20array%3B%0A%7D%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 |
voqabuhe > 03-10-2016 23:51:07 |
bunda1 |
ifln > 04-10-2016 08:07:53 |
bunda1 пишет С временем создания еще лучше. |
bunda1 > 04-10-2016 08:50:13 |
voqabuhe пишет
Это как? |
voqabuhe > 04-10-2016 12:31:03 |
bunda1 |
bunda1 > 04-10-2016 21:35:06 |
voqabuhe пишет
Выделить код Код: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%3E%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAEFBwcD5TTywYtQTQHAAAAAAECAgAAAAABAgEDAAAAACZKJaoakiP/K4A0ywIAAAIBAQAAAAAAAAAAAAAAAQEBAQAAAAwaIj8ZrvD9GLr382eet7eKfnt7SkI9PBgQCg4CAAUAJGYouiDSL/87r0DbCgMABwAAAQACAgICAAAAAQMDBAAXFRYjGh8mahGR2O8fx///Ic3//obh/P+s2PD/W7HZ6CKe4NcvmWr7Ercb/0+6P++PTBBXCwUAAwAAAQAAAAAABQYHAxodHzcaFBdLDHrD3ifN//8oxvf6Hsb/+xeLff0FjED/DqRQ/x+hM/8KkhX/Qb1J+nS3UOtUoUjRNHg9vw0NDgEjIiUUIBMRHBstN0sep9/pLNH//y/O+v430v//E3pB/xClAP440zf9Ps1I/zekQv9EpE7/S79j/2jQeP9dpmL/DQ0OAR4jJxAfZoJ2I73u7i/T//8y0Pz+NdT8/zrX//8yp4r/O7ps/2jXlP9/5Iz/YdRr/2KoZf51mWP/Y4JY6ERbR70AAAAAGmV6ckbo//9D5v7+ONf+/jbV/P482f3/P9z9/0Df//9x4/7/fuP//2rTm/903Hj/Zp1f++q7jP+XelyoAAAAAAEBAQEAAQEBECQkITR8h3tJx+DZTN///0Hd/P5D4P3/YOf8/670/P+l8///asiV/3fKev9xnG7778qc/5yDY6gAAAAAAAAAAAAAAAAAAQEBAAAAAAAGBwA0oMfGTOn//4fs/PzN+P//l/D8/7T8//96u5//ZZVl/4Ocfvv84Lz/nIRkqAAAAAAAAAAAAAAAAAECAgIBBgcIAAAAAESAm6Jv5///1vv9++38///u+Pr/3PDz/+Di2v/j1rr/6Ne8+//v0P+ei3KoAAAAAAAAAAAAAAAAAAAAAAIDAwMAAAAAiJiho2zT///L9/z7+f3+//77+v/u7O7/7+Ta///qzP/35Mn7//PX/6KUgagAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACuqKWijdv//87t+Pv/////+fv7/+zu8P/t5dz//OrQ//np0fv/+d//o5eGqAAAAAAAAAAAAAAAAAAAAAADAwMEAAAAAKampaL/////+vr6+////v/8/Pv/7e7v/+/n3v//79f//O3Y+//+6P+kmoqoAAAAAAAAAAAAAAAAAAAAAAMDAwQAAAAApKSkoP/////4+fj5/f39/v39/f7z9Pb/8Oni///z4P/88eD7///y/6SdkKgAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACrq6ui//////v7+/v///////////7///728ez8+vHi/Prz5fn///n/pJ6VpwAAAAAAAAAAAAAAAAAAAAACAgIDAAAAAF5eXlrGxsXE0tLS0erq6un6+vr5////////////////+/v4+/////+opZ2oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwICExMTEisrKylHR0dFaGdnZYmKi4inpqam19TP2pGOiI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0438%20%u043F%u043E%u0434%u043F%u0430%u043F%u043E%u043A%20%u0441%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u043D%u044B%u043C%u0438%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%20..........%0Avar%20parentFolderName%20%3D%20%22%22%3B%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Athis._handleClick%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20parentFolderId%20%3D%20%28parentFolderName%20%3D%3D%20%22%22%29%20%3F%203%20%3A%20getBookFolderId%28parentFolderName%29%3B%0A%20%20%20var%20folderName%20%3D%20new%20Date%28%29.toLocaleFormat%28%22%25d.%25m.%25Y%20%25H%3A%25M%3A%25S%22%29%3B%20%20%20%20%20%0A%20%20%20PlacesUtils.bookmarks.createFolder%28parentFolderId%2C%20folderName%2C%20-1%29%3B%0A%0A%20%20%20var%20folderId%20%3D%20getBookFolderId%28folderName%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20getTabsInfo%28%29.forEach%28m%3D%3E%20%0A%20%20%20%20%20%20PlacesUtils.bookmarks.insertBookmark%28folderId%2C%20m.uri%2C%20-1%2C%20m.label%29%29%3B%0A%0A%20%20%20var%20parentFolder%20%3D%20%28parentFolderId%20%3D%3D%203%29%20%3F%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%3A%20parentFolderName%3B%0A%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20.showAlertNotification%28self.image%2C%20self.label%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3A%20%22%20+%20parentFolder%20+%20%22%20%3E%20%22%20+%20folderName%29%3B%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20id%20%u043F%u0430%u043F%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20..........%20%0Afunction%20getBookFolderId%28folderName%2C%20id%20%3D%201%29%20%7B%0A%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28id%29.root%3B%0A%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21PlacesUtils.nodeIsFolder%28child%29%20%29%20continue%3B%20%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20child.title%20%3D%3D%20folderName%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.result%20%3D%20child.itemId%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getBookFolderId%28folderName%2C%20child.itemId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20return%20self.result%3B%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%u043C%u0438%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%20..........%20%0Afunction%20getTabsInfo%28%29%20%7B%0A%20%20%20var%20array%20%3D%20%5B%5D%2C%20seenURIs%20%3D%20%5B%5D%3B%0A%20%20%20%0A%20%20%20%5B...gBrowser.tabs%5D.forEach%28tab%3D%3E%20%7B%0A%20%20%20%20%20%20var%20label%20%3D%20tab.label%3B%0A%20%20%20%20%20%20var%20uri%20%3D%20tab.linkedBrowser.currentURI.spec%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20seenURIs%5Buri%5D%20%29%20return%3B%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0442%u0430%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%20%u0443%u0436%u0435%20%u0431%u044B%u043B%0A%20%20%20%20%20%20seenURIs%5Buri%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20array.push%28%7B%20uri%3A%20Services.io.newURI%28uri%2C%20null%2C%20null%29%2C%20label%3A%20label%20%7D%29%3B%0A%20%20%20%7D%29%3B%0A%0A%20%20%20return%20array%3B%0A%7D%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 |
voqabuhe > 04-10-2016 22:05:59 |
bunda1 |
bunda1 > 04-10-2016 22:08:49 |
voqabuhe пишет
на |
broker > 04-10-2016 22:17:58 |
bunda1 Выделить код Код:// "Добавить как закладку в папку" в контекстном меню на странице, от 11.06.2016. .................. ((contextMenu, pref)=> { // Создать новый пункт в контекстном меню на странице .... var menuitem = contextMenu.appendChild(document.createElement("menuitem")); menuitem.setAttribute("id", "context-addBookmark"); menuitem.setAttribute("label", "Добавить закладку в: " + getFolderName()); addDestructor(()=> menuitem.remove()); // Обрабатывать клики на пункте меню .... addEventListener("click", e=> { if ( e.button == 0 ) { // ЛКМ добавить закладку gContextMenu.onLink ? addBookmark(gContextMenu.getLinkURI(), gContextMenu.linkText(), gContextMenu.onLink) // на ссылке : addBookmark(gBrowser.selectedBrowser.webNavigation.currentURI, getDocTitle()); // на странице } if ( e.button == 2 ) { // ПКМ изменить папку для закладок contextMenu.hidePopup(); var val = custombuttons.promptBox(menuitem.label, 'Отмена вернёт значение по умолчанию'); var newFolder = val[0] ? val[1] : defaultFolder; cbu.setPrefs(pref, convertFromUnicode("UTF-8", newFolder)); menuitem.setAttribute("label", "Добавить закладку в: " + newFolder); Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService). showAlertNotification("chrome://global/skin/icons/information-16.png", newFolder, "Папка для добавления закладок"); } }, false, menuitem); // Получить заголовк страницы или название вкладки .... function getDocTitle() { var docTitle = content.document.title || gBrowser.mCurrentTab.label; var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " "); return docTitle.substring(0, 50); }; // Получить из 'about:config' название папки для добавления закладок .... function getFolderName() { try { return Services.prefs.getComplexValue(pref, Ci.nsISupportsString).data } catch(e) { return "Новая папка" }; // папка по умолчанию }; // Получить Id нужной папки закладок .... function getBookFolderId(folderName, parentId = 3, res = false) { var parentFolder = PlacesUtils.getFolderContents(parentId).root; for ( var i = 0; i < parentFolder.childCount; i++ ) { var child = parentFolder.getChild(i); if ( child.title == folderName ) { res = child.itemId; break; } } return res; }; // Добавить текущую страницу или ссылку в папку закладок .... function addBookmark(url, label, link) { var folderName = getFolderName(); var folderId = getBookFolderId(folderName); !folderId && PlacesUtils.bookmarks.createFolder(3, folderName, -1); // создать папку если не существует PlacesUtils.bookmarks.insertBookmark(folderId, url, 0, label); var image = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/information-16.png"; Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService). showAlertNotification(image, label, 'Добавил закладку в папку: ' + folderName); }; })(document.getElementById("contentAreaContextMenu"), "CB.bookmarkFolderForSaving"); |
bunda1 > 04-10-2016 22:35:31 |
broker пишет
Не понял. |
broker > 04-10-2016 22:54:04 |
bunda1 |
voqabuhe > 04-10-2016 23:08:29 |
bunda1 пишет
Спасибо. |
bunda1 > 05-10-2016 21:35:42 |
broker пишет
Выделить код Код:// "Добавить закладки в" в контекстном меню на странице, от 05.10.2016. .................. (()=> { var pref = "CB.bookmarkFolderForSaving"; var image = "chrome://global/skin/icons/information-16.png"; var contextMenu = document.getElementById("contentAreaContextMenu"); var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Создать новый пункт в контекстном меню на странице .... var menuitem = contextMenu.appendChild(document.createElement("menuitem")); menuitem.setAttribute("id", "context-addBookmark"); menuitem.setAttribute("label", "Добавить закладки в: " + getFolderName()); addDestructor(()=> menuitem.remove()); // Обрабатывать клики на пункте меню .... addEventListener("click", e=> { // ЛКМ добавляет все открытие вкладки в папку закладок if ( e.button == 0 ) { var folderName = getFolderName(); var folderId = getBookFolderId(folderName); if ( !folderId ) { // создать папку если не существует PlacesUtils.bookmarks.createFolder(3, folderName, -1); var folderId = getBookFolderId(folderName); } getTabsInfo().forEach(m=> PlacesUtils.bookmarks.insertBookmark(folderId, m.uri, -1, m.label)); alertsService.showAlertNotification(image, 'Добавил все открытие вкладки в папку закладок:', folderName); } // ПКМ устанавливает папку для сохранение закладок if ( e.button == 2 ) { contextMenu.hidePopup(); var val = custombuttons.promptBox(menuitem.label, 'Отмена вернёт предыдущую папку'); var newFolder = val[0] ? val[1] : getFolderName(); cbu.setPrefs(pref, convertFromUnicode("UTF-8", newFolder)); menuitem.setAttribute("label", "Добавить закладки в: " + newFolder); alertsService.showAlertNotification(image, "Папка для добавления закладок:", newFolder); } }, false, menuitem); // Получить из 'about:config' название папки для добавления закладок .... function getFolderName() { try { return Services.prefs.getComplexValue(pref, Ci.nsISupportsString).data } catch(e) { return "Новая папка" }; // папка по умолчанию }; // Получить id папки закладок .... function getBookFolderId(folderName, id = 1) { var folder = PlacesUtils.getFolderContents(id).root; for ( var i = 0; i < folder.childCount; i++ ) { var child = folder.getChild(i); if ( !PlacesUtils.nodeIsFolder(child) ) continue; if ( child.title == folderName ) { self.result = child.itemId; break; } else getBookFolderId(folderName, child.itemId); } return self.result; }; // Получить массив с адресами и названиями вкладок .... function getTabsInfo() { var array = [], seenURIs = []; [...gBrowser.tabs].forEach(tab=> { var label = tab.label; var uri = tab.linkedBrowser.currentURI.spec; if ( seenURIs[uri] ) return; // стоп если такой адрес уже был seenURIs[uri] = true; array.push({ uri: Services.io.newURI(uri, null, null), label: label }); }); return array; }; })(); |
broker > 06-10-2016 01:11:22 |
О спасибо |
_zt > 11-10-2016 00:20:40 |
bunda1 |
xoreax > 08-11-2016 21:51:39 |
Может кто-нить посмотреть почему эта кнопка на ХП работает нормально , а на W7 ... тоже работает, но неправильно. Заместо регулировки яркости - регулирует "бледность", чтоли. скрытый текст Выделить код Код:/* Initialization * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* Based on 'Global - Pseudo Brightness Control' userstyle http://userstyles.org/styles/45663 by luckymouse http://userstyles.org/users/14255 License under Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/ */ const prefName = "custombutton.darken.darkLevel"; function getDarkLevel() { try { return cbu.ps.getIntPref(prefName); } catch (ex) { return 0; } } function getOpacity(aDarkLevel) { var opacity = 0; if (aDarkLevel === 50) opacity = aDarkLevel / 100; else opacity = (100 - aDarkLevel) / 100; return opacity; } function mouseWheel(aEvent) { var darkLevel = getDarkLevel(); if (aEvent.detail > 0) { // Scroll down if (darkLevel < 100) darkLevel++; // Increase number if value < 100 else aEvent.stopPropagation(); // else stop (max = 100) } else { // Scroll up if (darkLevel > 0) darkLevel--; // Decrease number if value > 0 else aEvent.stopPropagation(); // else stop (min = 0) } gBrowser.style.opacity = getOpacity(darkLevel); cbu.ps.setIntPref(prefName, darkLevel); } this.onclick = function onclick(aEvent) { if (aEvent.button !== 1) return; gBrowser.style.opacity = "1"; cbu.ps.setIntPref(prefName, 0); } this.addEventListener("DOMMouseScroll", mouseWheel); var browser = document.getElementById("browser"); browser.style.backgroundColor = "black"; gBrowser.style.opacity = getOpacity(getDarkLevel()); // this.tooltipText = this.name + "\n" + this.Help; this.tooltipText = "ЛКМ(нажатие) Night Style - тёмный стиль для страниц\n\ \+\n\ Darken page - Затемнение страницы колесом\n\ Колесо Верх - Ярче\n\ Колесо Вниз - Темнее\n\ -------------------------------------\n\ СКМ [middle-click ] - Сброс яркости "; |
bunda1 > 08-11-2016 21:58:45 |
xoreax пишет
Замени тему W7 на упрощенную или классическую. Или есть вот такая кнопка: Выделить код Код: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%3E%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u043D%u0430%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u0441%u0442%u0438%u043B%u044C%20..........%0Athis._handleClick%20%3D%28%29%3D%3E%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%20%29%3B%0A%0A%0A//%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0432%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u0445%20%u0438%20%u0441%u0442%u0438%u043B%u0435%20..........%0Athis.onwheel%20%3De%3D%3E%7B%0A%20%20%20var%20i%20%3D%20cbu.getPrefs%28l%29%2C%0A%20%20%20%20%20%20%20i%20%3D%20e.deltaY%20%3C%200%20%3F%20i%20+%20step%20%3A%20i%20-%20step%3B%0A%20%20%20if%20%28%200%20%3C%3D%20i%20%26%26%20i%20%3C%3D%2099%20%29%20cbu.setPrefs%28l%2C%20i%29%3B%0A%0A%20%20%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20true%29%20%29%3B%0A%7D%3B%0A%0A%0A//%20%u0418%u0441%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20position%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20..........%0AaddEventListener%28%22mouseover%22%2C%20e%3D%3E%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target.localName%20%21%3D%3D%20%27img%27%20%29%20return%3B%20%20%0A%20%20%20%0A%20%20%20var%20img%20%3D%20e.target%2C%20node%20%3D%20img%3B%0A%20%20%20if%20%28%20getPosition%28img%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27currentPosition%27%2C%20%27true%27%29%3B%20return%3B%20%7D%3B%20%20%0A%0A%20%20%20while%28%20node%20%3D%20node.parentNode%20%29%20%7B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27relative%27%20%29%20break%3B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27parentPosition%27%2C%20%27true%27%29%3B%20break%3B%20%7D%3B%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%20function%20getPosition%28node%29%20%7B%20try%20%7B%20return%20getComputedStyle%28node%2C%20%27%27%29.position%20%7D%20catch%28e%29%20%7B%20return%20%22%22%20%7D%20%7D%3B%20%20%0A%20%20%20%3B%0A%7D%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20css%20%u043A%u043E%u0434%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20..........%0Avar%20step%20%3D%202%2C%0A%20%20%20%20s%20%3D%20%22CB.darken%22%2C%0A%20%20%20%20help%20%3D%20self.getAttribute%28%27Help%27%29%2C%0A%20%20%20%20l%20%3D%20%22CB.darken.level%22%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20about%3Aconfig%20%u0435%u0441%u043B%u0438%20%u043E%u043D%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20..........%0Acbu.isPref%28l%2C%2028%29%3B%0Acbu.isPref%28s%2C%20false%29%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20%21cbu.getPrefs%28s%29%20%3F%20self.image%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/NTU1/z8/P/89PT3/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv89PT3/Pz8//zU1Nf8AAAD/AAAA/6Ghof+YmJj/ioqK/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/ioqK/5iYmP+hoaH/AAAA/wAAAP+dnZ3/hISE/3R0dP94eHj/eHh4/3h4eP94eHj/eHh4/3h4eP94eHj/eHh4/3R0dP+EhIT/nZ2d/wAAAP8AAAD/qKio/5OTk/+CgoL/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+CgoL/k5OT/6ioqP8AAAD/AAAA/6+vr/+ampr/iYmJ/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/iYmJ/5qamv+vr6//AAAA/wAAAP+1tbX/oqKi/5GRkf+VlZX/lZWV/5WVlf+VlZX/lZWV/5WVlf+VlZX/lZWV/5GRkf+ioqL/tbW1/wAAAP8CAgL/vb29/6mpqf+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/qamp/729vf8CAgL/AAAA/8PDw/+xsbH/n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/7Gxsf/Dw8P/AAAA/zo6Ov/Pz8//xMTE/7a2tv+5ubn/ubm5/7m5uf+5ubn/ubm5/7m5uf+5ubn/ubm5/7a2tv/ExMT/z8/P/zo6Ov9aWlr/2dnZ/9PT0//Jycn/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Jycn/09PT/9nZ2f9aWlr/U1NT/9/f3//a2tr/z8/P/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/z8/P/9ra2v/f39//U1NT/1RUVP/m5ub/4+Pj/9jY2P/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9jY2P/j4+P/5ubm/1RUVP9UVFT/7u7u/+3t7f/i4uL/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/i4uL/7e3t/+7u7v9UVFT/VFRU/+/v7//y8vL/5+fn/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/5+fn//Ly8v/v7+//VFRU/1RUVP/8/Pz//////////////////////////////////////////////////////////////////Pz8/1RUVP9WVlb/kJCQ/5WVlf+VlZX/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aWlv+VlZX/lZWV/5CQkP9WVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%20%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20..........%0Afunction%20setStyleForPages%28%29%20%7B%0A%20%20%20var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20var%20css%20%3D%20help.replace%28/value/g%2C%20cbu.getPrefs%28l%29/100%20%29%3B%20%20%20%20%20%20%0A%20%20%20var%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%20%0A%20%20%20%0A%20%20%20try%20%7B%20sss.unregisterSheet%28previousUri%20%7C%7C%20uri%2C%200%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20previousUri%20%3D%20uri%3B%0A%20%20%20%0A%20%20%20cbu.getPrefs%28s%29%20%26%26%20sss.loadAndRegisterSheet%28uri%2C%200%29%3B%0A%7D%3B%0Acbu.getPrefs%28s%29%20%26%26%20setStyleForPages%28%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%20%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%5Cn%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28ftp%3A//%29%2C%20url-prefix%28file%3A//%29%2C%0Aurl-prefix%28chrome%3A//%29%2C%20url-prefix%28about%29%20%7B%0A%20%20%20browser%7B%20background%3A%20LightGray%20%21important%3B%20%7D%20%20%20%0A%20%20%20%0A%20%20%20/*%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%u0439%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u043C%u0438%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u0430%u043C%u0438%20%u043F%u0441%u0435%u0432%u0434%u043E%u044D%u043B%u0435%u043C%u0435%u043D%u0442%20%u0441%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u043E%u0439%20%u043F%u0440%u043E%u0437%u0440%u0430%u0447%u043D%u043E%u0441%u0442%u044C%u044E%20*/%0A%20%20%20html%3Aafter%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0432%u0435%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%2C%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%0A%20%20%20%23appbar-content%3Aafter%2C%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%20%20%20/*%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0441%u0432%u0435%u0440%u0445%u0443%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23txbTextNodeValue%3Aafter%2C%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%20/*%20%u0440%u0430%u0448%u0438%u0440%u0435%u043D%u0438%u0435%20DOM%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20*/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23editor%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23profiles-list%3Aafter%2C%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23options-panel%3Aafter%2C%0A%20%20%20window%3Anot%28%5Bclass%3D%22theme-dark%22%5D%29%20%23editor%3Aafter%2C%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%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23style-editor-chrome%3Aafter%2C%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23network-inspector-view%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20.cbeditor-textbox%3Aafter%2C%20%23newtab-window%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u0421%u0412%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u043D%u043E%u0432%u0430%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20*/%0A%20%20%20treecols%3Anot%28%5Bid%3D%22placeContentColumns%22%5D%29%3Aafter%2C%20%20%20%20%20%20%20%20%20/*%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%2C%20%u0438%u0441%u0442%u043E%u0440%u0438%u044F%2C%20%u0431%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0430%2C%20about%3Aconfig%20*/%0A%20%20%20%23devtools-webconsole%3Aafter%2C%20%23ConsoleBox%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%2C%20%u0432%u0435%u0431%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%20*/%0A%20%20%20%5Btitle%3D%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%5D%5BhasBrowserHandlers%3D%22true%22%5D%3Aafter%2C%20%20%20/*%20%u0440%u0430%u0437%u043D%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20*/%0A%20%20%20%5Bid%3D%22permissions-page%22%5D%3Aafter%2C%20%5Bid%20%3D%22tabsList%22%5D%3Aafter%2C%0A%20%20%20%5Bid%3D%22contentAreaDownloadsView%22%5D%3Aafter%2C%20%5Bid%3D%22addons-page%22%5D%3Aafter%20%20%20%0A%20%20%20%7B%0A%20%20%20%20%20content%3A%20%22%22%20%21important%3B%0A%20%20%20%20%20position%3A%20fixed%20%21important%3B%0A%20%20%20%20%20top%3A%200%3B%20bottom%3A%200%3B%20left%3A%200%3B%20right%3A%200%3B%0A%20%20%20%20%20background%3A%20%23000%20%21important%3B%0A%20%20%20%20%20z-index%3A%2099999999%20%21important%3B%0A%20%20%20%20%20pointer-events%3A%20none%20%21important%3B%0A%20%20%20%20%20opacity%3A%20value%20%21important%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20%20*/%0A%20%20%20%23comments-test-iframe%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043C%u0435%u043D%u0442%u0430%u0440%u0438%u0438%20%u043D%u0430%20youtube%20*/%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20*/%0A%20%20%20svg%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22img%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22rel%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22ytp-thumbnail%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bid%3D%22watch7-sidebar-modules%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22right_block%20video_right%20video_today%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22photo%22%5D%3Ahover%2C%0A%20%20%20img%3Ahover%3Anot%28%5Bparentposition%5D%29%3Anot%28%5Bcurrentposition%5D%29%3Anot%28%5Bid%3D%22keyboard_picture%22%5D%29%3Anot%28%5Bid%3D%22mpiv-preview%22%5D%29%3Anot%28%5Bid%3D%22splashoverlay%22%5D%29%3Anot%28%5Bclass%3D%22prew%22%5D%29%3Anot%28%5Bclass%3D%22rel%22%5D%29%0A%20%20%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%20%20%20img%5Bparentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%20left%3A%200px%3B%20bottom%3A%200px%3B%0A%20%20%20%7D%0A%20%20%20img%5Bcurrentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%0A%20%20%20/*%20%u043F%u043E%u043B%u043E%u0441%u0430%20%u043F%u043E%u0438%u0441%u043A%u0430%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23yt-masthead-container%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%0A%20%20%20/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20*/%0A%20%20%20embed%5Bflashvars%5D%2C%20%20%0A%20%20%20div%5Bclass%3D%22html5-video-container%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-silverlight%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-shockwave-flash%22%5D%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%7D%0A%0A/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u044B%20%u043D%u0430%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u043D%u044B%u0445%20%u0441%u0430%u0439%u0442%u0430%u0445%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20*/%20%0A@-moz-document%20domain%28politobzor.net%29%20%7B%20%0A%20%20%20html%5Bxmlns%3D%22http%3A//www.w3.org/1999/xhtml%22%5D%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%20%20%20.item%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url-prefix%28http%3A//translate.google.com/translate%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url%28about%3Ahealthreport%29%2C%20url%28about%3Asessionrestore%29%2C%20url%28about%3Awelcomeback%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
Coroner > 08-11-2016 22:11:09 |
xoreax скрытый текст Выделить код Код:/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* Based on 'Global - Pseudo Brightness Control' userstyle http://userstyles.org/styles/45663 by luckymouse http://userstyles.org/users/14255 License under Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/ */ const prefName = "custombutton.darken.darkLevel"; var domain = content.location.hostname; var css = '@-moz-document domain("' + domain + '") {\ html > scrollbar { background: #A9A9A9 !important; }\ html { background: #005500 !important; opacity: .99 !important; }\ }'; function getDarkLevel() { try { return cbu.ps.getIntPref(prefName); } catch (ex) { return 0; } } function getOpacity(aDarkLevel) { var opacity = 0; if (aDarkLevel === 50) opacity = aDarkLevel / 100; else opacity = (100 - aDarkLevel) / 100; return opacity; } function mouseWheel(aEvent) { var darkLevel = getDarkLevel(); if (aEvent.detail > 0) { // Scroll down if (darkLevel < 100) darkLevel++; // Increase number if value < 100 else aEvent.stopPropagation(); // else stop (max = 100) } else { // Scroll up if (darkLevel > 0) darkLevel--; // Decrease number if value > 0 else aEvent.stopPropagation(); // else stop (min = 0) } gBrowser.style.opacity = getOpacity(darkLevel); cbu.ps.setIntPref(prefName, darkLevel); } this.onclick = function onclick(aEvent) { if (aEvent.button !== 1) return; gBrowser.style.opacity = "1"; cbu.ps.setIntPref(prefName, 0); } this.addEventListener("DOMMouseScroll", mouseWheel); var browser = document.getElementById("browser"); browser.style.backgroundColor = "black"; gBrowser.style.opacity = getOpacity(getDarkLevel()); this.tooltipText = this.name + "\n" + this.Help; |
xoreax > 08-11-2016 22:58:09 |
Понятно. Все так и есть, если убрать Аеро , работает кнопка. Причина в Аеро. Coroner - |
Coroner > 09-11-2016 00:06:56 |
xoreax |
andry252 > 13-11-2016 02:04:52 |
Подскажите, почему у меня кнопка Save snapshot to html https://forum.mozilla-russia.org/viewtopic.php?pid=588588#p588588, как-то непонятно работает? |
SendInfo > 13-11-2016 03:07:24 |
andry252 пишет
Попробуй ничего не выделять. Просто нажми кнопку для сохранения всей страницы. |
xoreax > 16-11-2016 19:25:50 |
Coroner пишет
пробовал все, ничего не работает. В w7 с Aero невозможно применить цвет к .... не знаю как правильно, "свойству" или "элементу" browser, этим способом. Выделить код Код:... var browser = document.getElementById("browser"); browser.style.backgroundColor = "#000"; // вот тут и не применяется цвет к элементу. gBrowser.style.opacity = getOpacity(getDarkLevel()); ... Я сделал кнопку отдельную, в качестве эксперимента - и она работает в случае Aero : Выделить код Код:const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent("browser{background-color:#000 !important;opacity:.88;")); if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET); else sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); Пытаюсь объединить , но получается слабо Кнопка bunda1 работает всегда. Но там по-другому все сделано. Благодарю, bunda1. |
broker > 24-11-2016 13:06:02 |
Здравствуйте, не работает пункт "Сохранить всю страницу как PNG" и другие пункти связаные с PNG. Почините пожалуйста FF48. Выделить код Код:// Save+, от 01.03.2015. ................................ // Настройка функций кликов мыши ................................ this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; // Объявляем настройки и переменные для этой вкладки ................................ var addSiteNameToShortcuts = false; // true => добавлять название домена к названию ярлыка var button = this; const file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); const iosService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); const directoryService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties); const foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); // Создать меню для кнопки ................................ var array = [ { label: "Добавить url и сохранить страницу в html", func: "savePage", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAyMjIzwyMjFeLi0tVS8vLlcuLy9XLS4uVywsLFUuLi5aKSkpUggICBMAAAAAAgICAQAAAAAAAAAAAAAAABQTEyOgoJ/yysvL/s3Pz/7Z293/4OPk/+bp6f/t7u7/5eXl/LOysv97e3vLFRUWJQAAAAACAgIDAAAAAAAAAAA8PDxSz9HT/83Qz/fLx8T8z7+5/M/AsPzez8n89e3r/PDx8fyusLL43dzc/52dndMWFhY2AAAAAAICAgIAAAAAODg5T8bEv/+9o476vIR1/7WDcv+uj3v/spCA/8Wqk//Gtab/rqyq/+Pk5fn19fX+np6e4BQUFCgAAAAAAAAAAC4uJU29oYj/wLao+tLDqf/Mv7P/yLik/7zEvP/F0cr/v62Y/6+Kef/Z2NP/6Ors+d3c3P97e3vNBAQEDgIDAAZhRCuYxaSb/8Gvqfu2inL/vIF0/7FmUv+ygG//waaX/8m8tP/CoIn/vqOF/9zg3//l5ef7ycnJ/zY2Nm0hFw08rGJD/6BlYf2mWUD/rW9g/7aNff+ZRyL/pmxR/7RyWv+qaEz/uYR0/69kSf/k1tD//////Ozs6/1iYmK4WTMck61mVv+Yemj8hjsg/51bQ/+wem//n084/6+pq/+3p6H/l0Ux/4lFOf+gWDr/zq2X//b7/fzo6Oj/YWBgsXpXSbnMsp//wNC8/I9jWv+WX1X/tn5w/7iKfv/Tzc7/ztXc/513bf+MSjH/rWJG/7iRd//o7Oz85OPl/2BgYLN1aFqu2tO+/7ejnvyohYD/ybGb/7q1ov/HwrX/7/Lr//T19v/Hzs3/p4V0/6hvW/+6gHf/4uDh/N3e3v9hYWC0dWNPuaVXRP6cfWv8w7Gz/8vHsv/U2dP/4OHf//b08//9/Pv/3drZ/7rBw/+0ppv/wZ2F/9zc3PzW1tj/ZWRktE1HPW2oa1f/lX1t/cTP0v/Ew8T/3Nvd/9LR0//W1tf/5OXl/+/t6v/i6vD/wK+i/8y2o//b3t/81NTU/2FhYbMMDAsPsZ2a1tDX2P++vL390c/P/+Dh4P/b29r/09PS/9rY1//6+Pf/8PP3/8Kqlf/c0sv/3N7g/NTU1P9iYmKyAAAAAEY6MmXozcP/5ezt+OHk6Pzt7Oz9+Pj4/urq6/zs7/T8+f///NXGsPzey8P87vDy/OXm5vnf39//ZWVlrgAAAAAGBQQQdFdHy8Wfhv/d18797e7w/+3t7P/y8u7/7N/G/7unff+/uqT/4+Tl/97d3v/c3Nz/sLCw+h8fH0IBAQABAAEBABEVFx8vJB1cWy8ciZNrU8itknHrkWdIxUsqFnEnJSBRMjQ3WS8uL1csLCtVMjIyXiIiIj4BAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}, { label: "Сохранить всю страницу как PDF", func: "savePageToPDF", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYUw4pJt3V/+Rb1D8lnFP/55zTf+VcVH/lXJS/5VyUv+VclL/lXJS/5VyUv+VclL/k3BR/J56Wv9cRzSkAAAAAJNvUKTto2L/4ppe/uehZf/Pmmr/noZv/9Scav/Wl17/1plh/9eZYf/XmWH/15lh/9eZYf/WmGD/2Jlg/suRXP9mRiuk8rWA/397dP1akKn/rqqi/3LF3f8Mntj/4dLJ///+9f/48u3/9e7n//bt5v/47+f/+O/n//jv5//rvZP/1ZJX/a9/VP9+lrD8AIvz/xOt+f8Douv/ALb6/wC28/9tmar/z8jJ//Lq5/////7//v////n9///6/P3//////+Ta0P/PjVP/pnpT/IWds/+aiXj/5efl/8Px//951/3/LMz//wCx8/8GltL/NIu3/4ycqf/l29L////+//n6+//8/v//3tXM/8+OVP+oe1P/6K57/86QWP/r6Ob////////++v/r9/z/oOb9/zDL//8Arf//AI/r/ydysv+hpqr//PTr///////d1Mz/0I5U/6h7U//osH//wo5g/+fm5P/7/f//9vf5//z7+////vv/9/r8/5Dc/P8Oqv7/AJf//wF02v9ffZ7/8Ojh/+Ha1P/NjFL/qHtT/+ewf//Ej1//7O3r///////+/v7//v7+//f5+v/6+vv////8/8Tq/f8hp/7/AJH//wB18/8/bqj/1MGu/9mXXv+leVH/569+/8iSYv+/tKn/wLew/8O5sf/P0M////////7+/v/3+fv////7/9Hv/v8hoP3/AIn//wB4/v84ZqL/w4NH/619VP/nsYD/x45c/9W5of/bv6j/0Jxt/6J/YP+spqD/2N3i//7////6+/3///76/8vr/v8Slv7/AIb+/wBz//83VH7/nW1B/+ewfv/Fjl7/7Ozr///////9+/r/9d7K/9Ghdv+jd1D/pJ6Y/+jt8f/9///////7/6fb/v8Ahv7/AYD//wRp6f95YlT/57B//8SOXv/n5uT//v7///r7/P/8/v////////XRsv/DhEv/loBu/9DX3P/9/v/////7/2O6/f8Afv//FnTU/5JtTf/nsH//xY9e/+jn5f/+/f//+fj5//n4+P/5+Pn/+/////Xbxf/Wj1D/nX1h/+Ll6P////7/3+/3/w+V//8tcbP/qHJB/+WuffzCjV7/5efn///////+/v7//////////////v7///////XRsP/TnW3/8fT3//////////z/ddD//0Nxl/+zdkH88LmH/9CRWP2+qJT/0M7N/8/Jxv/Pysf/z8rH/8/Kxv/Py8n/zsO6/7+pmP/PzMv/zsnG/9bNyP+nsK7/h4R3/b2BT/+Sb1Ck7qxw/9GSW/69hlb/wYhX/8CIV//AiFf/wIhX/8CIVv/BiVj/xI1d/8CIVv/BiFf/vYZW/9STW/7ppmv/bE80pAAAAACUd16k+sui/+7AmPzwwpr/8MKa//DCmv/wwpr/8MKa//DCmf/vwZj/8MKa//DCmv/uwJj8+cui/5N3XaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить выделенный текст как txt файл", func: "saveSelectionToTxt", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAQE6AAAAZAAAAGgAAAJmAAACZgAAAGYAAABmAAAAZgAAAGYAAABmAAAAZgAAAGYAAABlAAAAaQABAmYAAQEjAAAAADlVkOdVcKHxVXKi8kdklPJLZpfyU3Cg8lJvn/JRbZ7yUW+g8lFun/JRbp/yUG6e8lVyofFVdKjzLkV45wAAAFABAQEAaIzF/3y34v9wsuL/cJe0/0lpgv9bjLP/dLLh/2+v3v9sq9v/cK3d/3Gv3v9sqtv/b7Df/4G77P9VcqT2AAAAVAMDAQBnir/+ZqfU/pDB4/7a3uD+j46N/kxYXv6To6/+1er4/tXp+P7J3/D+1ej4/svg8v6Gut/9aqzd/lhxnvAAAABSAwIBAGaIvv9pptX/ocfj//f4/P/P0tX/g4CA/1xZWf+Woqr/2uz8/9Hl+f/W5fT/2Of3/5fC4v5tq93/Vm+e8QAAAFIDAgEAaYm+/3mw2/+iyeX/9Pn8/+z0+//IzNL/d3h5/0tMTv+Mkpn/xdvs/9Hp/f/O4PL/msXk/nmz4/9XcJ/xAAAAUgMDAQBti7//k7/h/6fL5v/v9fn/4u73/9Dk9P+8wMT/YGpx/zJJWv94iJf/ztzo/9Pp/P+ZwuD+gLfk/1dwnvEAAABSAwMBAHOPwf+myub/sNHp//j7/P/6/P3/8fr///r39P+sxdP/IXWq/xJJcv+NjZD/0+Lu/6TN7f6Ft+L/WXGf8QAAAFIDAwEAd5LD/7PR6/+ZxOP/0ePx/97r9f/Y5/L/3e32/8Tc7f9gseT/CHK3/zBYdv+HiY7/lL/f/pLE7/9bcJ3xAAAAUgMDAQB4k8P/xNvx/5/F5f+kyOX/qMrn/6TH5f+kyOX/sM/q/5e51P9Mm83/GHm3/xxIav9fdYf+pMvs/1x1pfIAAABTAwMBAHmSxf/O4/T/y9/y/8Hb9P/C3PX/wNv0/7vW7/+93ff/utDm/42fsf9Gjbn/EXS2/ytSbv6Fj5r/WnGc8gAAAFICAwEBepPE/tHk9f/S5PX/vMjV/7fCzP+3w8//uMPP/7XBzP+6ytf/qa+4/3h/hv9Ghaz/JoO+/jNXdP82PVnyAAAAVgACAgCBmcb/2+r3/dHh8fyPkpX/kI6N/5yam/+dnJ3/paWk/6enpf+sr6//mpSR/3Bubf9SjbD8H4C+/QsrSvcCAAB/AAAAA3yVx//j8///3u/7/52gpf6pqKf+uLm5/rq7u/7Ly8v+ycnI/paWlf6LjY/+np2f/Xh+g/5gnL7/MX+y/xcgJ80BAgNNN1OUs6W84fDA1O73mJyj/ainpv+2trb/t7e4/8fHyP/Fxsb/kZGQ/4eGhP+vucT/j6G+/W53k/NlkbnwNoOv/AgiNb8CCBsQDRo/YwsaO3B0d33arKyp9q2trfWvr6/2u7u79ru7vPawr7H1sbCt9nJ2gOQIGD6bFCFEYB0qPE1Bf6SpEz9cggAAAAMCAQEBAQAAADIyMmlDQ0ONQUFBhUFBQYVCQkGFQkJBhUhISIRNTU2OKysrZAEAAAUBAQAAAgEAAAkEAAEDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить всю страницу как PNG", func: "WebScreenShot.captureAll", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAiAcFBa4KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwsJCaECAQE/BQMDAAAAAJUgICD4V1ZW/2FhYf5hYWH/YmFh/2BgYP9fX1//X19f/19fX/9gYGD/YmFh/2FhYf9gYGD+ZmVl/1RSUuIVFBQtCgkJy1paWv+Li4v9h4eH/oiIiP6FhYX+i4uL/pKSkv6Sk5P+kpKS/ouLi/6FhYX+iIiI/oiIiP6Hh4f7lZaW/25tbYQNDQ3OcHBw/5KSkv6Li4v/i4uL/5mZmf+EhIT/ZGRk/1tbWv9kZGT/hISE/5mZmf+Li4v/jY2N/4yMjPyWl5f/iomJjQ4NDc13d3f/m5ub/pWVlf+goKD/XFxc/ygoKP8fHyD/GBsb/yAhIv8pKSn/W1tb/6CgoP+Wlpb/lpaW/J6env+Jh4eMDg4OzX1+fv+ioqL+qqqq/1hYWP8ZGRn/Ghwb/x4dHP8mIh//FhQR/xUWF/8aGhr/WFhY/6urq/+cnJz8pKSk/4qJiYwPDg7Ng4OD/7W1tf6MjIz/Ghoa/xYYGP8uKCb/ZEAo/5xyOP++saL/RD45/xISE/8bGxv/jY2N/6+vr/ypqan/ioiIjA8PD82IiIj/xMTE/l1cXP8LDAz/JiId/1o3LP9ADgD/mGog//Dt6P/VysX/Ih4Z/wsMDf9eXl7/v7+//K6urv+KiYmMEA8PzY+Pj//Kysr+SEhH/wEDBv9MPi7/hlES/3dCAP+VZAn/tJVO/7eVXf9OQTL/AAIE/0pJSf/FxcX8tLS0/4qJiYwQEBDNm5ub/9/e3/5SUlL/AAAA/0M7Mf/aya7/ybiO/5RmEf9aIAD/cjkX/z80KP8AAAD/U1JS/9nZ2fzAwMD/i4qKjBEREc2oqKn/8O/w/oeGhv8AAAD/DAsK/6qkof/17uj/nW8l/14eCf9hPTr/ExUU/wAAAP+Hh4f/6urq/MzMzf+Mi4uMERERzbCwsv/r6uz+3Nzd/yoqKv8AAAD/ExEP/2heU/9yWjv/UD0u/xcXFv8AAAD/Kioq/93d3v/l5eb81NTV/4yLi4wSERHNuLm5/+/v8P7z8/P/xsbG/yAgIP8AAAD/AQEB/wAAAP8BAQH/AAAA/yAgIP/Gxsb/9PT0/+np6vzb29v/jIuLjBIREc2+vb7/+Pj5/uvr7P/7+/v/4ODg/3Nyc/8uLi7/Hh4d/y0sLP9zc3P/4ODg//v7+//s7O3/8/P0/OHg4f+Mi4uLFBMTyMPDw//////7+Pj4/ff29v38/Pz9/////fr6+v3u7u79+vr6/f////38/Pz99/b2/fn5+f37+/v53t7e/5KSko4GBgZ7m5yc//j4+P/w8fH/8fLy//Dw8P/u7u7/8vLy//X19f/y8vL/7u7u//Dw8P/x8vL/8vLy/uXl5f/BwcH+k5GRUAAAAAQeHR1yb25uxn59fcZ9fHzGfXx8xn18fMZ9e3vGfHt7xn17e8Z9fHzGfXx8xn18fMZ9fHzGgH9/xYmIiGVaV1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить видимую часть страницы как PNG", func: "WebScreenShot.capturePage", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAiAcFBa4KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwsJCaECAQE/BQMDAAAAAJUgICD4V1ZW/2FhYf5hYWH/YmFh/2BgYP9fX1//X19f/19fX/9gYGD/YmFh/2FhYf9gYGD+ZmVl/1RSUuIVFBQtCgkJy1paWv+Li4v9h4eH/oiIiP6FhYX+i4uL/pKSkv6Sk5P+kpKS/ouLi/6FhYX+iIiI/oiIiP6Hh4f7lZaW/25tbYQNDQ3OcHBw/5KSkv6Li4v/i4uL/5mZmf+EhIT/ZGRk/1tbWv9kZGT/hISE/5mZmf+Li4v/jY2N/4yMjPyWl5f/iomJjQ4NDc13d3f/m5ub/pWVlf+goKD/XFxc/ygoKP8fHyD/GBsb/yAhIv8pKSn/W1tb/6CgoP+Wlpb/lpaW/J6env+Jh4eMDg4OzX1+fv+ioqL+qqqq/1hYWP8ZGRn/Ghwb/x4dHP8mIh//FhQR/xUWF/8aGhr/WFhY/6urq/+cnJz8pKSk/4qJiYwPDg7Ng4OD/7W1tf6MjIz/Ghoa/xYYGP8uKCb/ZEAo/5xyOP++saL/RD45/xISE/8bGxv/jY2N/6+vr/ypqan/ioiIjA8PD82IiIj/xMTE/l1cXP8LDAz/JiId/1o3LP9ADgD/mGog//Dt6P/VysX/Ih4Z/wsMDf9eXl7/v7+//K6urv+KiYmMEA8PzY+Pj//Kysr+SEhH/wEDBv9MPi7/hlES/3dCAP+VZAn/tJVO/7eVXf9OQTL/AAIE/0pJSf/FxcX8tLS0/4qJiYwQEBDNm5ub/9/e3/5SUlL/AAAA/0M7Mf/aya7/ybiO/5RmEf9aIAD/cjkX/z80KP8AAAD/U1JS/9nZ2fzAwMD/i4qKjBEREc2oqKn/8O/w/oeGhv8AAAD/DAsK/6qkof/17uj/nW8l/14eCf9hPTr/ExUU/wAAAP+Hh4f/6urq/MzMzf+Mi4uMERERzbCwsv/r6uz+3Nzd/yoqKv8AAAD/ExEP/2heU/9yWjv/UD0u/xcXFv8AAAD/Kioq/93d3v/l5eb81NTV/4yLi4wSERHNuLm5/+/v8P7z8/P/xsbG/yAgIP8AAAD/AQEB/wAAAP8BAQH/AAAA/yAgIP/Gxsb/9PT0/+np6vzb29v/jIuLjBIREc2+vb7/+Pj5/uvr7P/7+/v/4ODg/3Nyc/8uLi7/Hh4d/y0sLP9zc3P/4ODg//v7+//s7O3/8/P0/OHg4f+Mi4uLFBMTyMPDw//////7+Pj4/ff29v38/Pz9/////fr6+v3u7u79+vr6/f////38/Pz99/b2/fn5+f37+/v53t7e/5KSko4GBgZ7m5yc//j4+P/w8fH/8fLy//Dw8P/u7u7/8vLy//X19f/y8vL/7u7u//Dw8P/x8vL/8vLy/uXl5f/BwcH+k5GRUAAAAAQeHR1yb25uxn59fcZ9fHzGfXx8xn18fMZ9e3vGfHt7xn17e8Z9fHzGfXx8xn18fMZ9fHzGgH9/xYmIiGVaV1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить фрейм на странице как PNG", func: "WebScreenShotByClick.init", image: "data:image/x-icon;base64,AAABAAEAIBkAAAEAIAAMDQAAFgAAACgAAAAgAAAAMgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29fT/2tra/8jIyP/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8jIyP/a2tr/9vX0/+zs7P/ak0b/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/9qTRv/s7Oz/7Ozs/+J9Dv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/6SdmP/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/+vn4//z7+v/6+fj/4n0O/+zs7P/s7Oz/4n0O//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/aFtT//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//j39v/ifQ7/7Ozs/+zs7P/ifQ7/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P9oW1P/7+zq/+/s6v/v7Or/8O3r//Dt6//w7ev/8O3r//Dt6//w7ev/8O3r/+/s6v/w7ev/9fTy/+J9Dv/s7Oz/7Ozs/+J9Dv/49/b/+Pf2//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4/2hbU//q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/y8O//4n0O/+zs7P/s7Oz/4n0O//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/aFtT/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe//Dt6//ifQ7/7Ozs/+zs7P/ifQ7/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P9oW1P/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/7uro/+J9Dv/s7Oz/7Ozs/+J9Dv/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx/2hbU//x7+3/8vDv//Hv7f/x7+3/8e/t//Lw7//x7+3/8e/t//Lw7//x7+3/8vDv//Hv7f/29fT/4n0O/+zs7P/s7Oz/4n0O//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//aFtT/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/8vGwf/ifQ7/7Ozs/+zs7P/ifQ7/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f9nWlL/aFtT/2hbU/9nWlL/Z1pS/2hbU/9oW1P/Z1pS/2daUv9oW1P/aFtT/2hbU/9nWlL/pJyX/+J9Dv/s7Oz/7Ozs/+J9Dv/w7ev/8O3r//Dt6//w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Hv7f/w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Dt6//w7ev/4n0O/+zs7P/s7Oz/4n0O/+/s6v/v7Or/7uro/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/u6uj/7+zq/+/s6v/ifQ7/7Ozs/+zs7P/ifQ7/7uro/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7Ojm/+J9Dv/s7Oz/7Ozs/+J9Dv/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/4n0O/+zs7P/s7Oz/4n0O/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/ifQ7/7Ozs/+zs7P/ifQ7/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+J9Dv/s7Oz/7Ozs/+J9Dv/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/4n0O/+zs7P/s7Oz/4n0O/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/ifQ7/7Ozs/+zs7P/ifQ7/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+J9Dv/s7Oz/7Ozs/+J9Dv/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/k39z/4n0O/+zs7P/s7Oz/4n0O/+Lc2f/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/ifQ7/7Ozs/+zs7P/ifQ7/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+J9Dv/s7Oz/9fTy/+J9Dv/8+/r/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/4n0O//X08v/8+/r/6KFU/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ooVT//Pv6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить выбранную область страницы как PNG", func: "WebScreenShotByClipping.init", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADDn2Hfz5pE/8eVQP7IlkH/yJZB/8iWQf/IlUH/yJVA/8iVQP/IlED/yJQ//8iUP//IlD//yJM+/8iTPv/Hkj3/nI1w//bDbP//8OH//+zW///s1///69b//+rV///p1P//59L//+XQ///izf//38n//9vG///ZxP//1b///dG////Prf/KlkX/88N4/v37///99Pj//fT6//vy9v/68fT/+u/y//rt8P/66u3/+ufq//rl6P/64eT/+93h//3a3//71d7//9LK/86XR//0xHb//vv////18///9fT///f5///4////9f7///P8///v+f//7Pb//+nz///m8f//4eb//9vZ//3Y2v//1Mb/zphH//TGd//+/////Pj1///7///Q58r/m9aV/6TZnv+i15r/otWY/6LTlv+j0pb/mc6M/9DXuf//3+P//Nnc///Wyf/OmUf/9MZ3//7////8+/j//////53WnP+Y5pn/rvGv/6PvpP+e7p//me6b/5nvm/95533/mM+L///j7f/629z//9jL/86ZR//0xnf//v////z9+v//////qtup/8Xzxf/a/tn/z/vO/8n7yf/D+sL/xPvD/6Hzo/+j05b//+Tu//re3///2cz/zplI//XGeP/+/////P36//////+n26f/uvC6/9T71P/K+Mr/xvjG/8D3wP+/+L//nfCf/6LTlf//5u//+t/g///cz//OmUj/9MZ3//7////8/fr//////6rcqv/G9MX/3//f/9n92f/V/NX/0PzQ/9H+0P+s9a7/pdSY///o8f/64OL//9zP/86aSP/0xnf//v////z9+f//////ndid/5TjlP+v7q//qeyp/6jsqf+k7KX/p+6n/4Tlh/+Z0Y7//+r0//rh4v//3tH/zppI//TGd//+/////v77///////Y8Nj/p9+n/6/jr/+t4a3/rd2p/67bpv+u2ab/p9Wc/9jgx///6Oz//OPl///e0f/Omkj/9MV1//7//////fr///78///+/f///////////////////P////j////0+///8fn//+vu///m4v/94+P//97P/86ZSP/zx3v//v/////+/f///////f////v////7////+/////v+///7+///+/f///vz/P/98Pr//+33//3p9///5OL/zppL//a1Sv/0xoL/9cR7//XEfP/1xHz/9cR8//XEfP/1xH3/9cR8//XCev/1wXr/9b94//W9d//1u3X/87l0//y6bP/Llj7/+pMA/vWBAP/1gwD/9YMA//WDAP/1gwD/9YMA//WDAP/1gwD/9YQA//WEAP/1hAD/9YQA//WEAP/zhAH//okA/8qLIv3xpzP/4ptV/+OdU//jnVP/451T/+OdU//jnVP/451T/+OdU//jnVL/451S/+OdUv/jnVL/451S/+GdVf/qnUf/2aRJ/9q0c9/8yn7/98V5/vjGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6/vrIe/+jj2y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { separator: ''}, { label: "Сохранить значок веб-сайта", func: "saveFavicon", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACPVBMVEX09ff////C3L+Uq8+Vq8+Uqs+Zr9CZrtCZr9Gfu+ear8+mt9JRf8ORxl3t8vfF06+Twojs8/d9otl8o9s+aquZrs/X9KLp8Pft8fZhisf//+DBzN2hveihv+pii8hti9pgicl6oNlojs1zncNsi836/P2duebx8/eYyWqBp+Gn0IKBvlKHsm9qmaVuk8zt7/FEbauEv1Tp7/JdhL9oi9Pl8e2LwlmdsdD7/P76+/3H7ofo8+peh8eHwFaSteZ0pkp2gl7q8/Ohy5OApt2by2eZuOqbuOWaezWuvtd7nN2HvWxul9Ty9feQxV5ljcqBp+JEcLCVtOOo0nR7odx5n9suX6Z1mtBzmtSXyGPv9PewzfOzx+O6zu/s8fd9o95Xfrthi8lYhMN5oNnw9ffw9Pjw9Pf8/f6ewO/m8O9zmdE6aapsjdyUwouPxWPDzd6XteOSs9B5nNVpnpqHt7h/s6F6n9d7ntSTttGHwVh4qp+Ev1HH7ox6qk5wj+Hm8e3t9fOm0IKAtqOBpNrx+P9ljcyhs9FpkM2hv+/u8/fF0eOLu4N+vFKgzX3p9OSFqN13qExekIl4n9j7/P3x9PhxmNDm8e9Vg8Zfkozr8veq0YTX9qL//92AtamOwnHFz96Fot1diMh+pd13ntmatu+YyW/3+/+Tqs5UgcShzJNbhsdTf8GHs7bo8PaXtuqMr+Ty8/SZt+SUqs7r7Ox3ndb9/f7t8feZyXGYyWWCpNbz9PRuiteNtNDn7/V4ntjx8fGo3JqNAAAAv3RSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AEVuhDkAAAD+SURBVBhXY5jHzcUMAqxAICq9bx8D96adDFAgaGQOFOBaH7h7zoqZDTlFyptncAAFWBjyi52CXCI0unRLxcECPhsatbbzmlXMnS60hg0kkOxW0uNrq93tNaFpD1ggUm21QK532ZQdSm1hmXKdDCwdnOWVOi1RjNGMQCCrwMDMJ8NZ4LAynVGPkXFp8zpJBubYmn579wXtqhZb0iwn9a1iWLaViYmJ3891obOwYtLEvcYMGyWAAkwJdv6accEhi8LjGVr11SenpC5f61g3NcO0vjCAIc+DjZ2dnWexddWSbYa9nlkM+8BgWsxsK7FZ1VLzRaACNokmtdnyu1QMQgF7Rlh4zWWTAwAAAABJRU5ErkJggg=="}, { label: "Запомнить значок веб-сайта как base64", func: "copyFaviconData", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAI2bv/9RVpf/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAACIkvD/Jia6/ywpq/8AAAAAAAAAAAAAAAAAAAD/AAAA/wbwAf90qpv/Ymic/1RWqP9OUKr/W2Ch/2dumf9YYKT/Ly/B/xQP3/8MB9P/JCGb/wAAAAAAAAAAAAAAAAAAAP8G8AH/U5ea/ycr8f8VIP3/HiP4/ywo8v8sIvb/LCL2/ywi9v8KBOj/BQDe/wQAtv8tK4P/AAAAAAAAAAAAAAD/BvAB/3Sqm/9iaJz/Tim3/0UuuP9GPrT/R0ex/zk8uf8gIMz/FRDe/xEMzv8jIJz/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8AAAD/SqOR/yImvP8sLKj/AAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/BvAB/3Sqm/9KW5r/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAABvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAG8AH/AAAAAAAAAP8G8AH/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BvAB/wbwAf8AAAAAAAAA/wAAAP8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAG8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOesQQBjrEGAAaxBwACsQcABrEHDg6xBwAesQcAPrEHAD6xBw8+sQcPprEHD8axBwAGsQQABrEGAAaxB//+sQQ=="}, { separator: ''}, { label: "Сохранить ярлык страницы как…", func: "saveShortcuts('true')", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP8E/yT/BP8k/5XLDv/zqgD/86oA//I1///yNf//86oA//OqAP/zqgD/86oA//OqAP+Vyw7/lcsO/wT/JP8E/yT/BP8k/5XLDv+Vyw7/86oA//OqAP/yNf//8jX///OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//02AP/9NgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/9NgD//TYA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA/wA31v8AN9b/86oA//9If///SH//86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP8AN9b/ADfW//OqAP//SH///0h///OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/5XLDv+Vyw7/86oA//OqAP/zqgD/86oA/0CA//9AgP//86oA/07+9f9O/vX/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP9AgP//QID///OqAP9O/vX/Tv71//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="}, { label: "Сохранить ярлык страницы без запроса на сохранение", func: "saveShortcuts", image:"data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP8E/yT/BP8k/5XLDv/zqgD/86oA//I1///yNf//86oA//OqAP/zqgD/86oA//OqAP+Vyw7/lcsO/wT/JP8E/yT/BP8k/5XLDv+Vyw7/86oA//OqAP/yNf//8jX///OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//02AP/9NgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/9NgD//TYA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA/wA31v8AN9b/86oA//9If///SH//86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP8AN9b/ADfW//OqAP//SH///0h///OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/5XLDv+Vyw7/86oA//OqAP/zqgD/86oA/0CA//9AgP//86oA/07+9f9O/vX/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP9AgP//QID///OqAP9O/vX/Tv71//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="}, { separator: ''}, { label: "Запомнить изображение как base64, в контекстном меню", value: "Save.WebScreenShotOnImage"}, { label: "Сохранить выделенный текст в файл, в контекстном меню", value: "Save.SelectionToFile" }, { label: "Открыть выделенный текст в внешнем редакторе, в контекстном меню", value: "Save.TextToEditor"}, ]; var menuPopup = self.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); if ( "image" in m ) mItem.setAttribute("image", m.image); if ( "value" in m ) { mItem.setAttribute('type', 'checkbox'); mItem.setAttribute('checked', custombuttons.getPrefs(m.value) ); mItem.setAttribute('onclick', 'custombuttons.setPrefs("' + m.value + '", !custombuttons.getPrefs("' + m.value + '"))'); } if ( "func" in m ) mItem.addEventListener("command", function(e) { eval(m.func + '(' + ')') }, false); menuPopup.appendChild( mItem ); }); addDestructor(function() { menuPopup.parentNode.removeChild( menuPopup ) }); // Сохранить как PNG ................................ WebScreenShot = { capture : function(win, x, y, width, height, isCopy){ var mainWindow = document.getElementById('main-window'); var scrollbox = document.createElement('scrollbox'); scrollbox.width = '1'; scrollbox.height = '1'; mainWindow.appendChild(scrollbox); var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); canvas.style.display = 'inline'; canvas.width = width; canvas.height = height; scrollbox.appendChild(canvas); var ctx = canvas.getContext("2d"); try { ctx.clearRect(0, 0, width, height); ctx.save(); ctx.scale(1.0, 1.0); ctx.drawWindow(win, x, y, width, height, "rgb(255,255,255)"); ctx.restore(); } catch(e) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", button.label, "Не могу сохранить, слишком большая страница", false, "", null, ""); mainWindow.removeChild(scrollbox); } var url = canvas.toDataURL("image/png"); var url = iosService.newURI(url, null, null); var fp = Cc['@mozilla.org/filepicker;1'].createInstance(Ci.nsIFilePicker); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilters( fp.filterImages ); fp.defaultExtension = "png"; fp.defaultString = getDocTitle() + ".png"; if ( fp.show() == fp.returnCancel || !fp.file ) return; var wbp = Cc['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'].createInstance(Ci.nsIWebBrowserPersist); parseInt(Application.version) < 36 ? wbp.saveURI(url, null, null, null, null, fp.file, null) : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+ }, captureAll : function() { var win = content; WebScreenShot.capture(win, 0, 0, win.innerWidth + win.scrollMaxX, win.innerHeight + win.scrollMaxY); }, capturePage : function() { var win = content, doc = win.document, body = doc.body, html = doc.documentElement; var scrX = (body.scrollLeft || html.scrollLeft) - html.clientLeft; var scrY = (body.scrollTop || html.scrollTop) - html.clientTop; WebScreenShot.capture(win, scrX, scrY, win.innerWidth, win.innerHeight); }, // Запомнить изображение на странице как base64 .... onImage : function(image) { var canvas = document.createElementNS(xhtmlns, 'canvas'); canvas.width = image.naturalWidth; canvas.height = image.naturalHeight; var ctx = canvas.getContext('2d'); ctx.drawImage(image, 0, 0); var base64 = canvas.toDataURL(); gClipboard.write( base64 ); // стиль для изображение на сплывающей подсказке .... var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css,'+ encodeURIComponent('#alertImage { height: 25px !important; width: 25px !important; }')); sss.loadAndRegisterSheet(uri, sss.USER_SHEET); // обработчик удаляет стиль если сплывающая подсказка закрывается .... var listener = { observe: function(subject, topic, data) { if ( topic == 'alertfinished') sss.unregisterSheet(uri, sss.USER_SHEET); } } // всплывающая подсказка .... alertsService.showAlertNotification( base64, button.label, "Запомнил изображение как base64", false, "data", listener, ""); }, }; // Сохранить выбранную область страницы как PNG .... WebScreenShotByClipping = { capture : WebScreenShot.capture, handleEvent : function(event){ if (event.button != 0) return false; event.preventDefault(); event.stopPropagation(); switch(event.type){ case 'mousedown': this.downX = event.pageX; this.downY = event.pageY; this.bs.left = this.downX + 'px'; this.bs.top = this.downY + 'px'; this.body.appendChild(this.box); this.flag = true; break; case 'mousemove': if (!this.flag) return; this.moveX = event.pageX; this.moveY = event.pageY; if (this.downX > this.moveX) this.bs.left = this.moveX + 'px'; if (this.downY > this.moveY) this.bs.top = this.moveY + 'px'; this.bs.width = Math.abs(this.moveX - this.downX) + 'px'; this.bs.height = Math.abs(this.moveY - this.downY) + 'px'; break; case 'mouseup': this.uninit(); break; } }, init : function(){ this.win = document.commandDispatcher.focusedWindow; if (this.win == window) this.win = content; this.doc = this.win.document; this.body = this.doc.body; if (!this.body instanceof HTMLBodyElement){ alert("Can not capture."); return false; } this.flag = null; this.box = this.doc.createElement('div'); this.bs = this.box.style; this.bs.border = '#0f0 dashed 2px'; this.bs.position = 'absolute'; this.bs.zIndex = '2147483647'; this.defaultCursor = getComputedStyle(this.body, '').cursor; this.body.style.cursor = 'crosshair'; this.doc.addEventListener('mousedown', this, true); this.doc.addEventListener('mousemove', this ,true); this.doc.addEventListener('mouseup', this ,true); this.doc.addEventListener('click', this, true); }, uninit : function(){ var pos = [this.win, parseInt(this.bs.left), parseInt(this.bs.top), parseInt(this.bs.width), parseInt(this.bs.height)]; this.doc.removeEventListener('mousedown', this, true); this.doc.removeEventListener('mousemove', this, true); this.doc.removeEventListener('mouseup', this, true); this.doc.removeEventListener('click', this, true); this.body.style.cursor = this.defaultCursor; this.body.removeChild(this.box); this.capture.apply(this, pos); }, }; // Сохранить фрейм на странице как PNG .... WebScreenShotByClick = { capture : WebScreenShot.capture, getPosition : function(){ var html = this.doc.documentElement; var body = this.doc.body; var rect = this.target.getBoundingClientRect(); return [ this.win , Math.round(rect.left) + (body.scrollLeft || html.scrollLeft) - html.clientLeft , Math.round(rect.top) + (body.scrollTop || html.scrollTop) - html.clientTop , parseInt(rect.width) , parseInt(rect.height) ]; }, highlight : function(){ this.orgStyle = this.target.hasAttribute('style')? this.target.style.cssText : false; this.target.style.cssText += 'outline: red 2px solid; outline-offset: 2px; -moz-outline-radius: 2px;'; }, lowlight : function(){ if (this.orgStyle) this.target.style.cssText = this.orgStyle; else this.target.removeAttribute('style'); }, handleEvent : function(event){ switch(event.type){ case 'click': if (event.button != 0) return; event.preventDefault(); event.stopPropagation(); this.lowlight(); var pos = this.getPosition(); this.capture.apply(this, pos); this.uninit(); break; case 'mouseover': if (this.target) this.lowlight(); this.target = event.target; this.highlight(); break; } }, init : function(){ this.win = content; this.doc = content.document; this.doc.addEventListener('mouseover', this, true); this.doc.addEventListener('click', this, true); }, uninit : function(){ this.doc.removeEventListener('mouseover', this, true); this.doc.removeEventListener('click', this, true); }, }; // Сохранить ярлык страницы в указанную папку или в последнюю папку сохранения ................................ function saveShortcuts( saveAs ) { // блокируем создание ярлыков для внутреных страниц FF .... if ( !getDocTitle() ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", button.label, "Не поддерживается", false, "", null, ""); return; } var pref = "Save.pathToSaveShortcuts"; var fileName = saveAs ? pathToFile( pref ) : false; if ( saveAs && !fileName ) return; // если у таба есть иконка сохранить иконку таба в установленную папку .... var favicon = /\.jpg/.test(content.location) ? false : gBrowser.mCurrentTab.image; var faviconName = "favicon" + Math.round(Math.random()*1000000000); if ( favicon ) saveFaviconToFolder( faviconName ); /* получить путь для сохранения из 'about:config', добавытъ заголовок страницы и название домена или установленное вручную имя файла и создать ярлык ....*/ var pathToFolder = Application.prefs.getValue( pref, 0); var siteName = addSiteNameToShortcuts ? getSiteName() : ""; var shortcutName = (!!fileName) ? fileName : ( siteName + getDocTitle() + getCurrentTopicNumber() ); var path = pathToFolder + shortcutName + ".url"; file.initWithPath( path ); // адрес страницы в UTF-8 если это протокол 'file' или в 'Punycode' если это .рф домен .... var url = content.document.location; if ( url.protocol == 'file:' ) var url = convertFromUnicode("UTF-8", url); else if ( url.host.slice(-3) == '.рф') var url = Services.io.newURI(url, null, null).asciiSpec; // текст ярлыка из адреса страницы и пути к иконке таба( если она была ) .... var shortcut = "[InternetShortcut]" + "\r\n" + "URL=" + url; var faviconPath = "IconFile=C:\\Documents and Settings\\Favicon\\" + faviconName + ".ico" + "\r\n"; if ( !favicon ) var faviconPath = ""; var data = shortcut + "\r\n" + faviconPath + "IconIndex=0"; // записать текст в ярлык .... foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(data, data.length); foStream.close(); // подсказка .... var notification = 'Сохранил ярлык страницы в ' + pathToFolder; var image = favicon ? favicon : button.image; alertsService.showAlertNotification( image, getDocTitle(), notification, false, "", null, "" ); }; // Установка пути и названия для сохранения ярлыка через диалог сохранения, если отмена отдаст 'false' ................................ function pathToFile( pref ) { // получить предыдущий путь для сохранения из 'about:config' или диск C: .... var pathToFile = Application.prefs.getValue( pref, 0 ); var pathToFile = ( pathToFile == 0 )? "C:\\": pathToFile; // диалог создания и установки пути .... var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init(window, "Укажите путь к файлу и его название!", fp.modeSave); fp.appendFilters( fp.filterAll ); fp.defaultString = getSiteName() + getDocTitle() + getCurrentTopicNumber(); file.initWithPath( pathToFile ); fp.displayDirectory = file; if ( fp.show() == fp.returnCancel ) return false; // убрать название файла из пути к файлу и записать путь в 'about:config' .... var filePath = fp.file.path.toString(); var fileName = fp.file.leafName.toString(); Application.prefs.setValue( pref, filePath.replace( fileName, "" ) ); return fileName; }; // Сохранить в указаную папку иконку таба как .ico и без диалога сохранения ................................ function saveFaviconToFolder( faviconName ) { var path = "C:\\Documents and Settings\\Favicon\\"; var favicon = gBrowser.mCurrentTab.image; var uri = iosService.newURI( favicon, null, null ); // создать папку если не существует .... file.initWithPath( path ); if ( !file.exists() || !file.isDirectory() ) file.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); // конвертировать в .ico файл иконку таба и сохранить, спасибо Dumby за этот код .... var path = path + faviconName + ".ico"; const xhtml = "http://www.w3.org/1999/xhtml"; var img = document.createElementNS(xhtml, "img"); var canvas = document.createElementNS(xhtml, "canvas"); img.src = uri.spec; img.onload = function() { var width = img.width, height = img.height; if (width > 255 || height > 255) return; canvas.width = width; canvas.height = height; var context = canvas.getContext("2d"); context.drawImage(img, 0, 0); var arr = context.getImageData(0, 0, width, height).data; var data = []; for ( var y = 0, l = height * 4; y < l; y += 4 ) { for ( var x = width * 4; x > 0; x -= 4 ) { var pos = x + y * width - 1; data.unshift(arr[pos - 1], arr[pos - 2], arr[pos - 3], arr[pos]) } } function byte(num) { var str = num.toString(2); var l = str.length; var bytes = []; for ( var i = 1; i <= 3; i++ ) { var sub = str.substring(l - i * 8, l - (i - 1) * 8); if ( !sub ) sub = "0"; bytes[i] = parseInt(sub, 2); } return bytes; } var bytesLength = byte(data.length + 40); var bytesHeight = byte(height * 2); var header = [0,0, 1,0, 1,0, img.width, img.height, 0, 0, 1,0, 0,0 , bytesLength[1],bytesLength[2],bytesLength[3],0, 22,0,0,0]; var info = [40,0,0,0,img.width,0,0,0,bytesHeight[1],bytesHeight[2],0,0,1,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; var ico = header.concat(info, data); file.initWithPath(path); var bStream = Cc["@mozilla.org/binaryoutputstream;1"].createInstance(Ci.nsIBinaryOutputStream); foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); bStream.setOutputStream( foStream ); bStream.writeByteArray(ico, ico.length); bStream.close(); foStream.close(); } }; // Добавить адрес наверху страницы и открыть диалог сохранения страницы ................................ function savePage() { var sURL = gURLBar.value; content.document.body.innerHTML = "<table width=100%><tr><td align=left><small><a target=_blank href=" + sURL + ">"+ sURL + "</a></small>\n</td></tr></table>" + content.document.body.innerHTML; saveDocument(window.content.document); }; // Сохранить иконку текущего сайта с диалогом сохранения ................................ function saveFavicon() { saveImageURL(gBrowser.mCurrentTab.image, "save", null, false, false, null, content.document) }; // Скопировать иконку текущего сайта как base64 код ................................ function copyFaviconData() PlacesUtils.favicons.getFaviconDataForPage( gBrowser.currentURI, function( uri, len, arr, mmt ) { if ( !len ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", "Save", "Не поддерживается"); return; } var base64 = "data:" + mmt + ";base64," + btoa(String.fromCharCode.apply(null, arr)) gClipboard.write( base64 ); alertsService.showAlertNotification(base64, "Save", "Запомнил значок веб-сайта как base64"); } ); // Сохранить выделенный текст или весь текст на странице как txt файл ................................ function saveSelectionToTxt() { var sel = getSelect(); if ( !sel ) document.getElementById("cmd_selectAll").doCommand(); // создать название файла из заголовка страницы и текущего времени и сохранить текст .... var fileTitle = (getDocTitle() ? getDocTitle() : self.label) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent((content.location.href.startsWith('data:') ? "" : (content.location.href + "\r\n\r\n")) + getSelect()), fileTitle + ".txt", null, false, false, null, content.document); if ( !sel ) goDoCommand("cmd_selectNone"); }; // Сохраняет страницу как PDF файл через сервис 'pdfmyurl.com' ................................ function savePageToPDF() { // разрешить страницу для расширения NoScript .... if ( "noscriptUtil" in window ) { var autoReload = custombuttons.getPrefs("noscript.autoReload"); if ( autoReload ) custombuttons.setPrefs("noscript.autoReload", false); noscriptOverlay.allowPage(); if ( autoReload ) setTimeout(function() { custombuttons.setPrefs("noscript.autoReload", true) }, 10) } // сохранить .... var loc = content.location; if (loc.protocol.slice(0, 4) == "http") loadURI("http://pdfmyurl.com?url=" + loc); }; // Добавляем в контекстного меню страницы новые пункты ................................ var contextMenu = document.getElementById("contentAreaContextMenu"); // блокировать дублирование новых пунктов try { ["baseItem", "saveItem", "editorItem"].forEach(function(n) { contextMenu.removeChild( document.getElementById("content-" + n ) ) }); } catch(e) { }; // в контекстного меню изображений .... var baseItem = document.createElement("menuitem"); baseItem.id = "content-baseItem"; baseItem.setAttribute("label", "Запомнить изображение как base64"); baseItem.setAttribute("oncommand", "WebScreenShot.onImage( gContextMenu.target )"); contextMenu.appendChild( baseItem ); // как последний пункт меню // в контекстного меню выделенного текста .... var saveItem = document.createElement("menuitem"); saveItem.id = "content-saveItem"; saveItem.setAttribute("label", "Сохранить выделенный текст в файл"); saveItem.setAttribute("oncommand", "document.getElementById('" + this.id + "').saveSelectionToFile()"); contextMenu.insertBefore( saveItem, document.getElementById("context-sep-open") ); // как первый пункт меню var editorItem = document.createElement("menuitem"); editorItem.id = "content-editorItem"; editorItem.setAttribute("label", "Открыть выделенный текст в внешнем редакторе"); editorItem.setAttribute("oncommand", "document.getElementById('" + this.id + "').textToEditor()"); contextMenu.insertBefore( editorItem, document.getElementById("context-sep-open") ); // как первый пункт меню // устанавливаем где и при каких настройках показывать новые пункты контекстного меню .... function handlePopupshowing(e) { if ( e.target != e.currentTarget ) return; var sel = gContextMenu.isTextSelected;; saveItem.hidden = !sel || !cbu.getPrefs("Save.SelectionToFile"); editorItem.hidden = !sel || !cbu.getPrefs("Save.TextToEditor"); baseItem.hidden = !gContextMenu.onImage || !cbu.getPrefs("Save.WebScreenShotOnImage"); } addEventListener('popupshowing', handlePopupshowing, false, contextMenu ); // Запомнить изображение как base64 если нажать правой kлавышей мыши в контекстном меню на пункт 'Сохранить изображение как' ................ function handleClick(e) { if ( e.button !== 2 ) return; WebScreenShot.onImage( gContextMenu.target ); document.getElementById("contentAreaContextMenu").hidePopup(); }; addEventListener("click", handleClick, false, document.getElementById("context-saveimage") ); // Сохранить выделенный текст в файл на рабочем столе ................................ this.saveSelectionToFile = function() { var text = convertFromUnicode("UTF-8", getSelect() ); var textTitle = convertFromUnicode("UTF-8", getDocTitle() ); var time = (new Date()).toLocaleFormat("%H:%M:%S"); // адрес страницы( в UTF-8 если это .рф домен ) .... var url = content.document.location; if ( /\.рф/.test( url.host ) ) var url = convertFromUnicode("UTF-8", url ); /* создать текст для записи из заголовка страницы и текущего времени, адреса страницы и выделенного текста .... */ var line = "............................................................................" + "\n"; var text = line + textTitle + " - " + time + "\n" + url + "\n\n" + text + "\n\n\n"; // путь к файлу и название файла.... var file = directoryService.get("Desk", Components.interfaces.nsIFile); file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt"); // создать файл с текстом или добавлять текст в файл ... !file.exists() ? foStream.init(file, 0x02|0x08|0x20, 0666, 0) : foStream.init(file, 0x02 | 0x10, 0664, 0); foStream.write(text, text.length); foStream.close(); // всплывающая подсказка дает возможность открыть файл если кликнуть на подсказке .... var listener = { observe: function(subject, topic, data) { if ( topic == 'alertclickcallback') file.launch(); // oткрыть файл } }; var notification = 'Сохранил выделенный текст в файл на рабочий стол'; var image = gBrowser.mCurrentTab.image ? gBrowser.mCurrentTab.image : button.image; alertsService.showAlertNotification( image, notification, "Открыть файл", true, "", listener, "" ); }; /* Функция создаст текстовой файл в папке custombuttons в папке профиля и запишет в файл выделенный текст и откроет файл в редакторе ................................ */ this.textToEditor = function() { var text = convertFromUnicode("UTF-8", getSelect() ); // устанавить путь к файлу, записать текст, открыть файл .... var file = directoryService.get("ProfD", Ci.nsIFile); file.append("custombuttons"); file.append("TextToEditor.txt"); foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(text, text.length); foStream.close(); file.launch(); }; // Получить название домена с заглавным первым символом и без приставок( типа .ru и .com ) ................................ function getSiteName() { try { var domain = Cc['@mozilla.org/network/effective-tld-service;1'].getService(Ci.nsIEffectiveTLDService) .getBaseDomain( content.document.documentURIObject ) } catch(e) { return "" }; var num = domain.length; if ( domain.slice(num-3, num-2) == '.' ) var siteName = domain.slice(0, num-3); if ( domain.slice(num-4, num-3) == '.' ) var siteName = domain.slice(0, num-4); var siteName = siteName.charAt(0).toUpperCase() + siteName.slice(1); return siteName + " "; }; // Получить номер топика из текущей страницы если он есть иначе ничего ................................ function getCurrentTopicNumber() { var currUrl = content.location.toString(); var array = currUrl.split('='); var num = array.length if ( num == 1 ) return ''; var val = ( ((num > 2)? (' ' + array[num-2]): '') + ' - ' + array[num-1]); // заменить недопустимые символы и удалить лишние пробелы var val = val.replace(/[:.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " "); return val; }; /* Получить заголовк страницы или название домена если заголовка у страницы нет или название вкладки если домена нет ................................ */ function getDocTitle() { var protocol = content.location.protocol; if ( ["about:", "chrome:", "jar:", "data:"].indexOf( protocol ) !== -1 ) return false; var docTitle = content.document.title || content.document.domain || gBrowser.mCurrentTab.label; // заменить недопустимые символы и удалить лишние пробелы var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " "); return docTitle.slice(0, 50); }; // Функция отдаст выделенный текст из страницы или текстового поля, если текст не выделен отдаст 'false' ................................ function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection(); var anchor = (selection.anchorNode !== null)? selection.anchorNode: false; // выделенный текст из 'PRE' .... if ( anchor && anchor.parentNode.tagName == 'PRE' ) { var node = selection.focusNode; var startPos = selection.anchorOffset; var endPos = selection.focusOffset; var selection = node.data.substring(startPos, endPos); } // выделенный текст из текстового поля .... if ( selection.toString().length == 0 ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } } // исправляем проблему с переносом текста новую строку в стандартном win блокноте .... if ( selection.toString().length !== 0 ) { var selection = selection.toString(); var selection = selection.replace(/\u000A/g, "\u000D\u000A"); var selection = selection.replace(/\u000D\u000D\u000A/g, "\u000D\u000A"); } return ( selection == '') ? false : selection; }; |
manuk > 24-11-2016 13:29:39 |
broker, давно исправили. Поищи Save+, от 13.09.2016. |
broker > 24-11-2016 17:52:45 |
manuk |
bezuma > 27-11-2016 12:24:56 |
В [firefox]50 перестало работать перетаскивание закладок в [CB] Session Manager |
bunda1 > 27-11-2016 14:15:22 |
bezuma пишет
А где можно найти [CB] Session Manager? |
bezuma > 27-11-2016 14:21:35 |
bunda1 |
ifln > 29-11-2016 17:08:07 |
Перешел на FF50.0.1. Поставил кнопку для переназначения newtab. Выделить код Код:var url = "about:blank"; BrowserOpenTab =()=> openUILinkIn(url, "tab"); addEventListener("TabClose", e=> { var tab = e.target; if ( tab == gBrowser.mCurrentTab && tab.hasAttribute('first-tab') ) setTimeout(()=> gBrowser.loadURI(url), 0); }, true, gBrowser.mTabContainer); Работает, но странно. После закрытия вкладки, следующая оказывается пустой. Надо жать Back, чтобы добраться до следующей. |
bunda1 > 29-11-2016 21:28:09 |
ifln пишет
Выделить код Код:var url = "about:blank"; BrowserOpenTab =()=> openUILinkIn(url, "tab"); addEventListener("TabClose", e=> { var tab = e.target; if ( tab == gBrowser.mCurrentTab && !gBrowser.visibleTabs.length ) setTimeout(()=> gBrowser.loadURI(url), 0); }, true, gBrowser.tabContainer); |
ifln > 29-11-2016 23:25:27 |
bunda1, И еще несколько кнопок капризничают. Срабатывают, но по внешнему виду не видно. Выделить код Код:this._handleClick =()=> { [ "dom.storage.enabled" ].forEach((pref)=> cbu.setPrefs(pref, !cbu.getPrefs(pref)) ); }; var s = "dom.storage.enabled"; gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) ); function toggleImage() self.style.filter = !cbu.getPrefs(s) ? grayscale : ''; var grayscale = parseInt(Application.version) < 36 ? 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")' : 'grayscale(1)'; toggleImage(); |
ifln > 30-11-2016 14:50:51 |
ifln пишет
При закрытии последней вкладки вылезает about:newtab |
bunda1 > 30-11-2016 21:58:36 |
ifln пишет
А если так: Выделить код Код:var url = "about:blank"; BrowserOpenTab =()=> openUILinkIn(url, "tab"); addEventListener("TabClose", e=> { var tab = e.target; if ( tab == gBrowser.mCurrentTab && gBrowser.visibleTabs.length == 1 ) setTimeout(()=> gBrowser.loadURI(url), 0); }, true, gBrowser.tabContainer); 30-11-2016 22:00:31 ifln пишет
Выделить код Код:this._handleClick =()=> { [ "dom.storage.enabled" ].forEach((pref)=> cbu.setPrefs(pref, !cbu.getPrefs(pref)) ); }; var s = "dom.storage.enabled"; gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) ); function toggleImage() self.style.filter = !cbu.getPrefs(s) ? grayscale : ''; var grayscale = parseInt(Services.appinfo.version) < 36 ? 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")' : 'grayscale(1)'; toggleImage(); |
ifln > 30-11-2016 22:51:49 |
bunda1, спасибо большое. |
ifln > 30-11-2016 23:36:54 |
bunda1 ifln пишет
bunda1 пишет
Теперь вместе с предпоследней вкладкой |
Dumby > 01-12-2016 00:18:02 |
ifln скрытый текст Выделить код Код:((ants, url = "about:blank") => { if (ants.newTabURL != url) ants.newTabURL = url; addDestructor(reason => reason[5] == "e" && ants.newTabURL == url && ants.resetNewTabURL()); })(aboutNewTabService); |
ifln > 01-12-2016 08:00:38 |
Dumby пишет
Отлично. Спасибо! |
polk90 > 01-12-2016 23:42:01 |
как то в этой ветке была собрана замечательная кнопка, код кнопки скрытый текст Выделить код Код:gBrowser.currentURI.spec != "about:customizing" && (() => { var id = _id + "-" + Components.stack.lineNumber; var mod = Cu.import("resource:///modules/DownloadsLogger.jsm", {}); if (mod[id]) return; mod[id] = true; addDestructor(() => delete mod[id]); var err = Cu.reportError, tmp = OS.Constants.Path.tmpDir + "\\"; Task.spawn(function() { var list = yield Downloads.getList(Downloads.ALL), view = {}; view.onDownloadAdded = view.onDownloadChanged = download => download.progress == 100 && download.target.path.startsWith(tmp) && setTimeout(() => { var uri = makeURI(download.source.url); PlacesUtils.bhistory.removePage(uri); list.remove(download).then(null, err); }, 1e3); yield list.addView(view); setTimeout(() => delete view.onDownloadAdded, 5e3); addDestructor(() => list.removeView(view).then(null, err)); }).then(null, err); })(); |
Dumby > 02-12-2016 05:10:13 |
polk90 скрытый текст Выделить код Код:(tmp => { var id = _id + "-" + Components.stack.lineNumber, err = Cu.reportError; var mod = Cu.import("resource:///modules/DownloadsCommon.jsm", {}); if (mod[id]) return; mod[id] = true; addDestructor(reason => reason[5] == "e" && delete mod[id]); Task.spawn(function() { var list = yield Downloads.getList(Downloads.ALL), view = {}; view.onDownloadAdded = view.onDownloadChanged = download => download.progress == 100 && download.target.path.startsWith(tmp) && setTimeout(() => { var uri = makeURI(download.source.url); PlacesUtils.bhistory.removePage(uri); list.remove(download).then(null, err); }, 1e3); yield list.addView(view); setTimeout(() => delete view.onDownloadAdded, 5e3); addDestructor(() => list.removeView(view).then(null, err)); }).then(null, err); })(OS.Path.join(OS.Constants.Path.tmpDir, "_").slice(0, -1)); |
polk90 > 02-12-2016 05:19:29 |
Dumby |
shadow_user > 31-12-2016 20:01:31 |
Есть ли работающий вариант BBCode не из контекстного меню, например, похожий на этот https://forum.mozilla-russia.org/viewto … 73#p612473 ? Что ни пробую, ничего не работает. |
voqabuhe > 01-01-2017 16:45:30 |
shadow_user пишет
А эта №6367? |
shadow_user > 01-01-2017 16:57:22 |
И эта не работает. |
Kiril__777 > 01-01-2017 17:16:45 |
получается так Помогите исправить. Спасибо |
voqabuhe > 01-01-2017 17:42:56 |
shadow_user пишет
А она рабочая. Ищи причину у себя. CB какая версия? |
shadow_user > 01-01-2017 19:43:30 |
CB v0.0.5.8. Копирую код, вставляю в поле "Код". При клике на кнопке ничего не происходит, нет никакой реакции. Может, что не так делаю? Где должна появиться панель BBCode, или выпадающее меню, или в контекстном меню? |
Infocatcher > 01-01-2017 20:41:11 |
Kiril__777 пишет В данном случае проще всего вот так: Выделить код Код:var add = " u01-04"; cbu.setPrefs("general.useragent.override", navigator.userAgent.replace(add, "") + add); |
voqabuhe > 02-01-2017 00:48:16 |
shadow_user пишет
Код из №6367 надо скопировать и запустить в адресной строке, дальше там вроде будет всё понятно, вот инструкция, если чё №1. Панель должна появляться при нажатие на кнопку. |
Kiril__777 > 02-01-2017 06:07:48 |
Infocatcher |
shadow_user > 02-01-2017 09:37:34 |
voqabuhe пишет
Я чуть не упал, а из адресной строки кнопка установилась и работает! А способы-то равнозначные, что из адресной строки, что в поле "код".
В чем разница между Кодом и Кодом кнопки, и в какие поля их вставлять? |
xseed > 04-01-2017 09:43:32 |
shadow_user пишет
Код должен вставляться во вкладку "Код" |
shadow_user > 06-01-2017 18:19:33 |
xseed пишет
Имеются разночтения, в одном посту так, в другом эдак. |
bunda1 > 09-01-2017 10:35:22 |
xseed пишет
Код кнопки в адресную строку + enter. |
xoreax > 09-01-2017 19:49:20 |
Привет! Выделить код Код:// окно настроек всегда "наверху" window.openDialog("about:config", "Настройки", "alwaysRaised,resizable=yes", window); Но консоль вызывается кнопкой с кодом ибо если я запишу Выделить код Код:window.openDialog("chrome://global/content/console.xul", "Ошибки", "alwaysRaised,resizable=yes", window); запускается как нада(поверх), но нет панели с кнопками "Все, Ошибки, Предупреждения, Сообщения, Очистить" и т.д. Догадываюсь, что в случае с "консолью ошибок", надобно еще какие-то параметры окна дописывать, не знаю какие |
bunda1 > 09-01-2017 20:04:34 |
xoreax |
becool > 09-01-2017 20:08:28 |
Приветсвую! Подскажите, можно ли сделать так, чтобы при клике на "На странице" на этой странице, все открывалось в текущей вкладке, а не в новой. В настройках гугла снятие галки "В новом окне" не помогает. |
Dumby > 09-01-2017 20:37:02 |
xoreax пишет
Может так Выделить код Код:toOpenWindowByType("global:console", "chrome://global/content/console.xul", "chrome,toolbar,resizable,alwaysRaised"); |
xoreax > 09-01-2017 21:01:13 |
bunda1 |
Ultima2m > 24-01-2017 17:11:49 |
Установил v51 отвалилась часть функционала кнопки turbotа Быстрое переключение параметров |
bunda1 > 24-01-2017 17:54:09 |
Ultima2m пишет
Выделить код Код: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%3EQuick%20toggle%20for%20about%3Aconfig%20preferences%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB6klEQVQ4jZWTv2tUQRDHv8ntd28GLLQQfwS5VkuDSgRF/wlRiIiCQQQhhZ1VII1/wDUWkkLTBAsbC0FJYZGQ3NuZRcHYW6UQEQzoeXkW791xXh5CptodZr8z85kd4BBWRJwDgB5wyoCjh3mLbfK8C/ddW11XJlduNgYaeTFpvJWA0+P+BBx3Cf2sLEy5m4WrS8A0AGANaBUSrgKAKzdcY5k0PF4HJGm47NK6nSUMXOIXAEgSrrnG0oU/AGDKNb6qHe9c+Ms1lqbxqws/uoTfWVp3ksRll/DTJM6bcMWEn1KbDysBCW+zsnSNpWssTbg3PNf3uw7MuHDgym8uoW8aX496SxKXs7J0iTsFObcGRBfey8rShP1EXthSnDHhShJ0vM0H1uYiAKBSHWZqLYyDc+H7sSpeNlMX9l1jWWebEAgjgSxcbRRYB46YhCcVxH9bqDP3nbyUBB0XPk+Cjgnvj1qoqohvJqDtTUBdcGAmSzgIEQBM2R0fY/U41GPkwNpcTBKfmnDPNN4w4TOX+NnbfAQAWAKmXcMVAMgaNqrM1UfqkbMmrXkT/nGJO1XF4Xod8/0Ak4KcKzTe3AROjPs/AMdM2M8atk25a8IXAKYawTZZj5jNEvZN2TVldg3Ny/RfkYizALAFnByu819tzvCRWXKqTwAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0411%u044B%u0441%u0442%u0440%u043E%u0435%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%20about%3Aconfig%20%u043E%u0442%2024.07.2016%0Athis._handleClick%20%3D%28%29%3D%3E%20menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%0A%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0AmenuPopup.id%20%3D%20%27quick-aboutconfig-menupopup%27%3B%0A%0A//%20%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043F%u0440%u0438%20%u043D%u0435%u0441%u043E%u043E%u0442%u0432%u0435%u0442%u0441%u0442%u0432%u0438%u0435%20%u043B%u044E%u0431%u043E%u0433%u043E%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%u043F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C%u0441%u043A%u043E%u043C%u0443%20%u043F%u0440%u0435%u0434%u043F%u043E%u0447%u0442%u0435%u043D%u0438%u044E%20%28%u0441%u043C.%20%u043D%u0438%u0436%u0435%29.%0A//%20%u0418%u043A%u043E%u043D%u043A%u0430%20%u043C%u0435%u043D%u044F%u0435%u0442%u0441%u044F%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u0438%u0438%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u043B%u0438%u0431%u043E%20%u043F%u043E%u0441%u043B%u0435%20%u0435%u0433%u043E%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u044F.%0Avar%20s%20%3D%20%27CB.hasNotUserChoice%27%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20var%20val%20%3D%20custombuttons.getPrefs%28s%29%3B%0A%20%20self.image%20%3D%20val%0A%20%20%20%20%3F%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB6klEQVQ4jZWTv2tUQRDHv8ntd28GLLQQfwS5VkuDSgRF/wlRiIiCQQQhhZ1VII1/wDUWkkLTBAsbC0FJYZGQ3NuZRcHYW6UQEQzoeXkW791xXh5CptodZr8z85kd4BBWRJwDgB5wyoCjh3mLbfK8C/ddW11XJlduNgYaeTFpvJWA0+P+BBx3Cf2sLEy5m4WrS8A0AGANaBUSrgKAKzdcY5k0PF4HJGm47NK6nSUMXOIXAEgSrrnG0oU/AGDKNb6qHe9c+Ms1lqbxqws/uoTfWVp3ksRll/DTJM6bcMWEn1KbDysBCW+zsnSNpWssTbg3PNf3uw7MuHDgym8uoW8aX496SxKXs7J0iTsFObcGRBfey8rShP1EXthSnDHhShJ0vM0H1uYiAKBSHWZqLYyDc+H7sSpeNlMX9l1jWWebEAgjgSxcbRRYB46YhCcVxH9bqDP3nbyUBB0XPk+Cjgnvj1qoqohvJqDtTUBdcGAmSzgIEQBM2R0fY/U41GPkwNpcTBKfmnDPNN4w4TOX+NnbfAQAWAKmXcMVAMgaNqrM1UfqkbMmrXkT/nGJO1XF4Xod8/0Ak4KcKzTe3AROjPs/AMdM2M8atk25a8IXAKYawTZZj5jNEvZN2TVldg3Ny/RfkYizALAFnByu819tzvCRWXKqTwAAAABJRU5ErkJggg%3D%3D%27%0A%20%20%20%20%3A%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAACXBIWXMAAABnAAAAZwHVKNQmAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBA3y7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BUMDVQYqg4jIKAX08EGIIUByaVEZhMXIwMDAoM2Qw7CDkY8xi/EskynTYmYR5i4WFpZGVibWNjYetmnsyuybOVw5bnIWcHFyLeV24n7E08KrwXuOr4xfnv+0QIWguuANoS5hO+EvIqtFU8TkxW6Jz5AIlxSXvCE1RzpBRk3mrexWuXp5LwUxhSeKm5SalENU1FR+qp5TW6JerRGsqaPFpvVIe5/ObN0qvSh9KwMZg3+Gj4yOG68xmWxaZZZs7mNhbqlkxWf12/qlzQ3bE3Y77Vc7zHWc6NTqXOVS4JruFuce7hHg6eXl6u3oY+dr7WfpbxFgEWgRZBlsHWIX6hTmFu4dERgZHhUfnR5TEFsZ1xzflzArcVnS5uSDKedT76W9S/+XKZClmG2S454bnZef31owq3Bj0YniByU/ygTLtStcKxOqaqpn1GytvVT3oYG/Ua/Jrzm/ZULrprYr7d87pbvsu5N7OnvX9V3t/zNRZZLP5JIp86aemPZphuxMz1mlsxfOOT/3z3ztBVELOxftXPxqqfQyn+V1KzaufLJaYo3P2sZ129a/2ai0KXLzxC0ntjFut9pRvHPtrhd7lPbG7Zu1/9pB4UOBh/uPnD3Gc9z7RPfJM6d5zvidnXDu0gXRixGX5lx+cFXlWtb19Te+3rK53Xzn1D2h+9EPljx8+9j8SePTM8/FXyS9XPfq9xuPt1PfPf5g+LHh0/kv8l/zv+3/IfAz6deWP2x/I/6t/v8fAATCIM0IpJTRAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAEOSURBVHjabJGtS0MBFMXPJojBMMPwC1nV6FCZoGj/ZVGYiIJDBOEFm3XFP2DFIAu6ZrAYBM0OREEUnN20ICI40OfbsTzYB48b7oF74J4PWUnDjMU4GSv5PEubCo/UuwjMs8FEjLOEPNCkRloWAyxb3GEOGWKRTSLeLFYwXyLFBeaGH8w7z/yyRZlvilR5YV+kuMYY04r3NpNEfBByaYksZUyDAoPsYELmmKJKjj0CS0QYU4rl3WLMeceRCBMItW7CMEd9LxbIcUqOXQJLFld9Iks9Ii0qPTYjAo5pscYJrxzIIs1SV1B5ivzRsFjFfHaiLrDOaIxHCLmnyRmp5LLytKnw1FNWH2XaYoyM9T8AOvnw3YUOg90AAAAASUVORK5CYII%3D%27%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AServices.prefs.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.prefs.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A//%20nodeName%3A%20menuitem%20-%20%u0434%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%2C%20menu%20-%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29.%20menuseparator%20-%20%u0434%u043B%u044F%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044F.%0A//%20pref%20-%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%20about%3Aconfig.%0A//%20%u041F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u044B%20%u0438%u043C%u0435%u044E%u0449%u0438%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u043E%u0442%u043B%u0438%u0447%u043D%u044B%u0435%20%u043E%u0442%20%u0434%u0435%u0444%u043E%u043B%u0442%u043D%u044B%u0445%20-%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u044B%20%u0436%u0438%u0440%u043D%u044B%u043C%20%u0441%u0442%u0438%u043B%u0435%u043C%20%u0442%u0435%u043A%u0441%u0442%u0430.%0A//%20restart%20%28%u0437%u0430%u0434%u0430%u0432%u0430%u0442%u044C%20%u0441%20%u043F%u0443%u0441%u0442%u044B%u043C%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%u043C.%20%u0442.%u0435.%2C%20restart%3A%20%22%22%29%20-%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u044C%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%0A//%20%28%u0441%20%u043F%u043E%u0434%u0442%u0432%u0435%u0440%u0436%u0434%u0435%u043D%u0438%u0435%u043C%20%u0432%20%u0434%u0438%u0430%u043B%u043E%u0433%u043E%u0432%u043E%u043C%20%u043E%u043A%u043D%u0435%29%20%u043F%u043E%u0441%u043B%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430.%0A//%20key%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%20accesskey%20-%20%u043A%u043B%u0430%u0432%u0438%u0448%u0438%20%u0434%u043B%u044F%20%u0431%u044B%u0441%u0442%u0440%u043E%u0439%20%u043D%u0430%u0432%u0438%u0433%u0430%u0446%u0438%u0438%20%u043F%u043E%20%u043C%u0435%u043D%u044E.%0A//%20userChoice%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%20%u043F%u0440%u0435%u0434%u043F%u043E%u0447%u0438%u0442%u0430%u0435%u043C%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0438%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0441%20%u043D%u0438%u043C%20%u043D%u0435%20%u0441%u043E%u0432%u043F%u0430%u0434%u0430%u0435%u0442%2C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E/%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u043E%u043C%u0435%u0447%u0430%u044E%u0442%u0441%u044F%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20%u0446%u0432%u0435%u0442%u043E%u043C.%0A//%20%u0422%u0430%u043A%u0436%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u0443%u043F%u0440%u0435%u0436%u0434%u0430%u044E%u0449%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0442%u0430%u043A%u0438%u0445%20%u043F%u0443%u043D%u043A%u0442%u043E%u0432.%20%u0421%u043C.%20%u0441%u0442%u0438%u043B%u044C%20%u0432%20%u043F%u043E%u0441%u0442%u0435%20%u043A%u043A%u043D%u043E%u043F%u043A%u0438.%0A//%20%u0410%20%u0442%u0430%u043A%u0436%u0435%20%u043C%u0435%u043D%u044F%u0435%u0442%u0441%u044F%20%u0438%u043A%u043E%u043D%u043A%u0430%20%u0441%u0430%u043C%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%20%28%u0441%u043C.%20%u0432%u044B%u0448%u0435%29.%0A//%20strValues%20-%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u0438%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u043C%u043E%u0435%20%u0432%20%u043C%u0435%u043D%u044E%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F.%20%u0417%u0430%u0434%u0430%u0432%u0430%u0442%u044C%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432.%0A//%20%u0417%u0430%u0434%u0430%u0435%u0442%u0441%u044F%20%u0432%20%u0432%u0438%u0434%u0435%3A%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%2C%2C%2Caccesskey%7C%7C%7C%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u04352%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u04352%2C%2C%2Caccesskey2%7C%7C%7C%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u04353%2C%2C%2C%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u04353%20%u0438%20%u0442.%u0434.%20%28accesskey%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%u0441%u044F%20%u043E%u043F%u0446%u0438%u043E%u043D%u0430%u043B%u044C%u043D%u043E%29%0A//%20%u041F%u043E%u043B%u043D%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%u0441%u044F%20%u0432%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%u0445%2C%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043D%u0430%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u043E%u0434%u043C%u0435%u043D%u044E/%u043F%u0443%u043D%u043A%u0442%20%u043F%u043E%u0434%u043C%u0435%u043D%u044E.%0A//%20%u0414%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20-%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%u0441%u044F%20%u0441%u0440%u0430%u0437%u0443%20%u043F%u043E%u0441%u043B%u0435%20%u0441%u0430%u043C%u043E%u0433%u043E%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%28%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20true%20-%20%u0442%u0430%u043A%u0436%u0435%20%u0441%u0442%u0430%u0432%u0438%u0442%20%u0433%u0430%u043B%u043E%u0447%u043A%u0443%20%u0434%u043B%u044F%20%u043D%u0435%u0433%u043E%29.%0A//%20%u041B%u041A%u041C%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20-%20%u043F%u0435%u0440%u043A%u043B%u044E%u0447%u0430%u0435%u0442%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u0434%u043B%u044F%20%u043B%u043E%u0433%u0438%u0447%u0435%u0441%u043A%u0438%u0445%28boolean%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%2C%0A//%20%u043B%u044E%u0431%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u0432%20%u0441%u0443%u0431%u043C%u0435%u043D%u044E%20-%20%u0437%u0430%u0434%u0430%u0435%u0442%20%u044D%u0442%u043E%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u0434%u043B%u044F%20%u0446%u0435%u043B%u044B%u0445%28integer%29%20%u0438%20%u0441%u0442%u0440%u043E%u043A%u043E%u0432%u044B%u0445%28string%29%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432.%0A//%20%u041F%u041A%u041C%20%u043F%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044E%20%u0441%u0443%u0431%u043C%u0435%u043D%u044E%20-%20%u0441%u0431%u0440%u0430%u0441%u044B%u0432%u0430%u0435%u0442%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430%20%u0432%20%u0434%u0435%u0444%u043E%u043B%u0442%u043D%u043E%u0435.%0A//%20%u041A%u043B%u0430%u0432%u0438%u0430%u0442%u0443%u0440%u0430%3A%20Enter%20-%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u0430.%0A//%20%u0421%u043F%u0435%u0446%u043A%u043B%u0430%u0432%u0438%u0448%u0430%20%u0432%u044B%u0437%u043E%u0432%u0430%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0433%u043E%20%u043C%u0435%u043D%u044E%20/%20Shift+Enter%20-%20%u0441%u0431%u0440%u043E%u0441%20%u0432%20%u0434%u0435%u0444%u043E%u043B%u0442%u043D%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435.%0A//%20Alt%20+%20M%20-%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438.%20%28%u0421%u043E%u0447%u0435%u0442%u0430%u043D%u0438%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u0441%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0430%20%u0441%u0432%u043E%u0435.%20%u0421%u043C.%20%u0432%20%u043A%u043E%u043D%u0446%u0435%20%u043A%u043E%u0434%u0430%29%0A%5B%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.workers.enabled%22%2C%20key%3A%20%27w%27%2C%20userChoice%3A%20%22false%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.indexedDB.enabled%22%2C%20key%3A%20%27d%27%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22dom.storage.enabled%22%2C%20key%3A%20%27s%27%7D%2C%0A%20%20%7BnodeName%3A%20%22menuitem%22%2C%20pref%3A%20%22javascript.enabled%22%2C%20key%3A%20%27j%27%2C%20userChoice%3A%20%22true%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menuseparator%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22general.useragent.override%22%2C%20key%3A%20%27u%27%2C%20userChoice%3A%20%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20rv%3A48.0%29%20Gecko/20100101%20Firefox/48.0%22%2C%20strValues%3A%20%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20rv%3A48.0%29%20Gecko/20100101%20Firefox/48.0%2C%2C%2CFirefox48/Linux%7C%7C%7CMozilla/5.0%20%28Windows%20NT%206.1%3B%20WOW64%3B%20rv%3A45.0%29%20Gecko/20100101%20Firefox/45.0%2C%2C%2CFirefox45/Windows%7C%7C%7C%2C%2C%2C%u041F%u0443%u0441%u0442%u043E%u0435%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22general.useragent.locale%22%2C%20key%3A%20%27l%27%2C%20restart%3A%20%22%22%2C%20strValues%3A%20%22en-US%2C%2C%2CEnglish%2C%2C%2Ce%7C%7C%7Cru%2C%2C%2C%u0420%u0443%u0441%u0441%u043A%u0438%u0439%2C%2C%2Cr%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22browser.display.document_color_use%22%2C%20key%3A%20%27c%27%2C%20userChoice%3A%20%220%22%2C%20strValues%3A%20%220%2C%2C%2CAutomatic%2C%2C%2C0%7C%7C%7C1%2C%2C%2CAlways%2C%2C%2C1%7C%7C%7C2%2C%2C%2CNever%2C%2C%2C2%22%7D%2C%0A%20%20%7BnodeName%3A%20%22menu%22%2C%20pref%3A%20%22CB.TEST%22%2C%20key%3A%20%27t%27%2C%20userChoice%3A%20%22C%3A%5C%5CDownloads%5C%5CTEST1%22%2C%20strValues%3A%20%22C%3A%5C%5CDownloads%5C%5CTEST1%2C%2C%2CTEST1%2C%2C%2C1%7C%7C%7CC%3A%5C%5CDownloads%5C%5CTEST2%2C%2C%2CTEST2%2C%2C%2C2%22%7D%0A%5D.forEach%28function%28m%29%20%7B%0A%20%20var%20mItem%20%3D%20document.createElement%28m.nodeName%29%3B%0A%20%20var%20browserRestart%20%3D%20%27%27%3B%0A%0A%20%20if%20%28%22restart%22%20in%20m%29%20browserRestart%20%3D%20%27%20if%20%28custombuttons.confirmBox%28null%2C%20%22Restart%3F%22%2C%20%22Yes%22%2C%20%22Cancel%22%29%29%20Services.startup.quit%28Services.startup.eAttemptQuit%20%7C%20Services.startup.eRestart%29%3B%27%3B%0A%0A%20%20if%20%28%22pref%22%20in%20m%29%20%7B%0A%20%20%20%20mItem.setAttribute%28%27closemenu%27%2C%20%27none%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27oncontextmenu%27%2C%20%27event.preventDefault%28%29%3B%20custombuttons.clearPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%3B%27%20+%20browserRestart%29%3B%0A%20%20%7D%0A%0A%20%20if%20%28%22key%22%20in%20m%29%20mItem.setAttribute%28%27accesskey%27%2C%20m.key%29%3B%0A%0A%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menuitem%22%29%20%7B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27oncommand%27%2C%20%27custombuttons.setPrefs%28%22%27%20+%20m.pref%20+%20%27%22%2C%20%21custombuttons.getPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%29%3B%20if%20%28event.shiftKey%20%26%26%20event.keyCode%20%3D%3D%20event.DOM_VK_RETURN%29%20%7Bevent.preventDefault%28%29%3B%20custombuttons.clearPrefs%28%22%27%20+%20m.pref%20+%20%27%22%29%7D%3B%27%20+%20browserRestart%29%3B%0A%20%20%7D%0A%0A%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menu%22%29%20%7B%0A%20%20%20%20mItem.setAttribute%28%27class%27%2C%20%27menu-iconic%27%29%3B%0A%0A%20%20%20%20var%20subMenu%20%3D%20mItem.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A%20%20%20%20for%20%28var%20value%20of%20m.strValues.split%28%27%7C%7C%7C%27%29%29%20%7B%0A%20%20%20%20%20%20var%20submItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20var%20smVal%20%3D%20value.split%28%27%2C%2C%2C%27%29%5B0%5D%3B%0A%20%20%20%20%20%20var%20smValConv%20%3D%20convertFromUnicode%28%22UTF-8%22%2C%20smVal%29%3B%0A%20%20%20%20%20%20var%20smName%20%3D%20value.split%28%27%2C%2C%2C%27%29%5B1%5D%3B%0A%20%20%20%20%20%20var%20key%20%3D%20value.split%28%27%2C%2C%2C%27%29%5B2%5D%3B%0A%0A%20%20%20%20%20%20key%20%26%26%20submItem.setAttribute%28%27accesskey%27%2C%20key%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27type%27%2C%20%27radio%27%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27label%27%2C%20smName%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27tooltiptext%27%2C%20smVal%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27closemenu%27%2C%20%27none%27%29%3B%0A%20%20%20%20%20%20submItem.setAttribute%28%27oncommand%27%2C%20%27try%7Bcustombuttons.setPrefs%28%22%27%20+%20m.pref%20+%20%27%22%2C%20%22%27%20+%20smValConv.replace%28/%5C%5C/g%2C%20%27%5C%5C%5C%5C%27%29%20+%20%27%22%29%7D%20catch%28e%29%20%7BServices.prefs.setIntPref%28%22%27%20+%20m.pref%20+%20%27%22%2C%20%22%27%20+%20smValConv%20+%20%27%22%29%7D%3B%27%20+%20browserRestart%29%3B%0A%0A%20%20%20%20%20%20subMenu.appendChild%28submItem%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20menuPopup.appendChild%28mItem%29%3B%0A%0A%20%20//%20%u041B%u0438%u0441%u0442%u0435%u043D%u0435%u0440%u044B%20%u043E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u044E%u0449%u0438%u0435%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%0A%20%20//%20%u0438%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u044E%u0449%u0438%u0435%20%u0441%u043E%u043E%u0442%u0432%u0435%u0442%u0441%u0442%u0432%u0443%u044E%u0449%u0438%u0435%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%20%u0438%20%u0447%u0435%u043A%u0431%u043E%u043A%u0441%u044B%20%u0434%u043B%u044F%20%u043F%u0443%u043D%u043A%u0442%u043E%u0432%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0438%20%u043C%u0435%u043D%u044E%20%u0438%20%u043A%u043B%u0438%u043A%u0430%u0445%0A%20%20for%20%28var%20type%20of%20%5B%27command%27%2C%20%27popupshowing%27%2C%20%27contextmenu%27%5D%29%20%7B%0A%20%20%20%20addEventListener%28type%2C%20%28e%29%3D%3E%20%7B%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%22pref%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20val%2C%20def%3B%0A%0A%20%20%20%20%20%20%20%20%20%20def%20%3D%20Services.prefs.prefHasUserValue%28m.pref%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20val%20%3D%20Services.prefs.getComplexValue%28m.pref%2C%20Ci.nsISupportsString%29.data%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28Services.prefs.getPrefType%28m.pref%29%20%3D%3D%2064%29%20val%20%3D%20custombuttons.getPrefs%28m.pref%29.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20val%20%3D%20custombuttons.getPrefs%28m.pref%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20def%20%3F%20mItem.style.setProperty%28%27font-weight%27%2C%20%27bold%27%2C%20%27important%27%29%20%3A%20mItem.style.removeProperty%28%27font-weight%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28m.nodeName%20%3D%3D%3D%20%27menuitem%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20%20%20mItem.label%20%3D%20m.pref%20+%20%27%3B%27%20+%20val%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22userChoice%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7Bvar%20usrChc%20%3D%20%28val.toString%28%29%20%3D%3D%3D%20m.userChoice%29%7D%20catch%28e%29%20%7BusrChc%20%3D%20false%7D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27user-choice%27%2C%20usrChc%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20usrChc%20%3F%20mItem.style.removeProperty%28%27color%27%29%20%3A%20mItem.style.setProperty%28%27color%27%2C%20%27orangered%27%2C%20%27important%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28subMenu%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20smitem%20of%20subMenu.getElementsByTagName%28%27menuitem%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20smval%20%3D%20smitem.getAttribute%28%27tooltiptext%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20smitem.setAttribute%28%27checked%27%2C%20%28val%20%3D%3D%3D%20smval%29%20%3F%20true%20%3A%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28m.nodeName%20%3D%3D%3D%20%22menu%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20vname%3B%0A%0A%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20vname%20%3D%20subMenu.getElementsByAttribute%28%27checked%27%2C%20%27true%27%29%5B0%5D.getAttribute%28%27label%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.prefHasUserValue%28m.pref%29%29%20vname%20%3D%20%27Default%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20vname%20%3D%20%27Other%27%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27label%27%2C%20m.pref%20+%20%27%20-%20%27%20+%20vname%29%3B%0A%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27tooltiptext%27%2C%20val%20%7C%7C%20%27This%20preferences%20has%20null%20value%20or%20does%20not%20exist.%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%22userChoice%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20smUsrChc%20%3D%20%28val%20%3D%3D%3D%20m.userChoice.toString%28%29%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%27user-choice%27%2C%20smUsrChc%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20smUsrChc%20%3F%20mItem.style.removeProperty%28%27color%27%29%20%3A%20mItem.style.setProperty%28%27color%27%2C%20%27orangered%27%2C%20%27important%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28%22userChoice%22%20in%20m%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20hasNotUserChoice%20%3D%20menuPopup.getElementsByAttribute%28%27user-choice%27%2C%20%27false%27%29%5B0%5D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20custombuttons.setPrefs%28s%2C%20hasNotUserChoice%20%3F%20true%20%3A%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%200%29%0A%20%20%20%20%7D%2C%20false%2C%20menuPopup%29%0A%20%20%7D%0A%7D%29%3B%0A%0A//%20%u041B%u0438%u0441%u0442%u0435%u043D%u0435%u0440%20%u043F%u043E%u0437%u0432%u043E%u043B%u044F%u044E%u0449%u0438%u0439%20%u0441%u0431%u0440%u043E%u0441%20%u043F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u043E%u0432%20%u0441%20%u0441%u0443%u0431%u043C%u0435%u043D%u044E%20%u043F%u043E%20Shift%20+%20Enter%0A//%20%u0417%u0430%20%u043A%u043E%u0434%20%u0441%u043F%u0430%u0441%u0438%u0431%u043E%20Dumby%0AaddEventListener%28%22popupshown%22%2C%20%7B%0A%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20this%5Be.type%5D%28e%29%3B%0A%20%20%7D%2C%0A%20%20popupshown%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.target%20%21%3D%20menuPopup%29%20return%3B%0A%20%20%20%20menuPopup.addEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.addEventListener%28%22keydown%22%2C%20this%2C%20true%29%3B%0A%20%20%7D%2C%0A%20%20popuphidden%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e.target%20%21%3D%20menuPopup%29%20return%3B%0A%20%20%20%20menuPopup.removeEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.removeEventListener%28%22keydown%22%2C%20this%2C%20true%29%3B%0A%20%20%7D%2C%0A%20%20popupshowing%3A%20function%28e%29%20%7B%0A%20%20%20%20e.target.parentNode.removeEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%7D%2C%0A%20%20get%20old%28%29%20%7B%0A%20%20%20%20delete%20this.old%3B%0A%20%20%20%20this.e%20%3D%20new%20MouseEvent%28%22contextmenu%22%2C%20%7B%7D%29%3B%0A%20%20%20%20return%20this.old%20%3D%20parseInt%28Services.appinfo.platformVersion%29%20%3C%2025%3B%0A%20%20%7D%2C%0A%20%20get%20prop%28%29%20%7B%0A%20%20%20%20delete%20this.prop%3B%0A%20%20%20%20if%20%28%22key%22%20in%20KeyboardEvent.prototype%29%20this.prop%20%3D%20%22key%22%2C%20this.val%20%3D%20%22Enter%22%3B%0A%20%20%20%20else%20this.prop%20%3D%20%22keyCode%22%2C%20this.val%20%3D%20KeyboardEvent.DOM_VK_RETURN%3B%0A%20%20%20%20return%20this.prop%3B%0A%20%20%7D%2C%0A%20%20keydown%3A%20function%28e%29%20%7B%0A%20%20%20%20if%20%28%21e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e%5Bthis.prop%5D%20%21%3D%20this.val%29%20return%3B%0A%20%20%20%20var%20target%20%3D%20menuPopup.querySelector%28%22menu%5B_moz-menuactive%5D%3Anot%28%5Bopen%5D%29%22%29%3B%0A%20%20%20%20if%20%28%21target%29%20return%3B%0A%0A%20%20%20%20this.old%20%3F%20target.addEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%20%3A%20e.stopPropagation%28%29%3B%0A%20%20%20%20target.dispatchEvent%28this.e%29%3B%0A%20%20%20%20menuPopup.dispatchEvent%28this.e%29%3B%0A%20%20%7D%0A%7D%2C%20false%2C%20menuPopup%29%3B%0A%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u043E%20%u0441%u043E%u0447%u0435%u0442%u0430%u043D%u0438%u044E%20%u043A%u043B%u0430%u0432%u0438%u0448%20Alt%20+%20M%20%28%u043D%u0435%20%u0437%u0430%u0432%u0438%u0441%u0438%u0442%20%u043E%u0442%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0440%u0430%u0441%u043A%u043B%u0430%u0434%u043A%u0438%20%u043A%u043B%u0430%u0432%u0438%u0430%u0442%u0443%u0440%u044B%29%0A//%20%u041F%u043E%u0441%u043C%u043E%u0442%u0440%u0435%u0442%u044C%20%u043A%u043E%u0434%u044B%20%u043A%u043B%u0430%u0432%u0438%u0448%20%u043C%u043E%u0436%u043D%u043E%20%u0437%u0434%u0435%u0441%u044C%3A%20https%3A//developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode%23Constants_for_keyCode_value%0AaddEventListener%28%27keyup%27%2C%20%28e%29%3D%3E%20%7B%0A%20%20if%20%28e.altKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20e.keyCode%20%3D%3D%2077%29%20%7B%0A%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%7D%0A%7D%2C%20false%2C%20window%29%3B%0A%0A//%20%u041A%u043E%u043D%u0432%u0435%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u044E%u043D%u0438%u043A%u043E%u0434%20.............%0Afunction%20convertFromUnicode%28charset%2C%20str%29%20%7B%0A%20%20%20var%20converter%20%3D%20Cc%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.createInstance%28Ci.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20converter.charset%20%3D%20charset%3B%0A%20%20%20str%20%3D%20converter.ConvertFromUnicode%28str%29%3B%0A%20%20%20return%20str%20+%20converter.Finish%28%29%3B%0A%7D%3B%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 |
sonyas75 > 25-01-2017 18:21:15 |
вопрос по кнопке Save, от 27.11.2016 25-01-2017 18:31:36 |
bunda1 > 25-01-2017 22:10:44 |
sonyas75 пишет
Попробуй Поиск по сайту в Google( Firefox24+ ) от 25.01.2017. |
sonyas75 > 25-01-2017 22:18:30 |
работает |
bunda1 > 25-01-2017 22:20:36 |
sonyas75 пишет
Это не дубликаты ярлыков на диске D > Documents and Settings, а иконки для создание ярлыков на рабочим столе, без такой папки ярлыки будут без иконок сайта. Но если тебе мешает эта папка можешь в строке кода инициализации кнопки: указать другую папку. |
sonyas75 > 25-01-2017 22:25:36 |
ага, ясно. это в секции Выделить код Код:// Сохранить в указанную папку иконку таба как .ico и без диалога сохранения .............. я туда не добрался |
Uxapb > 29-01-2017 19:48:42 |
bunda1, помогите плз с вашей кнопкой Save скрытый текст Выделить код Код:// путь к файлу и название файла var file = Services.dirsvc.get("Desk", Ci.nsIFile); file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt"); на скрытый текст Выделить код Код:// путь к файлу и название файла.... var pathToFile = "E:\\Inet\\From Mozilla Firefox\\ButtonSave\\"; file.initWithPath( pathToFile + "ButtonSave.txt" ); не работает (( Спасибо. |
bunda1 > 29-01-2017 20:54:34 |
Uxapb пишет
Выделить код Код:// путь к файлу и название файла var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath("E:\\Inet\\From Mozilla Firefox\\ButtonSave\\ButtonSave.txt"); if ( !file.exists() ) file.create(file.NORMAL_FILE_TYPE, 448); // создать файл с текстом или добавлять текст в файл var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); foStream.init(file, 0x02 | 0x10, 0664, 0); foStream.write(text, text.length); foStream.close(); |
villa7 > 29-01-2017 21:36:12 |
bunda1 скрытый текст
|
bunda1 > 29-01-2017 21:58:06 |
villa7 пишет
Замени: Выделить код Код:var text = "..............................................................\n" + title + " - " + time + "\n" + url + "\n\n" + text + "\n\n\n"; на: |
villa7 > 29-01-2017 22:34:04 |
bunda1
а сейчас у меня так
|
bunda1 > 29-01-2017 22:51:09 |
villa7 пишет
А если так: Выделить код Код:var text = convertFromUnicode("UTF-8", (getSelect() + "\n.................................\n")); и не исползуй win блокнот. |
Uxapb > 29-01-2017 23:01:09 |
bunda1, спасибо. Всё работает как надо. |
villa7 > 29-01-2017 23:20:23 |
bunda1 |
firepox > 02-02-2017 02:49:32 |
bunda1 Не все куки удаляет ( Все куки удаляет http://addons.mozilla.org/ru/firefox/addon/remove-cookies-button/?src=api |
shadow_user > 02-02-2017 13:55:01 |
Кнопка google-translate https://forum.mozilla-russia.org/viewto … 30#p591530 |
bunda1 > 02-02-2017 21:46:42 |
firepox пишет
|
firepox > 04-02-2017 07:13:00 |
bunda1 04-02-2017 07:38:58 AppData\Roaming\Macromedia\Flash Player\#SharedObjects\* |
bunda1 > 04-02-2017 20:46:26 |
firepox пишет
Ну а если удалить все Flash куки: Удалить куки текущего сайта( Firefox24+ ) от 04.02.2017. |
firepox > 04-02-2017 21:10:49 |
bunda1 |
Northtech > 04-02-2017 22:52:03 |
Не помню чья кнопка, в поиске к сожалению не нашел. Кто-нибудь может поправить её? скрытый текст ![]() Выделить код Код:var tabMenu = gBrowser.tabContainer.contextMenu || document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu"); if (tabMenu) { var insertPos = tabMenu.lastChild.previousSibling; var ele = document.createElement("menuitem"); ele = document.createElement("menuitem"); ele.setAttribute("label", "Закрыть дубликаты вкладок"); ele.setAttribute("tooltiptext", "Закрывает дубликаты вкладок с одинаковыми URL и оставляет только по одной из них"); ele.setAttribute("id", "closy-dupe"); ele.setAttribute("oncommand", "document.getElementById('" + self.id + "').closeDuplicateTabs();"); tabMenu.insertBefore(ele, insertPos); ele = document.createElement("menuitem"); ele.setAttribute("label", "Закрыть другие вкладки этого сайта"); ele.setAttribute("tooltiptext", "Закрывает все вкладки того же сайта, что и вкладка по которой вы щелкнули"); ele.setAttribute("id", "closy-host"); ele.setAttribute("oncommand", "document.getElementById('" + self.id + "').closeHost();"); tabMenu.insertBefore(ele, insertPos); } // closes all other tabs from the host of the right clicked tab this.closeHost = function() { var tab = getTabClicked(); var host = false; // host for about:blank will fail try { host = tab.linkedBrowser.currentURI.host; } catch (e) {} if (host) { var tabs = getTabs(); for (var i = tabs.length - 1; i >= 0; i--) { var tabhost = false; // host for about:blank will fail try { tabhost = getBrowser().getBrowserAtIndex(i).currentURI.host; } catch (e) {} if (tabhost && tabhost == host) { // dont close the right clicked tab if (tab != tabs[i]) { // if we close the selected tab first select the previous tab if (i && getBrowser().selectedTab == tabs[i]) { getBrowser().mTabContainer.advanceSelectedTab(-1, true); } getBrowser().removeTab(tabs[i]); } } } } } // closes duplicate tabs this.closeDuplicateTabs = function(aThisOneOnly) { var urlclose = new Array(); var urlhash = new Object(); var thisuri = false; if (aThisOneOnly) { thisuri = getTabClicked().linkedBrowser.currentURI.spec; } var tabs = getTabs(); for (var i = tabs.length - 1; i >= 0; i--) { var uri = getBrowser().getBrowserAtIndex(i).currentURI.spec; if (thisuri) { if (thisuri == uri) { if (urlhash[uri]) { urlclose[urlclose.length] = i; } else { urlhash[uri] = true; } } } else { if (urlhash[uri]) { urlclose[urlclose.length] = i; } else { urlhash[uri] = true; } } } for (var i = 0, max = urlclose.length; i < max; i++) { getBrowser().removeTab(tabs[urlclose[i]]); } } // private function getTabMenu() { var ret = document.getAnonymousElementByAttribute(getBrowser(), "anonid", "tabContextMenu"); if (!ret) { ret = gBrowser.tabContextMenu; } return ret; } function getTabClicked() { var tab = getBrowser().mContextTab; if (tab.localName != "tab") { tab = getBrowser().mCurrentTab; } return tab; } function getTabs() { var tabs = getBrowser().mTabContainer.childNodes; return tabs; } |
bunda1 > 04-02-2017 23:00:22 |
Northtech пишет
Выделить код Код:var tabMenu = gBrowser.tabContainer.contextMenu || document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu"); if (tabMenu) { var insertPos = tabMenu.lastChild.previousSibling; var ele1 = document.createElement("menuitem"); ele1.setAttribute("label", "Закрыть дубликаты вкладок"); ele1.setAttribute("tooltiptext", "Закрывает дубликаты вкладок с одинаковыми URL и оставляет только по одной из них"); ele1.setAttribute("id", "closy-dupe"); ele1.setAttribute("oncommand", "document.getElementById('" + self.id + "').closeDuplicateTabs();"); tabMenu.insertBefore(ele1, insertPos); addDestructor(()=> ele1.remove() ); var ele2 = document.createElement("menuitem"); ele2.setAttribute("label", "Закрыть другие вкладки этого сайта"); ele2.setAttribute("tooltiptext", "Закрывает все вкладки того же сайта, что и вкладка по которой вы щелкнули"); ele2.setAttribute("id", "closy-host"); ele2.setAttribute("oncommand", "document.getElementById('" + self.id + "').closeHost();"); tabMenu.insertBefore(ele2, insertPos); addDestructor(()=> ele2.remove() ); } // closes all other tabs from the host of the right clicked tab this.closeHost = function() { var tab = getTabClicked(); var host = false; // host for about:blank will fail try { host = tab.linkedBrowser.currentURI.host; } catch (e) {} if (host) { var tabs = getTabs(); for (var i = tabs.length - 1; i >= 0; i--) { var tabhost = false; // host for about:blank will fail try { tabhost = getBrowser().getBrowserAtIndex(i).currentURI.host; } catch (e) {} if (tabhost && tabhost == host) { // dont close the right clicked tab if (tab != tabs[i]) { // if we close the selected tab first select the previous tab if (i && getBrowser().selectedTab == tabs[i]) { getBrowser().mTabContainer.advanceSelectedTab(-1, true); } getBrowser().removeTab(tabs[i]); } } } } } // closes duplicate tabs this.closeDuplicateTabs = function(aThisOneOnly) { var urlclose = new Array(); var urlhash = new Object(); var thisuri = false; if (aThisOneOnly) { thisuri = getTabClicked().linkedBrowser.currentURI.spec; } var tabs = getTabs(); for (var i = tabs.length - 1; i >= 0; i--) { var uri = getBrowser().getBrowserAtIndex(i).currentURI.spec; if (thisuri) { if (thisuri == uri) { if (urlhash[uri]) { urlclose[urlclose.length] = i; } else { urlhash[uri] = true; } } } else { if (urlhash[uri]) { urlclose[urlclose.length] = i; } else { urlhash[uri] = true; } } } for (var i = 0, max = urlclose.length; i < max; i++) { getBrowser().removeTab(tabs[urlclose[i]]); } } // private function getTabMenu() { var ret = document.getAnonymousElementByAttribute(getBrowser(), "anonid", "tabContextMenu"); if (!ret) { ret = gBrowser.tabContextMenu; } return ret; } function getTabClicked() { var tab = getBrowser().mContextTab; if (tab.localName != "tab") { tab = getBrowser().mCurrentTab; } return tab; } function getTabs() { var tabs = getBrowser().mTabContainer.childNodes; return tabs; } |
Northtech > 05-02-2017 01:57:49 |
bunda1 |
firepox > 05-02-2017 09:31:37 |
bunda1 05-02-2017 09:49:01 скрытый текст Выделить код Код:var saveToFile = function (fileContent, fileName) { var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); }; var resolveURL = function (url, base) { try { var ioService = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); var baseURI = ioService.newURI(base, null, null); var absURI = ioService.newURI(url, null, baseURI); return absURI.spec; } catch (e) {} }; var getSelWin = function (w) { if (w.getSelection().toString()) return w; for (var i = 0, f, r; f = w.frames[i]; i++) { try { if (r = getSelWin(f)) return r; } catch(e) {} } }; var encodeImg = function (src, obj) { var canvas, img, ret = src; if (/^https?:\/\//.test(src)) { canvas = doc.createElement('canvas'); if (!obj || obj.nodeName.toLowerCase() != 'img') { img = doc.createElement('img'); img.src = src; } else { img = obj; }; if (img.complete) try{ canvas.width = img.width; canvas.height = img.height; canvas.getContext('2d').drawImage(img, 0, 0); ret = canvas.toDataURL((/\.jpe?g/i.test(src) ? 'image/jpeg' : 'image/png')); } catch (e) {}; if (img != obj) img.src = 'about:blank'; }; return ret; }; var toSrc = function (obj) { var strToSrc = function (str) { var chr, ret = '', i = 0, meta = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\x22' : '\\\x22', '\\': '\\\\'}; while (chr = str.charAt(i++)) { ret += meta[chr] || chr; }; return '\x22' + ret + '\x22'; }, arrToSrc = function (arr) { var ret = []; for (var i = 0; i < arr.length; i++) { ret[i] = toSrc(arr[i]) || 'null'; }; return '[' + ret.join(',') + ']'; }, objToSrc = function (obj) { var val, ret = []; for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop) && (val = toSrc(obj[prop]))) ret.push(strToSrc(prop) + ': ' + val); }; return '{' + ret.join(',') + '}'; }; switch (Object.prototype.toString.call(obj).slice(8, -1)) { case 'Array': return arrToSrc(obj); case 'Boolean': case 'Function': case 'RegExp': return obj.toString(); case 'Date': return 'new Date(' + obj.getTime() + ')'; case 'Math': return 'Math'; case 'Number': return isFinite(obj) ? String(obj) : 'null'; case 'Object': return objToSrc(obj); case 'String': return strToSrc(obj); default: return obj ? (obj.nodeType == 1 && obj.id ? 'document.getElementById(' + strToSrc(obj.id) + ')' : '{}') : 'null'; } }; var mainWin = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content; var selWin = getSelWin(mainWin), win = selWin || mainWin, doc = win.document, loc = win.location; var ele, pEle, clone, reUrl = /(url\(\x22)(.+?)(\x22\))/g; if (selWin) { var rng = win.getSelection().getRangeAt(0); pEle = rng.commonAncestorContainer; ele = rng.cloneContents(); } else { pEle = doc.documentElement; ele = (doc.body || doc.getElementsByTagName('body')[0]).cloneNode(true); }; while (pEle) { if (pEle.nodeType == 1) { clone = pEle.cloneNode(false); clone.appendChild(ele); ele = clone; }; pEle = pEle.parentNode }; var sel = doc.createElement('div'); sel.appendChild(ele); for (var el, all = sel.getElementsByTagName('*'), i = all.length; i--;) { el = all[i]; if (el.style && el.style.backgroundImage) el.style.backgroundImage = el.style.backgroundImage.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, loc.href); return prev + encodeImg(url) + next; }); switch (el.nodeName.toLowerCase()) { case 'link': case 'style': case 'script': el.parentNode.removeChild(el); break; case 'a': case 'area': if (el.hasAttribute('href') && el.getAttribute('href').charAt(0) != '#') el.href = el.href; break; case 'img': case 'input': if (el.hasAttribute('src')) el.src = encodeImg(el.src, el); break; case 'audio': case 'video': case 'embed': case 'frame': case 'iframe': if (el.hasAttribute('src')) el.src = el.src; break; case 'object': if (el.hasAttribute('data')) el.data = el.data; break; case 'form': if (el.hasAttribute('action')) el.action = el.action; break; } }; var head = ele.insertBefore(doc.createElement('head'), ele.firstChild); var meta = doc.createElement('meta'); meta.httpEquiv = 'content-type'; meta.content = 'text/html; charset=utf-8'; head.appendChild(meta); var title = doc.getElementsByTagName('title')[0]; if (title) head.appendChild(title.cloneNode(true)); head.copyScript = function (unsafeWin) { if ('$' in unsafeWin) return; var f = doc.createElement('iframe'); f.src = 'about:blank'; f.setAttribute('style', 'position:fixed;left:0;top:0;visibility:hidden;width:0;height:0;'); doc.documentElement.appendChild(f); var str, script = doc.createElement('script'); script.type = 'text/javascript'; for (var name in unsafeWin) { if (name in f.contentWindow || !/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)) continue; try { str = toSrc(unsafeWin[name]); if (!/\{\s*\[native code\]\s*\}/.test(str)) { script.appendChild(doc.createTextNode('var ' + name + ' = ' + str.replace(/<\/(script>)/ig, '<\\/$1') + ';\n')); } } catch (e) {}; }; f.parentNode.removeChild(f); if (script.childNodes.length) this.nextSibling.appendChild(script); }; head.copyScript(win.wrappedJSObject || win); head.copyStyle = function (s) { if (!s) return; var style = doc.createElement('style'); style.type = 'text/css'; if (s.media && s.media.mediaText) style.media = s.media.mediaText; try { for (var i = 0, rule; rule = s.cssRules[i]; i++) { if (rule.type != 3) { if((!rule.selectorText || rule.selectorText.indexOf(':') != -1) || (!sel.querySelector || sel.querySelector(rule.selectorText))) { var css = !rule.cssText ? '' : rule.cssText.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, s.href || loc.href); if(rule.type == 1 && rule.style && rule.style.backgroundImage) url = encodeImg(url); return prev + url + next; }); style.appendChild(doc.createTextNode(css + '\n')); } } else { this.copyStyle(rule.styleSheet); } } } catch(e) { if (s.ownerNode) style = s.ownerNode.cloneNode(false); }; this.appendChild(style); }; var sheets = doc.styleSheets; for (var j = 0; j < sheets.length; j++) head.copyStyle(sheets[j]); head.appendChild(doc.createTextNode('\n')); var doctype = '', dt = doc.doctype; if (dt && dt.name) { doctype += '<!DOCTYPE ' + dt.name; if (dt.publicId) doctype += ' PUBLIC \x22' + dt.publicId + '\x22'; if (dt.systemId) doctype += ' \x22' + dt.systemId + '\x22'; doctype += '>\n'; }; var fileName = selWin ? win.getSelection().toString() : (title && title.text ? title.text : loc.pathname.split('/').pop()); fileName = fileName.replace(/[:\\\/<>?*|"]+/g, '_').replace(/\s+/g, ' ').slice(0, 100).replace(/^\s+|\s+$/g, ''); fileName += (function () { var d = new Date(), z = function(n){return '_' + (n < 10 ? '0' : '') + n}; return z(d.getHours()) + z(d.getMinutes()) + z(d.getSeconds()); })(); if(!/\.html?$/.test(fileName))fileName += '.html'; saveToFile(doctype + sel.innerHTML + '\n<!-- This document saved from ' + (loc.protocol != 'data:' ? loc.href : 'data:uri') + ' -->', fileName); пожалуйста, подправьте код, чтобы в названии подставлялась дата и время. спасибо. |
bunda1 > 05-02-2017 21:39:29 |
firepox пишет
Сохранить всю страницу как PNG / PDF firepox пишет
Выделить код Код:var saveToFile = function (fileContent, fileName) { var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); }; var resolveURL = function (url, base) { try { var ioService = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); var baseURI = ioService.newURI(base, null, null); var absURI = ioService.newURI(url, null, baseURI); return absURI.spec; } catch (e) {} }; var getSelWin = function (w) { if (w.getSelection().toString()) return w; for (var i = 0, f, r; f = w.frames[i]; i++) { try { if (r = getSelWin(f)) return r; } catch(e) {} } }; var encodeImg = function (src, obj) { var canvas, img, ret = src; if (/^https?:\/\//.test(src)) { canvas = doc.createElement('canvas'); if (!obj || obj.nodeName.toLowerCase() != 'img') { img = doc.createElement('img'); img.src = src; } else { img = obj; }; if (img.complete) try{ canvas.width = img.width; canvas.height = img.height; canvas.getContext('2d').drawImage(img, 0, 0); ret = canvas.toDataURL((/\.jpe?g/i.test(src) ? 'image/jpeg' : 'image/png')); } catch (e) {}; if (img != obj) img.src = 'about:blank'; }; return ret; }; var toSrc = function (obj) { var strToSrc = function (str) { var chr, ret = '', i = 0, meta = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\x22' : '\\\x22', '\\': '\\\\'}; while (chr = str.charAt(i++)) { ret += meta[chr] || chr; }; return '\x22' + ret + '\x22'; }, arrToSrc = function (arr) { var ret = []; for (var i = 0; i < arr.length; i++) { ret[i] = toSrc(arr[i]) || 'null'; }; return '[' + ret.join(',') + ']'; }, objToSrc = function (obj) { var val, ret = []; for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop) && (val = toSrc(obj[prop]))) ret.push(strToSrc(prop) + ': ' + val); }; return '{' + ret.join(',') + '}'; }; switch (Object.prototype.toString.call(obj).slice(8, -1)) { case 'Array': return arrToSrc(obj); case 'Boolean': case 'Function': case 'RegExp': return obj.toString(); case 'Date': return 'new Date(' + obj.getTime() + ')'; case 'Math': return 'Math'; case 'Number': return isFinite(obj) ? String(obj) : 'null'; case 'Object': return objToSrc(obj); case 'String': return strToSrc(obj); default: return obj ? (obj.nodeType == 1 && obj.id ? 'document.getElementById(' + strToSrc(obj.id) + ')' : '{}') : 'null'; } }; var mainWin = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content; var selWin = getSelWin(mainWin), win = selWin || mainWin, doc = win.document, loc = win.location; var ele, pEle, clone, reUrl = /(url\(\x22)(.+?)(\x22\))/g; if (selWin) { var rng = win.getSelection().getRangeAt(0); pEle = rng.commonAncestorContainer; ele = rng.cloneContents(); } else { pEle = doc.documentElement; ele = (doc.body || doc.getElementsByTagName('body')[0]).cloneNode(true); }; while (pEle) { if (pEle.nodeType == 1) { clone = pEle.cloneNode(false); clone.appendChild(ele); ele = clone; }; pEle = pEle.parentNode }; var sel = doc.createElement('div'); sel.appendChild(ele); for (var el, all = sel.getElementsByTagName('*'), i = all.length; i--;) { el = all[i]; if (el.style && el.style.backgroundImage) el.style.backgroundImage = el.style.backgroundImage.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, loc.href); return prev + encodeImg(url) + next; }); switch (el.nodeName.toLowerCase()) { case 'link': case 'style': case 'script': el.parentNode.removeChild(el); break; case 'a': case 'area': if (el.hasAttribute('href') && el.getAttribute('href').charAt(0) != '#') el.href = el.href; break; case 'img': case 'input': if (el.hasAttribute('src')) el.src = encodeImg(el.src, el); break; case 'audio': case 'video': case 'embed': case 'frame': case 'iframe': if (el.hasAttribute('src')) el.src = el.src; break; case 'object': if (el.hasAttribute('data')) el.data = el.data; break; case 'form': if (el.hasAttribute('action')) el.action = el.action; break; } }; var head = ele.insertBefore(doc.createElement('head'), ele.firstChild); var meta = doc.createElement('meta'); meta.httpEquiv = 'content-type'; meta.content = 'text/html; charset=utf-8'; head.appendChild(meta); var title = doc.getElementsByTagName('title')[0]; if (title) head.appendChild(title.cloneNode(true)); head.copyScript = function (unsafeWin) { if ('$' in unsafeWin) return; var f = doc.createElement('iframe'); f.src = 'about:blank'; f.setAttribute('style', 'position:fixed;left:0;top:0;visibility:hidden;width:0;height:0;'); doc.documentElement.appendChild(f); var str, script = doc.createElement('script'); script.type = 'text/javascript'; for (var name in unsafeWin) { if (name in f.contentWindow || !/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)) continue; try { str = toSrc(unsafeWin[name]); if (!/\{\s*\[native code\]\s*\}/.test(str)) { script.appendChild(doc.createTextNode('var ' + name + ' = ' + str.replace(/<\/(script>)/ig, '<\\/$1') + ';\n')); } } catch (e) {}; }; f.parentNode.removeChild(f); if (script.childNodes.length) this.nextSibling.appendChild(script); }; head.copyScript(win.wrappedJSObject || win); head.copyStyle = function (s) { if (!s) return; var style = doc.createElement('style'); style.type = 'text/css'; if (s.media && s.media.mediaText) style.media = s.media.mediaText; try { for (var i = 0, rule; rule = s.cssRules[i]; i++) { if (rule.type != 3) { if((!rule.selectorText || rule.selectorText.indexOf(':') != -1) || (!sel.querySelector || sel.querySelector(rule.selectorText))) { var css = !rule.cssText ? '' : rule.cssText.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, s.href || loc.href); if(rule.type == 1 && rule.style && rule.style.backgroundImage) url = encodeImg(url); return prev + url + next; }); style.appendChild(doc.createTextNode(css + '\n')); } } else { this.copyStyle(rule.styleSheet); } } } catch(e) { if (s.ownerNode) style = s.ownerNode.cloneNode(false); }; this.appendChild(style); }; var sheets = doc.styleSheets; for (var j = 0; j < sheets.length; j++) head.copyStyle(sheets[j]); head.appendChild(doc.createTextNode('\n')); var doctype = '', dt = doc.doctype; if (dt && dt.name) { doctype += '<!DOCTYPE ' + dt.name; if (dt.publicId) doctype += ' PUBLIC \x22' + dt.publicId + '\x22'; if (dt.systemId) doctype += ' \x22' + dt.systemId + '\x22'; doctype += '>\n'; }; var fileName = selWin ? win.getSelection().toString() : (title && title.text ? title.text : loc.pathname.split('/').pop()); fileName = fileName.replace(/[:\\\/<>?*|"]+/g, '_').replace(/\s+/g, ' ').slice(0, 100).replace(/^\s+|\s+$/g, ''); fileName += (" " + new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")); if(!/\.html?$/.test(fileName))fileName += '.html'; saveToFile(doctype + sel.innerHTML + '\n<!-- This document saved from ' + (loc.protocol != 'data:' ? loc.href : 'data:uri') + ' -->', fileName); |
firepox > 07-02-2017 05:21:29 |
bunda1 |
mahtanoronra > 13-02-2017 08:52:21 |
а подскажите есть ли кнопка которая обьеденяет в себе открытие, папки профеля,открытие папки загрузки, chrome\userChrome.css, папки chrome, prefs.js ,user.js. и т д ? |
sonyas75 > 13-02-2017 09:16:03 |
mahtanoronra, есть у меня какая-то древняя, не помню даже где брал скрытый текст // Создать меню ............................................................................................ menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup")); menuPopup.setAttribute("id", "fileAndFolders-popup"); // добавляем массив с данными для создание меню .... var lst = [ { label:"Firefox", image:"chrome://branding/content/icon16.png", value:"CurProcD", command:OpenFirefoxFolder }, { label:"Profile", image:"chrome://mozapps/skin/profile/profileicon.png", value:"ProfD", command:OpenFirefoxFolder }, { label:"Download", image:"chrome://mozapps/skin/downloads/downloadIcon.png", command:OpenDownloadFolder }, { label:"separator" }, { label:"Extensions", image:"chrome://mozapps/skin/extensions/extensionGeneric-16.png", value:"ProfD,extensions", command:OpenFirefoxFolder, }, { label:"Custom buttons", image:"chrome://custombuttons/skin/cbicon.png", value:"ProfD,custombuttons", command:OpenFirefoxFolder, }, { label:"Bookmark backups", image:"chrome://custombuttons/skin/button.png", value:"ProfD,bookmarkbackups", command:OpenFirefoxFolder, }, { label:"Search plugins(default)", style:"list-style-image:url('chrome://global/skin/icons/Search-glass.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"CurProcD,searchplugins", command:OpenFirefoxFolder, }, { label:"Search plugins(user-defined)", style:"list-style-image:url('chrome://global/skin/icons/Search-glass.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"UsrSrchPlugns", command:OpenFirefoxFolder, }, { label:"separator" }, { label:"Chrome", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 32px, 16px, 16px) !important;", value:"UChrm", command:OpenFirefoxFolder, }, { label:"userChrome.css", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"ProfD,chrome,userChrome.css", command:OpenFirefoxFolder, }, { label:"userContent.css", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"ProfD,chrome,userContent.css", command:OpenFirefoxFolder, } ]; // цикл по очереди добавляет из массива 'lst' нужные атрибуты к пунктам меню .... for( var i = 0, m; m = lst[i]; i++) { var menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", m.label); menuItem.setAttribute("class", "menuitem-iconic"); if ("image" in m) menuItem.setAttribute("image", m.image); if ("style" in m) menuItem.setAttribute("style", m.style); if (m.label == "separator") menuItem = document.createElement("menuseparator"); if ("value" in m) menuItem.setAttribute("value", m.value); menuItem.addEventListener("command", m.command, false); // не добавляете цекбоксы к пункту если уже добавлен "image" .... //if ("checked" in m) menuItem.setAttribute("type", "checkbox"); //if ("checked" in m) menuItem.setAttribute("checked", m.checked); //menuItem.id = "menuItem-" + m.label.toString(); menuPopup.appendChild(menuItem); };
// Функция открывает папки и файлы Firefox, выбор завысит от параметра 'value' для функции .................. // создаем массив из слов в 'value' и получаем названия нужных папок и файлов .... // указать нужный каталог .... // указать нужный файл если он записан в 'value' и открыть файл .... // открыть папку если в 'value' не записан файл .... // Функция открывает папку загрузки Firefox если папка существует ........................................... // Настройка функций кликов мыши(Mouse Click settings) ...................................................... |
mahtanoronra > 13-02-2017 09:24:31 |
sonyas75 Выделить код Код:label:"userContent.css", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"ProfD,chrome,userContent.css", command:OpenFirefoxFolder, }, { label:"user.js", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"ProfD,user.js", command:OpenFirefoxFolder, }, { label:"prefs.js", style:"list-style-image:url('chrome://global/skin/icons/folder-item.png')!important; -moz-image-region: rect(0, 16px, 16px, 0) !important;", value:"ProfD,prefs.js", command:OpenFirefoxFolder, } а все надо было браузер перезапустить)отдуши) |
xseed > 16-02-2017 18:26:24 |
Переустановил систему, импортировал кнопки, перетащил на панель, все как обычно. Иконки и всплывающие подсказки отображаются, но ни одна из кнопок не работает. скрытый текст Выделить код Код:Could not read chrome manifest 'file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/chrome.manifest'. unreachable code after return statement[Подробнее] bootstrap.js:1988:2 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 __defineGetter__ self-hosted <анонимная> chrome://custombuttons/content/cbbuttonimpl.js:11:1 toolbarbutton_XBL_Constructor chrome://custombuttons/content/toolbarbutton.xml:17:5 CustomizableUIInternal.insertWidgetBefore resource://app/modules/CustomizableUI.jsm:1198:5 CustomizableUIInternal.buildArea resource://app/modules/CustomizableUI.jsm:757:9 CustomizableUIInternal.registerToolbarNode resource://app/modules/CustomizableUI.jsm:672:9 this.CustomizableUI.registerToolbarNode resource://app/modules/CustomizableUI.jsm:3063:5 _init chrome://browser/content/customizableui/toolbar.xml:85:11 onReadyStateChange chrome://browser/content/customizableui/toolbar.xml:37:15 Object { stack: "", ещё 5… } runner.js:166 Object { stack: "", ещё 5… } Promise-backend.js:940 ReferenceError: setTimeout is not defined[Подробнее] framescript.js:147:13 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 custombutton.buttonDestroy chrome://custombuttons/content/cbbutton.js:116:10 destroy chrome://custombuttons/content/cbbuttonimpl.js:8:2 custombutton.buttonDestructor chrome://custombuttons/content/cbbutton.js:85:4 toolbarbutton_XBL_Destructor chrome://custombuttons/content/toolbarbutton.xml:27:5 CustomizeMode.prototype.wrapToolbarItem resource://app/modules/CustomizeMode.jsm:892:15 CustomizeMode.prototype.deferredWrapToolbarItem/</< resource://app/modules/CustomizeMode.jsm:874:23 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 TypeError: oBtn._handlers is undefined[Подробнее] cbbutton.js:116:10 TypeError: can't convert undefined to object cbbuttonimpl.js:11:1 Предупреждение: «nsIOService::NewChannel()» является устаревшим, пожалуйста, используйте «nsIOService::NewChannel2()» CustomButtonsService.js:1152:10 Key event недоступен на GTK2: ключ=«u» модификаторы=«accel,shift» id=«key_tm_mergeWin» browser.xul Key event недоступен при использовании некоторых раскладок клавиатуры: ключ=«n» модификаторы=«accel, alt» id=«key_tm_detachTab» browser.xul Key event недоступен при использовании некоторых раскладок клавиатуры: ключ=«t» модификаторы=«accel,alt» id=«key_tm_dupTab» browser.xul Key event недоступен при использовании некоторых раскладок клавиатуры: ключ=«r» модификаторы=«accel,alt» id=«toggleReaderMode» browser.xul Key event недоступен при использовании некоторых раскладок клавиатуры: ключ=«i» модификаторы=«accel,alt,shift» id=«key_browserToolbox» browser.xul Use of nsIFile in content process is deprecated. loader.js:244:15 ReferenceError: setTimeout is not defined framescript.js:147:13 Invalid chrome URI: / NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 A promise chain failed to handle a rejection. Did you forget to '.catch', or did you forget to 'return'? See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise Date: Thu Feb 16 2017 18:16:28 GMT+0300 Full Message: Error: page-thumbnail:error Full Stack: observe@resource://gre/modules/BackgroundPageThumbs.jsm:116:22 BackgroundPageThumbs._onCaptureOrTimeout@resource://gre/modules/BackgroundPageThumbs.jsm:305:7 Capture.prototype._done/done@resource://gre/modules/BackgroundPageThumbs.jsm:451:7 Capture.prototype._done@resource://gre/modules/BackgroundPageThumbs.jsm:471:7 Capture.prototype.notify@resource://gre/modules/BackgroundPageThumbs.jsm:428:5 BackgroundPageThumbs.jsm:116 TypeError: can't access dead object framescript.js:139:9 NS_BINDING_ABORTED: Component returned failure code: 0x804b0002 (NS_BINDING_ABORTED) [nsIStreamListener.onStartRequest] WebRequest.jsm:221 A promise chain failed to handle a rejection. Did you forget to '.catch', or did you forget to 'return'? See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise Date: Thu Feb 16 2017 18:16:58 GMT+0300 Full Message: Error: page-thumbnail:error Full Stack: observe@resource://gre/modules/BackgroundPageThumbs.jsm:116:22 BackgroundPageThumbs._onCaptureOrTimeout@resource://gre/modules/BackgroundPageThumbs.jsm:305:7 Capture.prototype._done/done@resource://gre/modules/BackgroundPageThumbs.jsm:451:7 Capture.prototype._done@resource://gre/modules/BackgroundPageThumbs.jsm:471:7 Capture.prototype.notify@resource://gre/modules/BackgroundPageThumbs.jsm:428:5 BackgroundPageThumbs.jsm:116 Загрузка смешанного (небезопасного) отображаемого содержимого «http://i.imgur.com/115fLoF.png» на защищённой странице[Подробнее] viewtopic.php Загрузка смешанного (небезопасного) отображаемого содержимого «http://storage5.static.itmages.ru/i/17/0213/h_1486966524_7429668_76b48c0e47.png» на защищённой странице[Подробнее] viewtopic.php Разрешил установку неподписанных дополнений в FF51, инсталлирую Browsec с оф. сайта, Firefox рапортует об успешной установке, в дополнениях появляется, а иконка на панели инструментов не появляется. Может эти проблемы как-то связаны? В чем может быть дело? Win10 x64 |
bunda1 > 16-02-2017 21:19:48 |
xseed |
xseed > 18-02-2017 00:56:20 |
bunda1 пишет
Заработало, спасибо! |
xseed > 23-02-2017 00:12:22 |
Вопрос: Можно ли кнопки поместить в меню? |
difabor > 23-02-2017 06:14:22 |
xseed, посмотрите CB Button Utility |
mokujin > 23-02-2017 13:53:53 |
xseed пишет
Нет, но можно сделать кнопку-меню с нужными ф-циями. |
mahtanoronra > 24-02-2017 20:21:46 |
ищю кнопку. функция такая. |
bunda1 > 24-02-2017 22:22:00 |
mahtanoronra пишет
Выделить код Код: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%3E%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0438%20%u043F%u0435%u0440%u0435%u0439%u0442%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CAAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%252BTzvb2%252B%252Fne4dFJeBw0egA%252FfAJAfAA8ewBBegAAAAD%252B%252FPtft98Mp%252BwWsfAVsvEbs%252FQeqvF8xO7%252F%252F%252F63yqkxdgM7gwE%252FggM%252BfQA%252BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%252FQvq%252Bfz%252Bf%252F%252B%252B%252FZKhR05hgBBhQI8hgBAgAI9ewD0%252B%252Fg3pswAtO8Cxf4Kw%252FsJvvYAqupKsNv%252B%252Fv7%252F%252FP5VkSU0iQA7jQA9hgBDgQU%252BfQH%252F%252Ff%252FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%252Fv%252Fg6Nc%252Fhg05kAA8jAM9iQI%252BhQA%252BgQDQu6b97uv%252F%252F%252F7V8Pqw3eiWz97q8%252Ff%252F%252F%252F%252F7%252FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%252F%252B%252F%252F39%252F%252F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%252F%252B%252Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%252BooT8%252Fv%252F7%252F%252F%252FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%252BhwGfXifWvqz%252B%252Ff%252F58u%252Fev6Dt4tr%252B%252F%252F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%252FkwBChwHt4dv%252F%252F%252F728ei1bCi7VAC5XQ7kz7n%252F%252F%252F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%252F%252F%252F9%252F%252F%252FSqYK5UwDKZAS9WALIkFn%252B%252F%252F3%252F%252BP8oKccGGcIRJrERILYFEMwAAuEAAdX%252F%252Ff7%252F%252FP%252B%252BfDvGXQLIZgLEWgLOjlf7%252F%252F%252F%252F%252F%252F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%252F%252F%252F%252F7%252B%252Fu2bCTIYwDPZgDBWQDSr4P%252F%252Fv%252F%252F%252FP5GRuABAPkAA%252FwBAfkDAPAAAesAAN%252F%252F%252B%252Fz%252F%252F%252F64g1C5VwDMYwK8Yg7y5tz8%252Fv%252FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%252F%252FPvi28ymXyChTATRrIb8%252F%252F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BgURLBar.select%28%29%3B%0AgoDoCommand%28%27cmd_paste%27%29%3B%0AgURLBar.handleCommand%28%29%3B%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 |
mahtanoronra > 05-03-2017 01:40:39 |
что то кнопка не сохроняет в png страницу Выделить код Код:// Настройка функций кликов мыши для кнопки ........ this.onclick = function(e) { if ( e.button == 0 ) savePageInPNG(); // ЛКМ if ( e.button == 1 ) gShowPopup(this); // СКМ if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); savePageToPDF(); } }; // Сохраняет страницу как PDF файл через сервис 'pdfmyurl.com' function savePageToPDF() { // разрешить страницу для расширения NoScript .... if ( "noscriptUtil" in window ) { var autoReload = custombuttons.getPrefs("noscript.autoReload"); if ( autoReload ) custombuttons.setPrefs("noscript.autoReload", false); noscriptOverlay.allowPage(); if ( autoReload ) setTimeout(function() { custombuttons.setPrefs("noscript.autoReload", true) }, 10) } // сохранить если это веб страница .... var loc = content.location; if (loc.protocol.slice(0, 4) == "http") loadURI("http://pdfmyurl.com?url=" + loc); }; // Сохранить всю страницу как PNG ........ function savePageInPNG() { var canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"); canvas.width = Math.min(content.innerWidth + content.scrollMaxX, 32766); canvas.height = Math.min(content.innerHeight + content.scrollMaxY, 32766); var context = canvas.getContext("2d"); context.drawWindow(content, 0, 0, canvas.width, canvas.height, "white"); var uri = makeURI(canvas.toDataURL("image/png")); var fp = Cc['@mozilla.org/filepicker;1'].createInstance(Ci.nsIFilePicker); fp.init(window, "Save Screenshot As", fp.modeSave); fp.appendFilter("", "*.png"); fp.appendFilters(fp.filterImages | fp.filterAll); fp.defaultExtension = "png"; fp.defaultString = content.document.title + ".png"; if (fp.show() == fp.returnCancel || !fp.file) return; Cc['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] .createInstance(Ci.nsIWebBrowserPersist) .saveURI(uri, null, null, null, null, fp.file, null); }; // Подсказка для кнопки ........ this.tooltipText = "L = Сохранить страницу как PNG-изображение \nM = Контекстное меню \nR = Сохранить страницу как PDF файл"; |
bunda1 > 05-03-2017 20:29:12 |
mahtanoronra пишет
|
thrower > 10-03-2017 18:00:41 |
bunda1, перестала работать кнопка: №148. |
_zt > 11-03-2017 20:02:15 |
thrower |
Mishania > 18-03-2017 15:16:41 |
На 52 ESR не работает "Открыть в торрент" Выделить код Код://Открыть в uTorrent........................ (() => { const id = _id + "-" + Components.stack.lineNumber; if (Application.storage.get(id, null)) return; Application.storage.set(id, {}); addDestructor(() => Application.storage.set(id, null)); const topic = "http-on-examine-response"; const cd = "Content-Disposition"; var re = /^\s*attachment/i; function onResponse(channel) { try { channel.QueryInterface(Ci.nsIHttpChannel); var disp = channel.getResponseHeader(cd); channel.loadFlags & channel.LOAD_DOCUMENT_URI //&& channel.contentType == "application/x-bittorrent" && ( channel.contentType == "application/x-bittorrent" || channel.URI.path.startsWith("/parse/d.rutor.org/download") ) && re.test(disp) && channel.setResponseHeader(cd, disp.replace(re, "inline"), false); } catch(ex) {} } Services.obs.addObserver(onResponse, topic, false); addDestructor(() => Services.obs.removeObserver(onResponse, topic)); })(); Custom Buttons 0.0.5.8.9.3. Профиль с нуля. |
bunda1 > 18-03-2017 19:14:05 |
Mishania пишет
Выделить код Код:// Открыть в uTorrent ........................ (() => { const id = _id + "-" + Components.stack.lineNumber; var storage = (function() { var global = Cu.import("resource://gre/modules/Services.jsm", {}); var storage = global[id] || (global[id] = global.Object.create(null)); return { get: function(key, defaultVal) { if(key in storage) return storage[key]; return defaultVal; }, set: function(key, val) { if(key === null) delete storage[key]; else storage[key] = val; } }; })(); if (storage.get(id, null)) return; storage.set(id, {}); addDestructor(() => storage.set(id, null)); const topic = "http-on-examine-response"; const cd = "Content-Disposition"; var re = /^\s*attachment/i; function onResponse(channel) { try { channel.QueryInterface(Ci.nsIHttpChannel); var disp = channel.getResponseHeader(cd); channel.loadFlags & channel.LOAD_DOCUMENT_URI //&& channel.contentType == "application/x-bittorrent" && ( channel.contentType == "application/x-bittorrent" || channel.URI.path.startsWith("/parse/d.rutor.org/download") ) && re.test(disp) && channel.setResponseHeader(cd, disp.replace(re, "inline"), false); } catch(ex) {} } Services.obs.addObserver(onResponse, topic, false); addDestructor(() => Services.obs.removeObserver(onResponse, topic)); })(); |
Mishania > 18-03-2017 20:40:45 |
bunda1 |
bunda1 > 18-03-2017 20:51:11 |
Mishania пишет
Просто у меня память хорошая на коды. |
yup > 20-03-2017 00:19:31 |
bunda1 |
Ultima2m > 20-03-2017 08:55:20 |
bunda1 |
Mishania > 20-03-2017 09:50:21 |
У меня ещё просьба, видимо с переустановкой что-то напутал. Раньше у меня стояла кнопка которая делала код установки кликабельным и сразу с иконкой. Сейчас приходится самому копировать. Не могу найти что это делало, а без этого отвык. Поделитесь. |
Uxapb > 20-03-2017 10:58:01 |
Mishania пишет
скрытый текст Выделить код Код:addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ var boxes = []; var pres = doc.getElementsByTagName("pre"); for(var i = 0, l = pres.length; i < l; ++i) { var pre = pres[i]; if(pre.parentNode.parentNode.parentNode.className == "codebox") boxes.push(pre); } for(var i = 0, l = boxes.length; i < l; ++i) { var box = boxes[i]; if(box.hasAttribute("data-highlight-js-parsed")) continue; box.setAttribute("data-highlight-js-parsed", "true"); // Special "codes" var tc = box.textContent; if( /^custombutton:\/\/\S+%3C\/custombutton%3E\s*$/.test(tc) || /^data:[\w-]+\/[\w-]+;base64,\S+\s*$/.test(tc) ) { tc = tc.replace(/\s+$/, ""); var a = doc.createElement("a"); a.href = tc; var icon; if(/^data:image\//.test(tc)) icon = tc; else if( /^custombutton:\/\//.test(tc) && /%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(tc) ) try { icon = decodeURIComponent(RegExp.$1); } catch(e) {} if(icon) { var img = doc.createElement("img"); img.src = icon; img.alt = ""; var s = img.style; s.marginRight = "4px"; s.verticalAlign = "middle"; a.appendChild(img); } a.appendChild(doc.createTextNode(tc)); var s = a.style; s.background = "none"; s.margin = s.padding = 0; box.innerHTML = ""; box.appendChild(a); continue; } } } }, true, document.getElementById("appcontent") ); |
Mishania > 20-03-2017 11:09:12 |
Uxapb |
bunda1 > 20-03-2017 11:25:43 |
Ultima2m пишет
А e10 включен? |
Ultima2m > 20-03-2017 12:00:32 |
bunda1 пишет
Нет, отключен. |
bunda1 > 20-03-2017 13:05:49 |
Ultima2m пишет
В кнопке Загружать изображения на страницах и Переключить JavaScript для сайтов одинаковые коды перезагрузки страницы - BrowserReload() и у меня на FF52 + Переключить JavaScript для сайтов перегрузка страницы работает. Может так попробуй: Выделить код Код:// Настройка функций кликов мыши для кнопки .............. this._handleClick =()=> { var scriptEnabled = gBrowser.docShell.allowJavascript; // текущее состояние JavaScript на странице var currHost = content.document.domain; if ( !currHost ) return; saveTextToHelp(currHost, scriptEnabled); tabsReload(false, currHost, !scriptEnabled); }; // Получаем из вкладки 'Справка' массив с доменами .............. var hosts = self.getAttribute('Help').split('\n').filter((host)=> /\S/.test(host)).map((host)=> host.trim()); // Перегрузить и переключить JavaScript для текущей вкладки или вкладок сайта или всех сайтов из массива .............. function tabsReload( reason, currHost, scriptEnabled ) { if ( reason == 'destructor' ) return; if ( reason ) scriptEnabled = reason != 'update'; // переключить текущую вкладку если левый клик на кнопке if ( !reason ) { gBrowser.docShell.allowJavascript = scriptEnabled; setTimeout(()=> BrowserReload(), 500); }; // Сплывающая подсказка .... var notification = reason ? 'Перегрузить все вкладки сайтов из списка' : 'Перегрузить все вкладки сайта'; var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) alertsService.showAlertNotification(self.image, self.label, notification, true, "", listener, ""); // стиль сплывающей подсказки var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #alertImage { height: 35px !important; width: 35px !important; }\ #alertNotification:hover { cursor: pointer !important; }\ #alertTextLabel { color: #0000FF !important; text-decoration: underline; }\ ')); sss.loadAndRegisterSheet(uri, 0); // удалить стиль и подсказку через указанное время setTimeout(()=> { sss.unregisterSheet(uri, 0); alertsService.closeAlert(); }, 4000); // переключить вкладки сайта или всех сайтов из массива если кликнуть на подсказке function listener(subject, topic, data) { if ( topic !== 'alertclickcallback' ) return; var currTab = gBrowser.mCurrentTab; for( var tab of gBrowser.tabs ) { var uri = tab.linkedBrowser.currentURI; if ( !uri.scheme.startsWith("http") ) continue; var tabHost = tab.linkedBrowser.contentDocument.location.host; if ( tabHost == '' ) return; var tabReload = reason ? hosts.indexOf(tabHost) !== -1 : tab !== currTab && tabHost == currHost; if ( tabReload ) { tab.linkedBrowser.docShell.allowJavascript = scriptEnabled; gBrowser.reloadTab(tab); } } } }; addDestructor(tabsReload); // Записать текст в вкладку 'Справка' .............. function saveTextToHelp(currHost, addHost) { // удалить или добавить текущий сайт в массив с доменами addHost ? hosts.push(currHost) : hosts = hosts.filter((host)=> { return (host !== currHost) }) var value = hosts.join("\n"); // записать массив var dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.initWithPath(dir.path + "\\extensions\\custombuttons@xsms.org\\components\\CustomButtonsService.js"); var url = Services.io.newFileURI(dir).spec, cbs = {}; Services.scriptloader.loadSubScript(url, cbs); var AO = new cbs.AppObject(), btn = AO.getButton(_id); self.setAttribute("Help", value); btn.setAttribute("Help", value); AO.overlay.saveOverlayToProfile(); }; // Обработчик следит за изменениями табов и запускают нужные коды и функции .............. addEventListener("TabAttrModified", e=> { var browser = e.target.linkedBrowser; // отключить JavaScript для сайта если домен сайта совпадает с массивом 'hosts' var specifiedSite = hosts.indexOf( browser.contentDocument.location.host ) !== -1; browser.docShell.allowJavascript = !specifiedSite; // если на странице отключен JavaScript меняем иконку if ( browser == gBrowser.selectedBrowser ) { self.style.filter = specifiedSite || !cbu.getPrefs("javascript.enabled") ? grayscale : ''; } }, true, gBrowser.tabContainer); var grayscale = parseInt(Services.appinfo.version) < 36 ? 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")' : 'grayscale(1)'; |
Ultima2m > 20-03-2017 14:54:58 |
bunda1 |
ARG > 03-04-2017 23:42:18 |
Добрый день! |
_zt > 13-04-2017 00:36:05 |
А из за чего такое может быть? FF Exp Imp CB перестала перезаписывать путь каталога сохранения в настройках. Пришлось в ручную исправлять. Проверил и на 3 и 4 фиксе CB. На чистом профиле то же самое, но она хотя бы предлагает сохранять на C:, а вот на старом, где был прописан уже не существующий путь, постоянно выводит сообщение, что нужно установить путь, ну а при установке пути он не перезаписывается. Можно это дело пофиксить? 13-04-2017 00:42:26 Хотя, вот вариант который у меня: скрытый текст Выделить код Код:// Save, от 08.03.2017. ............. self.label = "Save"; self._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); self.image = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAADAgBEDRIXnwxQjKQNWp6pDFWXqAxXm6gMV5moDFeaqAxXmqgMV5qoDFebqAxVlqgNW5+pCkyIogwSFqgDAgBHDQoFhyszOv8hheP+IJH7/x+L8v8fjfb/H433/x+N9v8fjfb/H432/x+N9/8fi/L/IJH7/yGF5P0kLTTvDAcDgwgICIQ8Ojf/0czA+Oji1fzh18r85NzO/OTbz/zj287849vO/OPbzvzk3M/84dfK++ji1f3Sy8D5NDIvywYGB3kKCgqFQ0A8/+XXw/v979f/9uTO//rp0f/66NH/+ujR//rn0f/66NH/+ujR//bkzv/979f/5tfD/UZBPv8KCwqEDQwMhUVDQP/f08X7+OrZ/+zf0P/v5NP/8OPT/+/j0//v4tP/8OPT/+/j0//s39D/+OrZ/+DTxfxEQj//DAwMhA8PD4VKR0T/4dXG+/rr2v/v4tH/9OXU//Ll1P/z5dT/8+XU//Pl1P/05NT/7+DR//rr2v/i1cX7SkhE/w8PD4USEhKFT0xI/+XXxfv97tr/9ePR//no1P/459T/+OfU//jn1P/459T/+OfU//Xk0f/97tr/5dfF+09MSf8SEhGFFRQUhVNQTv/j2cv7+u/g//Hm2P/169v/9Orb//Tq2//06tv/9erb//br3P/x5tf/+e/g/+PZzPtTUU7/FBQUhRgXF4VXU1D/2828+/Lk0f/q2sf/7d3K/+3dyv/t3cr/7N3K/+rayP/r28n/69vI//Ll0v/azbv7VlNP/xgXF4UfHh6FTktJ/1JOTPtZVFL/Uk5L/1FNSv9RTUr/UU1K/1JPTP9YVVD/VVJP/09NSv9WUk//UU1L+05LSf8fHh2FIR8fhVVTUP9FQkD7UlBM/6Wlj/+4uJ7/sLCX/7S0mv+xsJn/oKCQ/6+vmv+hoYv/TEtH/0NCQPtVUk//IR8fhSMhIIVcWVb/SEVF+19dVv/f3sP////e//X10v///93/2di8/1lYWP+eno//5+fG/19dV/9JRkb7W1hV/yMhIYUkJCOFXltZ/0tJSPtdW1f/0NC4/+/u1P/h4cj/8PDV/7++q/8vLC7/e3lw/9fWv/9eXVf/TElJ+15bWf8lJCKEJSQjhF9cWf9LSUf5XVtX/tbVwf/5+OL/6enV//j54v/GxrX/QD0+/42Kgv/d3cr/YF5a/k5LSvlhXlv/JSUjhCkoKIZpZWT/VVJR/WNhXP/V1cT//f3s/+3t3v/8/Or/zc2//01LSf+VlIz/4eDS/2hmYv9YVVT8aWVj/ycmJoIaGRlYSEVE1DYzM8NKSUfP0dHG9/X16P/n59v+7e3g/+jo3f/X2M3+6uve/9bWzPdOTUvNOjg3y0RBQLwPDw8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="; var pref = "CB.Shortcuts.pathToSaveShortcuts"; var faviconFolder = "C:\\Documents and Settings\\Favicon\\"; // папка для сохранения иконок для ярлыков и ярлыков сайтов var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Создать меню для кнопки ............. var array = [ { label: "Сохранить страницу в html одним файлом", func: "runSaveSnapshotToHtml()", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaUlEQVR4AX3BTWvcVRTA4d+592am/5lp0qSxtEtRxI0oVmipuBFEEDfd1IUvCz+RO3du/QAqCgUjxULdWKFV8AUkapg0pplM5uX/cu85x7RQlDb4PPL62++8ubq68cLZjXPnY2hnKYk4JxMgZ/fpvHe6bo72tr745OO0trb+4pVLb1x7/92rFzfXIQr/a1kbX34T2Lrx2d350Uefpq4znc6y/b0Ho8oZVII5J4oC81qZTAL1YhmAXnK12LUqB1O40Br9fkQLT3DAIjQNLBsw1wBIKmahbkucTKFtjdxFioI7T4gRcnG0tJgVASSVUmKXS6hrJXeQC+QC5iD8h0NaAS2Cu6FFAxCCqkZVDWYKIjwiPEZ4SBzMCmo5AJJULWIau7ZlZ6zMZhV1q5g5j0sxcP+gpl4qZhqAmLTkBBbNnZvfjTk8zBxMWprWcAd3HhJxhoNEVSWGowsE0QBI6nIOajnEFEkp8Orl8wxHQ4QCKCJOjByL/PLbnB/u7DIYRFRLAELKucSmzuHPnTmT/TFX33qK61vbLGp479qzbG70eGR9NXHj258Yjc7h5gEIIecS6yaHxaJlWS9ZLjPf3x5z89Yuh9PMA/cnsLsPh9NMFMetYFYCEII7vRh7vapaReQUm2d6fPjBZV678hxrp3s80O9DFJBwin5/QFWtEWMvATGpFp8e3bOd8W0O9u/w1deZiy8/zysvLfj19xk//mzMF4W2c7b/2NPtv+52Kk11eHSPYyKD1bOXzMozpbRPSwjkpgiChJWAZ8UViBwTQSSnldjgVsXUm5Wm+Vz41xDoAwIETuaAAy3QAf4PtuhVEPpvXZEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC"}, { separator: ''}, { label: "Сохранить значок веб-сайта", func: "saveFavicon()", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACPVBMVEX09ff////C3L+Uq8+Vq8+Uqs+Zr9CZrtCZr9Gfu+ear8+mt9JRf8ORxl3t8vfF06+Twojs8/d9otl8o9s+aquZrs/X9KLp8Pft8fZhisf//+DBzN2hveihv+pii8hti9pgicl6oNlojs1zncNsi836/P2duebx8/eYyWqBp+Gn0IKBvlKHsm9qmaVuk8zt7/FEbauEv1Tp7/JdhL9oi9Pl8e2LwlmdsdD7/P76+/3H7ofo8+peh8eHwFaSteZ0pkp2gl7q8/Ohy5OApt2by2eZuOqbuOWaezWuvtd7nN2HvWxul9Ty9feQxV5ljcqBp+JEcLCVtOOo0nR7odx5n9suX6Z1mtBzmtSXyGPv9PewzfOzx+O6zu/s8fd9o95Xfrthi8lYhMN5oNnw9ffw9Pjw9Pf8/f6ewO/m8O9zmdE6aapsjdyUwouPxWPDzd6XteOSs9B5nNVpnpqHt7h/s6F6n9d7ntSTttGHwVh4qp+Ev1HH7ox6qk5wj+Hm8e3t9fOm0IKAtqOBpNrx+P9ljcyhs9FpkM2hv+/u8/fF0eOLu4N+vFKgzX3p9OSFqN13qExekIl4n9j7/P3x9PhxmNDm8e9Vg8Zfkozr8veq0YTX9qL//92AtamOwnHFz96Fot1diMh+pd13ntmatu+YyW/3+/+Tqs5UgcShzJNbhsdTf8GHs7bo8PaXtuqMr+Ty8/SZt+SUqs7r7Ox3ndb9/f7t8feZyXGYyWWCpNbz9PRuiteNtNDn7/V4ntjx8fGo3JqNAAAAv3RSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AEVuhDkAAAD+SURBVBhXY5jHzcUMAqxAICq9bx8D96adDFAgaGQOFOBaH7h7zoqZDTlFyptncAAFWBjyi52CXCI0unRLxcECPhsatbbzmlXMnS60hg0kkOxW0uNrq93tNaFpD1ggUm21QK532ZQdSm1hmXKdDCwdnOWVOi1RjNGMQCCrwMDMJ8NZ4LAynVGPkXFp8zpJBubYmn579wXtqhZb0iwn9a1iWLaViYmJ3891obOwYtLEvcYMGyWAAkwJdv6accEhi8LjGVr11SenpC5f61g3NcO0vjCAIc+DjZ2dnWexddWSbYa9nlkM+8BgWsxsK7FZ1VLzRaACNokmtdnyu1QMQgF7Rlh4zWWTAwAAAABJRU5ErkJggg=="}, { label: "Запомнить значок веб-сайта как base64", func: "copyFaviconData()", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAI2bv/9RVpf/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAACIkvD/Jia6/ywpq/8AAAAAAAAAAAAAAAAAAAD/AAAA/wbwAf90qpv/Ymic/1RWqP9OUKr/W2Ch/2dumf9YYKT/Ly/B/xQP3/8MB9P/JCGb/wAAAAAAAAAAAAAAAAAAAP8G8AH/U5ea/ycr8f8VIP3/HiP4/ywo8v8sIvb/LCL2/ywi9v8KBOj/BQDe/wQAtv8tK4P/AAAAAAAAAAAAAAD/BvAB/3Sqm/9iaJz/Tim3/0UuuP9GPrT/R0ex/zk8uf8gIMz/FRDe/xEMzv8jIJz/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8AAAD/SqOR/yImvP8sLKj/AAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/BvAB/3Sqm/9KW5r/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAABvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAG8AH/AAAAAAAAAP8G8AH/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BvAB/wbwAf8AAAAAAAAA/wAAAP8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAG8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOesQQBjrEGAAaxBwACsQcABrEHDg6xBwAesQcAPrEHAD6xBw8+sQcPprEHD8axBwAGsQQABrEGAAaxB//+sQQ=="}, { separator: ''}, { label: "Сохранить ярлык страницы как…", func: "saveShortcuts('true')", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP8E/yT/BP8k/5XLDv/zqgD/86oA//I1///yNf//86oA//OqAP/zqgD/86oA//OqAP+Vyw7/lcsO/wT/JP8E/yT/BP8k/5XLDv+Vyw7/86oA//OqAP/yNf//8jX///OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//02AP/9NgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/9NgD//TYA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA/wA31v8AN9b/86oA//9If///SH//86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP8AN9b/ADfW//OqAP//SH///0h///OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/5XLDv+Vyw7/86oA//OqAP/zqgD/86oA/0CA//9AgP//86oA/07+9f9O/vX/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP9AgP//QID///OqAP9O/vX/Tv71//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="}, { label: "Сохранить ярлык страницы без запроса на сохранение", func: "saveShortcuts()", image: false}, { separator: ''}, { label: "Сохранить всю страницу как PNG", func: "WebScreenShot.captureAll()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAiAcFBa4KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwsJCaECAQE/BQMDAAAAAJUgICD4V1ZW/2FhYf5hYWH/YmFh/2BgYP9fX1//X19f/19fX/9gYGD/YmFh/2FhYf9gYGD+ZmVl/1RSUuIVFBQtCgkJy1paWv+Li4v9h4eH/oiIiP6FhYX+i4uL/pKSkv6Sk5P+kpKS/ouLi/6FhYX+iIiI/oiIiP6Hh4f7lZaW/25tbYQNDQ3OcHBw/5KSkv6Li4v/i4uL/5mZmf+EhIT/ZGRk/1tbWv9kZGT/hISE/5mZmf+Li4v/jY2N/4yMjPyWl5f/iomJjQ4NDc13d3f/m5ub/pWVlf+goKD/XFxc/ygoKP8fHyD/GBsb/yAhIv8pKSn/W1tb/6CgoP+Wlpb/lpaW/J6env+Jh4eMDg4OzX1+fv+ioqL+qqqq/1hYWP8ZGRn/Ghwb/x4dHP8mIh//FhQR/xUWF/8aGhr/WFhY/6urq/+cnJz8pKSk/4qJiYwPDg7Ng4OD/7W1tf6MjIz/Ghoa/xYYGP8uKCb/ZEAo/5xyOP++saL/RD45/xISE/8bGxv/jY2N/6+vr/ypqan/ioiIjA8PD82IiIj/xMTE/l1cXP8LDAz/JiId/1o3LP9ADgD/mGog//Dt6P/VysX/Ih4Z/wsMDf9eXl7/v7+//K6urv+KiYmMEA8PzY+Pj//Kysr+SEhH/wEDBv9MPi7/hlES/3dCAP+VZAn/tJVO/7eVXf9OQTL/AAIE/0pJSf/FxcX8tLS0/4qJiYwQEBDNm5ub/9/e3/5SUlL/AAAA/0M7Mf/aya7/ybiO/5RmEf9aIAD/cjkX/z80KP8AAAD/U1JS/9nZ2fzAwMD/i4qKjBEREc2oqKn/8O/w/oeGhv8AAAD/DAsK/6qkof/17uj/nW8l/14eCf9hPTr/ExUU/wAAAP+Hh4f/6urq/MzMzf+Mi4uMERERzbCwsv/r6uz+3Nzd/yoqKv8AAAD/ExEP/2heU/9yWjv/UD0u/xcXFv8AAAD/Kioq/93d3v/l5eb81NTV/4yLi4wSERHNuLm5/+/v8P7z8/P/xsbG/yAgIP8AAAD/AQEB/wAAAP8BAQH/AAAA/yAgIP/Gxsb/9PT0/+np6vzb29v/jIuLjBIREc2+vb7/+Pj5/uvr7P/7+/v/4ODg/3Nyc/8uLi7/Hh4d/y0sLP9zc3P/4ODg//v7+//s7O3/8/P0/OHg4f+Mi4uLFBMTyMPDw//////7+Pj4/ff29v38/Pz9/////fr6+v3u7u79+vr6/f////38/Pz99/b2/fn5+f37+/v53t7e/5KSko4GBgZ7m5yc//j4+P/w8fH/8fLy//Dw8P/u7u7/8vLy//X19f/y8vL/7u7u//Dw8P/x8vL/8vLy/uXl5f/BwcH+k5GRUAAAAAQeHR1yb25uxn59fcZ9fHzGfXx8xn18fMZ9e3vGfHt7xn17e8Z9fHzGfXx8xn18fMZ9fHzGgH9/xYmIiGVaV1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить видимую часть страницы как PNG", func: "WebScreenShot.capturePage()", image: false}, { label: "Сохранить выбранный элемент страницы как PNG", func: "WebScreenShotByClick.init()", image: "data:image/x-icon;base64,AAABAAEAIBkAAAEAIAAMDQAAFgAAACgAAAAgAAAAMgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29fT/2tra/8jIyP/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8jIyP/a2tr/9vX0/+zs7P/ak0b/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/9qTRv/s7Oz/7Ozs/+J9Dv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/6SdmP/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/+vn4//z7+v/6+fj/4n0O/+zs7P/s7Oz/4n0O//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/aFtT//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//j39v/ifQ7/7Ozs/+zs7P/ifQ7/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P9oW1P/7+zq/+/s6v/v7Or/8O3r//Dt6//w7ev/8O3r//Dt6//w7ev/8O3r/+/s6v/w7ev/9fTy/+J9Dv/s7Oz/7Ozs/+J9Dv/49/b/+Pf2//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4/2hbU//q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/y8O//4n0O/+zs7P/s7Oz/4n0O//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/aFtT/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe//Dt6//ifQ7/7Ozs/+zs7P/ifQ7/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P9oW1P/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/7uro/+J9Dv/s7Oz/7Ozs/+J9Dv/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx/2hbU//x7+3/8vDv//Hv7f/x7+3/8e/t//Lw7//x7+3/8e/t//Lw7//x7+3/8vDv//Hv7f/29fT/4n0O/+zs7P/s7Oz/4n0O//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//aFtT/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/8vGwf/ifQ7/7Ozs/+zs7P/ifQ7/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f9nWlL/aFtT/2hbU/9nWlL/Z1pS/2hbU/9oW1P/Z1pS/2daUv9oW1P/aFtT/2hbU/9nWlL/pJyX/+J9Dv/s7Oz/7Ozs/+J9Dv/w7ev/8O3r//Dt6//w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Hv7f/w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Dt6//w7ev/4n0O/+zs7P/s7Oz/4n0O/+/s6v/v7Or/7uro/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/u6uj/7+zq/+/s6v/ifQ7/7Ozs/+zs7P/ifQ7/7uro/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7Ojm/+J9Dv/s7Oz/7Ozs/+J9Dv/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/4n0O/+zs7P/s7Oz/4n0O/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/ifQ7/7Ozs/+zs7P/ifQ7/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+J9Dv/s7Oz/7Ozs/+J9Dv/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/4n0O/+zs7P/s7Oz/4n0O/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/ifQ7/7Ozs/+zs7P/ifQ7/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+J9Dv/s7Oz/7Ozs/+J9Dv/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/k39z/4n0O/+zs7P/s7Oz/4n0O/+Lc2f/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/ifQ7/7Ozs/+zs7P/ifQ7/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+J9Dv/s7Oz/9fTy/+J9Dv/8+/r/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/4n0O//X08v/8+/r/6KFU/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ooVT//Pv6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Сохранить выбранную область страницы как PNG", func: "WebScreenShotByClipping.init()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADDn2Hfz5pE/8eVQP7IlkH/yJZB/8iWQf/IlUH/yJVA/8iVQP/IlED/yJQ//8iUP//IlD//yJM+/8iTPv/Hkj3/nI1w//bDbP//8OH//+zW///s1///69b//+rV///p1P//59L//+XQ///izf//38n//9vG///ZxP//1b///dG////Prf/KlkX/88N4/v37///99Pj//fT6//vy9v/68fT/+u/y//rt8P/66u3/+ufq//rl6P/64eT/+93h//3a3//71d7//9LK/86XR//0xHb//vv////18///9fT///f5///4////9f7///P8///v+f//7Pb//+nz///m8f//4eb//9vZ//3Y2v//1Mb/zphH//TGd//+/////Pj1///7///Q58r/m9aV/6TZnv+i15r/otWY/6LTlv+j0pb/mc6M/9DXuf//3+P//Nnc///Wyf/OmUf/9MZ3//7////8+/j//////53WnP+Y5pn/rvGv/6PvpP+e7p//me6b/5nvm/95533/mM+L///j7f/629z//9jL/86ZR//0xnf//v////z9+v//////qtup/8Xzxf/a/tn/z/vO/8n7yf/D+sL/xPvD/6Hzo/+j05b//+Tu//re3///2cz/zplI//XGeP/+/////P36//////+n26f/uvC6/9T71P/K+Mr/xvjG/8D3wP+/+L//nfCf/6LTlf//5u//+t/g///cz//OmUj/9MZ3//7////8/fr//////6rcqv/G9MX/3//f/9n92f/V/NX/0PzQ/9H+0P+s9a7/pdSY///o8f/64OL//9zP/86aSP/0xnf//v////z9+f//////ndid/5TjlP+v7q//qeyp/6jsqf+k7KX/p+6n/4Tlh/+Z0Y7//+r0//rh4v//3tH/zppI//TGd//+/////v77///////Y8Nj/p9+n/6/jr/+t4a3/rd2p/67bpv+u2ab/p9Wc/9jgx///6Oz//OPl///e0f/Omkj/9MV1//7//////fr///78///+/f///////////////////P////j////0+///8fn//+vu///m4v/94+P//97P/86ZSP/zx3v//v/////+/f///////f////v////7////+/////v+///7+///+/f///vz/P/98Pr//+33//3p9///5OL/zppL//a1Sv/0xoL/9cR7//XEfP/1xHz/9cR8//XEfP/1xH3/9cR8//XCev/1wXr/9b94//W9d//1u3X/87l0//y6bP/Llj7/+pMA/vWBAP/1gwD/9YMA//WDAP/1gwD/9YMA//WDAP/1gwD/9YQA//WEAP/1hAD/9YQA//WEAP/zhAH//okA/8qLIv3xpzP/4ptV/+OdU//jnVP/451T/+OdU//jnVP/451T/+OdU//jnVL/451S/+OdUv/jnVL/451S/+GdVf/qnUf/2aRJ/9q0c9/8yn7/98V5/vjGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6/vrIe/+jj2y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { separator: ''}, { label: "Сохранить всю страницу как PDF", func: "savePageToPDF()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYUw4pJt3V/+Rb1D8lnFP/55zTf+VcVH/lXJS/5VyUv+VclL/lXJS/5VyUv+VclL/k3BR/J56Wv9cRzSkAAAAAJNvUKTto2L/4ppe/uehZf/Pmmr/noZv/9Scav/Wl17/1plh/9eZYf/XmWH/15lh/9eZYf/WmGD/2Jlg/suRXP9mRiuk8rWA/397dP1akKn/rqqi/3LF3f8Mntj/4dLJ///+9f/48u3/9e7n//bt5v/47+f/+O/n//jv5//rvZP/1ZJX/a9/VP9+lrD8AIvz/xOt+f8Douv/ALb6/wC28/9tmar/z8jJ//Lq5/////7//v////n9///6/P3//////+Ta0P/PjVP/pnpT/IWds/+aiXj/5efl/8Px//951/3/LMz//wCx8/8GltL/NIu3/4ycqf/l29L////+//n6+//8/v//3tXM/8+OVP+oe1P/6K57/86QWP/r6Ob////////++v/r9/z/oOb9/zDL//8Arf//AI/r/ydysv+hpqr//PTr///////d1Mz/0I5U/6h7U//osH//wo5g/+fm5P/7/f//9vf5//z7+////vv/9/r8/5Dc/P8Oqv7/AJf//wF02v9ffZ7/8Ojh/+Ha1P/NjFL/qHtT/+ewf//Ej1//7O3r///////+/v7//v7+//f5+v/6+vv////8/8Tq/f8hp/7/AJH//wB18/8/bqj/1MGu/9mXXv+leVH/569+/8iSYv+/tKn/wLew/8O5sf/P0M////////7+/v/3+fv////7/9Hv/v8hoP3/AIn//wB4/v84ZqL/w4NH/619VP/nsYD/x45c/9W5of/bv6j/0Jxt/6J/YP+spqD/2N3i//7////6+/3///76/8vr/v8Slv7/AIb+/wBz//83VH7/nW1B/+ewfv/Fjl7/7Ozr///////9+/r/9d7K/9Ghdv+jd1D/pJ6Y/+jt8f/9///////7/6fb/v8Ahv7/AYD//wRp6f95YlT/57B//8SOXv/n5uT//v7///r7/P/8/v////////XRsv/DhEv/loBu/9DX3P/9/v/////7/2O6/f8Afv//FnTU/5JtTf/nsH//xY9e/+jn5f/+/f//+fj5//n4+P/5+Pn/+/////Xbxf/Wj1D/nX1h/+Ll6P////7/3+/3/w+V//8tcbP/qHJB/+WuffzCjV7/5efn///////+/v7//////////////v7///////XRsP/TnW3/8fT3//////////z/ddD//0Nxl/+zdkH88LmH/9CRWP2+qJT/0M7N/8/Jxv/Pysf/z8rH/8/Kxv/Py8n/zsO6/7+pmP/PzMv/zsnG/9bNyP+nsK7/h4R3/b2BT/+Sb1Ck7qxw/9GSW/69hlb/wYhX/8CIV//AiFf/wIhX/8CIVv/BiVj/xI1d/8CIVv/BiFf/vYZW/9STW/7ppmv/bE80pAAAAACUd16k+sui/+7AmPzwwpr/8MKa//DCmv/wwpr/8MKa//DCmf/vwZj/8MKa//DCmv/uwJj8+cui/5N3XaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { label: "Добавить url и сохранить страницу", func: "savePage()", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAyMjIzwyMjFeLi0tVS8vLlcuLy9XLS4uVywsLFUuLi5aKSkpUggICBMAAAAAAgICAQAAAAAAAAAAAAAAABQTEyOgoJ/yysvL/s3Pz/7Z293/4OPk/+bp6f/t7u7/5eXl/LOysv97e3vLFRUWJQAAAAACAgIDAAAAAAAAAAA8PDxSz9HT/83Qz/fLx8T8z7+5/M/AsPzez8n89e3r/PDx8fyusLL43dzc/52dndMWFhY2AAAAAAICAgIAAAAAODg5T8bEv/+9o476vIR1/7WDcv+uj3v/spCA/8Wqk//Gtab/rqyq/+Pk5fn19fX+np6e4BQUFCgAAAAAAAAAAC4uJU29oYj/wLao+tLDqf/Mv7P/yLik/7zEvP/F0cr/v62Y/6+Kef/Z2NP/6Ors+d3c3P97e3vNBAQEDgIDAAZhRCuYxaSb/8Gvqfu2inL/vIF0/7FmUv+ygG//waaX/8m8tP/CoIn/vqOF/9zg3//l5ef7ycnJ/zY2Nm0hFw08rGJD/6BlYf2mWUD/rW9g/7aNff+ZRyL/pmxR/7RyWv+qaEz/uYR0/69kSf/k1tD//////Ozs6/1iYmK4WTMck61mVv+Yemj8hjsg/51bQ/+wem//n084/6+pq/+3p6H/l0Ux/4lFOf+gWDr/zq2X//b7/fzo6Oj/YWBgsXpXSbnMsp//wNC8/I9jWv+WX1X/tn5w/7iKfv/Tzc7/ztXc/513bf+MSjH/rWJG/7iRd//o7Oz85OPl/2BgYLN1aFqu2tO+/7ejnvyohYD/ybGb/7q1ov/HwrX/7/Lr//T19v/Hzs3/p4V0/6hvW/+6gHf/4uDh/N3e3v9hYWC0dWNPuaVXRP6cfWv8w7Gz/8vHsv/U2dP/4OHf//b08//9/Pv/3drZ/7rBw/+0ppv/wZ2F/9zc3PzW1tj/ZWRktE1HPW2oa1f/lX1t/cTP0v/Ew8T/3Nvd/9LR0//W1tf/5OXl/+/t6v/i6vD/wK+i/8y2o//b3t/81NTU/2FhYbMMDAsPsZ2a1tDX2P++vL390c/P/+Dh4P/b29r/09PS/9rY1//6+Pf/8PP3/8Kqlf/c0sv/3N7g/NTU1P9iYmKyAAAAAEY6MmXozcP/5ezt+OHk6Pzt7Oz9+Pj4/urq6/zs7/T8+f///NXGsPzey8P87vDy/OXm5vnf39//ZWVlrgAAAAAGBQQQdFdHy8Wfhv/d18797e7w/+3t7P/y8u7/7N/G/7unff+/uqT/4+Tl/97d3v/c3Nz/sLCw+h8fH0IBAQABAAEBABEVFx8vJB1cWy8ciZNrU8itknHrkWdIxUsqFnEnJSBRMjQ3WS8uL1csLCtVMjIyXiIiIj4BAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}, { label: "Сохранить выделенный текст как txt файл", func: "saveSelectionToTxt()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAQE6AAAAZAAAAGgAAAJmAAACZgAAAGYAAABmAAAAZgAAAGYAAABmAAAAZgAAAGYAAABlAAAAaQABAmYAAQEjAAAAADlVkOdVcKHxVXKi8kdklPJLZpfyU3Cg8lJvn/JRbZ7yUW+g8lFun/JRbp/yUG6e8lVyofFVdKjzLkV45wAAAFABAQEAaIzF/3y34v9wsuL/cJe0/0lpgv9bjLP/dLLh/2+v3v9sq9v/cK3d/3Gv3v9sqtv/b7Df/4G77P9VcqT2AAAAVAMDAQBnir/+ZqfU/pDB4/7a3uD+j46N/kxYXv6To6/+1er4/tXp+P7J3/D+1ej4/svg8v6Gut/9aqzd/lhxnvAAAABSAwIBAGaIvv9pptX/ocfj//f4/P/P0tX/g4CA/1xZWf+Woqr/2uz8/9Hl+f/W5fT/2Of3/5fC4v5tq93/Vm+e8QAAAFIDAgEAaYm+/3mw2/+iyeX/9Pn8/+z0+//IzNL/d3h5/0tMTv+Mkpn/xdvs/9Hp/f/O4PL/msXk/nmz4/9XcJ/xAAAAUgMDAQBti7//k7/h/6fL5v/v9fn/4u73/9Dk9P+8wMT/YGpx/zJJWv94iJf/ztzo/9Pp/P+ZwuD+gLfk/1dwnvEAAABSAwMBAHOPwf+myub/sNHp//j7/P/6/P3/8fr///r39P+sxdP/IXWq/xJJcv+NjZD/0+Lu/6TN7f6Ft+L/WXGf8QAAAFIDAwEAd5LD/7PR6/+ZxOP/0ePx/97r9f/Y5/L/3e32/8Tc7f9gseT/CHK3/zBYdv+HiY7/lL/f/pLE7/9bcJ3xAAAAUgMDAQB4k8P/xNvx/5/F5f+kyOX/qMrn/6TH5f+kyOX/sM/q/5e51P9Mm83/GHm3/xxIav9fdYf+pMvs/1x1pfIAAABTAwMBAHmSxf/O4/T/y9/y/8Hb9P/C3PX/wNv0/7vW7/+93ff/utDm/42fsf9Gjbn/EXS2/ytSbv6Fj5r/WnGc8gAAAFICAwEBepPE/tHk9f/S5PX/vMjV/7fCzP+3w8//uMPP/7XBzP+6ytf/qa+4/3h/hv9Ghaz/JoO+/jNXdP82PVnyAAAAVgACAgCBmcb/2+r3/dHh8fyPkpX/kI6N/5yam/+dnJ3/paWk/6enpf+sr6//mpSR/3Bubf9SjbD8H4C+/QsrSvcCAAB/AAAAA3yVx//j8///3u/7/52gpf6pqKf+uLm5/rq7u/7Ly8v+ycnI/paWlf6LjY/+np2f/Xh+g/5gnL7/MX+y/xcgJ80BAgNNN1OUs6W84fDA1O73mJyj/ainpv+2trb/t7e4/8fHyP/Fxsb/kZGQ/4eGhP+vucT/j6G+/W53k/NlkbnwNoOv/AgiNb8CCBsQDRo/YwsaO3B0d33arKyp9q2trfWvr6/2u7u79ru7vPawr7H1sbCt9nJ2gOQIGD6bFCFEYB0qPE1Bf6SpEz9cggAAAAMCAQEBAQAAADIyMmlDQ0ONQUFBhUFBQYVCQkGFQkJBhUhISIRNTU2OKysrZAEAAAUBAQAAAgEAAAkEAAEDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}, { separator: ''}, { label: "Запомнить изображение как base64, в контекстном меню", value: "CB.Save.WebScreenShotOnImage"}, { label: "Сохранить выделенный текст в файл, в контекстном меню", value: "CB.Save.SelectionToFile" }, { label: "Открыть выделенный текст в внешнем редакторе, в контекстном меню", value: "CB.Save.TextToEditor"}, ]; var menuPopup = self.appendChild(document.createElement("menupopup")); array.forEach((m,i)=> { if ("separator" in m) { menuPopup.appendChild(document.createElement("menuseparator")); return }; var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); if ("image" in m) mItem.setAttribute("image", m.image || array[i-1].image); if ("value" in m) { mItem.setAttribute('type', 'checkbox'); mItem.setAttribute('checked', cbu.getPrefs(m.value) ); mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value)); } if ("func" in m) mItem.addEventListener("command", ()=> eval(m.func.toString())); }); menuPopup.setAttribute("onclick", "event.stopPropagation()"); // Сохранить как PNG страницу или части страницы ............. WebScreenShot = { capture: function(win, x, y, width, height) { var canvas = document.createElementNS(xhtmlns, 'canvas'); canvas.width = width; canvas.height = height; var ctx = canvas.getContext("2d"); ((i = 17)=> { try { ctx.drawWindow(win, x, y, canvas.width, canvas.height, "white") } catch(e) { canvas.height = canvas.width*i; arguments.callee(--i) }; })(); var url = makeURI(canvas.toDataURL("image/png")); var fp = window.makeFilePicker(); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilter("", "*.png"); fp.defaultString = getTabLabel() + " " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png"; if (fp.show() == fp.returnCancel || !fp.file) return; var wbp = window.makeWebBrowserPersist(); parseInt(Services.appinfo.version) < 36 ? wbp.saveURI(url, null, null, null, null, fp.file, null) : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+ }, captureAll: function() { var win = content; WebScreenShot.capture(win, 0, 0, win.innerWidth + win.scrollMaxX, win.innerHeight + win.scrollMaxY); }, capturePage: function() { var win = content, doc = win.document, body = doc.body, html = doc.documentElement; var scrX = (body.scrollLeft || html.scrollLeft) - html.clientLeft; var scrY = (body.scrollTop || html.scrollTop) - html.clientTop; WebScreenShot.capture(win, scrX, scrY, win.innerWidth, win.innerHeight); }, onImage: function(image) { var canvas = document.createElementNS(xhtmlns, 'canvas'); canvas.width = image.naturalWidth; canvas.height = image.naturalHeight; var ctx = canvas.getContext('2d'); ctx.drawImage(image, 0, 0); var base64 = canvas.toDataURL(); gClipboard.write(base64); // стиль для изображение в сплывающей подсказке .... var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css,'+ encodeURIComponent('#alertImage { height: 25px !important; width: 25px !important; }')); sss.loadAndRegisterSheet(uri, 0); alertsService.showAlertNotification(base64, self.label, "Запомнил изображение как base64", false, "", (s, t)=> { if (t == 'alertfinished') sss.unregisterSheet(uri, 0); // удалить стиль когда подсказка закрывается }, ""); } }; // Сохранить выбранную область страницы как PNG .... WebScreenShotByClipping = { capture: WebScreenShot.capture, handleEvent: function(e) { if (e.button) return false; e.preventDefault(); e.stopPropagation(); switch(e.type){ case 'mousedown': this.downX = e.pageX; this.downY = e.pageY; this.bs.left = this.downX + 'px'; this.bs.top = this.downY + 'px'; this.body.appendChild(this.box); this.flag = true; break; case 'mousemove': if (!this.flag) return; this.moveX = e.pageX; this.moveY = e.pageY; if (this.downX > this.moveX) this.bs.left = this.moveX + 'px'; if (this.downY > this.moveY) this.bs.top = this.moveY + 'px'; this.bs.width = Math.abs(this.moveX - this.downX) + 'px'; this.bs.height = Math.abs(this.moveY - this.downY) + 'px'; break; case 'mouseup': this.uninit(); break; } }, init: function() { this.win = document.commandDispatcher.focusedWindow; if (this.win == window) this.win = content; this.doc = this.win.document; this.body = this.doc.body; if (!this.body instanceof HTMLBodyElement){ alertsService.showAlertNotification(self.image, self.label, "Не удается захватить!"); return false; } this.flag = null; this.box = this.doc.createElement('div'); this.bs = this.box.style; this.bs.border = '#0f0 dashed 2px'; this.bs.position = 'absolute'; this.bs.zIndex = '2147483647'; this.defaultCursor = getComputedStyle(this.body, '').cursor; this.body.style.cursor = 'crosshair'; ["click", "mouseup", "mousemove", "mousedown"].forEach(type=> this.doc.addEventListener(type, this, true)); }, uninit: function() { var pos = [this.win, parseInt(this.bs.left), parseInt(this.bs.top), parseInt(this.bs.width), parseInt(this.bs.height)]; this.body.style.cursor = this.defaultCursor; this.body.removeChild(this.box); this.capture.apply(this, pos); ["click", "mouseup", "mousemove", "mousedown"].forEach(type=> this.doc.removeEventListener(type, this, true)); }, }; // Сохранить выбранный элемент на странице как PNG .... WebScreenShotByClick = { capture: WebScreenShot.capture, getPosition: function() { var html = this.doc.documentElement; var body = this.doc.body; var rect = this.target.getBoundingClientRect(); return [ this.win ,Math.round(rect.left) + (body.scrollLeft || html.scrollLeft) - html.clientLeft ,Math.round(rect.top) + (body.scrollTop || html.scrollTop) - html.clientTop ,parseInt(rect.width) ,parseInt(rect.height) ]; }, highlight: function() { this.orgStyle = this.target.hasAttribute('style') ? this.target.style.cssText : false; this.target.style.cssText += 'outline: red 2px solid; outline-offset: 2px; -moz-outline-radius: 2px;'; }, lowlight: function(e) { if (this.orgStyle) this.target.style.cssText = this.orgStyle; else this.target.removeAttribute('style'); }, handleEvent: function(e) { switch(e.type){ case 'click': if (e.button) return; e.preventDefault(); e.stopPropagation(); this.lowlight(); this.capture.apply(this, this.getPosition()); this.uninit(); break; case 'mouseover': if (this.target) this.lowlight(); this.target = e.target; this.highlight(); break; } }, init: function() { this.win = content; this.doc = content.document; ["click", "mouseover"].forEach(type=> this.doc.addEventListener(type, this, true)); }, uninit: function() { this.target = false; ["click", "mouseover"].forEach(type=> this.doc.removeEventListener(type, this, true)); }, }; // Сохранить страницу как PDF файл через сервис 'pdfmyurl.com' ............. function savePageToPDF(loc = content.location) { loc.href.startsWith("http") && loadURI("http://pdfmyurl.com?url=" + loc); }; // Сохранить ярлык страницы в указанную папку или в последнюю папку сохранения .............. function saveShortcuts(saveAs, shortcutName) { var url = content.document.location; cbu.isPref(pref, "C:\\"); // блокируем создание ярлыков для внутренних страниц FF if ( ["about:", "chrome:", "jar:", "data:"].indexOf(url.protocol) !== -1 ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", self.label, "Не поддерживается"); return; } // получить название ярлыка if ( saveAs ) shortcutName = setPathToShortcut(shortcutName) else shortcutName = shortcutName ? shortcutName : getSiteName() + getTabLabel() + " " + Date.now(); if ( saveAs && shortcutName == false ) return; // сохранить иконку таба в установленную папку var faviconName = "favicon" + Date.now(); var favicon = saveFaviconToFolder(faviconName); // получить путь для сохранения ярлыка из 'about:config' var pathToFolder = gPrefService.getComplexValue(pref, Ci.nsISupportsString).data; var pathToShortcut = pathToFolder + shortcutName + ".url"; // адрес страницы в UTF-8 если это протокол 'file' или в 'Punycode' если это .рф домен if ( url.protocol == 'file:' ) url = convertFromUnicode("UTF-8", url); if ( url.host.slice(-3) == '.рф') url = Services.io.newURI(url, null, null).asciiSpec; // текст ярлыка из адреса страницы и пути к иконке таба var text = "[InternetShortcut]" + "\r\n" + "URL=" + url; var pathToFavicon = "IconFile=" + faviconFolder + faviconName + ".ico" + "\r\n"; if ( favicon == false ) var pathToFavicon = ""; var data = text + "\r\n" + pathToFavicon + "IconIndex=0"; // записать текст в ярлык var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); file.initWithPath(pathToShortcut); foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(data, data.length); foStream.close(); // подсказка var notification = 'Сохранил в: ' + pathToFolder; var image = (favicon == false) ? self.image : gBrowser.selectedBrowser.mIconURL; alertsService.showAlertNotification(image, shortcutName, notification); }; // Установка пути и названия для сохранения ярлыка через диалог сохранения, отмена отдаст 'false' .............. function setPathToShortcut(shortcutName) { var pathToFile = gPrefService.getComplexValue(pref, Ci.nsISupportsString).data; var shortcutName = shortcutName ? shortcutName : getSiteName() + getTabLabel() + " " + Date.now(); // диалог создания и установки пути var fp = window.makeFilePicker(); fp.init(window, "Укажите где сохранить ярлык страницы!", fp.modeSave); fp.appendFilters(fp.filterAll); fp.defaultString = shortcutName; if ( fp.show() == fp.returnCancel ) return false; // убрать название файла из пути к файлу и записать путь в 'about:config' var filePath = fp.file.path.toString(); var fileName = fp.file.leafName.toString(); cbu.setPrefs(pref, convertFromUnicode("UTF-8", filePath.replace(fileName, "")) ); return fileName; }; // Сохранить в указанную папку иконку таба как .ico и без диалога сохранения .............. function saveFaviconToFolder(faviconName) { var url = gBrowser.mCurrentTab.image.replace("#-moz-resolution=16,16",""); if ( !url || content.document.mozSyntheticDocument ) return false; if ( url.startsWith("http") ) url = "moz-anno:favicon:" + url; var img = new Image(); img.onload = function() { var tools = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools); var stream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); var request = img.QueryInterface(Ci.nsIImageLoadingContent).getRequest(img.CURRENT_REQUEST); var istrm = tools.encodeImage(request.image, "image/vnd.microsoft.icon", "format=bmp;bpp=32"); stream.init(istrm); var data = stream.readBytes(stream.available()); istrm.close(); stream.close(); var path = faviconFolder + faviconName + ".ico"; file.initWithPath(path); file.exists() && file.remove(false); try { file.create(file.NORMAL_FILE_TYPE, 448) } catch(e) { setTimeout(()=> { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", self.label, "Не могу сохранить иконку вкладки в " + faviconFolder + "\n" + "Укажите в начале кода кнопки другой диск!"); }, 2500); }; cbu.writeFile(path, data); } img.setAttribute("src", url); }; // Добавить адрес наверху страницы и открыть диалог сохранения страницы ............. function savePage() { var sURL = gURLBar.value; content.document.body.innerHTML = "<table width=100%><tr><td align=left><small><a target=_blank href=" + sURL + ">"+ sURL + "</a></small>\n</td></tr></table>" + content.document.body.innerHTML; saveDocument(window.content.document); }; // Сохранить иконку текущего сайта с диалогом сохранения ............. function saveFavicon() { saveImageURL(gBrowser.mCurrentTab.image, "save", null, false, false, null, content.document) }; // Скопировать иконку текущего сайта как base64 код ............. function copyFaviconData() { var img = new Image(); img.src = gBrowser.mCurrentTab.image; WebScreenShot.onImage(img); }; // Сохранить выделенный текст или весь текст на странице как txt файл ............. function saveSelectionToTxt() { var sel = getSelect(); !sel && document.getElementById("cmd_selectAll").doCommand(); // создать название файла из заголовка страницы и текущего времени и сохранить текст .... var fileTitle = getTabLabel() + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + sel)), fileTitle + ".txt", null, false, false, null, content.document); !sel && goDoCommand("cmd_selectNone"); }; // Добавляем в контекстного меню страницы новые пункты ............. ((contextMenu, el)=> { // в контекстного меню изображений .... var baseItem = contextMenu.appendChild(document.createElement("menuitem")); baseItem.id = "content-baseItem"; baseItem.setAttribute("label", "Запомнить изображение как base64"); baseItem.onclick =()=> WebScreenShot.onImage(gContextMenu.target); // в контекстного меню выделенного текста .... var saveItem = contextMenu.insertBefore(document.createElement("menuitem"), el); saveItem.id = "content-saveItem"; saveItem.setAttribute("label", "Сохранить выделенный текст в файл"); saveItem.onclick =()=> saveSelectionToFile(); var editorItem = contextMenu.insertBefore(document.createElement("menuitem"), el); editorItem.id = "content-editorItem"; editorItem.setAttribute("label", "Открыть выделенный текст в внешнем редакторе"); editorItem.onclick =()=> textToEditor(); // устанавливаем где и при каких настройках показывать новые пункты .... addEventListener('popupshowing', e=> { if (e.target != e.currentTarget) return; var sel = gContextMenu.isTextSelected; saveItem.hidden = !sel || !cbu.getPrefs("CB.Save.SelectionToFile"); editorItem.hidden = !sel || !cbu.getPrefs("CB.Save.TextToEditor"); baseItem.hidden = !gContextMenu.onImage || !cbu.getPrefs("CB.Save.WebScreenShotOnImage"); }, false, contextMenu); // удалять новые пункти при изминениях .... addDestructor(()=> { baseItem.remove(); saveItem.remove(); editorItem.remove(); }); })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open")); // Сохранить выделенный текст в файл на рабочем столе ............. function saveSelectionToFile() { // создать текст для записи var url = content.document.location; if (/\.рф/.test(url.host)) url = convertFromUnicode("UTF-8", url); var time = new Date().toLocaleFormat("%H:%M:%S"); var text = convertFromUnicode("UTF-8", getSelect()); var title = convertFromUnicode("UTF-8", getTabLabel()); var text = "..............................................................\n" + title + " - " + time + "\n" + url + "\n\n" + text + "\n\n\n"; var text = text.replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A"); // путь к файлу и название файла var file = Services.dirsvc.get("Desk", Ci.nsIFile); file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt"); // создать файл с текстом или добавлять текст в файл var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); file.exists() ? foStream.init(file, 0x02 | 0x10, 0664, 0) : foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(text, text.length); foStream.close(); // всплывающая подсказка дает возможность открыть файл если кликнуть на подсказке var notification = 'Сохранил выделенный текст в файл на рабочий стол'; var image = gBrowser.mCurrentTab.image || self.image; alertsService.showAlertNotification(image, notification, "Кликни чтобы открыть файл", true, "", (s, t)=> { if (t == 'alertclickcallback') file.launch(); }, ""); }; // Создать текстовой файл с выделенным текстом в папке профиля и открыть в редакторе ............. function textToEditor() { var text = convertFromUnicode("UTF-16", getSelect()); var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.append("TextToEditor.txt"); custombuttonsUtils.writeFile(file.path, text); file.launch(); }; // Конвертировать текст в юникод ............. function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }; // Получить название домена с заглавным первым символом и без приставок( типа .ru и .com ) .............. function getSiteName() { try { var domain = content.document.domain.split('.') } catch(e) { return "" }; domain = (domain.length == 2) ? domain[0] : domain[1] return domain[0].toUpperCase() + domain.slice(1).split('.')[0] + " "; }; // Получить название вкладки без не сохраняемых символов и лишних пробелов .............. function getTabLabel() { var label = gBrowser.mCurrentTab.label; var label = label.replace(/[:+.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " "); return label.substring(0, 50); }; // Получить выделенный текст из страницы или 'false' .............. function getSelect() { var el = document.commandDispatcher.focusedElement; try { return el.value.substring(el.selectionStart, el.selectionEnd) } catch(e) {}; var sel = document.commandDispatcher.focusedWindow.getSelection(); return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"").replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A"); }; function runSaveSnapshotToHtml() { var saveToFile = function (fileContent, fileName) { var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); }; var resolveURL = function (url, base) { try { var ioService = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); var baseURI = ioService.newURI(base, null, null); var absURI = ioService.newURI(url, null, baseURI); return absURI.spec; } catch (e) {} }; var getSelWin = function (w) { if (w.getSelection().toString()) return w; for (var i = 0, f, r; f = w.frames[i]; i++) { try { if (r = getSelWin(f)) return r; } catch(e) {} } }; var encodeImg = function (src, obj) { var canvas, img, ret = src; if (/^https?:\/\//.test(src)) { canvas = doc.createElement('canvas'); if (!obj || obj.nodeName.toLowerCase() != 'img') { img = doc.createElement('img'); img.src = src; } else { img = obj; }; if (img.complete) try{ canvas.width = img.width; canvas.height = img.height; canvas.getContext('2d').drawImage(img, 0, 0); ret = canvas.toDataURL((/\.jpe?g/i.test(src) ? 'image/jpeg' : 'image/png')); } catch (e) {}; if (img != obj) img.src = 'about:blank'; }; return ret; }; var toSrc = function (obj) { var strToSrc = function (str) { var chr, ret = '', i = 0, meta = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\x22' : '\\\x22', '\\': '\\\\'}; while (chr = str.charAt(i++)) { ret += meta[chr] || chr; }; return '\x22' + ret + '\x22'; }, arrToSrc = function (arr) { var ret = []; for (var i = 0; i < arr.length; i++) { ret[i] = toSrc(arr[i]) || 'null'; }; return '[' + ret.join(',') + ']'; }, objToSrc = function (obj) { var val, ret = []; for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop) && (val = toSrc(obj[prop]))) ret.push(strToSrc(prop) + ': ' + val); }; return '{' + ret.join(',') + '}'; }; switch (Object.prototype.toString.call(obj).slice(8, -1)) { case 'Array': return arrToSrc(obj); case 'Boolean': case 'Function': case 'RegExp': return obj.toString(); case 'Date': return 'new Date(' + obj.getTime() + ')'; case 'Math': return 'Math'; case 'Number': return isFinite(obj) ? String(obj) : 'null'; case 'Object': return objToSrc(obj); case 'String': return strToSrc(obj); default: return obj ? (obj.nodeType == 1 && obj.id ? 'document.getElementById(' + strToSrc(obj.id) + ')' : '{}') : 'null'; } }; var mainWin = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content; var selWin = getSelWin(mainWin), win = selWin || mainWin, doc = win.document, loc = win.location; var ele, pEle, clone, reUrl = /(url\(\x22)(.+?)(\x22\))/g; if (selWin) { var rng = win.getSelection().getRangeAt(0); pEle = rng.commonAncestorContainer; ele = rng.cloneContents(); } else { pEle = doc.documentElement; ele = (doc.body || doc.getElementsByTagName('body')[0]).cloneNode(true); }; while (pEle) { if (pEle.nodeType == 1) { clone = pEle.cloneNode(false); clone.appendChild(ele); ele = clone; }; pEle = pEle.parentNode }; var sel = doc.createElement('div'); sel.appendChild(ele); for (var el, all = sel.getElementsByTagName('*'), i = all.length; i--;) { el = all[i]; if (el.style && el.style.backgroundImage) el.style.backgroundImage = el.style.backgroundImage.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, loc.href); return prev + encodeImg(url) + next; }); switch (el.nodeName.toLowerCase()) { case 'link': case 'style': case 'script': el.parentNode.removeChild(el); break; case 'a': case 'area': if (el.hasAttribute('href') && el.getAttribute('href').charAt(0) != '#') el.href = el.href; break; case 'img': case 'input': if (el.hasAttribute('src')) el.src = encodeImg(el.src, el); break; case 'audio': case 'video': case 'embed': case 'frame': case 'iframe': if (el.hasAttribute('src')) el.src = el.src; break; case 'object': if (el.hasAttribute('data')) el.data = el.data; break; case 'form': if (el.hasAttribute('action')) el.action = el.action; break; } }; var head = ele.insertBefore(doc.createElement('head'), ele.firstChild); var meta = doc.createElement('meta'); meta.httpEquiv = 'content-type'; meta.content = 'text/html; charset=utf-8'; head.appendChild(meta); var title = doc.getElementsByTagName('title')[0]; if (title) head.appendChild(title.cloneNode(true)); head.copyScript = function (unsafeWin) { if ('$' in unsafeWin) return; var f = doc.createElement('iframe'); f.src = 'about:blank'; f.setAttribute('style', 'position:fixed;left:0;top:0;visibility:hidden;width:0;height:0;'); doc.documentElement.appendChild(f); var str, script = doc.createElement('script'); script.type = 'text/javascript'; for (var name in unsafeWin) { if (name in f.contentWindow || !/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)) continue; try { str = toSrc(unsafeWin[name]); if (!/\{\s*\[native code\]\s*\}/.test(str)) { script.appendChild(doc.createTextNode('var ' + name + ' = ' + str.replace(/<\/(script>)/ig, '<\\/$1') + ';\n')); } } catch (e) {}; }; f.parentNode.removeChild(f); if (script.childNodes.length) this.nextSibling.appendChild(script); }; head.copyScript(win.wrappedJSObject || win); head.copyStyle = function (s) { if (!s) return; var style = doc.createElement('style'); style.type = 'text/css'; if (s.media && s.media.mediaText) style.media = s.media.mediaText; try { for (var i = 0, rule; rule = s.cssRules[i]; i++) { if (rule.type != 3) { if((!rule.selectorText || rule.selectorText.indexOf(':') != -1) || (!sel.querySelector || sel.querySelector(rule.selectorText))) { var css = !rule.cssText ? '' : rule.cssText.replace(reUrl, function (a, prev, url, next) { if (!/^[a-z]+:/.test(url)) url = resolveURL(url, s.href || loc.href); if(rule.type == 1 && rule.style && rule.style.backgroundImage) url = encodeImg(url); return prev + url + next; }); style.appendChild(doc.createTextNode(css + '\n')); } } else { this.copyStyle(rule.styleSheet); } } } catch(e) { if (s.ownerNode) style = s.ownerNode.cloneNode(false); }; this.appendChild(style); }; var sheets = doc.styleSheets; for (var j = 0; j < sheets.length; j++) head.copyStyle(sheets[j]); head.appendChild(doc.createTextNode('\n')); var doctype = '', dt = doc.doctype; if (dt && dt.name) { doctype += '<!DOCTYPE ' + dt.name; if (dt.publicId) doctype += ' PUBLIC \x22' + dt.publicId + '\x22'; if (dt.systemId) doctype += ' \x22' + dt.systemId + '\x22'; doctype += '>\n'; }; var fileName = selWin ? win.getSelection().toString() : (title && title.text ? title.text : loc.pathname.split('/').pop()); fileName = fileName.replace(/[:\\\/<>?*|"]+/g, '_').replace(/\s+/g, ' ').slice(0, 100).replace(/^\s+|\s+$/g, ''); fileName += (function () { var d = new Date(), z = function(n){return '_' + (n < 10 ? '0' : '') + n}; return z(d.getHours()) + z(d.getMinutes()) + z(d.getSeconds()); })(); if(!/\.html?$/.test(fileName))fileName += '.html'; saveToFile(doctype + sel.innerHTML + '\n<!-- This document saved from ' + (loc.protocol != 'data:' ? loc.href : 'data:uri') + ' -->', fileName); }; Или вы не о PNG говорили? ![]() |
difabor > 15-04-2017 11:59:04 |
Есть кнопка "Открыть страницу или выделенную ссылку в другом браузере": скрытый текст Выделить код Код:// Настройка функций кликов мыши ................. this.onclick = function(e) { if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); }; // Объявляем настройки и переменные для этой вкладки ................. var autoClose = true; // true => автоматически закрывать меню var dropmarker = false; // true => добавлять дропмаркер у кнопки const pref = Application.prefs; if ( dropmarker ) this.type = "menu"; const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); // Проверить наличие строки в about:config и если не существует записать пути к браузерам по умолчанию ................. const allPath = "C:\\Program Files\\Internet Explorer\\iexplore.exe,C:\\Documents and Settings\\Администратор\\Local Settings\\Application Data\\Google\\Chrome\\Application\\chrome.exe,C:\\Program Files\\Opera\\Opera.exe,C:\\Program Files\\Maxthon\\Bin\\Maxthon.exe,C:\\Program Files\\SeaMonkey\\seamonkey.exe"; if ( !pref.getValue("CB.OpenWith.pathToBrowser", 0) ) { pref.setValue("CB.OpenWith.pathToBrowser", allPath ); pref.setValue("CB.OpenWith.removeMenuitem", ""); }; // Создать меню для кнопки ................. var array = [ { label: "Internet Explorer", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAv5JREFUeNqk0n1MTWEcB/Dvee655957dDv3VjepuUJohRHd0YSsoVHG2IwhsxUbxlrYbOafsmHzOsbGGNPQojEvxai8TBSSNKu8leqme+q+nvfjr27hT9+/nu3ZPvs9z+9L6bqO/wnBf4YeOlAU9e+tKZKl2QgHBVCyIHkQ+uVNcpBxWxabNq+ZacwzEZipoSeMBMwOZ0bs9KxCLjFlvslqiw3JDEVEj2fdmLKW3VM/pcmdqv3mM+1Zj1cf/BugYtJyShLmrdprjIwmKgzwiiymj+1FafZ1JHubUP7chWMP1doXVZWLaKiWPwD7jCVH47PWF+m0BbqZg0BsyJvWhsN5N+D97Efx/TWo64xFgvAdntd3rwgd1SfDf8DEOLNts5YVCZoRMEdhgFdRkN2M0hX1eHytoamwPDfIjx47h6ME8BJBYlrmhj7leyAMEGfajhBhYTTb4Fds2Jh0Sy/NC1GPGv3dW845D7p73vTTbvUQFuVnqAYruvvb4bXPnBMGBEtsujugQLNw2JrdgeO5nVRl20Tsbt7jMBaMKo+XZKKIAVkUBfh4QAoy0E1xKfTwylirRuyYn9qDM8su4cmXWdhavx+qRtGsCaCtAFFtRj0gQTdYoPkHIfX/ZIYBWQ86ooSIslVX0VrrUdYf6qkWuBKFYzTC2UyIYAiEoCDwfsUgCSKlen1E+drCDwN9XQ1HM7tz4ro6sMl9g/T1HrinVJ0/PTCyV8mzl9pX7ipWewNEDXyFroiNYWAu+/TOxhhDzsG6bXgfnULG7ys7ZXh31uVvqKnQNMicK32Jde3OwpDEMgNN3ZDe1kFueVAT7sHdYlPF1PiElVk/SmGwTgI7ORUxC8xgWEAngKgD3i+Ar9UDX9sH8A/O10ovr+WEJ1g8wby86ELXid7QRbgyl2+PdkoG8WMSApwdEk1D9KmQ3YPAj08Qay7fk19dzwcQHC4SoYySoLSPbq+ulNVmRuEXrrZMckXDMYXIVCRE3oOB1vq+/pe3y0Lfmo8A8ADA7wEATrdVy5ywgXEAAAAASUVORK5CYII=" }, { label: "Google Chrome", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABf2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarZExS0JhFIaf71q0mA1dovFCFg0WogRJLeoggcNNHFRa9Ko3w/TjerOCfkKD0FItWf2BhqgpaI9agiCIfkMQtITchq9wKSLohQPPeZdz3nNAOy9KWdeA9YbrZFIJI5cvGEOPDDAKAEWrJeOmmeZHvT0gAO5nilLW+Zv8Ti5fAKEDuq14GtBLihcBfdOVLggT0K3VYhlEGQg52UwSRAcI2Iq7QKCk+AwItC3bBXENhBvlWgPECzBfrrQs0KYB25KOC1oHCObyBUOt1uxCbAJ8u32vtA+XVzB+0/eCRzCyABd3fe91GQGIsftWNRoBQPiTMPjsea+TMLQHvY7nvR97Xu8EfE9wvWZtOO3PuwgtCr/1Kpvq1Q9Azf2eVX4AwnD6ANkdSN/CwSFMVWFkBUw/ZGNo0bmvUrcCYLiVSSUM02lWa/UK/yy3suUCJJty26nZq64Rl7JeCRlLDWs2ZETC4Rgf5HRpEzoTj48AAAAgY0hSTQAAbZYAAHOMAAD2MgAAgUIAAHBtAADjXwAAMXgAABN0+ysqDQAAAzZJREFUeNpsk01oHAUYhp+Z2dnd7Mxmt7vJmqTJttk03QRCq6BSa4xYzMEg9mBEeymIRvSg3oqCBIUKgoI3vVjxoqAoBSvF4kG0jdg/WluLqZqkSdls9n9ndmdmZ3Z+PLQqVD94b9/7nN5H4D8nk5SS2cmwsW9YFHYhIBRcf33Z6f+57tf+BBMI/vkW/i2KqPSkn+1LvHUwFjmUQU4RQNf36NCl5Fr6d2b3+KdG903dt2+AewcgGt393OT4h++66gFD70BYRZRCmI5DrdmgYzcQ0LmGv37Ukp/e9NtnwUcCkGQ5Pf3CvScnd07te7iuElcGSI3k8dUUoqrSm8iAHcJum2xzmsmc7M4uIX/VDXxdAsjv3/nG7PMPzlcFuMvIMjqwi48CmffS2/lCjFF0NSLZLEVfoFYtM+LZSWG7HPul5X0jiZKUuv/JiQ/kISuxe2+Slf5BTlYVygcfZWThcS7kZji+uYNu6hLzr6excgHXSy1iYS93qRN8JsZT6lRPOpI1TYO4otKfdzgliiSmp5jcBsNjEMrfw5ViHxPZEPMv5Xjl2A4ee7E3NZIU9oQSaTUTT8WoN6pUmx3iEYF20+HzC5Acg9IaBCZEe8cIpApoBWKixwN7FZJxvV+URNHOjg7R0i3WbpTRcMiN1tn48irXTkDlIrB6kbmJP1B6LXBMfMelZYFhB1Zo62ZlRSuapt/1YtVyDTFa4O7ZUaQfv+Xc6Stk+xye2LPBkadCoK2CrYHvstUM7LWic11yHbfhicz0ZOSxtmESBAGu4KLXdGbjBY69ajO3XyDc2QR9HVcrIylhPvm6debET/r7EuDXC1p5MJ95puMZotG20C8bzCkui4dlFFmHxk2C1gauXkKO9rBeDLsLb6+83LL8ZQnAdbwVvWT4g/n+A/WWxXTI4uiCh2iWCbQtvHYFr2MR7h2g0lI4dOTy4q9r1sfArSUCdDT7dG1V76SH4vc11FA05VhMZEQEKYwYSYDUx6mldvPwa2cXzy0b7/yPTISAceARZUSZCfeFJ2fGldRDw7FAa3ar35+v/HbmansJ+AH4HejeCfgbIgIyEAeU2+4aQJtbCnq3EwD8NQCjhmvoeRBJAQAAAABJRU5ErkJggg==" }, { label: "Opera", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAADNklEQVQ4jV2RS2hcVRzGf+fcO5OZTBJokiYZW0gEMQljUWuxlRH7IBmkVrEBd6JCqLoJ1kWqXYgL0Y2gRRfaheDCnTZxoZE2EAQfFEkrYRRTNU0ymslkHkm1mcmde865fxfRjd/+9z34lIgwPz9PeWNDtcTjurq97RKJBMP796f7e/v2ARQ2SsXFYnG9vrMj3a2tnnEu6ujokGw2ixIRcrkcs7OzHkq5k5l7Hp08fmLyYHf3g6ZYbBNjie3tbuSr1fl3vv/u3enFXz5HRGcymSifz6MBtFIacB+cHnv7y6ef+epYe/uJ0rX57dLQ3S9v3Hdg4s8fr29mlXpkajQ3/cnI6EUgUrsCEfEeOnqUF4eGz8q5V8WceaG5cuy4LF26lBMRRITlK1eO/Hr/Qbtz8rFQnhyT1wcG3hgYHEREPA244T17+s73D7zmbt5E1tbi9Zi/mM7l5hCJY21y38jI1aC35wcpFGKNwop7yY+dO9zWNliPIqebwONdXaf6tjY7m7Vq0/xRgM7O3xNtbRYRRKkophRef//PQWEVu7VlUrVqfCwWeyoQQXvAITjiSiWoVDDFNXQqVVMAIgoRALyurvLtep2dMFRVYxjS+nBSa3wf6Kw30s1aFYUQ3P4b0bq5y+/CACrREmw5R9w5AmNoEelLAj5AwxrXsBZxjsBFCCj+L0HVAN9aAmtJGusE8B3wm7HLSWtxxkjgHB1BkNyNVfw3wW5vJ6uAMobQOUJrCocArYBvwvDrsnNUjNEVoFEu7/3XQFC7Zerr633rQDEMZQO4bu1cBPga+NbZGQeLd4bh0CbAjRuDUq8naW21EkVaAcWFhQNloNWYxC0oXRP5rAXQgPeXSPMjmLwVhlQ9z/60ujqwNjV1SilltO8HtZmZkRv5/ANKKdseCbNwvgJVHzwfcCmtvSX44lOln39C8WGohcsTExcfXloa9uJxc/XChbNKKXp937+MemUhch/f63lawCEijI6OAnh4Hj1w+llYfBPMeyDvg7wFdhxW7oDn0BrAy2QyRFG0e+P4+DjZbNalEgm/LjItMNej1F09fqwTUBVrt4xEy2egmlLKD8LQptNplFL8A026qgDDLrhmAAAAAElFTkSuQmCC" }, { label: "Maxthon", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBw8BAS1q932nAAAAB3RJTUUH1gcPAQIYwmgJNwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAwBQTFRFHUSfHk+qG1OvH1OtHWC7I0SeIUehJ0+nI0+oKUynI1KqIVGsIlauJlKpJ1WsK1CqKlKoKlSqKVetKletLVSrLVWrL1yvIVixI121I163JFmyJluyJF61Ll2xLF60M1esNlarNVqwOFqyO1q0ImG6IWO9JWG5JmC4LGC2KWW5L2W5LWm9N2++PmO2P2O2O2m5Hm7JI23GJmjAJW/HKmzDL23AI3TNLnDFKHTKK3XKLnnOI3jRI3nTJnrSKX7VLH/SMHXJOn3MQmK6Q2a5R2u6SWq9T3u/U3a3T2/AV3fHL4HVMYbXOYjXeJ2sfJypbaW8eai8QYbRVYrMXo3PXpTSXZrVa4vGbI7IaJfPYpXSZZzWbprTb5vVcpzVd5/UaKvHba/Kbqrbd63EeKzCcavbc6nYea3becPjeMTkg6OwgqWzhJ3OgqDQhKTUgqrahK/di6fVgbLGgbLHjLfKgLHfhLDeirTekbPBmLvJkbffpLjBq77Fg8nmiczom8jnmcnpvsjNr8fmqsnnv+T0yNXa1trb29zcxuPvyeDjyuPmzODizODjyODpyeTuzebwz+fwyu7yzer3ze7yz+/yx/b9xvj+yPj+yfj+y/j+2OHj2ebr3ubq0Ofx0ujx0unx0+ny1+vz2ezz2O302uz03u713+/11Pr+3PDy2vv+2/v+/8D/4Obn4vDz4PD24fD25fD25PL34/L65/P44/v+6fT46vT57vf68Pj68P3/9/n69fr89fv99/z9+Pv9+v7/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNJ5gQAAAKt0Uk5T//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Atyo9bAAAAQNJREFUeNpjWAUCHROWrVw+E8xkAOLuaVPrS0qbduxpgwhMmpZob2NtZmhasHs2SKBrSqitl4+3nYWRevjGBqDA9FQrx6CIkEAHbQ3ZnJ5VDJ0zLA127d21bdPahXMZRSdWM0yuMzbcu3/v9i3rFs/jYK+sYFiRb26ya6+7m470wrkC8nHFDJvzVFm2bdfcuoFpwRwG/ugihjWNapKbtqhsWMozv49VKS2ZYfU+fbm167SWLBbr71XwqM1iWLUzm5tZXEJGiouNUzkyAeiO1vVhvHxCwoIiik7B6b4gp89alOuiq+fs6hmV4Q/xXEt7c1lsTEpNvB/Ut6tWVZUXJgVkgpkAR0RyCIGXtksAAAAASUVORK5CYII=" }, { label: "SeaMonkey", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAEG0lEQVR4AQEQBO/7Af///wAAAAAAAAAAAAAAAAABAXYNFBQcVxERCUQCAgEf////Avz8/urz8/nG6+vypP//fOMAAAAAAAAAAAAAAAAB////AAAAAAAAAAAAERGRXB0dDJAPDwgT/f3/AP39/gD9/f8A/f3+APz8/wD9/f775ub1jvHxCX3//2b7AAAAAAH///8AAAAAABMTkHwjIxKDAwMBAP39/wD8/P4A/f3+AP39/wAgIRAAV28/ABcgEwC0pM0AoY/Dt/Ly2E///5n7AgAAAAANDZBSHh4Pgv7+/wD4+PwA+Pj8APn5/AD5+f0A/v7/AF54RAAXIBQA1OoAAOXZ6QAGBgNJBwckjAAAAAACAQGACBUVCZL//wAB+fn8APn5/QD4+PwA+Pj9APj4/AA4PiAA/g4OANLp/gD//fsAVFssAPv7/gABAQJsAQGILwILCw5QCQkDG/j4/AD4+P0A+Pj8APn5/QD5+fwA+Pj9AB80IgDn9AEA6PQAAP///wAWJxkAMDAWAP///wIFBQJpAgoKBkICAgMADg4LAA0NCAAKCgcA/Pz/APj4/QACAgAAECYbANzuAADq9QAA/f8BAAEAAAAXHREABgYDABAQDEIESUk4IT0+MQAAAAEA9vb1AO/u7gD5+foA8fH7AB4nCQDW8QYA+v0AAAoE/wAKBQAA+P0AADw5KgA0LzsA5+bsIATm5wgA1NQBAAEB/wDz8wUABAQVACYmBwAcHQIA+ikAAP/yAQAIBP8AEwf9AA8H/wAOBwIAwb4SAAEBBgD5+QMBBMPC6uXOzRMA+/v/APn5/wD9/QAAAQEAAG19EAD5HgoAFQv/APX4+wARCP8AHA4BANHF+gDOzvUABAT1APn57uQC+fnnwPLy/QD19f8A+/sAAP7+AAA2OgYACDgJABgL/wAHAPsAKxX/ACgUAADm3P0Ano/0AAgIAAAICAEA/v71wAQAAOWt/PzqjAEBFxMCAgAAJSYDADlvEQASCf0AHw79AAoGAQAA9wEAwaj4ALeu9wAAAAAACAgBAAAA+gDs7NubAf///wABAalkBQU2my0uCgA/dxMAJRL+AAz2/QDU0fwA49j7ANHP+wABAQAABQUAAAQEAQAFBQAA5+fWpd/fQFwB////AAAAAABodNrDHEMjPNy08wC9svcABAQBAAUFAAAFBQEABAQAAAUFAQAFBQAABAQAAOrq3sba2sRG//909QHh8P9GxeH+ffr9APy2isvAwsANdgwMEgoEBAAABQUBAAUFAAAEBAEABQUBAP7+9v/p6dyf3t7Dbf//gPYAAAAAAdbq/3AkFQDHBQAAyQAAAAABAYoaExMsZwwMFEcGBgUgAwMAAQIC/uv5+fLD4uLYmvr6ac8AAAAAAAAAAAAAAAB08Ygz9inangAAAABJRU5ErkJggg==" }, ]; // получить массив с ненужными пунктами меню и восстановливать меню при обнавлении кнопки var hideItems = pref.getValue("CB.OpenWith.removeMenuitem", 0).split(","); addDestructor(function(reason) { if (reason == 'update') pref.setValue("CB.OpenWith.removeMenuitem", "") }); var menuPopup = self.appendChild( document.createElement("menupopup") ); array.forEach(function( m, i ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image ); mItem.setAttribute("value", i++ ); mItem.hidden = hideItems.indexOf(m.label) !== -1; // прятать ненужные пункты меню menuPopup.appendChild( mItem ); }); menuPopup.addEventListener("click", setMenuClick, false); // Настройка функций кликов мыши для пунктов меню ................. function setMenuClick(e) { var mItem = e.target; var value = mItem.getAttribute("value"); var label = mItem.getAttribute("label"); var image = mItem.getAttribute("image"); // ЛКМ запускает другой браузер .... if ( e.button == 0) openWith( value ); // СКМ удаляет пункты меню и записывает выбор в 'about:config' .... if ( e.button == 1 ) { e.preventDefault(); mItem.hidden = true; pref.setValue("CB.OpenWith.removeMenuitem", pref.getValue("CB.OpenWith.removeMenuitem", 0) + label +',' ); } // ПКМ устанавливает новый путь к нужному браузеру .... if ( e.button == 2 ) { e.preventDefault(); menuPopup.hidePopup(); setPathToBrowser( value, image, label ); } }; // Получить выделенную ссылку, иначе отдаст 'false' ................. function getSelectLink() { var links = window.content.document.links; if ( !(document.commandDispatcher.focusedWindow.getSelection() == '') ) { for ( i=0; i<links.length; ++i ) { if ( window.content.getSelection().containsNode(links[i], true) ) { var link = links[i]; } } return ( link == undefined ) ? false : link; } else { return false }; }; // Открыть страницу или ссылку в другом браузере, аргумент 'value' определяет нужный элемент массива с путями ................. function openWith( value ) { // получить адрес ссылки или страницы, в 'Punycode' если это .рф домен .... var loc = content.document.location; var link = getSelectLink(); var loc = link ? link : loc; var url = ( loc.host.slice(-3) == '.рф') ? Services.io.newURI( loc.href, null, null).asciiSpec : loc; var path = pref.getValue("CB.OpenWith.pathToBrowser", 0); var pathToBrowser = path.split(",")[value]; // получить путь из 'about:config' var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath( pathToBrowser ); if ( !file.exists() ) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Файл не существует', false, "", null, ""); return; } var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); try { var args = [url]; process.init( file ); process.run( false, args, args.length ); } catch(e) { alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", pathToBrowser, 'Не удалось выполнить', false, "", null, "") }; }; // Установить новый путь к браузеру, и записать выбор в 'about:config' ................. function setPathToBrowser( value, image, label ) { var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init( window, "Укажите путь к нужному браузеру!", fp.modeOpen ); fp.appendFilters( fp.filterApps ); if ( fp.show() == fp.returnCancel ) return; else { // получить из 'about:config' массив с путями к браузерам var arr = pref.getValue("CB.OpenWith.pathToBrowser", 0).split(","); // заменить нужный элемент массива на новый путь и записать var newPath = fp.file.path; arr[value] = newPath; pref.setValue("CB.OpenWith.pathToBrowser", arr.toString() ); alertsService.showAlertNotification( image, "Путь к браузеру: " + label, newPath, false, "", null, ""); } }; // Автоматически закрывать меню при ухода курсора с меню ................. if ( autoClose ) { menuPopup.setAttribute("onmouseleave", "this.mo = false; setTimeout(function(mp) { if ( !mp.mo ) mp.hidePopup() }, 800, this)"); menuPopup.setAttribute("onmouseover", "this.mo = true"); }; // Подсказка кнопки ................. this.tooltipText = "Открыть страницу или выделенную ссылку в другом браузере" +"\n"+"\n"+ "Функции кликов мыши для пунктов меню" +"\n"+ "Л: Открыть страницу или ссылку" +"\n"+ "С: Удалить пункт меню" +"\n"+ "П: Изменить путь к нужному браузеру"; Как добавить туда Microsoft Edge? Я не могу найти путь к этому браузеру |
bunda1 > 17-04-2017 16:00:39 |
difabor пишет
Я уже обновил эту кнопку и теперь в меню кнопки новые программы можно добавить по СКМ на кнопке: Открыть страницу в другом браузере 17-04-2017 16:02:33 difabor пишет
|
difabor > 17-04-2017 16:55:13 |
Спасибо! |
bunda1 > 17-04-2017 20:16:40 |
difabor пишет
Ну тогда не знаю. |
Dumby > 17-04-2017 21:24:56 |
bunda1 пишет
скрытый текст Выделить код Код:var link = "https://forum.mozilla-russia.org"; var explorer = Services.dirsvc.get("WinD", Ci.nsIFile); explorer.append("explorer.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(explorer); process.runw(false, ["microsoft-edge:" + link], 1); |
difabor > 17-04-2017 23:37:04 |
Спасибо большое, Dumby! |
Ultima2m > 18-04-2017 08:03:53 |
Привет, bunda1 |
_zt > 18-04-2017 09:52:04 |
С этим ни кто не пожет?
|
bunda1 > 18-04-2017 12:18:41 |
Спасибо Dumby. Попробую интегрировать твой код в свою кнопку. 18-04-2017 12:19:30 Ultima2m пишет
Сделаю, это не трудно. |
bunda1 > 18-04-2017 12:51:47 |
_zt пишет
Вроде всё работает: FF Exp Imp CB |
difabor > 19-04-2017 04:08:42 |
bunda1 пишет
У меня иногда вместо некоторых сайтов открывается файл эксплорер Выделить код Код:/*CODE*/ var link = content.document.location; var explorer = Services.dirsvc.get("WinD", Ci.nsIFile); explorer.append("explorer.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(explorer); process.runw(false, ["microsoft-edge:" + link], 1); |
_zt > 19-04-2017 15:33:25 |
bunda1 |
bunda1 > 19-04-2017 20:04:44 |
_zt пишет
Автор кнопку не обновлял, это я исправил и обновил эту кнопку потому что автор не показывается на форуме. |
bunda1 > 19-04-2017 21:02:37 |
difabor пишет
Нужен пример такого сайта. Что значит открывается файл эксплорер? |
difabor > 19-04-2017 22:07:02 |
bunda1 пишет
1. Например: http://moemnenie.club/forumdisplay.php?f=79 или https://forum.mozilla-russia.org/viewto … 57166&p=69 |
_zt > 20-04-2017 14:09:43 |
bunda1 |
thrower > 24-04-2017 16:37:46 |
В новых версиях FF перестала работать кнопка: "открыть как ссылку в новом табе" Выделить код Код:(function() { if ( document.getElementById("go2link") ) return; var menuItem = document.createElement("menuitem"); menuItem.id = "go2link"; menuItem.setAttribute("label", "Перейти по ссылке"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAU0lEQVQ4je2RwQ3AMAgDswcjMARMYbZgDdZgU/fVZ6WGfHOSvyfLXuvySXfzSFBVrKq5JDP5ZiQAQACMCALYl7g73Z1mNmugqlTV+QYicvbC5T8PBOogdLzwKzcAAAAASUVORK5CYII="); menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab(document.commandDispatcher.focusedWindow.getSelection().toString())"); document.getElementById("context-copy").parentNode.insertBefore( menuItem, document.getElementById("context-copy") ); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { menuItem.hidden = !gContextMenu.isTextSelected; }, false); })(); Помогите поправить. |
selevo > 24-04-2017 21:33:08 |
какая-то хрень приключилася,с после обновления до версии 52 Выделить код Код:/*Initialization Code*/ addEventListener('dblclick', (e)=> { var img = e.originalTarget.tagName.toLowerCase() == "img"; var win = e.originalTarget.ownerDocument.defaultView; if (img && e.button == 2 && win.top == content) { e.preventDefault(); e.stopPropagation(); document.getElementById("contentAreaContextMenu").hidePopup(); var imgLink = e.originalTarget.src; if (imgLink && e.originalTarget.parentNode.tagName.toLowerCase() == "a" && e.originalTarget.parentNode.href.endsWith('.png'||'.jpg'||'.jpeg'||'.gif'||'.apng'||'.webp')) { imgLink = e.originalTarget.parentNode.href; } gClipboard.write(imgLink); custombuttons.alertSlide('Ссылка на изображение скопирована', imgLink); } }, false, gBrowser); Может кто поправит? |
ARG > 28-04-2017 20:26:38 |
_zt |
Echotony > 29-04-2017 18:29:18 |
А существует ли кнопка, добавляющая в контекстное меню изображений "Поиск в Google картинках"? |
sonyas75 > 29-04-2017 18:50:40 |
Echotony, только для гкартинок не знаю. вот в этой есть Context Search 2 и гкартинки и якартинки и ещекакиетокартинки и вообще много поисков |
bunda1 > 29-04-2017 20:18:58 |
Echotony пишет
Выделить код Код:// Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 06.09.2015. ............. ((contextMenu, copyimage)=> { var array = [ ['Google', 'https://www.google.lv/favicon.ico', 'https://www.google.com/searchbyimage?&image_url='], ['Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url='], ['Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], ['Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url='], ]; var menu = contextMenu.insertBefore(document.createElement("menu"), copyimage); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", array[0][1]); menu.onclick =e=> { e.target.nodeName == 'menu' && search(array[0][2]); setTimeout(()=> contextMenu.hidePopup(), 20) }; addEventListener("popupshowing", ()=> menu.hidden = copyimage.hidden, true, contextMenu); addDestructor(()=> contextMenu.removeChild(menu)); var menuPopup = menu.appendChild(document.createElement("menupopup")); array.forEach((m)=> { var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.onclick =()=> search(m[2]); }); function search(finder) gBrowser.selectedTab = gBrowser.addTab(finder + encodeURIComponent(gContextMenu.imageURL)); var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", 'Искать во всех поисковиках'); mItem.onclick =()=> array.forEach((m)=> gBrowser.addTab(m[2] + encodeURIComponent(gContextMenu.imageURL)) ); })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-copyimage-contents")); |
Echotony > 29-04-2017 23:11:25 |
sonyas75 bunda1 |
Лия > 02-05-2017 21:13:05 |
Перестала работать кнопка "Поиск по сайту в Гугл", может кто-нибудь поправить? |
bunda1 > 03-05-2017 09:34:28 |
Лия пишет
Работает Поиск по сайту в Google. У тебя наверно старая версия. |
Лия > 03-05-2017 21:24:09 |
bunda1 |
villa7 > 03-05-2017 21:50:50 |
Лия скрытый текст Выделить код Код:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGnRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAOGSURBVHjaxVZdKGRhGJ4zy7JEo50IERFR2o2U1k/RTrkhSomUWZNZIqJEpvUfN3S23IwdJWVLxNq9IDJRotFwZs78+y3tXuwFeyHZHz/fPu/E/ZFp99TbOafOPM/3Pe/zvN/IZP/jKigoUMbHx6sjIyPfh4eHGyIiIvrw/rq2ttbvUcBqtfppcnJyn0KhuMAr8/f3Z6GhoSwsLIzJ5XIWEhLiiYuLU7nd7oeDFxcXP8MqVwg4KCjoT0lJybfOzk7n6OioODEx4dTr9SdFRUWXgYGB1yDRPgh8dXVVFhMToydwyHLe3NxsHR4e3h0fHxfm5+ct6+vr4vb2tt1sNjt4nj+Njo6+ysjIyJVMkJqa+gK3a9Svmpoay9DQkBd8dnbWYjQaRZPJZLdYLFDGvY866O7uPk9MTDQvLi5ykgjQSJ5Wn5eXd9TT03O/cuvKyoq4sbFhw8qdDodjz+PxHKGORVE8TktLu83Pz38piQCNNOF2o9PphKmpKWFpaclKshD41taWfWdnx3VHcEgkTqdzr7Ky8iIzM7NeEgGaehgbG/tzbm5OAKCIFduhuYOKVg95iMAD4H0Cxw5cdXV1p9nZ2e8kEcB+u2jabwBaAeBCeWw2m1sQBBfKSwBQNxU9U8M1Gs2ZSqVqkkQA34+lpKTcEsC9ztRQaiztgAoyeYvA4TpraWnpJWR6JYkAvs7lOO4WEn2/JyA5SPvNzU0HemGnXqBsa2tr1sHBQQ/A95GPJ5IIDAYD7eIT7HoDsAPSmPRfXl62TU9Pi2i8ODMzI+LZMjIyYq2urr5E6vsfFLb09PTncJOYlJR0NTAwcIBACeSqlpYWb7W1tQnQ3QFpLpBqVlhYuIeffUYNVlRUyCWR5OTkhCHRU9jNDSUaif2K9+OEhIQT7O4HcnJWVlY2gqFHw4hFRUUxfMPwPIqxIi10cI0MjkpDX/ph3S+YT0aAf4Ql3yLlirvPPkEi1tXVxTCfaLx4SSTvRMLVhxywhYUFBhlJLqZUKr0k5eXljyfBSjmEk8dQZBgprL29neEMYZDWS9LR0cE9mqS3t5eDKfimpiYGd7HW1laGHtKo991OqqqqOEwBvr6+nk1OTrLGxkaWlZXF/Pz8iETnk2YQSXBwMK/VatnY2BijOyxP7vrgszOc5MJJx4OMIYgMNmbIk8anfxSgORcQENDR0NCgxxh5A/vKZf/i+gvTfwvd9D//IgAAAABJRU5ErkJggg== или Выделить код Код:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsSAAALEgHS3X78AAAFVElEQVRIia2VS2ycVxXHz7n3e3jGM5nMDPZ47IwNwWM7wQXHiVRUErkSpVLiJEYCVWxQSSqWoO4rVyJigdh0zUMCBYUtUFikSEChNBLUqp1OO3FCm5CH5/3Nw/PN97qPw6J2VFycBsR/cTdX+v3/95x77kV4PCEiMiJSqVQqOzMze252bvapeDyeUUoNKpXK+jvXr/9ma2vrDiIyAAAi0gAA+DhwAEDOuV48fvw7C8eOvURS5ETgkRACGTdoZDSHyVTaK5ff+/FrV6+u9l3X3QmkH8vANAx85ivPXhkfH/vGjXfWqTlQkfGpyV46m1U2Rbbz4E7MEJ791MlTDDlf/+WVK6cdx6kjIj7SYDfFl06efGXy0PiL10tlP/b58/enl77ayEwUgsLYAfPIWDwZeNus9MbvD1z9ySujRw9PJuzhxOu/uHz5y1EUaf5J8Pz4+Bc/Nzf7083b96LE0oulz5z6Wi0eN8HkmgNJlrK1PRyP4dEnnxgsPnOu//qrv44djFuzpm3XHty/v8Y+ofYwWZj8ttNqAB157r3kpxc7ot8cIq2Qcw4auYqISUTCnhOYo4dGxfPf/+HdaqsDU4XCC5ZlwX4GSETKtCweM+HprnnIY+OLLeV1bGCGJgIgItCawI20BALg3KDtdsQLs8Xg6NPPNkLf+8LI6Ojco04AhmFmpRRjfnKmojWCUhqUUqCUBik1KKWh7ysZCUVSKlCayHOBf/bEqTZwbpqGOWk8ojxEWpthJLkyD/pMSpSSg4gUCKFARBIsi2Pfj9QgMNQwgAEApHWEsQPZyLCGQEShsZ8B7SwqDH1iQSdGmiAMBUSRhDCQYJgCuMFAE1DHNaTFwNCawLA59VuO6fa6IKSkR5aIMdbVSjuqfj0X44yLUIDvRxAGEQReBL4XgedF0OwGMgwE+H6ASjN9e+NvB9utBgw839nPgACAKykCMGNvRdX1ZLi1nslls8wfeNh3A/C9CAZuCP4gxEbHk9vbHhHYqnL7fevdP/wq33MHd72Bu7nvHDDGDCmljseHOxzpm/2tUioxdsQ9NHlYbrseCSmBiJA0YRApnUomUQ269puXfzDVvPePoa1K/eee5736MYOd4UbLsgxEVCsrK8eev3DxufW/v2GGtdLBQIC2EyORRFtEikmhQIe+z0S1nK39+fLh5t2byVqzXWs2Gy9orXvGHjgCAAcAuby8/HI2m72wtLQUsywLFo4/2b72179kUv/83TTvbORjyQmXzOEIKeSm30yE6CYajSar1Btup+1cEELcAwCOe+FEJJeXly8Vi8XVGzduyEqlYpw4ceJPjUbjW0EQvFSr1S+CFkYiPgSmaYLWCgZ+RIFQqKR6u9/f/m69Xn8TABgAfPiafhR+5syZS8VicbVcLstqtSp7vd5QLpf72dra2sWJiQk+P//Eoib99X7fPSaESCulQgT4IAyD12q12m/b7XZ/F77Lfgg/ffr0penp6dXNzU1Zq9XAcRxjYWHhTrfbPX/t2rV3EZETkUqn05DJZNC2bdvzPNntdmWv1wMiQkTE3c8G4MOJZYwxffbs2UuFQmH11q1bslqtQqfTMebn5+86jnNmbW2tDAAMETUAMCJCAFAfbd/uPhHRv/WVcw4rKysv5/P57928eVPW63XodDrG3NzcvVartbyxsfEw+d4LgYiww9vLfSieTqfPj4yM/MhxHFGtVrHb7RrFYvFBvV4/VyqVSoyxj8F3tR90b5CpTCbzx+Hh4cOICFNTU9VWq3W2XC6//Z+S/09KJBKL+Xz+9sLCQm1mZub4jvO+U/7figEApFKp6Vwut/j/hv8LkScFgdXP7AUAAAAASUVORK5CYII= |
_zt > 04-05-2017 00:35:17 |
ARG bunda1 Речь о кнопке Save |
Лия > 04-05-2017 21:44:20 |
villa7 |
bunda1 > 04-05-2017 22:00:43 |
_zt пишет
Не знаю в чём тут дело. |
momo2000 > 17-05-2017 11:42:08 |
Помогите, пожалуйста с кнопкой Toggle Find+ Minimal, с 53+ перестали работать стрелки след и пред скрытый текст const forceFind = false, forceFindCS = true; // Приклеить элемент findbar к странице( #appcontent ) ................................ // Ctrl+F, показать - скрыть панель поиска .................................... // Показать количество совпадений на панели поиска ................................ function updateHits(arg) { if (word && controller && doc && doc.documentElement) { var searchRange = doc.createRange(); var retRange = null; while ((retRange = finder.Find(word, searchRange, startPt, endPt))) { gFindBar.updateHits = updateHits; const progressListener = { function onFindbar() { и еще есть кнопка Autocopy Minimal, в ней есть функция мигания тестка при выделении autocopy.selectingTextBlink, которая нафиг не нужна, можно очистить код от этой функции. скрытый текст ({ PREF_ROOT: "autocopy", PREF_BLINK: "autocopy.selectingTextBlink", get blinkMenuitem() { delete this.blinkMenuitem; return this.blinkMenuitem = menuPopup.querySelector('[onclick*="' + this.PREF_BLINK + '"]'); }, init: function() { gPrefService.addObserver(this.PREF_ROOT, this, false); addDestructor(() => gPrefService.removeObserver(this.PREF_ROOT, this)); if (!gPrefService.getBoolPref(this.PREF_ROOT)) return; var sel = win.getSelection().toString(); goDoCommand("cmd_copy"); if (!this.blink) return; |
bunda1 > 17-05-2017 21:03:38 |
momo2000 пишет
Выделить код Код:({ PREF_ROOT: "autocopy", init: function() { cbu.isPref(this.PREF_ROOT, true); gPrefService.addObserver(this.PREF_ROOT, this, false); addDestructor(()=> gPrefService.removeObserver(this.PREF_ROOT, this)); if (!gPrefService.getBoolPref(this.PREF_ROOT)) return; this.setAutocopy(true); }, observe: function(subj, topic, data) { if (data == this.PREF_ROOT) this.setAutocopy(gPrefService.getBoolPref(data)); }, setAutocopy: function(set) { var method = set ? addEventListener : removeEventListener; for(var type of ["mousedown", "mouseup"]) method(type, this, false, gBrowser); }, handleEvent: function(e) { if (e.button || e.target instanceof Ci.nsIDOMNSEditableElement) return; var win = e.target.ownerDocument.defaultView; if (win.top != content) return; var sel = win.getSelection().toString(); if (e.type == "mousedown") {this.sel = sel; return;} if (!sel || sel == this.sel) return; goDoCommand("cmd_copy"); } }).init(); |
momo2000 > 23-05-2017 08:15:48 |
bunda1 |
foxboy > 16-07-2017 16:59:01 |
Может есть у кого кнопка для дополнения Cookies Export/import :: Дополнения Firefox |
Gladius333 > 24-07-2017 12:40:08 |
Кто поможет, надо в этот код Выделить код Код:var itemsArr = [ ["Поиск по текущему сайту",function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}], , ["Night - ночной стиль",function(){var night=function(w){(function(d){var css='html{background:#333 !important}html *{background:none !important;color:#bbb !important;border-color:#333 !important;border-width:0 !important}html a,html a *{color:#5c8599 !important;text-decoration:underline !important}html a:visited,html a:visited *,html a:active,html a:active *{color:#525f66 !important}html a:hover,html a:hover *{color:#cef !important;background:#023 !important}html input,html select,html button,html textarea{background:#4d4c40 !important;border:1px solid #5c5a46 !important;border-top-color:#474531 !important;border-bottom-color:#7a7967 !important}html input[type=button],html input[type=submit],html input[type=reset],html input[type=image],html button{border-top-color:#7a7967 !important;border-bottom-color:#474531 !important}html input:focus,html select:focus,html option:focus,html button:focus,html textarea:focus{background:#5c5b3e !important;color:#fff !important;border-color:#474100 #665d00 #7a7849 !important;outline:2px solid #041d29 !important}html input[type=button]:focus,html input[type=submit]:focus,html input[type=reset]:focus,html input[type=image]:focus,html button:focus{border-color:#7a7849 #665d00 #474100 !important}html input[type=radio]{background:none !important;border-color:#333 !important;border-width:0 !important}html img[src],html input[type=image]{opacity:.5}html img[src]:hover,html input[type=image]:hover{opacity:1}html,html body{scrollbar-base-color:#4d4c40 !important;scrollbar-face-color:#5c5b3e !important;scrollbar-shadow-color:#5c5b3e !important;scrollbar-darkshadow-color:#474531 !important;scrollbar-track-color:#4d4c40 !important;scrollbar-arrow-color:#000 !important;scrollbar-3dlight-color:#7a7967 !important}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window)}], ["Сохранить как PDF",function(){window.open('http://www.web2pdfconvert.com/engine?cURL='+escape(location.href)+'&title='+escape(document.title)+'&ref=bookmarklet')}],]; var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = contextMenu.children['context-inspect']; var menuId = "context-ext-addon"; var menuItem, menuPopup, menu = document.getElementById(menuId); if (menu) {contextMenu.removeChild(menu);}; menuPopup = document.createElement("menupopup"); menu = document.createElement("menu"); menu.setAttribute("id", menuId);menu.setAttribute("label", "Дополнительно"); for (var i = 0; i < itemsArr.length; i++) {if (itemsArr[i]) {menuItem = document.createElement("menuitem");menuItem.setAttribute("label", itemsArr[i][0]); menuItem.addEventListener("command", (function(f){return function(){content.location.href = "javascript:(" + encodeURI(f) + ")()"}})(itemsArr[i][1].toString()), false); } else {menuItem = document.createElement("menuseparator");};menuPopup.appendChild(menuItem);};menu.appendChild(menuPopup);contextMenu.insertBefore(menu, nextEleMenu); addDestructor(function(){contextMenu.removeChild(menu)}); подстройть этот Выделить код Код:var menuAddPopup = menuM.appendChild(document.createElement("menupopup")); document.getElementById("context-viewsource"); var contextViewsource2 = menuAddPopup.appendChild(contextViewsource.cloneNode(true)); contextViewsource2.id = "context-viewsource2."; contextViewsource2.hidden = false; Еще хотел эту прикрутить...если не сложно спс, потом постараюсь разобраться на примере. [Переключить стиль на странице] Выделить код Код: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%3E%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0441%u0442%u0438%u043B%u044C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyhJREFUOMtdk11oW3UYh59zzj8nyUnz2TSmaWfT2lY3nWvRi7KBX3gxxBsHguKY84OyG9ErL7yQgdfFKYKI4gQvnKDI5kVRkNWqGyg6R9utpraNXWzztTRZ0pPk5Jz/8aJbaf3Be/e+Dw8v76twO2ff63uj0ejMBHziRZ9P/VEX6uvArCYCj0i5VbXcePr5yT/G+V80gOnpqx9n5+tv9QYap2rWSxNJY/G5n+ZPpwe6jUfrzvF0NNR/n99uJOPpl080LJlNpcfq3eGDzVLpmhQA5ZvtsSdPvIOz/Db37nsFf3sUbd8ghycmKOVWGThwjFuVAlkuhX6+EjsiPCKTCOmVhQVsASClVHtSAazUGVzHReNp9g+DL+xhqHsYAFuEmZuf8wmhJhXXjhCwjMmHJrcBruuqEoiHPQhgy7RxJSgKWLnz5ItVPp0u4JjrXe+/sHz0yoqSPXfZX92M5231zjIcYL3WIVux2GxJGpZEupD/5Qzh1iz3jw4imxuEjXwiHmoe99B5rGLKxA7gjkFvTCcV00lFFNT5N4mnoijqdlvHktRKdYYTq0NTp5iqNZ0hsdvg6pqJZUl8msLdMZ3fP/mMo8cO47SzjChfwoEStgVW1WXpekV37OCzewyWNlrMrZk0O5KFf5scfGYKUDC32vQaOcZHW3SnwnhDI3z9vafasTB2DGxgsNeHZUk0VSER0tjsPMyv776GHhzniadUfrvUplG0IWHLa6aRi6jOithtkIh6QIK0JfmyRfKuISInZ3ngwf18dbKfizdj9loleqtLc6qGRgbUi3sALQk4Ll26ynCfn6ihcU/yEB7g1QtF2h+ctRc//Gheuu5MROssK5Dds0QJuIBhCHyasgN2AAXQhGYHE31FT6d52WM3Mk67XtwDiNw+JHYN7S7TbJtC91Z0n1EM+nvKhzbXTAGQ+eufC4+3RsYMj8NW3WTp71U7v1G084WyvZhZaeVubDT+nLteFkKsj46kl1Upqj09mnX6m5ntZ/r2uy8+P//DuVq+UDjiujLk9epqOBS0DMNver16VVWV9fRA/416w1xstzp51+etpFIpC+A/x3JsuL3cxBcAAAAASUVORK5CYII%3D%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BgetMarkupDocumentViewer%28%29.authorStyleDisabled%20%3F%20gPageStyleMenu.switchStyleSheet%28%27%27%29%20%3A%20gPageStyleMenu.disableStyle%28%29%3B%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 |
bunda1 > 25-07-2017 13:31:07 |
Gladius333 пишет
Выделить код Код:((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "Дополнительно"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [ ["Поиск по текущему сайту", ()=>{ var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)} }], ["Night - ночной стиль", ()=>{ var night=function(w){(function(d){var css='html{background:#333 !important}html *{background:none !important;color:#bbb !important;border-color:#333 !important;border-width:0 !important}html a,html a *{color:#5c8599 !important;text-decoration:underline !important}html a:visited,html a:visited *,html a:active,html a:active *{color:#525f66 !important}html a:hover,html a:hover *{color:#cef !important;background:#023 !important}html input,html select,html button,html textarea{background:#4d4c40 !important;border:1px solid #5c5a46 !important;border-top-color:#474531 !important;border-bottom-color:#7a7967 !important}html input[type=button],html input[type=submit],html input[type=reset],html input[type=image],html button{border-top-color:#7a7967 !important;border-bottom-color:#474531 !important}html input:focus,html select:focus,html option:focus,html button:focus,html textarea:focus{background:#5c5b3e !important;color:#fff !important;border-color:#474100 #665d00 #7a7849 !important;outline:2px solid #041d29 !important}html input[type=button]:focus,html input[type=submit]:focus,html input[type=reset]:focus,html input[type=image]:focus,html button:focus{border-color:#7a7849 #665d00 #474100 !important}html input[type=radio]{background:none !important;border-color:#333 !important;border-width:0 !important}html img[src],html input[type=image]{opacity:.5}html img[src]:hover,html input[type=image]:hover{opacity:1}html,html body{scrollbar-base-color:#4d4c40 !important;scrollbar-face-color:#5c5b3e !important;scrollbar-shadow-color:#5c5b3e !important;scrollbar-darkshadow-color:#474531 !important;scrollbar-track-color:#4d4c40 !important;scrollbar-arrow-color:#000 !important;scrollbar-3dlight-color:#7a7967 !important}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window) }], ["Сохранить как PDF", ()=>{ window.open('http://www.web2pdfconvert.com/engine?cURL='+escape(location.href)+'&title='+escape(document.title)+'&ref=bookmarklet') }], ["separator"], ["Переключить стиль на странице", "getMarkupDocumentViewer().authorStyleDisabled ? gPageStyleMenu.switchStyleSheet('') : gPageStyleMenu.disableStyle()" ], ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(m=> { if ( m[0] == "separator" ) { menuPopup.appendChild(document.createElement("menuseparator")); return }; var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); typeof(m[1]) == "string" ? mItem.addEventListener("command", ()=> eval(m[1])) : mItem.addEventListener("command", ()=> content.location.href = "javascript:(" + encodeURI(m[1]) + ")()"); }); })(document.getElementById("contentAreaContextMenu"), "context-inspect"); 25-07-2017 13:34:11 Выделить код Код:var menuAddPopup = menuM.appendChild(document.createElement("menupopup")); document.getElementById("context-viewsource"); var contextViewsource2 = menuAddPopup.appendChild(contextViewsource.cloneNode(true)); contextViewsource2.id = "context-viewsource2."; contextViewsource2.hidden = false; Что должен делать этот код? |
Gladius333 > 25-07-2017 20:03:07 |
bunda1 пишет
Спасибо за код, ты его обновил) я его выдернул отсюда "исходный код страницы" Выделить код Код:// Adds.Menu (()=> {var contMenu = document.getElementById("contentAreaContextMenu"); var addMenufragm = document.createDocumentFragment('menupopup'); (contextMenu => { var menuM = contextMenu.appendChild(document.createElement("menu")); menuM.id = "content-addmenu."; menuM.setAttribute("label", "Дополнительно ..."); var menuAddPopup = menuM.appendChild(document.createElement("menupopup")); var contextViewsource = document.getElementById("context-viewsource"); var contextViewsource2 = menuAddPopup.appendChild(contextViewsource.cloneNode(true)); contextViewsource2.id = "context-viewsource2."; contextViewsource2.hidden = false; var menu8 = menuAddPopup.appendChild(document.createElement("menuitem")); menu8.id = "content-bugmen."; menu8.setAttribute("label", "Поискать логины к сайту на BugMeNot.com"); menu8.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://bugmenot.com/view/" + normDom()); //======================= // Удалить куки текущего сайта в контекстном меню на странице, от 04.02.2017. ................bunda1 var menu = contextMenu.appendChild(document.createElement("menu"));menu.id = "content-removeCookies.";menu.setAttribute("label", "Удалить куки текущего сайта"); var menuPopup = menu.appendChild(document.createElement("menupopup"));var menuitem = menuPopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("label", "Удалить (так же будут удалены все Flash-куки)");menuitem.onclick =()=> {var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) {var cookie = en.getNext().QueryInterface(Ci.nsICookie); ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false);} var reversedDomain = host.split("").reverse().join("") + ".";Cu.import("resource://gre/modules/FileUtils.jsm");var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file);dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\"");dbConn.close(); //удалить и все Flash куки. закомпанию. var dir = Services.dirsvc.get('Home', Ci.nsIFile);dir.append("Application Data");dir.append("Macromedia");dir.remove(true);dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);}; contMenu.addEventListener("popupshowing", () => {contextViewsource.hidden = gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onLink; menu.hidden = menuW.hidden = menuM.hidden = pophiddP();menuA.hidden = menu.hidden || onWArch(gBrowser.currentURI.spec);menuG.hidden = menu.hidden || onGCahe(gBrowser.currentURI.spec); menuGl.hidden = !gContextMenu.linkURI || !gContextMenu.linkURI.scheme.startsWith("http");menuAl.hidden = menuGl.hidden || onWArch(gContextMenu.linkURI.spec);}, false); addDestructor(() => {menuW.remove();menuG.remove();menuA.remove();menuGl.remove();menuAl.remove();menuM.remove();menu.remove()});})(addMenufragm); contMenu.insertBefore(addMenufragm, contMenu.lastChild);var onGCahe = function(link) { if((link.startsWith('https://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://www.google.com/search?q=cache:') || link.startsWith('https://www.google.com/search?q=cache:')) && link.indexOf(':http') > 0)return true;return false;}; var Glink = function(link) {return decodeURIComponent(link.substring(link.indexOf(':http')+1).split('+&')[0].split('&')[0]);};var onWArch = function(link) { if((link.startsWith('http://web.archive.org/web/') || link.startsWith('https://web.archive.org/web/')) && link.indexOf('/http') > 0)return true;return false;}; var Wlink = function(link) {return link.substring(link.indexOf('://web.archive.org/web/')+23).match(/\/(https?:\/\/\S+)/)[1];}; var normlink = function(link) {if(onGCahe(link))return Glink(link);if(onWArch(link))return Wlink(link);return link;}; var normDom = function() {let urispec = gBrowser.currentURI.spec;let dom = '';if(onGCahe(urispec)) dom = Glink(urispec);if(onWArch(urispec)) dom = Wlink(urispec); if(dom)return dom.replace(/^https?:\/\//,'').split('/')[0].split('?')[0].split('#')[0];return content.location.hostname;};var pophiddP = function() { if(!gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onVideo || gContextMenu.isContentSelected || gContextMenu.onLink || gContextMenu.onTextInput)return true;return false;};})(); Кстати хотел "Удалить куки+флеш" тудаже в прошлую кнопку. Вообще я нашел 3 таких кода, все похожи, только код отличается хочу все в одну собрать на того кода которую ты сделал компактную. Это полный код, хочю сюда дополнить, с других кодов Выделить код Код:((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "Дополнительно"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [["Поиск по текущему сайту",function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}], ["Сгенерировать/показать пароль", function(){var getRandomPass=function(d){var chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';var rez='';var len=d>=3?d:3;while(rez.length<len){rez+=chars.charAt(Math.floor(Math.random()*chars.length))}return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$/.test(rez)?rez:arguments.callee(len)};var findPassEle=function(p){var c,s='',r=false,f=document.getElementsByTagName('form');for(var i=0;i<f.length;i++){c=f[i].elements;for(var j=0,e;e=c[j];j++){if(e.type=='password'){r=true;if(p){e.value=p;e.focus()}else if(e.value)s+='\n\n'+e.value}}};return r?s:null};var s=findPassEle();if(s){alert('На этой странице уже имеется пароль:'+s)}else{findPassEle(prompt('Пароль сгенерирован'+(s==null?':':'. Вставить?'),getRandomPass(12)))}}], ["Информация о странице +", function(){var meta='',scripts='',embed='',iframes='',cookies='';var corrUrl=function(url){if(!url)return'';var q=url.indexOf('?')+1;return((q&&url.length>50)?url.slice(0,q>50?q:50)+'\u2026':url)+'\n'};var fullUrl=function(url){var a=document.createElement('a');a.href=url;return url?corrUrl(a.href):''};var m=document.getElementsByTagName('meta');for(var i=0,mi;mi=m[i];i++){meta+=(mi.name?mi.name+': ':(mi.httpEquiv?mi.httpEquiv+': ':''))+mi.content+'\n'};var s=document.getElementsByTagName('script');for(var i=0,si;si=s[i];i++){if(si.src)scripts+=corrUrl(si.src)};var e=document.getElementsByTagName('embed');var o=document.getElementsByTagName('object');for(var i=0,ei;ei=e[i];i++){embed+=fullUrl(ei.getAttribute('src'))};for(var i=0,oi;oi=o[i];i++){var src=oi.getAttribute('data')||oi.getAttribute('src')||oi.getAttribute('source');if(!src){var params=oi.getElementsByTagName('param');for(var j=0,p;p=params[j];j++){if(p.hasAttribute('name')&&p.getAttribute('name').match(/^(movie|data|src|code|filename|url|source)$/i)){src=p.getAttribute('value');break}}};var lnk=fullUrl(src);if(embed.indexOf(lnk)==-1)embed+=lnk};var f=document.getElementsByTagName('iframe');for(var i=0,fi;fi=f[i];i++){if(fi.src)iframes+=corrUrl(fi.src)};var c=document.cookie.split(';');for(var i=0,ci;ci=c[i];i++){while(ci.charAt(0)==' ')ci=ci.slice(1);if(ci.length>40)ci=ci.slice(0,40)+'\u2026';cookies+=ci+'\n'};var lastmod=(Date.parse(document.lastModified)==0)?'':document.lastModified;var mode=document.getElementsByTagName('HTmL').length==0?'Really strict':(document.compatMode=='CSS1Compat'?'Normal strict':'Quirks');var title=document.title||(document.getElementsByTagName('title')[0]&&document.getElementsByTagName('title')[0].text)||'';if(meta)meta='\nMeta-данные:\n'+meta;if(scripts)scripts='\nСкрипты:\n'+scripts;if(embed)embed='\nВстроенные объекты:\n'+embed;if(iframes)iframes='\nIframes:\n'+iframes;if(cookies)cookies='\nCookies:\n'+cookies;alert('Идентификация браузера: '+navigator.userAgent+'\n\nЗаголовок: '+title+'\n\nАдрес: '+location.href+'\n\nРеферрер: '+document.referrer+'\n\nДата последнего изменения: '+lastmod+'\n\nРежим отображения: '+mode+' mode\n'+meta+scripts+embed+iframes+cookies)}], ["Исходный код (snapshot)", function(){var q=' ',C={img:1,br:1,link:1,input:1,hr:1,meta:1},u=false,v=0,D=1,g=window.document,m=window.location,w='resizable=yes,scrollbars=yes,location=no',h='</span></li>';var x=function(a){return'<span class=\'tag\'><'+a+''};var y=function(a){return(a?'/':'')+'></span>'};var z=function(a,b){if(b||C[a.toLowerCase()])return'';return'<span class=\'tag\'></'+a+'></span>'};var j=function(){var a=v.toString();while(a.length<3)a='0'+a;return'<li class=\'line'+(D&&((v++)&1)?' dark\'':'\'')+'><span>'};var n=function(a){return a.replace(/</g,'<').replace(/>/g,'>')};var E=function(a){var b=a.doctype,c='';if(b){c=j()+x('!DOCTYPE')+' <span class=\'attrDoc\'>'+b.nodeName+(b.publicId?' PUBLIC \''+b.publicId+'\'':'')+(b.systemId?'</span></span>'+h+j()+'<span class=\'tag\'><span class=\'attrDoc\'>'+q+'\''+b.systemId+'\'':'')+'</span>'+y()+h}return c};var F=function(a){var b=a.attributes,c=null,d='';for(var f=0;c=b[f];f++){if(c.specified&&c.value){d+=' <span class=\'attrTitle\'>'+c.name+'</span>=<span class=\'attrValue\'>\x22'+n(c.value.replace(/\t/g,q))+'\x22</span> '}}return d};var r=function(a){return n(a.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '))};var G=function(a){var b=0,c='';while(b<a){c+=q;b++}return c};var A=function(a,b,c){var d='',f=G(b++);switch(a.nodeType){case 1:{var i=a.childNodes,k=null;var s=(i.length==0)||(i.length==1&&i[0].nodeType==3);var t=u&&i.length==0;var l=j()+f+x(a.nodeName)+F(a)+y(t);if(!s)l+=h;for(var B=0;k=i[B];B++){l+=A(k,b,!s&&k.nodeType==3)}if(s){l+=(a.nodeName.toLowerCase()=='textarea'?n(a.value):'')+z(a.nodeName,t)+h}else{l+=j()+f+z(a.nodeName,t)+h}return l}case 3:{if((d=r(a))&&c){return j()+f+d+h}else{return d}}case 4:{d=r(a);return j()+f+'<span class=\'cdata\'><![CDATA[</span>'+d+'<span class=\'cdata\'>]]></span>'+h}case 8:{d=r(a);return j()+f+'<span class=\'comment\'><!--'+d+'--></span>'+h}}return a.nodeType};var H=function(a){var b,c='';if(a){var d=a.getSelection().getRangeAt(0),f=d.commonAncestorContainer;if(f.nodeType==3||f.nodeType==4)f=f.parentNode;b=f.cloneNode(false);b.appendChild(d.cloneContents());var i=d.startContainer,k=d.endContainer;if(i!=f.firstChild||(i.nodeType==3&&d.startOffset!=0))b.insertBefore(g.createTextNode('\u2026'),b.firstChild);if(k!=f.lastChild||(k.nodeType==3&&d.endOffset!=k.nodeValue.length))b.appendChild(g.createTextNode('\u2026'))}else{c=E(g);b=g.documentElement};c+=A(b,0);return c};var I=function(a){if(a&&a.getSelection){if(a.getSelection().toString())return a;for(var b=0,c,d;c=a.frames[b];b++){try{if(d=arguments.callee(c))return d}catch(e){}}}};var o=I(window);if(o){g=o.document;m=o.location;w+=',width=800,height=500,left=100,top=100'};u=/[a-z]/.test(g.documentElement.nodeName);var J='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((g.getElementsByTagName('title').length&&n(g.getElementsByTagName('title')[0].text))||(m.protocol+'//'+m.host+m.pathname))+'</title><style type=\'text/css\'>body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}</style></head><body><ol id=\'content\'>'+H(o)+'</ol></body></html>';var p=window.open('about:blank','_blank',w);p.document.write(J);p.document.onkeydown=function(a){if(a.keyCode==27)p.close()};p.document.close()}], ["Шахматы", function(){window.open('data:text/html;base64,PGh0bWw+PGhlYWQ+PHRpdGxlPkNoZXNzPC90aXRsZT48bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9zY2FyIFRvbGVkbyBHLiI+PG1ldGEgbmFtZT0ic2l0ZSIgY29udGVudD0iaHR0cDovL25hbm9jaGVzcy4xMTBtYi5jb20vY2hlc3M0Lmh0bWwiPjwvaGVhZD48Ym9keT48c2NyaXB0PnZhciBCLGkseSx1LGIsST1bXSxHPTEyMCx4PTEwLHo9MTUsTT0xZTQsbD1bNSwzLDQsNiwyLDQsMyw1LDEsMSwxLDEsMSwxLDEsMSw5LDksOSw5LDksOSw5LDksMTMsMTEsMTIsMTQsMTAsMTIsMTEsMTMsMCw5OSwwLDMwNiwyOTcsNDk1LDg0NiwtMSwwLDEsMiwyLDEsMCwtMSwtMSwxLC0xMCwxMCwtMTEsLTksOSwxMSwxMCwyMCwtOSwtMTEsLTEwLC0yMCwtMjEsLTE5LC0xMiwtOCw4LDEyLDE5LDIxXTtmdW5jdGlvbiBYKHcsYyxoLGUsUyxzKXt2YXIgdCxvLEwsRSxkLE89ZSxOPS1NKk0sSz03OC1oPDx4LHAsZyxuLG0sQSxxLHIsQyxKLGE9eT8teDp4O3lePTg7RysrO2Q9d3x8cyYmcz49aCYmWCgwLDAsMCwyMSwwLDApPk07ZG97aWYobz1JW3A9T10pe3E9byZ6Xnk7aWYocTw3KXtBPXEtLSYyPzg6NDtDPW8tOSZ6P1s1Myw0Nyw2MSw1MSw0Nyw0N11bcV06NTc7ZG97cj1JW3ArPWxbQ11dO2lmKCF3fHA9PXcpe2c9cXxwK2EtUz8wOlM7aWYoIXImKCEhcXxBPDN8fCEhZyl8fChyKzEmel55KT45JiZxfEE+Mil7aWYobT0hKHItMiY3KSlyZXR1cm4geV49OCxJW0ctLV09TyxLO0o9bj1vJno7RT1JW3AtYV0mejt0PXF8RS03P246KG4rPTIsNl55KTt3aGlsZShuPD10KXtMPXI/bFtyJjd8MzJdLWgtcTowO2lmKHMpTCs9KDEtcT9sWyhwLXAleCkveCszN10tbFsoTy1PJXgpL3grMzddK2xbcCV4KzM4XSoocT8xOjIpLWxbTyV4KzM4XSsobyYxNikvMjohIW0qOSkrKCFxPyEoSVtwLTFdXm4pKyEoSVtwKzFdXm4pK2xbbiY3fDMyXS05OSshIWcqOTkrKEE8Mik6MCkrIShFXnleOSk7aWYocz5ofHwxPHMmcz09aCYmTD56fGQpe0lbcF09bixJW09dPW0/KElbZ109SVttXSxJW21dPTApOmc/SVtnXT0wOjA7TC09WChzPmh8ZD8wOnAsTC1OLGgrMSxJW0crMV0sSj1xfEE+MT8wOnAscyk7aWYoIShofHxzLTF8Qi1PfGktbnxwLWJ8TDwtTSkpcmV0dXJuIFcoKSxHLS0sdT1KO0o9cS0xfEE8N3x8bXx8IXN8ZHxyfG88enx8WCgwLDAsMCwyMSwwLDApPk07SVtPXT1vO0lbcF09cjttPyhJW21dPUlbZ10sSVtnXT0wKTpnP0lbZ109OV55OjB9aWYoTD5OfHxzPjEmJkw9PU4mJiFoJiZNYXRoLnJhbmRvbSgpPC41KXtJW0ddPU87aWYocz4xKXtpZihoJiZjLUw8MClyZXR1cm4geV49OCxHLS0sTDtpZighaClpPW4sQj1PLGI9cH1OPUx9bis9Snx8KGc9cCxtPXA8Tz9nLTM6ZysyLElbbV08enxJW20rTy1wXXx8SVtwKz1wLU9dKT8xOjB9fX19d2hpbGUoIXImcT4yfHwocD1PLHF8QT4yfG8+eiYhciYmKytDKi0tQSkpfX19d2hpbGUoKytPPjk4P089MjA6ZS1PKTtyZXR1cm4geV49OCxHLS0sTitNKk0mJk4+LUsrMTkyNHxkP046MH1CPWk9eT11PTA7d2hpbGUoQisrPDEyMClJW0ItMV09QiV4P0IveCV4PDJ8QiV4PDI/NzpCL3gmND8wOmxbaSsrXXwxNjo3O2ZvcihhPSI8dGFibGUgY2VsbHNwYWNpbmc9MCBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+IixCPTA7Qjw4O0IrKylmb3IoYSs9Ijx0cj4iLGk9MjE7aTwyOTtpKyspYSs9Ijx0ZCB3aWR0aD02MCBoZWlnaHQ9NjAgb25jbGljaz1ZKCIrKEIqeCtpKSsiKSBpZD1vIisoQip4K2kpKyIgc3R5bGU9J2xpbmUtaGVpZ2h0OjUwcHg7Zm9udC1zaXplOjUwcHg7Ym9yZGVyOjJweCBzb2xpZCAiKyIjZTBlMGYwJyBiZ2NvbG9yPSMiKyhpK0ImMT8iZjBmIjoiYzBjIikrIjBmMCBhbGlnbj1jZW50ZXI+IjthKz0iPHRyPjx0ZCBjb2xzcGFuPTggYWxpZ249Y2VudGVyPjxzZWxlY3QgaWQ9dCBzdHlsZT0nZm9udC1zaXplOjIwcHgnPjxvcHRpb24+JiM5ODE5OzxvcHRpb24+Ijtkb2N1bWVudC53cml0ZShhKyImIzk4MjA7PG9wdGlvbj4mIzk4MjE7PG9wdGlvbj4mIzk4MjI7PC9zZWxlY3Q+PC90YWJsZT4iKTtmdW5jdGlvbiBXKCl7Qj1iO2ZvcihwPTIxO3A8OTk7cCs9cCV4LTg/MTozKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrcCkuaW5uZXJIVE1MPSJceGEwXHUyNjVmXHUyNjVhXHUyNjVlXHUyNjVkXHUyNjVjXHUyNjViICBcdTI2NTlcdTI2NTRcdTI2NThcdTI2NTdcdTI2NTZcdTI2NTUiLmNoYXJBdChJW3BdJnopO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitwKS5zdHlsZS5ib3JkZXJDb2xvcj1wPT1CPyJyZWQiOiIjZTBlMGYwIn19VygpO2Z1bmN0aW9uIFkocyl7aT0oSVtzXV55KSZ6O2lmKGk+OCl7Yj1zO1coKX1lbHNlIGlmKEImJmk8OSl7Yj1zO2k9SVtCXSZ6O2lmKChpJjcpPT0xJihiPDI5fGI+OTApKWk9MTQtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zZWxlY3RlZEluZGV4Xnk7WCgwLDAsMCwyMSx1LDEpO2lmKHkpd2luZG93LnNldFRpbWVvdXQoIlgoMCwwLDAsMjEsdSwyLypwbHkqLyksWCgwLDAsMCwyMSx1LDEpIiwyNTApfX08L3NjcmlwdD48L2JvZHk+PC9odG1sPgo=','_blank','width=600,height=550,left=200,top=100')}], ["separator"], //["Искать логин на Login2",function(){window.open('http://login2.me/#'+location.hostname,'login2.me_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на Loginz",function(){window.open('http://loginz.org/view/'+location.hostname,'loginz_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на ByPass",function(){window.open('https://bypass.org.ru/login/'+location.hostname,'bypass_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на BugMeNot",function(){window.open('http://bugmenot.com/view/'+location.hostname,'bugmenot_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["separator"], //["Показать ссылки на Flash/Video", function(){var getVideo=function(flashvars,src){var getLink=function(s){var a=s.match(/[^\s\x22=&?]+\.[^\s\x22=&?\/]*(flv|mp4)/i);return a?a[0]:''};var getQuery=function(s,q){var a=s.match(new RegExp('(^|[&?])'+q+'=([^&]+)'));return a?a[2]:''};var getJson=function(s,q){var a=s.match(new RegExp('\x22'+q+'\x22:\\s*(\x22.+?\x22)'));return a?eval(a[1]):''};var getURL=function(f,s){return f.match(/^(\w+:\/\/|\/|$)/)?f:s.replace(/[#?].*$/,'').replace(/[^\/]*$/,f)};var decodeURL=function(s){try{return decodeURIComponent(s)}catch(e){return unescape(s)}};var q='',url=location.href,flv=decodeURL(flashvars);if(url.indexOf('youtube.com/watch?')!=-1&&(q=getQuery(flv,'url')))return decodeURL(q)+'&signature='+getQuery(flv,'sig')+'&title='+encodeURIComponent(document.title);if(url.indexOf('video.google.com/videoplay?')!=-1&&(q=getQuery(src,'videoUrl')))return decodeURL(q);if(url.indexOf('metacafe.com/watch/')!=-1&&(q=getJson(flv,'mediaURL')))return q+'?__gda__='+getJson(flv,'value');if(url.indexOf('dailymotion.com/')!=-1&&(q=getJson(flv,'hqURL')||getJson(flv,'sdURL')))return q;if(url.indexOf('www.break.com/')!=-1&&(q=getQuery(flv,'videoPath')))return q+'?'+getQuery(flv,'icon');if(url.indexOf('my-hit.ru/film/')!=-1&&(q=getLink(flv)))return q+'?start=0&id='+getQuery(flv,'id');return getURL(getLink(flv)||decodeURL(getLink(src)),src)};var createLink=function(url,txt){var oLnk=document.createElement('a');oLnk.setAttribute('href',url);oLnk.setAttribute('style','display:inline;margin:0;padding:0;font:14px Times New Roman;text-decoration:underline;text-transform:none;');oLnk.appendChild(document.createTextNode(txt));return oLnk};var showLink=function(oEle,src,flv){var cName='ujs_downlink';var p=oEle.previousSibling;if(p&&p.className==cName){oEle.parentNode.removeChild(p);return};if(src){var oDiv=document.createElement('div');oDiv.setAttribute('style','display:block;position:static;float:none;margin:0;padding:0;width:auto;height:auto;font:14px Times New Roman;color:#555;z-index:999;');oDiv.className=cName;oDiv.appendChild(createLink(src,'Download'));var v=getVideo(flv,src);if(v){oDiv.appendChild(document.createTextNode(' ('));oDiv.appendChild(createLink(v,'Video'));oDiv.appendChild(document.createTextNode(')'))};oEle.parentNode.insertBefore(oDiv,oEle)}};var getParam=function(e,n){var v='',r=new RegExp('^('+n+')$','i');var param=e.getElementsByTagName('param');for(var i=0,p;p=param[i];i++){if(r.test(p.getAttribute('name'))){v=p.getAttribute('value');break}};return v};var searchEmbed=function(w){if(!w)return;var obj=w.document.getElementsByTagName('object');for(var i=0,oi;oi=obj[i];i++){if(oi.parentNode)showLink(oi,oi.getAttribute('data')||oi.getAttribute('src')||getParam(oi,'movie|data|src|code|filename|url')||(oi.getElementsByTagName('embed').length&&oi.getElementsByTagName('embed')[0].getAttribute('src')),getParam(oi,'flashvars'))};var em=w.document.getElementsByTagName('embed');for(var i=0,ei;ei=em[i];i++){if(ei.parentNode&&ei.parentNode.nodeName.toLowerCase()!='object')showLink(ei,ei.getAttribute('src'),ei.getAttribute('flashvars'))};for(var j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}};searchEmbed(window)}], //["Набрать сообщение в форме", function(){window.open('http://southron4965.ucoz.ru/files/Opera_LE/html/forma.html')}], //["separator"], ["Искать страницу в кэше Google",function(){window.open('http://www.google.com/search?q=cache:'+location.href)}], ["Искать страницу на Archive.org",function(){window.open('http://web.archive.org/web/*/'+location.href)}], ["separator"], ["Посмотреть отзывы о сайте в WOT",function(){window.open('https://www.mywot.com/ru/scorecard/'+location.hostname)}], ["Информация о сервере (netcraft)",function(){window.open('http://toolbar.netcraft.com/site_report?url='+location.hostname)}], ["Проверить доступность сайта через isitdownrightnow.com",function(){window.open('http://www.isitdownrightnow.com/downorjustme.php?url='+location.hostname,'DownForMe_'+location.hostname,'width=600,height=400,left=100,top=100,scrollbars=yes,location=no')}], ["Узнать, кому принадлежит домен через Domaintools",function(){window.open('http://whois.domaintools.com/'+location.hostname)}], ["Узнать, кому принадлежит домен через Reg.ru",function(){window.open('https://www.reg.ru/whois/?dname='+location.hostname)}], ["separator"], ["Проверить с помощью Dr.Web Online",function(){window.open('http://online.drweb.com/result?url='+escape(location.href),'DrWeb_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["Проверить с помощью AntiMalware Online",function(){window.open('http://antivirus-alarm.ru/proverka/?url='+escape(location.href),'AntiMalware_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["separator"], ["Переключить стиль на странице", "getMarkupDocumentViewer().authorStyleDisabled ? gPageStyleMenu.switchStyleSheet('') : gPageStyleMenu.disableStyle()" ], ["Night - ночной стиль", ()=>{ var night=function(w){(function(d){var css='html{background:#333 !important}html *{background:none !important;color:#bbb !important;border-color:#333 !important;border-width:0 !important}html a,html a *{color:#5c8599 !important;text-decoration:underline !important}html a:visited,html a:visited *,html a:active,html a:active *{color:#525f66 !important}html a:hover,html a:hover *{color:#cef !important;background:#023 !important}html input,html select,html button,html textarea{background:#4d4c40 !important;border:1px solid #5c5a46 !important;border-top-color:#474531 !important;border-bottom-color:#7a7967 !important}html input[type=button],html input[type=submit],html input[type=reset],html input[type=image],html button{border-top-color:#7a7967 !important;border-bottom-color:#474531 !important}html input:focus,html select:focus,html option:focus,html button:focus,html textarea:focus{background:#5c5b3e !important;color:#fff !important;border-color:#474100 #665d00 #7a7849 !important;outline:2px solid #041d29 !important}html input[type=button]:focus,html input[type=submit]:focus,html input[type=reset]:focus,html input[type=image]:focus,html button:focus{border-color:#7a7849 #665d00 #474100 !important}html input[type=radio]{background:none !important;border-color:#333 !important;border-width:0 !important}html img[src],html input[type=image]{opacity:.5}html img[src]:hover,html input[type=image]:hover{opacity:1}html,html body{scrollbar-base-color:#4d4c40 !important;scrollbar-face-color:#5c5b3e !important;scrollbar-shadow-color:#5c5b3e !important;scrollbar-darkshadow-color:#474531 !important;scrollbar-track-color:#4d4c40 !important;scrollbar-arrow-color:#000 !important;scrollbar-3dlight-color:#7a7967 !important}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window) }], ["Сохранить как PDF",function(){window.open('http://www.web2pdfconvert.com/engine?cURL='+escape(location.href)+'&title='+escape(document.title)+'&ref=bookmarklet')}],]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(m=> {if ( m[0] == "separator" ) { menuPopup.appendChild(document.createElement("menuseparator")); return }; var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); typeof(m[1]) == "string" ? mItem.addEventListener("command", ()=> eval(m[1])) : mItem.addEventListener("command", ()=> content.location.href = "javascript:(" + encodeURI(m[1]) + ")()");}); })(document.getElementById("contentAreaContextMenu"), "context-inspect"); Тут оказываеться есть "исходный код страницы" только как снапшот. -А шахматы не пашут, я их недавно перенес с другого кода. "Исправишь?" ----------------------------------------------------------------------------------------------------------------------------- |
bunda1 > 25-07-2017 21:43:11 |
Gladius333 пишет
Выделить код Код:((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "Дополнительно"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [["Поиск по текущему сайту",function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}], ["Сгенерировать/показать пароль", function(){var getRandomPass=function(d){var chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';var rez='';var len=d>=3?d:3;while(rez.length<len){rez+=chars.charAt(Math.floor(Math.random()*chars.length))}return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$/.test(rez)?rez:arguments.callee(len)};var findPassEle=function(p){var c,s='',r=false,f=document.getElementsByTagName('form');for(var i=0;i<f.length;i++){c=f[i].elements;for(var j=0,e;e=c[j];j++){if(e.type=='password'){r=true;if(p){e.value=p;e.focus()}else if(e.value)s+='\n\n'+e.value}}};return r?s:null};var s=findPassEle();if(s){alert('На этой странице уже имеется пароль:'+s)}else{findPassEle(prompt('Пароль сгенерирован'+(s==null?':':'. Вставить?'),getRandomPass(12)))}}], ["Информация о странице +", function(){var meta='',scripts='',embed='',iframes='',cookies='';var corrUrl=function(url){if(!url)return'';var q=url.indexOf('?')+1;return((q&&url.length>50)?url.slice(0,q>50?q:50)+'\u2026':url)+'\n'};var fullUrl=function(url){var a=document.createElement('a');a.href=url;return url?corrUrl(a.href):''};var m=document.getElementsByTagName('meta');for(var i=0,mi;mi=m[i];i++){meta+=(mi.name?mi.name+': ':(mi.httpEquiv?mi.httpEquiv+': ':''))+mi.content+'\n'};var s=document.getElementsByTagName('script');for(var i=0,si;si=s[i];i++){if(si.src)scripts+=corrUrl(si.src)};var e=document.getElementsByTagName('embed');var o=document.getElementsByTagName('object');for(var i=0,ei;ei=e[i];i++){embed+=fullUrl(ei.getAttribute('src'))};for(var i=0,oi;oi=o[i];i++){var src=oi.getAttribute('data')||oi.getAttribute('src')||oi.getAttribute('source');if(!src){var params=oi.getElementsByTagName('param');for(var j=0,p;p=params[j];j++){if(p.hasAttribute('name')&&p.getAttribute('name').match(/^(movie|data|src|code|filename|url|source)$/i)){src=p.getAttribute('value');break}}};var lnk=fullUrl(src);if(embed.indexOf(lnk)==-1)embed+=lnk};var f=document.getElementsByTagName('iframe');for(var i=0,fi;fi=f[i];i++){if(fi.src)iframes+=corrUrl(fi.src)};var c=document.cookie.split(';');for(var i=0,ci;ci=c[i];i++){while(ci.charAt(0)==' ')ci=ci.slice(1);if(ci.length>40)ci=ci.slice(0,40)+'\u2026';cookies+=ci+'\n'};var lastmod=(Date.parse(document.lastModified)==0)?'':document.lastModified;var mode=document.getElementsByTagName('HTmL').length==0?'Really strict':(document.compatMode=='CSS1Compat'?'Normal strict':'Quirks');var title=document.title||(document.getElementsByTagName('title')[0]&&document.getElementsByTagName('title')[0].text)||'';if(meta)meta='\nMeta-данные:\n'+meta;if(scripts)scripts='\nСкрипты:\n'+scripts;if(embed)embed='\nВстроенные объекты:\n'+embed;if(iframes)iframes='\nIframes:\n'+iframes;if(cookies)cookies='\nCookies:\n'+cookies;alert('Идентификация браузера: '+navigator.userAgent+'\n\nЗаголовок: '+title+'\n\nАдрес: '+location.href+'\n\nРеферрер: '+document.referrer+'\n\nДата последнего изменения: '+lastmod+'\n\nРежим отображения: '+mode+' mode\n'+meta+scripts+embed+iframes+cookies)}], ["Исходный код (snapshot)", function(){var q=' ',C={img:1,br:1,link:1,input:1,hr:1,meta:1},u=false,v=0,D=1,g=window.document,m=window.location,w='resizable=yes,scrollbars=yes,location=no',h='</span></li>';var x=function(a){return'<span class=\'tag\'><'+a+''};var y=function(a){return(a?'/':'')+'></span>'};var z=function(a,b){if(b||C[a.toLowerCase()])return'';return'<span class=\'tag\'></'+a+'></span>'};var j=function(){var a=v.toString();while(a.length<3)a='0'+a;return'<li class=\'line'+(D&&((v++)&1)?' dark\'':'\'')+'><span>'};var n=function(a){return a.replace(/</g,'<').replace(/>/g,'>')};var E=function(a){var b=a.doctype,c='';if(b){c=j()+x('!DOCTYPE')+' <span class=\'attrDoc\'>'+b.nodeName+(b.publicId?' PUBLIC \''+b.publicId+'\'':'')+(b.systemId?'</span></span>'+h+j()+'<span class=\'tag\'><span class=\'attrDoc\'>'+q+'\''+b.systemId+'\'':'')+'</span>'+y()+h}return c};var F=function(a){var b=a.attributes,c=null,d='';for(var f=0;c=b[f];f++){if(c.specified&&c.value){d+=' <span class=\'attrTitle\'>'+c.name+'</span>=<span class=\'attrValue\'>\x22'+n(c.value.replace(/\t/g,q))+'\x22</span> '}}return d};var r=function(a){return n(a.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '))};var G=function(a){var b=0,c='';while(b<a){c+=q;b++}return c};var A=function(a,b,c){var d='',f=G(b++);switch(a.nodeType){case 1:{var i=a.childNodes,k=null;var s=(i.length==0)||(i.length==1&&i[0].nodeType==3);var t=u&&i.length==0;var l=j()+f+x(a.nodeName)+F(a)+y(t);if(!s)l+=h;for(var B=0;k=i[B];B++){l+=A(k,b,!s&&k.nodeType==3)}if(s){l+=(a.nodeName.toLowerCase()=='textarea'?n(a.value):'')+z(a.nodeName,t)+h}else{l+=j()+f+z(a.nodeName,t)+h}return l}case 3:{if((d=r(a))&&c){return j()+f+d+h}else{return d}}case 4:{d=r(a);return j()+f+'<span class=\'cdata\'><![CDATA[</span>'+d+'<span class=\'cdata\'>]]></span>'+h}case 8:{d=r(a);return j()+f+'<span class=\'comment\'><!--'+d+'--></span>'+h}}return a.nodeType};var H=function(a){var b,c='';if(a){var d=a.getSelection().getRangeAt(0),f=d.commonAncestorContainer;if(f.nodeType==3||f.nodeType==4)f=f.parentNode;b=f.cloneNode(false);b.appendChild(d.cloneContents());var i=d.startContainer,k=d.endContainer;if(i!=f.firstChild||(i.nodeType==3&&d.startOffset!=0))b.insertBefore(g.createTextNode('\u2026'),b.firstChild);if(k!=f.lastChild||(k.nodeType==3&&d.endOffset!=k.nodeValue.length))b.appendChild(g.createTextNode('\u2026'))}else{c=E(g);b=g.documentElement};c+=A(b,0);return c};var I=function(a){if(a&&a.getSelection){if(a.getSelection().toString())return a;for(var b=0,c,d;c=a.frames[b];b++){try{if(d=arguments.callee(c))return d}catch(e){}}}};var o=I(window);if(o){g=o.document;m=o.location;w+=',width=800,height=500,left=100,top=100'};u=/[a-z]/.test(g.documentElement.nodeName);var J='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((g.getElementsByTagName('title').length&&n(g.getElementsByTagName('title')[0].text))||(m.protocol+'//'+m.host+m.pathname))+'</title><style type=\'text/css\'>body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}</style></head><body><ol id=\'content\'>'+H(o)+'</ol></body></html>';var p=window.open('about:blank','_blank',w);p.document.write(J);p.document.onkeydown=function(a){if(a.keyCode==27)p.close()};p.document.close()}], ["Шахматы", function(){window.open('data:text/html;base64,PGh0bWw+PGhlYWQ+PHRpdGxlPkNoZXNzPC90aXRsZT48bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9zY2FyIFRvbGVkbyBHLiI+PG1ldGEgbmFtZT0ic2l0ZSIgY29udGVudD0iaHR0cDovL25hbm9jaGVzcy4xMTBtYi5jb20vY2hlc3M0Lmh0bWwiPjwvaGVhZD48Ym9keT48c2NyaXB0PnZhciBCLGkseSx1LGIsST1bXSxHPTEyMCx4PTEwLHo9MTUsTT0xZTQsbD1bNSwzLDQsNiwyLDQsMyw1LDEsMSwxLDEsMSwxLDEsMSw5LDksOSw5LDksOSw5LDksMTMsMTEsMTIsMTQsMTAsMTIsMTEsMTMsMCw5OSwwLDMwNiwyOTcsNDk1LDg0NiwtMSwwLDEsMiwyLDEsMCwtMSwtMSwxLC0xMCwxMCwtMTEsLTksOSwxMSwxMCwyMCwtOSwtMTEsLTEwLC0yMCwtMjEsLTE5LC0xMiwtOCw4LDEyLDE5LDIxXTtmdW5jdGlvbiBYKHcsYyxoLGUsUyxzKXt2YXIgdCxvLEwsRSxkLE89ZSxOPS1NKk0sSz03OC1oPDx4LHAsZyxuLG0sQSxxLHIsQyxKLGE9eT8teDp4O3lePTg7RysrO2Q9d3x8cyYmcz49aCYmWCgwLDAsMCwyMSwwLDApPk07ZG97aWYobz1JW3A9T10pe3E9byZ6Xnk7aWYocTw3KXtBPXEtLSYyPzg6NDtDPW8tOSZ6P1s1Myw0Nyw2MSw1MSw0Nyw0N11bcV06NTc7ZG97cj1JW3ArPWxbQ11dO2lmKCF3fHA9PXcpe2c9cXxwK2EtUz8wOlM7aWYoIXImKCEhcXxBPDN8fCEhZyl8fChyKzEmel55KT45JiZxfEE+Mil7aWYobT0hKHItMiY3KSlyZXR1cm4geV49OCxJW0ctLV09TyxLO0o9bj1vJno7RT1JW3AtYV0mejt0PXF8RS03P246KG4rPTIsNl55KTt3aGlsZShuPD10KXtMPXI/bFtyJjd8MzJdLWgtcTowO2lmKHMpTCs9KDEtcT9sWyhwLXAleCkveCszN10tbFsoTy1PJXgpL3grMzddK2xbcCV4KzM4XSoocT8xOjIpLWxbTyV4KzM4XSsobyYxNikvMjohIW0qOSkrKCFxPyEoSVtwLTFdXm4pKyEoSVtwKzFdXm4pK2xbbiY3fDMyXS05OSshIWcqOTkrKEE8Mik6MCkrIShFXnleOSk7aWYocz5ofHwxPHMmcz09aCYmTD56fGQpe0lbcF09bixJW09dPW0/KElbZ109SVttXSxJW21dPTApOmc/SVtnXT0wOjA7TC09WChzPmh8ZD8wOnAsTC1OLGgrMSxJW0crMV0sSj1xfEE+MT8wOnAscyk7aWYoIShofHxzLTF8Qi1PfGktbnxwLWJ8TDwtTSkpcmV0dXJuIFcoKSxHLS0sdT1KO0o9cS0xfEE8N3x8bXx8IXN8ZHxyfG88enx8WCgwLDAsMCwyMSwwLDApPk07SVtPXT1vO0lbcF09cjttPyhJW21dPUlbZ10sSVtnXT0wKTpnP0lbZ109OV55OjB9aWYoTD5OfHxzPjEmJkw9PU4mJiFoJiZNYXRoLnJhbmRvbSgpPC41KXtJW0ddPU87aWYocz4xKXtpZihoJiZjLUw8MClyZXR1cm4geV49OCxHLS0sTDtpZighaClpPW4sQj1PLGI9cH1OPUx9bis9Snx8KGc9cCxtPXA8Tz9nLTM6ZysyLElbbV08enxJW20rTy1wXXx8SVtwKz1wLU9dKT8xOjB9fX19d2hpbGUoIXImcT4yfHwocD1PLHF8QT4yfG8+eiYhciYmKytDKi0tQSkpfX19d2hpbGUoKytPPjk4P089MjA6ZS1PKTtyZXR1cm4geV49OCxHLS0sTitNKk0mJk4+LUsrMTkyNHxkP046MH1CPWk9eT11PTA7d2hpbGUoQisrPDEyMClJW0ItMV09QiV4P0IveCV4PDJ8QiV4PDI/NzpCL3gmND8wOmxbaSsrXXwxNjo3O2ZvcihhPSI8dGFibGUgY2VsbHNwYWNpbmc9MCBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+IixCPTA7Qjw4O0IrKylmb3IoYSs9Ijx0cj4iLGk9MjE7aTwyOTtpKyspYSs9Ijx0ZCB3aWR0aD02MCBoZWlnaHQ9NjAgb25jbGljaz1ZKCIrKEIqeCtpKSsiKSBpZD1vIisoQip4K2kpKyIgc3R5bGU9J2xpbmUtaGVpZ2h0OjUwcHg7Zm9udC1zaXplOjUwcHg7Ym9yZGVyOjJweCBzb2xpZCAiKyIjZTBlMGYwJyBiZ2NvbG9yPSMiKyhpK0ImMT8iZjBmIjoiYzBjIikrIjBmMCBhbGlnbj1jZW50ZXI+IjthKz0iPHRyPjx0ZCBjb2xzcGFuPTggYWxpZ249Y2VudGVyPjxzZWxlY3QgaWQ9dCBzdHlsZT0nZm9udC1zaXplOjIwcHgnPjxvcHRpb24+JiM5ODE5OzxvcHRpb24+Ijtkb2N1bWVudC53cml0ZShhKyImIzk4MjA7PG9wdGlvbj4mIzk4MjE7PG9wdGlvbj4mIzk4MjI7PC9zZWxlY3Q+PC90YWJsZT4iKTtmdW5jdGlvbiBXKCl7Qj1iO2ZvcihwPTIxO3A8OTk7cCs9cCV4LTg/MTozKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrcCkuaW5uZXJIVE1MPSJceGEwXHUyNjVmXHUyNjVhXHUyNjVlXHUyNjVkXHUyNjVjXHUyNjViICBcdTI2NTlcdTI2NTRcdTI2NThcdTI2NTdcdTI2NTZcdTI2NTUiLmNoYXJBdChJW3BdJnopO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitwKS5zdHlsZS5ib3JkZXJDb2xvcj1wPT1CPyJyZWQiOiIjZTBlMGYwIn19VygpO2Z1bmN0aW9uIFkocyl7aT0oSVtzXV55KSZ6O2lmKGk+OCl7Yj1zO1coKX1lbHNlIGlmKEImJmk8OSl7Yj1zO2k9SVtCXSZ6O2lmKChpJjcpPT0xJihiPDI5fGI+OTApKWk9MTQtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zZWxlY3RlZEluZGV4Xnk7WCgwLDAsMCwyMSx1LDEpO2lmKHkpd2luZG93LnNldFRpbWVvdXQoIlgoMCwwLDAsMjEsdSwyLypwbHkqLyksWCgwLDAsMCwyMSx1LDEpIiwyNTApfX08L3NjcmlwdD48L2JvZHk+PC9odG1sPgo=','_blank','width=600,height=550,left=200,top=100')}], ["separator"], //["Искать логин на Login2",function(){window.open('http://login2.me/#'+location.hostname,'login2.me_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на Loginz",function(){window.open('http://loginz.org/view/'+location.hostname,'loginz_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на ByPass",function(){window.open('https://bypass.org.ru/login/'+location.hostname,'bypass_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на BugMeNot",function(){window.open('http://bugmenot.com/view/'+location.hostname,'bugmenot_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["separator"], //["Показать ссылки на Flash/Video", function(){var getVideo=function(flashvars,src){var getLink=function(s){var a=s.match(/[^\s\x22=&?]+\.[^\s\x22=&?\/]*(flv|mp4)/i);return a?a[0]:''};var getQuery=function(s,q){var a=s.match(new RegExp('(^|[&?])'+q+'=([^&]+)'));return a?a[2]:''};var getJson=function(s,q){var a=s.match(new RegExp('\x22'+q+'\x22:\\s*(\x22.+?\x22)'));return a?eval(a[1]):''};var getURL=function(f,s){return f.match(/^(\w+:\/\/|\/|$)/)?f:s.replace(/[#?].*$/,'').replace(/[^\/]*$/,f)};var decodeURL=function(s){try{return decodeURIComponent(s)}catch(e){return unescape(s)}};var q='',url=location.href,flv=decodeURL(flashvars);if(url.indexOf('youtube.com/watch?')!=-1&&(q=getQuery(flv,'url')))return decodeURL(q)+'&signature='+getQuery(flv,'sig')+'&title='+encodeURIComponent(document.title);if(url.indexOf('video.google.com/videoplay?')!=-1&&(q=getQuery(src,'videoUrl')))return decodeURL(q);if(url.indexOf('metacafe.com/watch/')!=-1&&(q=getJson(flv,'mediaURL')))return q+'?__gda__='+getJson(flv,'value');if(url.indexOf('dailymotion.com/')!=-1&&(q=getJson(flv,'hqURL')||getJson(flv,'sdURL')))return q;if(url.indexOf('www.break.com/')!=-1&&(q=getQuery(flv,'videoPath')))return q+'?'+getQuery(flv,'icon');if(url.indexOf('my-hit.ru/film/')!=-1&&(q=getLink(flv)))return q+'?start=0&id='+getQuery(flv,'id');return getURL(getLink(flv)||decodeURL(getLink(src)),src)};var createLink=function(url,txt){var oLnk=document.createElement('a');oLnk.setAttribute('href',url);oLnk.setAttribute('style','display:inline;margin:0;padding:0;font:14px Times New Roman;text-decoration:underline;text-transform:none;');oLnk.appendChild(document.createTextNode(txt));return oLnk};var showLink=function(oEle,src,flv){var cName='ujs_downlink';var p=oEle.previousSibling;if(p&&p.className==cName){oEle.parentNode.removeChild(p);return};if(src){var oDiv=document.createElement('div');oDiv.setAttribute('style','display:block;position:static;float:none;margin:0;padding:0;width:auto;height:auto;font:14px Times New Roman;color:#555;z-index:999;');oDiv.className=cName;oDiv.appendChild(createLink(src,'Download'));var v=getVideo(flv,src);if(v){oDiv.appendChild(document.createTextNode(' ('));oDiv.appendChild(createLink(v,'Video'));oDiv.appendChild(document.createTextNode(')'))};oEle.parentNode.insertBefore(oDiv,oEle)}};var getParam=function(e,n){var v='',r=new RegExp('^('+n+')$','i');var param=e.getElementsByTagName('param');for(var i=0,p;p=param[i];i++){if(r.test(p.getAttribute('name'))){v=p.getAttribute('value');break}};return v};var searchEmbed=function(w){if(!w)return;var obj=w.document.getElementsByTagName('object');for(var i=0,oi;oi=obj[i];i++){if(oi.parentNode)showLink(oi,oi.getAttribute('data')||oi.getAttribute('src')||getParam(oi,'movie|data|src|code|filename|url')||(oi.getElementsByTagName('embed').length&&oi.getElementsByTagName('embed')[0].getAttribute('src')),getParam(oi,'flashvars'))};var em=w.document.getElementsByTagName('embed');for(var i=0,ei;ei=em[i];i++){if(ei.parentNode&&ei.parentNode.nodeName.toLowerCase()!='object')showLink(ei,ei.getAttribute('src'),ei.getAttribute('flashvars'))};for(var j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}};searchEmbed(window)}], //["Набрать сообщение в форме", function(){window.open('http://southron4965.ucoz.ru/files/Opera_LE/html/forma.html')}], //["separator"], ["Искать страницу в кэше Google",function(){window.open('http://www.google.com/search?q=cache:'+location.href)}], ["Искать страницу на Archive.org",function(){window.open('http://web.archive.org/web/*/'+location.href)}], ["separator"], ["Посмотреть отзывы о сайте в WOT",function(){window.open('https://www.mywot.com/ru/scorecard/'+location.hostname)}], ["Информация о сервере (netcraft)",function(){window.open('http://toolbar.netcraft.com/site_report?url='+location.hostname)}], ["Проверить доступность сайта через isitdownrightnow.com",function(){window.open('http://www.isitdownrightnow.com/downorjustme.php?url='+location.hostname,'DownForMe_'+location.hostname,'width=600,height=400,left=100,top=100,scrollbars=yes,location=no')}], ["Узнать, кому принадлежит домен через Domaintools",function(){window.open('http://whois.domaintools.com/'+location.hostname)}], ["Узнать, кому принадлежит домен через Reg.ru",function(){window.open('https://www.reg.ru/whois/?dname='+location.hostname)}], ["separator"], ["Проверить с помощью Dr.Web Online",function(){window.open('http://online.drweb.com/result?url='+escape(location.href),'DrWeb_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["Проверить с помощью AntiMalware Online",function(){window.open('http://antivirus-alarm.ru/proverka/?url='+escape(location.href),'AntiMalware_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["separator"], ["Переключить стиль на странице", "getMarkupDocumentViewer().authorStyleDisabled ? gPageStyleMenu.switchStyleSheet('') : gPageStyleMenu.disableStyle()" ], ["Night - ночной стиль", ()=>{ var night=function(w){(function(d){var css='html{background:#333 !important}html *{background:none !important;color:#bbb !important;border-color:#333 !important;border-width:0 !important}html a,html a *{color:#5c8599 !important;text-decoration:underline !important}html a:visited,html a:visited *,html a:active,html a:active *{color:#525f66 !important}html a:hover,html a:hover *{color:#cef !important;background:#023 !important}html input,html select,html button,html textarea{background:#4d4c40 !important;border:1px solid #5c5a46 !important;border-top-color:#474531 !important;border-bottom-color:#7a7967 !important}html input[type=button],html input[type=submit],html input[type=reset],html input[type=image],html button{border-top-color:#7a7967 !important;border-bottom-color:#474531 !important}html input:focus,html select:focus,html option:focus,html button:focus,html textarea:focus{background:#5c5b3e !important;color:#fff !important;border-color:#474100 #665d00 #7a7849 !important;outline:2px solid #041d29 !important}html input[type=button]:focus,html input[type=submit]:focus,html input[type=reset]:focus,html input[type=image]:focus,html button:focus{border-color:#7a7849 #665d00 #474100 !important}html input[type=radio]{background:none !important;border-color:#333 !important;border-width:0 !important}html img[src],html input[type=image]{opacity:.5}html img[src]:hover,html input[type=image]:hover{opacity:1}html,html body{scrollbar-base-color:#4d4c40 !important;scrollbar-face-color:#5c5b3e !important;scrollbar-shadow-color:#5c5b3e !important;scrollbar-darkshadow-color:#474531 !important;scrollbar-track-color:#4d4c40 !important;scrollbar-arrow-color:#000 !important;scrollbar-3dlight-color:#7a7967 !important}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window) }], ["Сохранить как PDF",function(){window.open('http://www.web2pdfconvert.com/engine?cURL='+escape(location.href)+'&title='+escape(document.title)+'&ref=bookmarklet')}], ["Удалить куки текущего сайта", "deleteCookiesFromHost()"], ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(m=> {if ( m[0] == "separator" ) { menuPopup.appendChild(document.createElement("menuseparator")); return }; var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); typeof(m[1]) == "string" ? mItem.addEventListener("command", ()=> eval(m[1])) : mItem.addEventListener("command", ()=> content.location.href = "javascript:(" + encodeURI(m[1]) + ")()");}); function deleteCookiesFromHost() { var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) { var cookie = en.getNext().QueryInterface(Ci.nsICookie); ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); } var reversedDomain = host.split("").reverse().join("") + "."; Cu.import("resource://gre/modules/FileUtils.jsm"); var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file); dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\""); dbConn.close(); var dir = Services.dirsvc.get('Home', Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true); dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); }; })(document.getElementById("contentAreaContextMenu"), "context-inspect"); |
Gladius333 > 26-07-2017 09:46:43 |
bunda1 пишет
Спасибо, я понял откуда ты этот код взял, я оттуда добавил "перезагрузить все вкладки текущего сайта", но он не работает, как правильно сделать чтобы оба кода выполнялись вместе? просто там выполняеться только "перезагрузить все вкладки текущего сайта". Удалить куки текущего сайта Выделить код Код:["Удалить куки текущего сайта", "deleteCookiesFromHost(), reloadAllTabsFromHost()"],]; ---------------------------------------------------------------------------------------------------------------- И где меню "Шахматы" он октрывает и сразу закрываеться, в чем проблема? Шахматы Выделить код Код:["Шахматы", function(){window.open('data:text/html;base64,PGh0bWw+PGhlYWQ+PHRpdGxlPkNoZXNzPC90aXRsZT48bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9zY2FyIFRvbGVkbyBHLiI+PG1ldGEgbmFtZT0ic2l0ZSIgY29udGVudD0iaHR0cDovL25hbm9jaGVzcy4xMTBtYi5jb20vY2hlc3M0Lmh0bWwiPjwvaGVhZD48Ym9keT48c2NyaXB0PnZhciBCLGkseSx1LGIsST1bXSxHPTEyMCx4PTEwLHo9MTUsTT0xZTQsbD1bNSwzLDQsNiwyLDQsMyw1LDEsMSwxLDEsMSwxLDEsMSw5LDksOSw5LDksOSw5LDksMTMsMTEsMTIsMTQsMTAsMTIsMTEsMTMsMCw5OSwwLDMwNiwyOTcsNDk1LDg0NiwtMSwwLDEsMiwyLDEsMCwtMSwtMSwxLC0xMCwxMCwtMTEsLTksOSwxMSwxMCwyMCwtOSwtMTEsLTEwLC0yMCwtMjEsLTE5LC0xMiwtOCw4LDEyLDE5LDIxXTtmdW5jdGlvbiBYKHcsYyxoLGUsUyxzKXt2YXIgdCxvLEwsRSxkLE89ZSxOPS1NKk0sSz03OC1oPDx4LHAsZyxuLG0sQSxxLHIsQyxKLGE9eT8teDp4O3lePTg7RysrO2Q9d3x8cyYmcz49aCYmWCgwLDAsMCwyMSwwLDApPk07ZG97aWYobz1JW3A9T10pe3E9byZ6Xnk7aWYocTw3KXtBPXEtLSYyPzg6NDtDPW8tOSZ6P1s1Myw0Nyw2MSw1MSw0Nyw0N11bcV06NTc7ZG97cj1JW3ArPWxbQ11dO2lmKCF3fHA9PXcpe2c9cXxwK2EtUz8wOlM7aWYoIXImKCEhcXxBPDN8fCEhZyl8fChyKzEmel55KT45JiZxfEE+Mil7aWYobT0hKHItMiY3KSlyZXR1cm4geV49OCxJW0ctLV09TyxLO0o9bj1vJno7RT1JW3AtYV0mejt0PXF8RS03P246KG4rPTIsNl55KTt3aGlsZShuPD10KXtMPXI/bFtyJjd8MzJdLWgtcTowO2lmKHMpTCs9KDEtcT9sWyhwLXAleCkveCszN10tbFsoTy1PJXgpL3grMzddK2xbcCV4KzM4XSoocT8xOjIpLWxbTyV4KzM4XSsobyYxNikvMjohIW0qOSkrKCFxPyEoSVtwLTFdXm4pKyEoSVtwKzFdXm4pK2xbbiY3fDMyXS05OSshIWcqOTkrKEE8Mik6MCkrIShFXnleOSk7aWYocz5ofHwxPHMmcz09aCYmTD56fGQpe0lbcF09bixJW09dPW0/KElbZ109SVttXSxJW21dPTApOmc/SVtnXT0wOjA7TC09WChzPmh8ZD8wOnAsTC1OLGgrMSxJW0crMV0sSj1xfEE+MT8wOnAscyk7aWYoIShofHxzLTF8Qi1PfGktbnxwLWJ8TDwtTSkpcmV0dXJuIFcoKSxHLS0sdT1KO0o9cS0xfEE8N3x8bXx8IXN8ZHxyfG88enx8WCgwLDAsMCwyMSwwLDApPk07SVtPXT1vO0lbcF09cjttPyhJW21dPUlbZ10sSVtnXT0wKTpnP0lbZ109OV55OjB9aWYoTD5OfHxzPjEmJkw9PU4mJiFoJiZNYXRoLnJhbmRvbSgpPC41KXtJW0ddPU87aWYocz4xKXtpZihoJiZjLUw8MClyZXR1cm4geV49OCxHLS0sTDtpZighaClpPW4sQj1PLGI9cH1OPUx9bis9Snx8KGc9cCxtPXA8Tz9nLTM6ZysyLElbbV08enxJW20rTy1wXXx8SVtwKz1wLU9dKT8xOjB9fX19d2hpbGUoIXImcT4yfHwocD1PLHF8QT4yfG8+eiYhciYmKytDKi0tQSkpfX19d2hpbGUoKytPPjk4P089MjA6ZS1PKTtyZXR1cm4geV49OCxHLS0sTitNKk0mJk4+LUsrMTkyNHxkP046MH1CPWk9eT11PTA7d2hpbGUoQisrPDEyMClJW0ItMV09QiV4P0IveCV4PDJ8QiV4PDI/NzpCL3gmND8wOmxbaSsrXXwxNjo3O2ZvcihhPSI8dGFibGUgY2VsbHNwYWNpbmc9MCBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+IixCPTA7Qjw4O0IrKylmb3IoYSs9Ijx0cj4iLGk9MjE7aTwyOTtpKyspYSs9Ijx0ZCB3aWR0aD02MCBoZWlnaHQ9NjAgb25jbGljaz1ZKCIrKEIqeCtpKSsiKSBpZD1vIisoQip4K2kpKyIgc3R5bGU9J2xpbmUtaGVpZ2h0OjUwcHg7Zm9udC1zaXplOjUwcHg7Ym9yZGVyOjJweCBzb2xpZCAiKyIjZTBlMGYwJyBiZ2NvbG9yPSMiKyhpK0ImMT8iZjBmIjoiYzBjIikrIjBmMCBhbGlnbj1jZW50ZXI+IjthKz0iPHRyPjx0ZCBjb2xzcGFuPTggYWxpZ249Y2VudGVyPjxzZWxlY3QgaWQ9dCBzdHlsZT0nZm9udC1zaXplOjIwcHgnPjxvcHRpb24+JiM5ODE5OzxvcHRpb24+Ijtkb2N1bWVudC53cml0ZShhKyImIzk4MjA7PG9wdGlvbj4mIzk4MjE7PG9wdGlvbj4mIzk4MjI7PC9zZWxlY3Q+PC90YWJsZT4iKTtmdW5jdGlvbiBXKCl7Qj1iO2ZvcihwPTIxO3A8OTk7cCs9cCV4LTg/MTozKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrcCkuaW5uZXJIVE1MPSJceGEwXHUyNjVmXHUyNjVhXHUyNjVlXHUyNjVkXHUyNjVjXHUyNjViICBcdTI2NTlcdTI2NTRcdTI2NThcdTI2NTdcdTI2NTZcdTI2NTUiLmNoYXJBdChJW3BdJnopO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitwKS5zdHlsZS5ib3JkZXJDb2xvcj1wPT1CPyJyZWQiOiIjZTBlMGYwIn19VygpO2Z1bmN0aW9uIFkocyl7aT0oSVtzXV55KSZ6O2lmKGk+OCl7Yj1zO1coKX1lbHNlIGlmKEImJmk8OSl7Yj1zO2k9SVtCXSZ6O2lmKChpJjcpPT0xJihiPDI5fGI+OTApKWk9MTQtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zZWxlY3RlZEluZGV4Xnk7WCgwLDAsMCwyMSx1LDEpO2lmKHkpd2luZG93LnNldFRpbWVvdXQoIlgoMCwwLDAsMjEsdSwyLypwbHkqLyksWCgwLDAsMCwyMSx1LDEpIiwyNTApfX08L3NjcmlwdD48L2JvZHk+PC9odG1sPgo=','_blank','width=600,height=550,left=200,top=100')}], |
bunda1 > 26-07-2017 09:49:02 |
Gladius333 > 26-07-2017 09:57:00 |
bunda1 пишет А я так делал, потом тестил куки не удалялись но страницы перезагружались, подумал он пропускает. Походу дела тот код бесполезен "reloadAllTabsFromHost()" так как пока с одной удаляет, на другой грузятся другие куки, то есть тупо перезагружает страницу... Спасиб еще раз, я тот код удалю, ты поэтому не добавил? |
bunda1 > 26-07-2017 10:27:57 |
Gladius333 пишет
Gladius333 пишет
Да потому, я сам им не пользуюсь reloadAllTabsFromHost() но кто то просил добавить в кнопку. Шахматы посмотрю вечером. |
bunda1 > 26-07-2017 22:15:31 |
Gladius333 пишет
У меня вроде не закрывается. Мистика. |
Gladius333 > 27-07-2017 21:20:20 |
Вопрос можно кроме меню "допольнительно", добавить еще одно меню? Примерно так, этот код нерабочий просто как набросок... Выделить код Код:((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "- Additionally -"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [["Поиск по текущему сайту",function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}], ["Сгенерировать/показать пароль", function(){var getRandomPass=function(d){var chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';var rez='';var len=d>=3?d:3;while(rez.length<len){rez+=chars.charAt(Math.floor(Math.random()*chars.length))}return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).+$/.test(rez)?rez:arguments.callee(len)};var findPassEle=function(p){var c,s='',r=false,f=document.getElementsByTagName('form');for(var i=0;i<f.length;i++){c=f[i].elements;for(var j=0,e;e=c[j];j++){if(e.type=='password'){r=true;if(p){e.value=p;e.focus()}else if(e.value)s+='\n\n'+e.value}}};return r?s:null};var s=findPassEle();if(s){alert('На этой странице уже имеется пароль:'+s)}else{findPassEle(prompt('Пароль сгенерирован'+(s==null?':':'. Вставить?'),getRandomPass(12)))}}], ["Информация о странице +", function(){var meta='',scripts='',embed='',iframes='',cookies='',links='';var corrUrl=function(url){if(!url)return'';var q=url.indexOf('?')+1;return((q&&url.length>50)?url.slice(0,q>50?q:50)+'\u2026':url)+'\n'};var fullUrl=function(url){var a=document.createElement('a');a.href=url;return url?corrUrl(a.href):''};var m=document.getElementsByTagName('meta');for(var i=0,mi;mi=m[i];i++){meta+=(mi.name?mi.name+': ':(mi.httpEquiv?mi.httpEquiv+': ':''))+mi.content+'\n'};var s=document.getElementsByTagName('script');for(var i=0,si;si=s[i];i++){if(si.src)scripts+=corrUrl(si.src)};var e=document.getElementsByTagName('embed');var o=document.getElementsByTagName('object');for(var i=0,ei;ei=e[i];i++){embed+=fullUrl(ei.getAttribute('src'))};for(var i=0,oi;oi=o[i];i++){var src=oi.getAttribute('data')||oi.getAttribute('src')||oi.getAttribute('source');if(!src){var params=oi.getElementsByTagName('param');for(var j=0,p;p=params[j];j++){if(p.hasAttribute('name')&&p.getAttribute('name').match(/^(movie|data|src|code|filename|url|source)$/i)){src=p.getAttribute('value');break}}};var lnk=fullUrl(src);if(embed.indexOf(lnk)==-1)embed+=lnk};var f=document.getElementsByTagName('iframe');for(var i=0,fi;fi=f[i];i++){if(fi.src)iframes+=corrUrl(fi.src)};var c=document.cookie.split(';');for(var i=0,ci;ci=c[i];i++){while(ci.charAt(0)==' ')ci=ci.slice(1);if(ci.length>40)ci=ci.slice(0,40)+'\u2026';cookies+=ci+'\n'};var lastmod=(Date.parse(document.lastModified)==0)?'':document.lastModified;var mode=document.getElementsByTagName('HTmL').length==0?'Really strict':(document.compatMode=='CSS1Compat'?'Normal strict':'Quirks');var title=document.title||(document.getElementsByTagName('title')[0]&&document.getElementsByTagName('title')[0].text)||'';if(meta)meta='\nMeta-данные:\n'+meta;if(scripts)scripts='\nСкрипты:\n'+scripts;if(embed)embed='\nВстроенные объекты:\n'+embed;if(iframes)iframes='\nIframes:\n'+iframes;if(cookies)cookies='\nCookies:\n'+cookies;alert('Идентификация браузера: '+navigator.userAgent+'\n\nЗаголовок: '+title+'\n\nАдрес: '+location.href+'\n\nРеферрер: '+document.referrer+'\n\nДата последнего изменения: '+lastmod+'\n\nРежим отображения: '+mode+' mode\n'+meta+scripts+embed+iframes+cookies)}], ["Исходный код (snapshot)", function(){var q=' ',C={img:1,br:1,link:1,input:1,hr:1,meta:1},u=false,v=0,D=1,g=window.document,m=window.location,w='resizable=yes,scrollbars=yes,location=no',h='</span></li>';var x=function(a){return'<span class=\'tag\'><'+a+''};var y=function(a){return(a?'/':'')+'></span>'};var z=function(a,b){if(b||C[a.toLowerCase()])return'';return'<span class=\'tag\'></'+a+'></span>'};var j=function(){var a=v.toString();while(a.length<3)a='0'+a;return'<li class=\'line'+(D&&((v++)&1)?' dark\'':'\'')+'><span>'};var n=function(a){return a.replace(/</g,'<').replace(/>/g,'>')};var E=function(a){var b=a.doctype,c='';if(b){c=j()+x('!DOCTYPE')+' <span class=\'attrDoc\'>'+b.nodeName+(b.publicId?' PUBLIC \''+b.publicId+'\'':'')+(b.systemId?'</span></span>'+h+j()+'<span class=\'tag\'><span class=\'attrDoc\'>'+q+'\''+b.systemId+'\'':'')+'</span>'+y()+h}return c};var F=function(a){var b=a.attributes,c=null,d='';for(var f=0;c=b[f];f++){if(c.specified&&c.value){d+=' <span class=\'attrTitle\'>'+c.name+'</span>=<span class=\'attrValue\'>\x22'+n(c.value.replace(/\t/g,q))+'\x22</span> '}}return d};var r=function(a){return n(a.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '))};var G=function(a){var b=0,c='';while(b<a){c+=q;b++}return c};var A=function(a,b,c){var d='',f=G(b++);switch(a.nodeType){case 1:{var i=a.childNodes,k=null;var s=(i.length==0)||(i.length==1&&i[0].nodeType==3);var t=u&&i.length==0;var l=j()+f+x(a.nodeName)+F(a)+y(t);if(!s)l+=h;for(var B=0;k=i[B];B++){l+=A(k,b,!s&&k.nodeType==3)}if(s){l+=(a.nodeName.toLowerCase()=='textarea'?n(a.value):'')+z(a.nodeName,t)+h}else{l+=j()+f+z(a.nodeName,t)+h}return l}case 3:{if((d=r(a))&&c){return j()+f+d+h}else{return d}}case 4:{d=r(a);return j()+f+'<span class=\'cdata\'><![CDATA[</span>'+d+'<span class=\'cdata\'>]]></span>'+h}case 8:{d=r(a);return j()+f+'<span class=\'comment\'><!--'+d+'--></span>'+h}}return a.nodeType};var H=function(a){var b,c='';if(a){var d=a.getSelection().getRangeAt(0),f=d.commonAncestorContainer;if(f.nodeType==3||f.nodeType==4)f=f.parentNode;b=f.cloneNode(false);b.appendChild(d.cloneContents());var i=d.startContainer,k=d.endContainer;if(i!=f.firstChild||(i.nodeType==3&&d.startOffset!=0))b.insertBefore(g.createTextNode('\u2026'),b.firstChild);if(k!=f.lastChild||(k.nodeType==3&&d.endOffset!=k.nodeValue.length))b.appendChild(g.createTextNode('\u2026'))}else{c=E(g);b=g.documentElement};c+=A(b,0);return c};var I=function(a){if(a&&a.getSelection){if(a.getSelection().toString())return a;for(var b=0,c,d;c=a.frames[b];b++){try{if(d=arguments.callee(c))return d}catch(e){}}}};var o=I(window);if(o){g=o.document;m=o.location;w+=',width=800,height=500,left=100,top=100'};u=/[a-z]/.test(g.documentElement.nodeName);var J='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((g.getElementsByTagName('title').length&&n(g.getElementsByTagName('title')[0].text))||(m.protocol+'//'+m.host+m.pathname))+'</title><style type=\'text/css\'>body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}</style></head><body><ol id=\'content\'>'+H(o)+'</ol></body></html>';var p=window.open('about:blank','_blank',w);p.document.write(J);p.document.onkeydown=function(a){if(a.keyCode==27)p.close()};p.document.close()}], //["Шахматы", function(){window.open('data:text/html;base64,PGh0bWw+PGhlYWQ+PHRpdGxlPkNoZXNzPC90aXRsZT48bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9zY2FyIFRvbGVkbyBHLiI+PG1ldGEgbmFtZT0ic2l0ZSIgY29udGVudD0iaHR0cDovL25hbm9jaGVzcy4xMTBtYi5jb20vY2hlc3M0Lmh0bWwiPjwvaGVhZD48Ym9keT48c2NyaXB0PnZhciBCLGkseSx1LGIsST1bXSxHPTEyMCx4PTEwLHo9MTUsTT0xZTQsbD1bNSwzLDQsNiwyLDQsMyw1LDEsMSwxLDEsMSwxLDEsMSw5LDksOSw5LDksOSw5LDksMTMsMTEsMTIsMTQsMTAsMTIsMTEsMTMsMCw5OSwwLDMwNiwyOTcsNDk1LDg0NiwtMSwwLDEsMiwyLDEsMCwtMSwtMSwxLC0xMCwxMCwtMTEsLTksOSwxMSwxMCwyMCwtOSwtMTEsLTEwLC0yMCwtMjEsLTE5LC0xMiwtOCw4LDEyLDE5LDIxXTtmdW5jdGlvbiBYKHcsYyxoLGUsUyxzKXt2YXIgdCxvLEwsRSxkLE89ZSxOPS1NKk0sSz03OC1oPDx4LHAsZyxuLG0sQSxxLHIsQyxKLGE9eT8teDp4O3lePTg7RysrO2Q9d3x8cyYmcz49aCYmWCgwLDAsMCwyMSwwLDApPk07ZG97aWYobz1JW3A9T10pe3E9byZ6Xnk7aWYocTw3KXtBPXEtLSYyPzg6NDtDPW8tOSZ6P1s1Myw0Nyw2MSw1MSw0Nyw0N11bcV06NTc7ZG97cj1JW3ArPWxbQ11dO2lmKCF3fHA9PXcpe2c9cXxwK2EtUz8wOlM7aWYoIXImKCEhcXxBPDN8fCEhZyl8fChyKzEmel55KT45JiZxfEE+Mil7aWYobT0hKHItMiY3KSlyZXR1cm4geV49OCxJW0ctLV09TyxLO0o9bj1vJno7RT1JW3AtYV0mejt0PXF8RS03P246KG4rPTIsNl55KTt3aGlsZShuPD10KXtMPXI/bFtyJjd8MzJdLWgtcTowO2lmKHMpTCs9KDEtcT9sWyhwLXAleCkveCszN10tbFsoTy1PJXgpL3grMzddK2xbcCV4KzM4XSoocT8xOjIpLWxbTyV4KzM4XSsobyYxNikvMjohIW0qOSkrKCFxPyEoSVtwLTFdXm4pKyEoSVtwKzFdXm4pK2xbbiY3fDMyXS05OSshIWcqOTkrKEE8Mik6MCkrIShFXnleOSk7aWYocz5ofHwxPHMmcz09aCYmTD56fGQpe0lbcF09bixJW09dPW0/KElbZ109SVttXSxJW21dPTApOmc/SVtnXT0wOjA7TC09WChzPmh8ZD8wOnAsTC1OLGgrMSxJW0crMV0sSj1xfEE+MT8wOnAscyk7aWYoIShofHxzLTF8Qi1PfGktbnxwLWJ8TDwtTSkpcmV0dXJuIFcoKSxHLS0sdT1KO0o9cS0xfEE8N3x8bXx8IXN8ZHxyfG88enx8WCgwLDAsMCwyMSwwLDApPk07SVtPXT1vO0lbcF09cjttPyhJW21dPUlbZ10sSVtnXT0wKTpnP0lbZ109OV55OjB9aWYoTD5OfHxzPjEmJkw9PU4mJiFoJiZNYXRoLnJhbmRvbSgpPC41KXtJW0ddPU87aWYocz4xKXtpZihoJiZjLUw8MClyZXR1cm4geV49OCxHLS0sTDtpZighaClpPW4sQj1PLGI9cH1OPUx9bis9Snx8KGc9cCxtPXA8Tz9nLTM6ZysyLElbbV08enxJW20rTy1wXXx8SVtwKz1wLU9dKT8xOjB9fX19d2hpbGUoIXImcT4yfHwocD1PLHF8QT4yfG8+eiYhciYmKytDKi0tQSkpfX19d2hpbGUoKytPPjk4P089MjA6ZS1PKTtyZXR1cm4geV49OCxHLS0sTitNKk0mJk4+LUsrMTkyNHxkP046MH1CPWk9eT11PTA7d2hpbGUoQisrPDEyMClJW0ItMV09QiV4P0IveCV4PDJ8QiV4PDI/NzpCL3gmND8wOmxbaSsrXXwxNjo3O2ZvcihhPSI8dGFibGUgY2VsbHNwYWNpbmc9MCBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+IixCPTA7Qjw4O0IrKylmb3IoYSs9Ijx0cj4iLGk9MjE7aTwyOTtpKyspYSs9Ijx0ZCB3aWR0aD02MCBoZWlnaHQ9NjAgb25jbGljaz1ZKCIrKEIqeCtpKSsiKSBpZD1vIisoQip4K2kpKyIgc3R5bGU9J2xpbmUtaGVpZ2h0OjUwcHg7Zm9udC1zaXplOjUwcHg7Ym9yZGVyOjJweCBzb2xpZCAiKyIjZTBlMGYwJyBiZ2NvbG9yPSMiKyhpK0ImMT8iZjBmIjoiYzBjIikrIjBmMCBhbGlnbj1jZW50ZXI+IjthKz0iPHRyPjx0ZCBjb2xzcGFuPTggYWxpZ249Y2VudGVyPjxzZWxlY3QgaWQ9dCBzdHlsZT0nZm9udC1zaXplOjIwcHgnPjxvcHRpb24+JiM5ODE5OzxvcHRpb24+Ijtkb2N1bWVudC53cml0ZShhKyImIzk4MjA7PG9wdGlvbj4mIzk4MjE7PG9wdGlvbj4mIzk4MjI7PC9zZWxlY3Q+PC90YWJsZT4iKTtmdW5jdGlvbiBXKCl7Qj1iO2ZvcihwPTIxO3A8OTk7cCs9cCV4LTg/MTozKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIrcCkuaW5uZXJIVE1MPSJceGEwXHUyNjVmXHUyNjVhXHUyNjVlXHUyNjVkXHUyNjVjXHUyNjViICBcdTI2NTlcdTI2NTRcdTI2NThcdTI2NTdcdTI2NTZcdTI2NTUiLmNoYXJBdChJW3BdJnopO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitwKS5zdHlsZS5ib3JkZXJDb2xvcj1wPT1CPyJyZWQiOiIjZTBlMGYwIn19VygpO2Z1bmN0aW9uIFkocyl7aT0oSVtzXV55KSZ6O2lmKGk+OCl7Yj1zO1coKX1lbHNlIGlmKEImJmk8OSl7Yj1zO2k9SVtCXSZ6O2lmKChpJjcpPT0xJihiPDI5fGI+OTApKWk9MTQtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zZWxlY3RlZEluZGV4Xnk7WCgwLDAsMCwyMSx1LDEpO2lmKHkpd2luZG93LnNldFRpbWVvdXQoIlgoMCwwLDAsMjEsdSwyLypwbHkqLyksWCgwLDAsMCwyMSx1LDEpIiwyNTApfX08L3NjcmlwdD48L2JvZHk+PC9odG1sPgo=','_blank','width=600,height=550,left=200,top=100')}], //["Tetris", function(){window.open('data:text/html;base64,PGh0bWw+DQoJPGhlYWQ+DQoJCTx0aXRsZT5UZXRyaXM8L3RpdGxlPg0KCQk8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Imh0dHA6Ly9lbGJlcnRmLmNvbS90ZXRyaXMvIj4NCgkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4jdGV0cmlzICp7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtmb250LXNpemU6MWVtO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Zm9udC1mYW1pbHk6J1RyZWJ1Y2hldCBNUycsVmVyZGFuYSxBcmlhbDtsaW5lLWhlaWdodDoxLjRlbTtsaXN0LXN0eWxlOm5vbmUgaW5zaWRlO21hcmdpbjowO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fSN0ZXRyaXN7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6LjVlbTt9I3RldHJpcyBhOmxpbmssI3RldHJpcyBhOmhvdmVyLCN0ZXRyaXMgYTphY3RpdmUsI3RldHJpcyBhOnZpc2l0ZWR7Y29sb3I6IzIwMjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30jdGV0cmlzIHN0cm9uZ3tmb250LXdlaWdodDpib2xkO30jdGV0cmlzIC5jbGVhcntjbGVhcjpib3RoO30jdGV0cmlzLXdyYXB7bWFyZ2luOi4yZW0gYXV0byAwIGF1dG87cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDo0NTZweDt9I3RldHJpcy13cmFwLWlubmVye2JvcmRlcjoycHggc29saWQgIzMxMzttYXJnaW4tYm90dG9tOi4yZW07fSN0ZXRyaXMtbWFpbiwjdGV0cmlzLW92ZXJsYXksI3RldHJpcy1zaWRle2hlaWdodDo2MDBweDt9I3RldHJpcy1tYWluLCN0ZXRyaXMtb3ZlcmxheXt3aWR0aDozMDBweDt9I3RldHJpcy1tYWlue2JhY2tncm91bmQ6IzIwMjtmbG9hdDpsZWZ0O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt9I3RldHJpcy1vdmVybGF5e3Bvc2l0aW9uOmFic29sdXRlO30jdGV0cmlzLW1lc3NhZ2V7Zm9udC1zaXplOjJlbTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fSN0ZXRyaXMtbWVzc2FnZSBwe2NvbG9yOiNGRkY7cGFkZGluZzouNWVtO30jdGV0cmlzLW1lc3NhZ2UgcCBzcGFue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi41ZW07Zm9udC1zdHlsZTppdGFsaWM7dGV4dC10cmFuc2Zvcm06bm9uZTt9I3RldHJpcy1zaWRle2JhY2tncm91bmQ6IzMxMztjb2xvcjojRkZGO2Zsb2F0OnJpZ2h0O3RleHQtYWxpZ246bGVmdDt3aWR0aDoxNTJweDt9I3RldHJpcy1zaWRlLWlubmVye3BhZGRpbmc6MTZweDt9I3RldHJpcy1zaWRlIGRse2NsZWFyOmJvdGg7fSN0ZXRyaXMtc2lkZSBkdHtmbG9hdDpsZWZ0O30jdGV0cmlzLXNpZGUgZGR7ZmxvYXQ6cmlnaHQ7Zm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjt9ZGQjdGV0cmlzLWxldmVsLGRkI3RldHJpcy1zY29yZXttYXJnaW4tYm90dG9tOjFlbTt9I3RldHJpcy1uZXh0e2JhY2tncm91bmQ6IzIwMjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTIwcHg7bWFyZ2luLWJvdHRvbToxZW07d2lkdGg6MTIwcHg7fSN0ZXRyaXMtbmV4dC1pbm5lcntwYWRkaW5nOjFlbTt9I3RldHJpcy1rZXlze2NvbG9yOiM5Nzk7Zm9udC1zaXplOi44ZW07bWFyZ2luLXRvcDoxZW07fTwvc3R5bGU+DQoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgdGV0cmlzPXticmlja1NpemU6MzAsYnJpY2tCb3JkZXJTaXplOjIsbWFpbldpbldpZHRoOjEwLG1haW5XaW5IZWlnaHQ6MjAsbGV2ZWxVcFNjb3JlOjE1MCxsZXZlbDoxLHNjb3JlOjAsc2luZ2xlczowLGRvdWJsZXM6MCx0cmlwbGVzOjAscXVhZHM6MCxicmlja3M6W10scGlsZTpbXSxwaWxlQW5pbUxpbmU6W10scGlsZUFuaW1Ecm9wOltdLGdhbWVTdGFydDp0cnVlLGdhbWVPdmVyOmZhbHNlLHBhdXNlZDpmYWxzZSxrZXlQcmVzc2VkOmZhbHNlLHNoYXBlQ291bnQ6MCxrZXlEcm9wOjMyLGtleUxlZnQ6Mzcsa2V5Um90YXRlOjM4LGtleVJpZ2h0OjM5LGtleURvd246NDAsa2V5UGF1c2U6MTksa2V5U3RvcDoyNyxpbml0OmZ1bmN0aW9uKCl7dGV0cmlzLm1haW5XaW49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRldHJpcy1tYWluIik7dGV0cmlzLm5leHRXaW49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRldHJpcy1uZXh0LWlubmVyIik7dGV0cmlzLm1lc3NhZ2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRldHJpcy1tZXNzYWdlIik7dGV0cmlzLm1lc3NhZ2UuaW5uZXJIVE1MPSI8cD5OZXcgZ2FtZSA8c3Bhbj5QcmVzcyBhbnkga2V5IHRvIHN0YXJ0PC9zcGFuPjwvcD4iO2RvY3VtZW50Lm9ua2V5ZG93bj10ZXRyaXMua2V5TGlzdGVuZXJ9LG5ld0dhbWU6ZnVuY3Rpb24oKXtmb3IodmFyIEI9MDtCPHRldHJpcy5tYWluV2luV2lkdGg7QisrKXtpZighdGV0cmlzLnBpbGVbQl0pe3RldHJpcy5waWxlW0JdPVtdfXRldHJpcy5waWxlQW5pbUxpbmVbQl09W107dGV0cmlzLnBpbGVBbmltRHJvcFtCXT1bXTtmb3IodmFyIEE9MDtBPHRldHJpcy5tYWluV2luSGVpZ2h0O0ErKyl7aWYodGV0cmlzLnBpbGVbQl1bQV0pe3RldHJpcy5tYWluV2luLnJlbW92ZUNoaWxkKHRldHJpcy5waWxlW0JdW0FdKX10ZXRyaXMucGlsZVtCXVtBXT1mYWxzZTt0ZXRyaXMucGlsZUFuaW1MaW5lW0JdW0FdPWZhbHNlO3RldHJpcy5waWxlQW5pbURyb3BbQl1bQV09ZmFsc2V9fXRldHJpcy5sZXZlbD0xO3RldHJpcy5zY29yZT0wO3RldHJpcy5zaW5nbGVzPTA7dGV0cmlzLmRvdWJsZXM9MDt0ZXRyaXMudHJpcGxlcz0wO3RldHJpcy5xdWFkcz0wO3RldHJpcy51cGRhdGVTY29yZSgpO3RldHJpcy5uZXdTaGFwZSgpfSxuZXdTaGFwZTpmdW5jdGlvbigpe3RldHJpcy5zaGFwZUNvdW50Kys7dGV0cmlzLnNoYXBlTnVtPXR5cGVvZiAodGV0cmlzLnNoYXBlTnVtTmV4dCkhPSJ1bmRlZmluZWQiP3RldHJpcy5zaGFwZU51bU5leHQ6TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjYpO3RldHJpcy5zaGFwZU51bU5leHQ9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjcpO3RldHJpcy5zaGFwZVJvdD10eXBlb2YgKHRldHJpcy5zaGFwZVJvdE5leHQpIT0idW5kZWZpbmVkIj90ZXRyaXMuc2hhcGVSb3ROZXh0Ok1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0KTt0ZXRyaXMuc2hhcGVSb3ROZXh0PU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0KTt0ZXRyaXMuc2hhcGVQb3NIb3I9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0ZXRyaXMubWFpbldpbldpZHRoLTYpKSszO3RldHJpcy5zaGFwZVBvc1Zlcj0tMTt0ZXRyaXMuZHJhd1NoYXBlKCk7dGV0cmlzLmRyYXdOZXh0KCk7dGV0cmlzLnNoYXBlTGFuZGVkPWZhbHNlO2NsZWFySW50ZXJ2YWwodGV0cmlzLmludHZhbCk7dGV0cmlzLmludHZhbD1zZXRJbnRlcnZhbCgidGV0cmlzLnRpbWVTdGVwKCkiLDIwMDAvdGV0cmlzLmxldmVsKX0sbmV3QnJpY2s6ZnVuY3Rpb24oQixELEEpe3ZhciBDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0Muc2V0QXR0cmlidXRlKCJzdHlsZSIsImJhY2tncm91bmQ6ICIrQisiOyBib3JkZXItY29sb3I6ICIrRCsiICIrQSsiICIrQSsiICIrRCsiOyBib3JkZXItd2lkdGg6ICIrdGV0cmlzLmJyaWNrQm9yZGVyU2l6ZSsicHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGhlaWdodDogIisodGV0cmlzLmJyaWNrU2l6ZS10ZXRyaXMuYnJpY2tCb3JkZXJTaXplKjIpKyJweDsgbGVmdDogMDsgdG9wOiAwOyB3aWR0aDogIisodGV0cmlzLmJyaWNrU2l6ZS10ZXRyaXMuYnJpY2tCb3JkZXJTaXplKjIpKyI7IHBvc2l0aW9uOiBhYnNvbHV0ZTsiKTtyZXR1cm4gQ30sZHJhd1NoYXBlOmZ1bmN0aW9uKCl7dmFyIEQ9MCxCPXRydWU7dGV0cmlzLmJyaWNrUG9zPVtdO2Zvcih2YXIgQT0wO0E8NDtBKyspe2Zvcih2YXIgRj0wO0Y8NDtGKyspe2lmKHRldHJpcy5icmlja0xpYlt0ZXRyaXMuc2hhcGVOdW1dW0EqNCtGK3RldHJpcy5zaGFwZVJvdCoxNl0pe3RldHJpcy5icmlja1Bvc1tEXT17aG9yOkYrdGV0cmlzLnNoYXBlUG9zSG9yLHZlcjpBK3RldHJpcy5zaGFwZVBvc1Zlcn07aWYodGV0cmlzLmNvbGxpc2lvbih0ZXRyaXMuYnJpY2tQb3NbRF0uaG9yLHRldHJpcy5icmlja1Bvc1tEXS52ZXIpKXtCPWZhbHNlfUQrK319fWlmKEImJiF0ZXRyaXMucGF1c2VkJiYhdGV0cmlzLmdhbWVPdmVyKXt2YXIgRT10ZXRyaXMuYnJpY2tzP3RldHJpcy5icmlja3Muc2xpY2UoMCk6ZmFsc2U7Zm9yKHZhciBDPTA7QzxEO0MrKyl7dGV0cmlzLmJyaWNrc1tDXT10ZXRyaXMubmV3QnJpY2sodGV0cmlzLmJyaWNrTGliW3RldHJpcy5zaGFwZU51bV1bNjRdLHRldHJpcy5icmlja0xpYlt0ZXRyaXMuc2hhcGVOdW1dWzY1XSx0ZXRyaXMuYnJpY2tMaWJbdGV0cmlzLnNoYXBlTnVtXVs2Nl0pO3RldHJpcy5icmlja3NbQ10ubnVtPXRldHJpcy5zaGFwZUNvdW50O3RldHJpcy5icmlja3NbQ10uc3R5bGUubGVmdD10ZXRyaXMuYnJpY2tQb3NbQ10uaG9yKnRldHJpcy5icmlja1NpemUrInB4Ijt0ZXRyaXMuYnJpY2tzW0NdLnN0eWxlLnRvcD10ZXRyaXMuYnJpY2tQb3NbQ10udmVyKnRldHJpcy5icmlja1NpemUrInB4In1mb3IodmFyIEM9MDtDPEQ7QysrKXt0ZXRyaXMubWFpbldpbi5hcHBlbmRDaGlsZCh0ZXRyaXMuYnJpY2tzW0NdKX1mb3IodmFyIEM9MDtDPEQ7QysrKXtpZihFW0NdJiZFW0NdLm51bT09dGV0cmlzLnNoYXBlQ291bnQpe3RldHJpcy5tYWluV2luLnJlbW92ZUNoaWxkKEVbQ10pfX10ZXRyaXMucHJldlNoYXBlUm90PXRldHJpcy5zaGFwZVJvdDt0ZXRyaXMucHJldlNoYXBlUG9zSG9yPXRldHJpcy5zaGFwZVBvc0hvcjt0ZXRyaXMucHJldlNoYXBlUG9zVmVyPXRldHJpcy5zaGFwZVBvc1Zlcjt0ZXRyaXMucHJldkJyaWNrUG9zPXRldHJpcy5icmlja1Bvcy5zbGljZSgwKX1lbHNle3RldHJpcy5zaGFwZVJvdD10ZXRyaXMucHJldlNoYXBlUm90O3RldHJpcy5zaGFwZVBvc0hvcj10ZXRyaXMucHJldlNoYXBlUG9zSG9yO3RldHJpcy5zaGFwZVBvc1Zlcj10ZXRyaXMucHJldlNoYXBlUG9zVmVyO3RldHJpcy5icmlja1Bvcz10ZXRyaXMucHJldkJyaWNrUG9zLnNsaWNlKDApfX0sZHJhd05leHQ6ZnVuY3Rpb24oKXt0ZXRyaXMubmV4dFdpbi5pbm5lckhUTUw9IiI7Zm9yKHZhciBBPTA7QTw0O0ErKyl7Zm9yKHZhciBCPTA7Qjw0O0IrKyl7aWYodGV0cmlzLmJyaWNrTGliW3RldHJpcy5zaGFwZU51bU5leHRdW0EqNCtCK3RldHJpcy5zaGFwZVJvdE5leHQqMTZdKXticmljaz10ZXRyaXMubmV3QnJpY2sodGV0cmlzLmJyaWNrTGliW3RldHJpcy5zaGFwZU51bU5leHRdWzY0XSx0ZXRyaXMuYnJpY2tMaWJbdGV0cmlzLnNoYXBlTnVtTmV4dF1bNjVdLHRldHJpcy5icmlja0xpYlt0ZXRyaXMuc2hhcGVOdW1OZXh0XVs2Nl0pO2JyaWNrLnN0eWxlLmxlZnQ9Qip0ZXRyaXMuYnJpY2tTaXplKyJweCI7YnJpY2suc3R5bGUudG9wPUEqdGV0cmlzLmJyaWNrU2l6ZSsicHgiO3RldHJpcy5uZXh0V2luLmFwcGVuZENoaWxkKGJyaWNrKX19fX0sY29sbGlzaW9uOmZ1bmN0aW9uKEIsQSl7aWYoQjwwKXtpZih0ZXRyaXMua2V5UHJlc3NlZD09dGV0cmlzLmtleVJvdGF0ZSl7aWYoIXRldHJpcy5jb2xsaXNpb24oQisxLEEpKXt0ZXRyaXMuc2hhcGVQb3NIb3IrKzt0ZXRyaXMuZHJhd1NoYXBlKCk7cmV0dXJuIHRydWV9ZWxzZXt0ZXRyaXMuc2hhcGVSb3QtLTtyZXR1cm4gdHJ1ZX19cmV0dXJuIHRydWV9aWYoQj49dGV0cmlzLm1haW5XaW5XaWR0aCl7aWYodGV0cmlzLmtleVByZXNzZWQ9PXRldHJpcy5rZXlSb3RhdGUpe2lmKCF0ZXRyaXMuY29sbGlzaW9uKEItMSxBKSl7dGV0cmlzLnNoYXBlUG9zSG9yLS07dGV0cmlzLmRyYXdTaGFwZSgpO3JldHVybiB0cnVlfWVsc2V7dGV0cmlzLnNoYXBlUm90LS07cmV0dXJuIHRydWV9fXJldHVybiB0cnVlfWlmKEE+PXRldHJpcy5tYWluV2luSGVpZ2h0KXtpZih0ZXRyaXMua2V5UHJlc3NlZCE9dGV0cmlzLmtleVJvdGF0ZSl7dGV0cmlzLnNoYXBlUG9zVmVyLS19dGV0cmlzLnNoYXBlTGFuZGVkPXRydWU7cmV0dXJuIHRydWV9aWYodGV0cmlzLnBpbGVbQl1bQV0pe2lmKHRldHJpcy5zaGFwZVBvc1Zlcj50ZXRyaXMucHJldlNoYXBlUG9zVmVyKXt0ZXRyaXMuc2hhcGVMYW5kZWQ9dHJ1ZX1yZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9LHRpbWVTdGVwOmZ1bmN0aW9uKCl7dGV0cmlzLnNoYXBlUG9zVmVyKys7dGV0cmlzLmRyYXdTaGFwZSgpO2lmKHRldHJpcy5zaGFwZUxhbmRlZCl7Zm9yKHZhciBFIGluIHRldHJpcy5icmlja3Mpe3RldHJpcy5waWxlW3RldHJpcy5icmlja1Bvc1tFXS5ob3JdW3RldHJpcy5icmlja1Bvc1tFXS52ZXJdPXRldHJpcy5icmlja3NbRV19dmFyIEM9MDtmb3IodmFyIEE9MDtBPHRldHJpcy5tYWluV2luSGVpZ2h0O0ErKyl7dmFyIEI9dHJ1ZTtmb3IodmFyIEY9MDtGPHRldHJpcy5tYWluV2luV2lkdGg7RisrKXtpZighdGV0cmlzLnBpbGVbRl1bQV0pe0I9ZmFsc2V9fWlmKEIpe0MrKztmb3IodmFyIEY9MDtGPHRldHJpcy5tYWluV2luV2lkdGg7RisrKXtpZih0ZXRyaXMucGlsZVtGXVtBXSl7dGV0cmlzLnBpbGVBbmltTGluZVtGXVtBXT10ZXRyaXMucGlsZVtGXVtBXTtzZXRUaW1lb3V0KCJ0ZXRyaXMubWFpbldpbi5yZW1vdmVDaGlsZCh0ZXRyaXMucGlsZUFuaW1MaW5lWyIrRisiXVsiK0ErIl0pOyIsRio1MCk7dGV0cmlzLnBpbGVbRl1bQV09ZmFsc2V9fWZvcih2YXIgRj0wO0Y8dGV0cmlzLm1haW5XaW5XaWR0aDtGKyspe2Zvcih2YXIgRD1BO0Q+MDtELS0pe2lmKHRldHJpcy5waWxlW0ZdW0RdKXt0ZXRyaXMucGlsZUFuaW1Ecm9wW0ZdW0RdPXRldHJpcy5waWxlW0ZdW0RdO3NldFRpbWVvdXQoInRldHJpcy5waWxlQW5pbURyb3BbIitGKyJdWyIrRCsiXS5zdHlsZS50b3AgPSAoICIrRCsiICsgMSApICogdGV0cmlzLmJyaWNrU2l6ZSArICdweCc7Iix0ZXRyaXMubWFpbldpbldpZHRoKjUwKTt0ZXRyaXMucGlsZVtGXVtEKzFdPXRldHJpcy5waWxlW0ZdW0RdO3RldHJpcy5waWxlW0ZdW0RdPWZhbHNlfX19fX10ZXRyaXMudXBkYXRlU2NvcmUoQyk7Zm9yKHZhciBGPTA7Rjx0ZXRyaXMubWFpbldpbldpZHRoO0YrKyl7aWYodGV0cmlzLnBpbGVbRl1bMF0pe3RldHJpcy5kb0dhbWVPdmVyKCk7cmV0dXJuIH19dGV0cmlzLm5ld1NoYXBlKCl9fSx1cGRhdGVTY29yZTpmdW5jdGlvbihBKXt2YXIgQj10ZXRyaXMuc2NvcmU7aWYoQSl7dGV0cmlzLnNjb3JlKz1BKkErQSoxMH1mb3IoaT1CO2k8dGV0cmlzLnNjb3JlO2krKyl7c2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RldHJpcy1zY29yZScpLmlubmVySFRNTCA9ICciK2krIic7IiwoaS1CKSoyMCl9dGV0cmlzLmxldmVsPU1hdGguZmxvb3IodGV0cmlzLnNjb3JlL3RldHJpcy5sZXZlbFVwU2NvcmUpKzE7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRldHJpcy1sZXZlbCIpLmlubmVySFRNTD10ZXRyaXMubGV2ZWw7aWYoQT09MSl7dGV0cmlzLnNpbmdsZXMrKztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV0cmlzLXNpbmdsZXMiKS5pbm5lckhUTUw9dGV0cmlzLnNpbmdsZXN9aWYoQT09Mil7dGV0cmlzLmZsYXNoTWVzc2FnZSgnPHAgY2xhc3M9InRldHJpcy1kb3VibGUiPkRvdWJsZSE8L3A+Jyk7dGV0cmlzLmRvdWJsZXMrKztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV0cmlzLWRvdWJsZXMiKS5pbm5lckhUTUw9dGV0cmlzLmRvdWJsZXN9aWYoQT09Myl7dGV0cmlzLmZsYXNoTWVzc2FnZSgnPHAgY2xhc3M9InRldHJpcy1kb3VibGUiPlRyaXBsZSE8L3A+Jyk7dGV0cmlzLnRyaXBsZXMrKztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV0cmlzLXRyaXBsZXMiKS5pbm5lckhUTUw9dGV0cmlzLnRyaXBsZXN9aWYoQT09NCl7dGV0cmlzLmZsYXNoTWVzc2FnZSgnPHAgY2xhc3M9InRldHJpcy1kb3VibGUiPlRldHJpcyE8L3A+Jyk7dGV0cmlzLnF1YWRzKys7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRldHJpcy1xdWFkcyIpLmlubmVySFRNTD10ZXRyaXMucXVhZHN9fSxmbGFzaE1lc3NhZ2U6ZnVuY3Rpb24oQSl7dGV0cmlzLm1lc3NhZ2UuaW5uZXJIVE1MPUE7c2V0VGltZW91dCgidGV0cmlzLm1lc3NhZ2UuaW5uZXJIVE1MID0gJyc7IiwxMDAwKX0sZG9HYW1lT3ZlcjpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGV0cmlzLmludHZhbCk7dGV0cmlzLm1lc3NhZ2UuaW5uZXJIVE1MPSI8cD5HYW1lIG92ZXIgPHNwYW4+UHJlc3MgU3BhY2ViYXIgdG8gY29udGludWU8L3NwYW48L3A+Ijt0ZXRyaXMuZ2FtZU92ZXI9dHJ1ZX0sa2V5TGlzdGVuZXI6ZnVuY3Rpb24oQSl7aWYoIUEpe0E9d2luZG93LmV2ZW50fXRldHJpcy5rZXlQcmVzc2VkPUEua2V5Q29kZTtpZih0ZXRyaXMuZ2FtZVN0YXJ0KXt0ZXRyaXMuZ2FtZVN0YXJ0PWZhbHNlO3RldHJpcy5tZXNzYWdlLmlubmVySFRNTD0iIjt0ZXRyaXMubmV3R2FtZSgpfWVsc2V7aWYodGV0cmlzLmdhbWVPdmVyJiZBLmtleUNvZGU9PXRldHJpcy5rZXlEcm9wKXt0ZXRyaXMuZ2FtZU92ZXI9ZmFsc2U7dGV0cmlzLm1lc3NhZ2UuaW5uZXJIVE1MPSIiO3RldHJpcy5uZXdHYW1lKCl9ZWxzZXtpZighdGV0cmlzLmdhbWVPdmVyKXtpZihBLmtleUNvZGU9PXRldHJpcy5rZXlTdG9wfHxBLmtleUNvZGU9PXRldHJpcy5rZXlQYXVzZSl7dGV0cmlzLnBhdXNlZD0hdGV0cmlzLnBhdXNlZDtpZih0ZXRyaXMucGF1c2VkKXt0ZXRyaXMubWVzc2FnZS5pbm5lckhUTUw9IjxwPlBhdXNlZCA8c3Bhbj5QcmVzcyBFc2MgdG8gcmVzdW1lPC9zcGFuPC9wPiJ9ZWxzZXt0ZXRyaXMubWVzc2FnZS5pbm5lckhUTUw9IiJ9fWlmKCF0ZXRyaXMucGF1c2VkKXtpZihBLmtleUNvZGU9PXRldHJpcy5rZXlEcm9wKXtjbGVhckludGVydmFsKHRldHJpcy5pbnR2YWwpO3RldHJpcy5pbnR2YWw9c2V0SW50ZXJ2YWwoInRldHJpcy50aW1lU3RlcCgpIiwyMCl9aWYoQS5rZXlDb2RlPT10ZXRyaXMua2V5TGVmdCl7dGV0cmlzLnNoYXBlUG9zSG9yLS07dGV0cmlzLmRyYXdTaGFwZSgpfWlmKEEua2V5Q29kZT09dGV0cmlzLmtleVJvdGF0ZSl7dGV0cmlzLnNoYXBlUm90PSh0ZXRyaXMuc2hhcGVSb3QrMSklNDt0ZXRyaXMuZHJhd1NoYXBlKCl9aWYoQS5rZXlDb2RlPT10ZXRyaXMua2V5UmlnaHQpe3RldHJpcy5zaGFwZVBvc0hvcisrO3RldHJpcy5kcmF3U2hhcGUoKX1pZihBLmtleUNvZGU9PXRldHJpcy5rZXlEb3duKXt0ZXRyaXMuc2hhcGVQb3NWZXIrKzt0ZXRyaXMuZHJhd1NoYXBlKCl9fX19fXJldHVybiB0cnVlfSxicmlja0xpYjp7MDpbMSwwLDAsMCwxLDAsMCwwLDEsMSwwLDAsMCwwLDAsMCwxLDEsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwxLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDEsMSwxLDAsMCwwLDAsMCwiI0Y5MCIsIiNGQzAiLCIjRjYwIl0sMTpbMCwxLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDEsMSwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCwwLDAsMCwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMCwiI0MwMCIsIiNFMDAiLCIjQjAwIl0sMjpbMSwxLDAsMCwxLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwxLDEsMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMSwxLDAsMCwwLDAsMCwiIzBDMCIsIiMwRTAiLCIjMEEwIl0sMzpbMSwwLDAsMCwxLDEsMCwwLDEsMCwwLDAsMCwwLDAsMCwxLDEsMSwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwxLDEsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDEsMSwxLDAsMCwwLDAsMCwiIzAwQyIsIiMwMEUiLCIjMDBBIl0sNDpbMSwxLDAsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDAsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwxLDAsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwiIzYwQyIsIiM4MEUiLCIjNDBBIl0sNTpbMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMSwxLDAsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDEsMCwwLDAsMSwwLDAsMCwwLDAsMCwiI0NDQyIsIiNFRUUiLCIjQUFBIl0sNjpbMSwxLDAsMCwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDEsMSwwLDAsMSwwLDAsMCwwLDAsMCwwLDEsMSwwLDAsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwxLDEsMCwwLDEsMCwwLDAsMCwwLDAsMCwiI0NDMCIsIiNFRTAiLCIjQUEwIl19LH07d2luZG93Lm9ubG9hZD10ZXRyaXMuaW5pdDs8L3NjcmlwdD4NCgk8aGVhZD4NCgk8Ym9keT4NCgkJPGRpdiBpZD0idGV0cmlzIj4NCgkJCTxkaXYgaWQ9InRldHJpcy13cmFwIj4NCgkJCQk8ZGl2IGlkPSJ0ZXRyaXMtd3JhcC1pbm5lciI+DQoJCQkJCTxkaXYgaWQ9InRldHJpcy1tYWluIj4JCQ0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBpZD0idGV0cmlzLW92ZXJsYXkiPg0KCQkJCQkJPGRpdiBpZD0idGV0cmlzLW1lc3NhZ2UiPjwvZGl2Pg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBpZD0idGV0cmlzLXNpZGUiPg0KCQkJCQkJPGRpdiBpZD0idGV0cmlzLXNpZGUtaW5uZXIiPg0KCQkJCQkJCTxkaXYgaWQ9InRldHJpcy1uZXh0Ij4NCgkJCQkJCQkJPGRpdiBpZD0idGV0cmlzLW5leHQtaW5uZXIiPjwvZGl2Pg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJCTxkaXYgaWQ9InRldHJpcy1zY29yZXMiPg0KCQkJCQkJCQk8ZGw+DQoJCQkJCQkJCQk8ZHQ+TGV2ZWw6PC9kdD4NCgkJCQkJCQkJCTxkZCBpZD0idGV0cmlzLWxldmVsIj4xPC9kZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0PlNjb3JlOjwvZHQ+DQoJCQkJCQkJCQk8ZGQgaWQ9InRldHJpcy1zY29yZSI+MDwvZGQ+DQoJCQkJCQkJCTwvZGw+DQoJCQkJCQkJCTxkbD4NCgkJCQkJCQkJCTxkdD5TaW5nbGVzOjwvZHQ+DQoJCQkJCQkJCQk8ZGQgaWQ9InRldHJpcy1zaW5nbGVzIj4wPC9kZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0PkRvdWJsZXM6PC9kdD4NCgkJCQkJCQkJCTxkZCBpZD0idGV0cmlzLWRvdWJsZXMiPjA8L2RkPg0KCQkJCQkJCQk8L2RsPg0KCQkJCQkJCQk8ZGw+DQoJCQkJCQkJCQk8ZHQ+VHJpcGxlczo8L2R0Pg0KCQkJCQkJCQkJPGRkIGlkPSJ0ZXRyaXMtdHJpcGxlcyI+MDwvZGQ+DQoJCQkJCQkJCTwvZGw+DQoJCQkJCQkJCTxkbD4NCgkJCQkJCQkJCTxkdD5UZXRyaXM6PC9kdD4NCgkJCQkJCQkJCTxkZCBpZD0idGV0cmlzLXF1YWRzIj4wPC9kZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJCTxkaXYgaWQ9InRldHJpcy1rZXlzIj4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0Pk1vdmU6PC9kdD4NCgkJCQkJCQkJCTxkZD4mbGFycjsgJmRhcnI7ICZyYXJyOzxkZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0PlJvdGF0ZTo8L2R0Pg0KCQkJCQkJCQkJPGRkPiZ1YXJyOzxkZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0PkRyb3A6PC9kdD4NCgkJCQkJCQkJCTxkZD5TcGFjZWJhcjxkZD4NCgkJCQkJCQkJPC9kbD4NCgkJCQkJCQkJPGRsPg0KCQkJCQkJCQkJPGR0PlBhdXplOjwvZHQ+DQoJCQkJCQkJCQk8ZGQ+UGF1emUvRXNjPGRkPg0KCQkJCQkJCQk8L2RsPg0KCQkJCQkJCQk8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+DQoJCQkJCQkJPC9kaXY+DQoJCQkJCQk8L2Rpdj4NCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQkJPC9kaXY+DQoJPC9ib2R5Pg0KPC9odG1sPg==','_blank','width=500,height=650,left=300,top=100')}], //["separator"], //["Искать логин на Login2",function(){window.open('http://login2.me/#'+location.hostname,'login2.me_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на Loginz",function(){window.open('http://loginz.org/view/'+location.hostname,'loginz_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на ByPass",function(){window.open('https://bypass.org.ru/login/'+location.hostname,'bypass_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["Искать логин на BugMeNot",function(){window.open('http://bugmenot.com/view/'+location.hostname,'bugmenot_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], //["separator"], //["Показать ссылки на Flash/Video", function(){var getVideo=function(flashvars,src){var getLink=function(s){var a=s.match(/[^\s\x22=&?]+\.[^\s\x22=&?\/]*(flv|mp4)/i);return a?a[0]:''};var getQuery=function(s,q){var a=s.match(new RegExp('(^|[&?])'+q+'=([^&]+)'));return a?a[2]:''};var getJson=function(s,q){var a=s.match(new RegExp('\x22'+q+'\x22:\\s*(\x22.+?\x22)'));return a?eval(a[1]):''};var getURL=function(f,s){return f.match(/^(\w+:\/\/|\/|$)/)?f:s.replace(/[#?].*$/,'').replace(/[^\/]*$/,f)};var decodeURL=function(s){try{return decodeURIComponent(s)}catch(e){return unescape(s)}};var q='',url=location.href,flv=decodeURL(flashvars);if(url.indexOf('youtube.com/watch?')!=-1&&(q=getQuery(flv,'url')))return decodeURL(q)+'&signature='+getQuery(flv,'sig')+'&title='+encodeURIComponent(document.title);if(url.indexOf('video.google.com/videoplay?')!=-1&&(q=getQuery(src,'videoUrl')))return decodeURL(q);if(url.indexOf('metacafe.com/watch/')!=-1&&(q=getJson(flv,'mediaURL')))return q+'?__gda__='+getJson(flv,'value');if(url.indexOf('dailymotion.com/')!=-1&&(q=getJson(flv,'hqURL')||getJson(flv,'sdURL')))return q;if(url.indexOf('www.break.com/')!=-1&&(q=getQuery(flv,'videoPath')))return q+'?'+getQuery(flv,'icon');if(url.indexOf('my-hit.ru/film/')!=-1&&(q=getLink(flv)))return q+'?start=0&id='+getQuery(flv,'id');return getURL(getLink(flv)||decodeURL(getLink(src)),src)};var createLink=function(url,txt){var oLnk=document.createElement('a');oLnk.setAttribute('href',url);oLnk.setAttribute('style','display:inline;margin:0;padding:0;font:14px Times New Roman;text-decoration:underline;text-transform:none;');oLnk.appendChild(document.createTextNode(txt));return oLnk};var showLink=function(oEle,src,flv){var cName='ujs_downlink';var p=oEle.previousSibling;if(p&&p.className==cName){oEle.parentNode.removeChild(p);return};if(src){var oDiv=document.createElement('div');oDiv.setAttribute('style','display:block;position:static;float:none;margin:0;padding:0;width:auto;height:auto;font:14px Times New Roman;color:#555;z-index:999;');oDiv.className=cName;oDiv.appendChild(createLink(src,'Download'));var v=getVideo(flv,src);if(v){oDiv.appendChild(document.createTextNode(' ('));oDiv.appendChild(createLink(v,'Video'));oDiv.appendChild(document.createTextNode(')'))};oEle.parentNode.insertBefore(oDiv,oEle)}};var getParam=function(e,n){var v='',r=new RegExp('^('+n+')$','i');var param=e.getElementsByTagName('param');for(var i=0,p;p=param[i];i++){if(r.test(p.getAttribute('name'))){v=p.getAttribute('value');break}};return v};var searchEmbed=function(w){if(!w)return;var obj=w.document.getElementsByTagName('object');for(var i=0,oi;oi=obj[i];i++){if(oi.parentNode)showLink(oi,oi.getAttribute('data')||oi.getAttribute('src')||getParam(oi,'movie|data|src|code|filename|url')||(oi.getElementsByTagName('embed').length&&oi.getElementsByTagName('embed')[0].getAttribute('src')),getParam(oi,'flashvars'))};var em=w.document.getElementsByTagName('embed');for(var i=0,ei;ei=em[i];i++){if(ei.parentNode&&ei.parentNode.nodeName.toLowerCase()!='object')showLink(ei,ei.getAttribute('src'),ei.getAttribute('flashvars'))};for(var j=0,f;f=w.frames[j];j++){try{arguments.callee(f)}catch(e){}}};searchEmbed(window)}], //["Набрать сообщение в форме", function(){window.open('http://southron4965.ucoz.ru/files/Opera_LE/html/forma.html')}], //["separator"], ["Искать страницу в кэше Google",function(){window.open('http://www.google.com/search?q=cache:'+location.href)}], ["Искать страницу на Archive.org",function(){window.open('http://web.archive.org/web/*/'+location.href)}], ["separator"], ["Посмотреть отзывы о сайте в WOT",function(){window.open('https://www.mywot.com/ru/scorecard/'+location.hostname)}], ["Информация о сервере (netcraft)",function(){window.open('http://toolbar.netcraft.com/site_report?url='+location.hostname)}], ["Проверить доступность сайта через isitdownrightnow.com",function(){window.open('http://www.isitdownrightnow.com/downorjustme.php?url='+location.hostname,'DownForMe_'+location.hostname,'width=600,height=400,left=100,top=100,scrollbars=yes,location=no')}], ["Узнать, кому принадлежит домен через Domaintools",function(){window.open('http://whois.domaintools.com/'+location.hostname)}], ["Узнать, кому принадлежит домен через Reg.ru",function(){window.open('https://www.reg.ru/whois/?dname='+location.hostname)}], ["separator"], ["Проверить с помощью Dr.Web Online",function(){window.open('http://online.drweb.com/result?url='+escape(location.href),'DrWeb_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["Проверить с помощью AntiMalware Online",function(){window.open('http://antivirus-alarm.ru/proverka/?url='+escape(location.href),'AntiMalware_'+location.href,'width=640,height=400,left=200,top=100,scrollbars=yes,location=no')}], ["separator"], ["Settings","document.getElementById('menu_preferences').click();"], ["Переключить стиль на странице", "getMarkupDocumentViewer().authorStyleDisabled ? gPageStyleMenu.switchStyleSheet('') : gPageStyleMenu.disableStyle()"], ["Night - ночной стиль", ()=>{ var night=function(w){(function(d){var css='html{background:#333 !important}html *{background:none !important;color:#bbb !important;border-color:#333 !important;border-width:0 !important}html a,html a *{color:#5c8599 !important;text-decoration:underline !important}html a:visited,html a:visited *,html a:active,html a:active *{color:#525f66 !important}html a:hover,html a:hover *{color:#cef !important;background:#023 !important}html input,html select,html button,html textarea{background:#4d4c40 !important;border:1px solid #5c5a46 !important;border-top-color:#474531 !important;border-bottom-color:#7a7967 !important}html input[type=button],html input[type=submit],html input[type=reset],html input[type=image],html button{border-top-color:#7a7967 !important;border-bottom-color:#474531 !important}html input:focus,html select:focus,html option:focus,html button:focus,html textarea:focus{background:#5c5b3e !important;color:#fff !important;border-color:#474100 #665d00 #7a7849 !important;outline:2px solid #041d29 !important}html input[type=button]:focus,html input[type=submit]:focus,html input[type=reset]:focus,html input[type=image]:focus,html button:focus{border-color:#7a7849 #665d00 #474100 !important}html input[type=radio]{background:none !important;border-color:#333 !important;border-width:0 !important}html img[src],html input[type=image]{opacity:.5}html img[src]:hover,html input[type=image]:hover{opacity:1}html,html body{scrollbar-base-color:#4d4c40 !important;scrollbar-face-color:#5c5b3e !important;scrollbar-shadow-color:#5c5b3e !important;scrollbar-darkshadow-color:#474531 !important;scrollbar-track-color:#4d4c40 !important;scrollbar-arrow-color:#000 !important;scrollbar-3dlight-color:#7a7967 !important}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window) }], ["Сохранить как PDF",function(){window.open('http://www.web2pdfconvert.com/engine?cURL='+escape(location.href)+'&title='+escape(document.title)+'&ref=bookmarklet')}], ["Удалить куки текущего сайта", "deleteCookiesFromHost()"],]; //----------------------------------------------------------------------- ((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "- Links -"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [ ["Поиск по текущему сайту",function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}] ]; //----------------------------------------------------------------------- var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(m=> {if ( m[0] == "separator" ) { menuPopup.appendChild(document.createElement("menuseparator")); return }; var mItem = menuPopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); typeof(m[1]) == "string" ? mItem.addEventListener("command", ()=> eval(m[1])) : mItem.addEventListener("command", ()=> content.location.href = "javascript:(" + encodeURI(m[1]) + ")()");}); //---// //---// //---// // Удалить куки базового домена ............. function deleteCookiesFromHost() {var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); //удалить обычные куки домена for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) {var cookie = en.getNext().QueryInterface(Ci.nsICookie);~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false);} //удалить куки домена из истории var reversedDomain = host.split("").reverse().join("") + ".";Cu.import("resource://gre/modules/FileUtils.jsm");var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file);dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\"");dbConn.close(); //удалить все Flash куки var dir = Services.dirsvc.get('Home', Ci.nsIFile);dir.append("Application Data");dir.append("Macromedia");dir.remove(true);dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);}; })(document.getElementById("contentAreaContextMenu"), "context-inspect"); //---// //---// //---// 28-07-2017 11:38:30 Мм еще эта кнопка интересная Забрал с NewTabFromUrlBar (вот реально зачем столько кнопок когда можно все уместить в одну...). Не всегда удобно, можно через "Ctrl" тоже самое делать, когда вам это надо. NewTabFromUrlBar Выделить код Код://======================================================================================= //[+++] Открывать адрес из адресной строки в новой вкладке, от 07.03.2017. ................. (()=> {var src = "gURLBar.handleCommand = " + gURLBar.handleCommand.toString(), res = src.replace('altEnter)','true)').replace('if (isMouseEvent)','if (false)').replace('altEnter ? "tab" : "current"','"tab"');eval(res);addDestructor(()=>eval(src));})(); //======================================================================================= 09-08-2017 13:17:40 difabor Спасибо тебе. У меня uBlockOrigin пробовал в белый список, что-то не добавляет... может он блокирует всплывающие окна? не пойму разбираюсь... difabor uBlockOrigin это тоже что и Adblock Plus, режет рекламу. |
difabor > 27-07-2017 22:57:33 |
bunda1 пишет
У меня тоже закрывается Я пытался "поиграться" с data:text/html : |
xrun1 > 28-07-2017 11:12:25 |
difabor скрытый текст ![]() |
difabor > 28-07-2017 21:13:31 |
xrun1 пишет
И у меня точно также. 28-07-2017 21:33:20 |
villa7 > 29-07-2017 03:17:36 |
difabor > 29-07-2017 04:27:53 |
Gladius333 пишет
Однако никак не пойму - причём здесь я? Я не знаю что такое uBlockOrigin 29-07-2017 04:30:37 bunda1 пишет
Уважаемый bunda1, |
xrun1 > 29-07-2017 12:29:50 |
difabor difabor пишет
Вот и я о том же мечтаю. |
difabor > 29-07-2017 13:22:21 |
xrun1 пишет
У меня отключение Adblock Plus 2.9.1 позволило открыть шахматы. 29-07-2017 13:26:15 Gladius333 пишет
Спасибо, |
villa7 > 29-07-2017 13:57:00 |
difabor |
difabor > 29-07-2017 14:15:30 |
villa7 пишет
Возможно... Если бы я знал какое правило и как его отключают |
okkamas_knife > 29-07-2017 14:45:07 |
а ПКМ по значку адблока никак не сделать? |
Gladius333 > 29-07-2017 15:17:20 |
Прошу обратить внимание, на сообщение под номером №1733.... 2 день а никакого ответа... Вообще один модер мало для такого большого форума, где везде надо править код, и стили, и кнопки... когда я первый раз написал сюда, думал не он один будет помогать. По идее там не так сложно просто меню сделать а коды я достану из кнопок, которые не пойму напишу сюда, хотя думаю ответ будет 2-3 недели. |
xrun1 > 29-07-2017 20:03:08 |
difabor
Дело в том, что свой основной профиль не меняю очень давно, 3 года точно - стили, скрипты, дополнения, кнопки. Изменения бывают косметические и на функционал никак не влияют. Но последние пару версий скрытый текст ![]() ![]() Ещё непонятный глюк: чтобы просмотреть видео, надо включить dom.workers.enabled на sportbox.ru (спасибо turbot за кнопку Быстрое переключение параметров about:config). Вот, например, ссылка. Не всегда воспроизводится видео на mail.ru, youtube стал глючить. media.autoplay.enabled туды-сюды на разных сайтах приходится переключать... Приходится держать открытым запасной браузер... А тут ещё и шахматы отвалились! ![]() |
difabor > 29-07-2017 20:57:16 |
okkamas_knife пишет
Спасибо, okkamas_knife, |
Ultima2m > 30-07-2017 08:12:53 |
Есть кнопка, в справке которой вот такой стиль скрытый текст Выделить код Код:@-moz-document url-prefix(http), url-prefix(file) { html:before { position: fixed !important; z-index: 999999999 !important; display: block !important; width: 100% !important; height: 100% !important; background: rgba(0, 0, 0, 0.5) !important; content: "" !important; pointer-events: none !important; }} Можно ли добавить в инициализацию код, чтобы колесиком мыши на кнопке менять параметр 0.5 в строке background: rgba? |
villa7 > 30-07-2017 22:17:04 |
Ultima2m |
Ultima2m > 31-07-2017 06:46:46 |
villa7 пишет
У меня эта кнопка есть. Включает свет, выключает. |
oleg.sgh > 31-07-2017 08:10:11 |
Ultima2m |
bunda1 > 31-07-2017 10:47:02 |
Gladius333 пишет
Конечно можно, только я не понял что именно требуется. |
Gladius333 > 31-07-2017 12:06:02 |
bunda1 пишет
Второй вариант с подменю, а первый можно как пример? я его сохраню чтобы потом не задавать вопрос. |
bunda1 > 31-07-2017 13:45:29 |
Все равно не понял что именно требуется, но вот пример: Выделить код Код:((contextMenu, el)=> { var menu = document.createElement("menu"); menu.setAttribute("label", "дополнительно"); menu.setAttribute("id", "context-ext-addon"); contextMenu.insertBefore(menu, contextMenu.children[el]); addDestructor(()=> menu.remove() ); var array = [ ["дополнительно1"], ["Искать логин на Login2",function(){window.open('http://login2.me/#'+location.hostname,'login2.me_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], ["Искать логин на Loginz",function(){window.open('http://loginz.org/view/'+location.hostname,'loginz_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], ["Искать логин на ByPass",function(){window.open('https://bypass.org.ru/login/'+location.hostname,'bypass_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], ["Искать логин на BugMeNot",function(){window.open('http://bugmenot.com/view/'+location.hostname,'bugmenot_'+location.hostname,'width=500,height=400,left=500,top=100,scrollbars=yes,location=no')}], ["separator"], ["Набрать сообщение в форме", function(){window.open('http://southron4965.ucoz.ru/files/Opera_LE/html/forma.html')}], ["Искать страницу на Archive.org",function(){window.open('http://web.archive.org/web/*/'+location.href)}], ["дополнительно2"], ["Посмотреть отзывы о сайте в WOT",function(){window.open('https://www.mywot.com/ru/scorecard/'+location.hostname)}], ["Информация о сервере (netcraft)",function(){window.open('http://toolbar.netcraft.com/site_report?url='+location.hostname)}], ["Проверить доступность сайта через isitdownrightnow.com",function(){window.open('http://www.isitdownrightnow.com/downorjustme.php?url='+location.hostname,'DownForMe_'+location.hostname,'width=600,height=400,left=100,top=100,scrollbars=yes,location=no')}], ["separator"], ["Узнать, кому принадлежит домен через Domaintools",function(){window.open('http://whois.domaintools.com/'+location.hostname)}], ["Узнать, кому принадлежит домен через Reg.ru",function(){window.open('https://www.reg.ru/whois/?dname='+location.hostname)}], ["дополнительно3"], ["Удалить куки текущего сайта", "deleteCookiesFromHost()"], ["Искать страницу в кэше Google",function(){window.open('http://www.google.com/search?q=cache:'+location.href)}], ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); var subMenu, subMenupopup; array.forEach(m=> { if ( m.length == 1 && m[0] != "separator" ) { subMenu = menuPopup.appendChild(document.createElement("menu")); subMenu.setAttribute("label", m[0]); subMenupopup = subMenu.appendChild(document.createElement("menupopup")); return; } if ( m[0] == "separator" ) { subMenupopup.appendChild(document.createElement("menuseparator")); return }; var mItem = subMenupopup.appendChild(document.createElement("menuitem")); mItem.setAttribute("label", m[0]); typeof(m[1]) == "string" ? mItem.addEventListener("command", ()=> eval(m[1])) : mItem.addEventListener("command", ()=> content.location.href = "javascript:(" + encodeURI(m[1]) + ")()"); }); function deleteCookiesFromHost() { var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) { var cookie = en.getNext().QueryInterface(Ci.nsICookie); ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); } var reversedDomain = host.split("").reverse().join("") + "."; Cu.import("resource://gre/modules/FileUtils.jsm"); var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file); dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\""); dbConn.close(); var dir = Services.dirsvc.get('Home', Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true); dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); }; })(document.getElementById("contentAreaContextMenu"), "context-inspect"); |
Gladius333 > 31-07-2017 18:04:02 |
bunda1 пишет
Да то что надо, мне скинули кое-что пока разбераюсь) спс! |
bunda1 > 31-07-2017 18:29:00 |
Gladius333 пишет
Куда поднимим |
Gladius333 > 31-07-2017 19:08:41 |
bunda1 пишет
Тоже самое только (где красные) и только одно подменю. скрытый текст ![]() |
oleg953 > 31-07-2017 21:02:23 |
bugmenot > 01-08-2017 15:31:29 |
Может ли кнопка узнать, посещалась ли ссылка или нет? Я в курсе, что псевдокласс :visited недоступен для проверки в целях безопасности, но локальное расширение по логике таких ограничений иметь не должно... |
yup > 01-08-2017 23:35:07 |
bugmenot пишет
Может-может. Причём не только - посещалась ли, но и когда именно. |
bugmenot > 02-08-2017 07:34:29 |
yup пишет
Уже отлично. А не подкинет ли многоуважаемый all кусочек кода на сию тему, чтобы не раскапывать это в расширениях?.. |
yup > 02-08-2017 12:41:44 |
bugmenot |
bugmenot > 02-08-2017 20:13:51 |
Расковырял-таки расширение и собрал вот такой код. скрытый текст Выделить код Код:var iosvc = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var query = PlacesUtils.history.getNewQuery(); var queryOptions = PlacesUtils.history.getNewQueryOptions(); queryOptions.includeHidden = true; queryOptions.maxResults = 1; queryOptions.resultType = queryOptions.RESULTS_AS_VISIT; queryOptions.sortingMode = queryOptions.SORT_BY_DATE_DESCENDING; var isVisited = function(link) { try { uri1 = iosvc.newURI(link, null, null); } catch (e if e.result == Components.results.NS_ERROR_MALFORMED_URI) { uri1 = null; } query.uri = uri1; var results = PlacesUtils.history.executeQuery(query, queryOptions).root; results.containerOpen = true; return results.hasChildren; } С одной стороны, работает, с другой, нет ли тут косяков и подводных камней, пропущенных по незнанию? |
yup > 03-08-2017 04:24:41 |
bugmenot пишет
1. Mozilla не рекомендует использовать конструкцию "catch (e if ...)". Выделить код Код:catch (e) { if e.result == Components.results.NS_ERROR_MALFORMED_URI) uri1 = null; } 2. Mozilla же рекомендует пользоваться асинхронными методами, а там это выглядит примерно так: Выделить код Код:var iosvc = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var asyncHistory = Components.classes["@mozilla.org/browser/history;1"].getService(Components.interfaces.mozIAsyncHistory); var uri = iosvc.newURI(link, null, null); asyncHistory.isURIVisited(uri, function(uri, isVisited) { if (isVisited) alert('visited') else alert('not visited'); }); В синхронном nsIGlobalHistory2 описана функция isVisited(), но, похоже, что это дело из |
bugmenot > 03-08-2017 08:18:30 |
2yup yup пишет
Да, сначала с нее и попытался начать. |
yup > 03-08-2017 11:48:43 |
bugmenot пишет
Но тотальный переход на WebExtensions уже вот-вот, а там history.search() - асинхронная. |
bugmenot > 03-08-2017 12:49:20 |
yup пишет
Да, придется. Спасибо еще раз. |
Gladius333 > 04-08-2017 22:05:45 |
bugmenot пишет
А что делает твоя кнопка? просто я вбил ничего не заметил, как она работает? |
bugmenot > 04-08-2017 23:18:27 |
Gladius333 пишет
Это не кнопка. Это функция, которой можно передать ссылку и узнать, есть она в истории или нет. А дальше как хочешь, так ее и применяй. |
mokujin > 12-08-2017 15:51:52 |
Привет. Сейчас это так(две абсолютно одинаковых ф-ции , различия только в id): скрытый текст Выделить код Код:// ----------------- Для расширения MediaSnifer\Video-Sniffer действия для кликов -------------------------------------------------------- (function() { addEventListener("click", function(e) { if(e.target.id != "mediasniffer") return; var file = Services.dirsvc.get('ProfD', Ci.nsIFile); var ref = ('"' + content.document.location + '"'); var domain = content.document.domain.replace(/^www./g,''); var url = ('"' + e.target.getAttribute("tooltiptext") + '"'); var title = convertFromUnicode("Windows-1251", gBrowser.mCurrentTab.label); switch (e.button) { // скачать через wget или aria case 0: e.preventDefault(); e.stopPropagation(); if ( domain == "xvideos.com" ) { var url=url.replace(/p\d+\.ts/ig, 'p\.m3u8'); } file.initWithPath(file.path + "\\Soft\\wget\\wgetfile.cmd"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url, title.replace(/(?:@|#|&|\\|\/|\.|,|\||\:)+/g,'').slice(0,65), ref], 3); break; // скопировать ссылку-подсказку case 1: var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); var tt = e.target.getAttribute("tooltiptext"); gClipboard.write( decodeURIComponent(tt) ); alertsService.showAlertNotification(e.target.image, null, "Скопировал ссылку Mediasniffer-a", false, "", null, ""); break; // Открыть в Smplayer case 2: // var param = "-add-to-playlist"; var url = e.target.getAttribute("tooltiptext"); var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\Soft\\PotPlayer\\PotPlayerMini.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [url, "/add"], 2 ); break; } }, false, document.getElementById("contentAreaContextMenu")); })(); // и ниже , точно тоже самое, только с разницей в // if(e.target.id != "video-sniffer") return; пробовал так сделать срабатывает только на первом id , для второго нет. |
yup > 12-08-2017 18:11:58 |
mokujin пишет
Да и на первом-то срабатывать не должно. или |
mokujin > 13-08-2017 05:37:10 |
блиииин... делал точно такуюж конструкцию, а заместо и(&&) писал или( || ) и не работало. |
Gladius333 > 20-08-2017 14:10:31 |
Можно добавить сюда, чтобы пойск закрывался и открывался с помощью "Ctrl+F". скрытый текст Выделить код Код:/*[+++] Задаем положение панели поиска наверху */ @-moz-document url("chrome://browser/content/browser.xul"),url("chrome://global/content/viewSource.xul") { :-moz-any(.browserContainer, #viewSource) .findbar-container > *, :-moz-any(.browserContainer, #viewSource) .findbar-container > *:not(spacer), :-moz-any(.browserContainer, #viewSource) :-moz-any(.findbar-find-previous, .findbar-find-next) {display: -moz-box;} :-moz-any(.browserContainer, #viewSource) .findbar-container :-moz-any(spacer, .findbar-find-fast[anonid="match-case-status"], .findbar-find-fast[anonid="entire-word-status"]) {visibility: collapse} :-moz-any(.browserContainer, #viewSource) .findbar-find-fast.findbar-find-status, .found-matches {-moz-box-ordinal-group: 0;margin:0 5px 0 -6px!important;} :-moz-any(.browserContainer, #viewSource) .findbar-button {margin:0 -1px!important;padding:0!important;max-width: 125px!important;} :-moz-any(.browserContainer, #viewSource) .findbar-closebutton {position: relative !important;right: 0 !important;margin: 0px -3px -5px 0px!important;} :-moz-any(.browserContainer, #viewSource) .findbar-textbox {height: 20px !important;font-size: medium !important;max-width: 170px!important;}.browserContainer findbar, #viewSource #FindToolbar {-moz-box-ordinal-group: 0;position: fixed !important;left: 5px;margin-top: -1px !important;box-shadow: 1px 2px 3px rgba(0, 0, 0, .25) !important;border: 1px solid threedshadow !important;border-top: none !important;border-radius: 0 0 9px 9px;transition-property: margin-top, opacity, visibility !important;} #viewSource #FindToolbar {background-color: -moz-dialog;color: -moz-dialogtext;} :-moz-any(.browserContainer, #viewSource) .findbar-find-status { color: inherit !important }} П.С. вот тут есть такая функция, но я чета не разобрался. скрытый текст Выделить код Код:var tipOrig1 = "ЛКМ: Вкл-Выкл панели поиска по странице"; var tips2 = ['ПКМ: Вкл-Выкл режима подсветки выделенного слова во всех вкладках','ПКМ: Выкл.подсветки "','Ожидание выделения текста для его подсветки во вкладках...']; // Подсказка для кнопки ........... function setTip() { var normLen = function(str) {return str.slice(0,40) + (str.length > 40 ? '..."' : '"')}; self.tooltipText = tipOrig1 + '\n' + tips2[state > 2 ? 1 : state] + ((state > 2 || state == 1) ? normLen(Services.prefs.getComplexValue("CB.autoHighlight.value", Ci.nsISupportsString).data) : ''); }; self.onclick = e => { if(e.button == 0)toggleFindbar(); if(e.button == 1)gShowPopup(self); if(e.button == 2 && e.target == self && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) { e.preventDefault(); e.stopPropagation(); if(!cbu.getPrefs("CB.autoHighlight.state")){ let selWord = getSelect(); if(!selWord){ // Нет выделенного cbu.setPrefs("CB.autoHighlight.state", 2); } else { handleSelect(selWord); setTimeout(()=> autoHighlight(true), 200); cbu.setPrefs("CB.autoHighlight.state", 1); } }else{ cbu.setPrefs("CB.autoHighlight.state", 0); }}}; function toggleFindbar() { if (gFindBar.hidden) { gFindBar.onFindCommand(); setTimeout(function() { gFindBar._find() }, 50) } else {gFindBar.close();setTimeout(()=> autoHighlight(true), 10)} }; self.ondblclick = e => {e.preventDefault()}; function keyDown(e) { if(e.keyCode == e.DOM_VK_F && e.ctrlKey && !e.altKey && !e.shiftKey){ e.preventDefault(); toggleFindbar(); } }; addEventListener("keydown", keyDown, false, getBrowser()); var imgOrig = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAACZElEQVR42mNgAIK/f/+GMvz69ct3yZIlyxjOnTt3BCTK8P///0Yw49ixY0eBnEAGbICdnf0/SCnvrl27nsBFz5492wuio6Oj/4NopoSExAygqmm/f/9G1R8bG/s9LCzsF9iMlNSU/5cuXcp7/fq1Q3Fx8c8XL17MgKsEuu7Rs2fP3IAKOaCYycrK6j+KcXfv3p0gLib+n5OT87+Xp+d/SSmp/0lJSb8Y8IHIyMjv6urqEJO+fPlStG3btpc3btzYjKHyzJkzF9rb2x++f//e/PDhwxNLS0pQ7Q8MDAS6638FjL9o0aLNr169aoIrcHR0/A8NXbAvdu/e3XT58uX5cAURERH/gcHXBZScCcRVKioq/3//+Z0MVwAUZE1ISPjDwcHxX1tb+7+goOB/Hh6e/z9//gzD6j1gmPuD9IHwp0+f8Cu6efNmG8waZaA7ztXV1f3Pycn5X1ZW9r8E6N3s7Oz/vb29/x8/frwU5AGspn3+8iW/sLDwf319/Y2vX7/WARX2Iss/eHA/ISUl5feUyZNBwWWMYQAwsp+DwvLNmzdOQAXC2Cw5fvx4qZub2/+LFy8uwZA8derURi0trf8rVqyYAzTAFIi9gdgdiD2A2AuILUuKS854AhPJ58+fU7B64/r16/P09fX/S0lJ/a2oqDiybt26tcuWLdsQHx9/SUxM7L+ysvJ/GRmZ/5mZmd+BGSgMZwoD2mbw6NHjqiNHjsw5efLk9A8fPqQANcQmJ6d8B0kLCAj8Z2Rk/B8dE/0LZzziAqCoi4qKAhsEMgREd3V1vWMgFQBd5Ddp0qTbwEzUCuIDAFDBb1F5m6ZWAAAAAElFTkSuQmCC"; var imgLockedSearch = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAACrUlEQVR42o2T30tTYRjHn/PuDM/mmh7RxjYzGiioiRR10UC8CUzzolmIOtAxpsQKc660i4LsqigIpUKxYqCgBu4PKOlmidpNxGA4QujC/IHr7MyUzXPYnt4dp8xZ0POBw8tzvu/3vM953odBBBrtUUilrgnuz26EcNgn0ewaDOEQKotgcFyyoQ2Bkk4wSjYTHJdnpAn9RiAwVlJX176pZD2rHkVut9uVLeRDy0d4TZFlWREcerhcHcZ4XAJIe7i6XdgR6UCrZMW+wT6MxV7spoWK2O8fTtbv1SOXgVCsViseCtKPSGRo13DSgBqNBpsaG9FoMmFPj+P4ubPD4Wg1Li5+2z+ULPfrAoGL+RUVO3JpabeQpTORUGi65OEb9YmB+ufkmRTMG7h315glWAObzYb3KZDB88mDOzsPfh8ckoiiCE8oXAbhtADRaL7qwIIYDAbo/dkLw5R+ynzDPJjNP6TDjyCq153OTuQ4Dqurq5HnedTpdJhMtkX/WiZiC0eIn0+vZblVJLn1M4w/kUq1RNNrUTyjzjhUsMvLj/mpqRArCAJotVp6SVIQj8fBYrHQn6ZNFBV5RIAEHjOUpDuxwUGilywS6G/qoZgtBi/lIG7sXge9twDOnz0Ht25PRgCW5CMGs7OvkpOTcyTyPgIhNgS/KLlhX7fDlmMLxscvJ8rKBqLZ70hNjSSHw2Go/FoJFspVSgPlCqWJconCzDCgUqnAZPq+l2tOyss9wtxcV3ypewlWT60CP8ZD7ZdaqApUAfuQhRXDCiy8XKDTEQSvFwoQ2zVHSjjahgvq7e26vM1NLcuygGbzhqxWJ8HthoLRUR8UFhZCLBaDzq42ePcWRUKm4/+8rrmR7q/TqeZ9vhnaSkYZ0pGRR8jsD/f/mewb2biJiRp9c/Mebe1T3R+cNmFDpJ/KUgAAAABJRU5ErkJggg=="; var imgReady = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAC5klEQVR42mNk+F/MkMhgepch/N+iO0uWLFnGsOTG7i9A0TNM0eouvQwgMP/S1i////8PBHOAMowgggEK2DmmGDMK/K8+P/OQhXa43YFLYNGzZ8+C9UZHR/8HGxaXkVIANGPa79+/wQrgZkSlvDb69f0nA9iMkLSXBnm5efmSkpKXWns69qlWeb/N5tv6EKxl8tr5v549e+YGNIYDipmsrKzA5oPtyA26cmkR67nFEuIS37m4uL57e3n9vf/gAUNC+gcjFDvRQVjCc6OLJ84yghVU/XYQ1zv0T+KHGu/XBNmtd5DUmTCuubLv2+3NJ19nZGSEXblyJWrTxo153d3/z8JUMC2tncxZUVExXVBQ8KStrW2+rp7elpavzlJwBR8+fGBgZGTsgPkC6NXznO/+ssEViIuLg4KvC8ieCMRFmZmZtQ9lfn+BK1i3XO7cxKlTSjk5OdN0dHRa3759yzCPL04+/p+xEFZvRv43EFjOFKsMYsf+XnyfCd3/yxkvfIj8t/guiK3wnosTbIIWgzh743UT5csrDnC+e/eOARiiDP/+/WP4/v07g5KSEoNAvPG7HOHtD78z/PmHbiBj2a+Nj3+XH5Dh4+O7WVZWtgyomR/o62KYggcP7ic0tbfNN9LRY1iRw3DjCMODrygGTFsz//fupZtYZs+e7SwsLHwRqPktui3Hjx8vra+v7/KalfuuQP7AfWQ5pn86Il9v3rzJsGfPniggXwkY1t5A7A7EHkDsBcSWa9esDWdmZma4LfXjM7rhTDnqB+6k7u5+297eniwlK3OqEgjWr1+ftnz58oyEhIQOYDwdW79hvfHly5cZfpXsl0v4Dwl+uBeQo8GSQZ7L7qMMP9fLX+z/WRj/v5Jh/PoXSP/I3iW/cMZsRgEBAYaPHz8yRMRH/2eb6/VgIdPZdziTKzoAxe+/pB1KKxcsBQYTUNv//wyNEzv+ggwAyRNlCAhE/NcX0Fj4Ruafr+L7JuEjkgA5RWMpXs0CsgAAAABJRU5ErkJggg=="; var imgReadySearch = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAC1UlEQVR42o2SbUhTURjHn3MdOqftJaVZzLRJmZukOZP0g/olNKVgJqmJOSVL1AQzDSyJ+SXBT5JEWmFmZYJGKVIo4bCJGZq1FSm5nGSJZtetnHO77Z7uvanoJOj/+3DPee5z/ufleRDgcsiDQybIoO9NFumLMNwf71tioiOgxVrMDZoNPUtqrGYmwAUQF12VF79BhcT48ljjwGFlRrzOwEXLZsq45OzsbG4J0ZvWBzcYKIriEtY9Tp35HuW0O4DzSD87F7l8bRnMQjPEVMfA3qrjC8XCnmluyfXOZmeCIwHzVyEY4uLi/p6R3eN82nvD0Z8V8yKpCJAAQXJKEkyZzaA5Z4natKe7Tmpmo969GkVcQhWVKD0wQAes7Ntm0wT2TG7IiyY6PqQqXLf1srrEGt4b6omoogKpNiSMILVajUMfh0ItA/cQ/WXgF3Nk9orPi2/snLBYLNxP/ipkEAnepMtzzYKQSqVQ+rUU6hkuMAwmDcK0jFpa38QTV46ezs/DfD4fK5VKLJFIsK+vL851Pfy8pTyssnCkuI3ICWHHOVTrFOF+/zb01pJFt5rYcfCiwJtzUIDUS/sxOsT4SOdNkiQIBAKgaRrsdjvI5XIQ56rIEr9n03b4Tbsbokrn0y/UJZ3MKXeCsFAI/jx/KGdYU7rtBAjLRRAVfhAelcC4Hsy2jQZEcBcZYGZqZyg0QBOvadNiVh0+neC46oCu7m5Inw7e4X4Cgg73t01MTEDYWBjIGVIZkhiSGVIYYhlQOwIPDw/4tGvl1xaDklDdZEFf3Y/hgmGYCZwBSaMEIl5HgOKlAnjVPDBJTTDUMARGoxGcF/t3a7Bq+6Y32FiGWAgSxFtlIsGc0wvzEJ6XIZuL+a4U9wa13LyFxGIxWK1WyMzNxp53UswtxCj5z3Z1F1tfOv+5vP3uA4TYJsYYtPW1LtaA60r4T2XiCPH+lgUZfWzPYo2ffucfIF9BRWk+aooAAAAASUVORK5CYII="; // Обработчик следит за загрузкой и переключением вкладки и запускают автовыделение .......... var listener = {onStateChange: function(wpr, req, flag) {if ( gBrowser.currentURI.spec.startsWith("http") && flag & Ci.nsIWebProgressListener.STATE_STOP ) setTimeout(()=> autoHighlight(true), 10);},onLocationChange: function(wpr, req) {if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete" ) setTimeout(()=> autoHighlight(true), 10);}}; function handleSelect(str) {var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset="UTF-8";cbu.setPrefs("CB.autoHighlight.value", converter.ConvertFromUnicode(str));}; // Получить выделенный текст из страницы или false .......... function getSelect() {let selA = gBrowser.contentDocument.defaultView.getSelection(), selB ='', sel = '', el = document.commandDispatcher.focusedElement; selA = selA ? selA.toString() : ''; try { selB = el && el.value ? el.value.substring(el.selectionStart, el.selectionEnd) : '' } catch(e) {}; selB = selB ? selB.toString() : ''; sel = selA.length > selB.length ? selA : selB; return(sel == '') ? false : sel.replace(/^\s+|\s+$/g,"");}; //выделить текст .......... function autoHighlight(power) { var finder = gBrowser.finder || gFindBar; var lighted = (finder._highlightDoc || finder.highlight).bind(finder); lighted(false,""); if(power){ var lightstr = Services.prefs.getComplexValue("CB.autoHighlight.value", Ci.nsISupportsString); if(lightstr)lighted(true, lightstr.data);};}; var addFlag = false, state = 0, wnd = document.getElementById('main-window'); function onMouseup() {let selection = getSelect(); if(!selection || state<2)return; setTimeout(()=> autoHighlight(true), 200); handleSelect(selection); cbu.setPrefs("CB.autoHighlight.state", state+1);}; function onMouseent() {autoHighlight(true)}; function onStateChange() { state = cbu.getPrefs("CB.autoHighlight.state"); if(!state && state != 0){ state=0; cbu.setPrefs("CB.autoHighlight.state", 0); }; if(state<3){ addFlag = false; //gBrowser.removeProgressListener(listener); removeEventListener("mouseup", onMouseup, false, getBrowser()); }; setTip(); switch (state) { case 0: gBrowser.removeProgressListener(listener); wnd.removeEventListener("mouseenter", onMouseent, false); if(cbu.getPrefs("CB.autoHighlight.value")){ setTimeout(()=> cbu.setPrefs("CB.autoHighlight.value", ""), 50); autoHighlight(false); }; self.image = imgOrig; break; case 1: //setTimeout(()=> autoHighlight(true), 100); wnd.addEventListener("mouseenter", onMouseent, false);gBrowser.addProgressListener(listener); self.image = imgLockedSearch;break;case 2:addEventListener("mouseup", onMouseup, false, getBrowser());self.image = imgReady;break;default: //setTimeout(()=> autoHighlight(true), 100); if(!addFlag){if(self.image != imgReady)addEventListener("mouseup", onMouseup, false, getBrowser());self.image = imgReadySearch;addFlag = true; wnd.addEventListener("mouseenter", onMouseent, false);gBrowser.addProgressListener(listener);};break;}}; onStateChange();gPrefService.addObserver("CB.autoHighlight.state", onStateChange, false); addDestructor(() => {gPrefService.removeObserver("CB.autoHighlight.state", onStateChange, false); gBrowser.removeProgressListener(listener);removeEventListener("mouseup", onMouseup, false, getBrowser()); wnd.removeEventListener("mouseenter", onMouseent, false);cbu.setPrefs("CB.autoHighlight.value", ""); cbu.setPrefs("CB.autoHighlight.state", 0);autoHighlight(false);try{removeEventlistener("keydown", keyDown, false, getBrowser())}catch(e){};}); |
polk90 > 01-09-2017 01:56:08 |
долго браузер не обновлял, обновился до Waterfox _55.0.22, была кнопка рестарта Firefox, брал там Инициализация Выделить код Код:// ***** VARS ***** // var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); // ***** FUNCTIONS ***** // function createBrandingBundle() { var myBrandingPath = null; var myStringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService); myBrandingPath = "chrome://branding/locale/brand.properties" return myStringBundleService.createBundle(myBrandingPath); } function getWindowType() { // Relies on Branding Code so can not be run on startup var myBrandStrings = createBrandingBundle(); var thisBrandShortName = myBrandStrings.GetStringFromName("brandShortName") switch (thisBrandShortName) { case "Mozilla Thunderbird": case "Shredder": case "Thunderbird": return "mail:3pane"; case "Nvu": return "composer:html"; case "Calendar": case "Sunbird": return "calendarMainWindow"; case "eMusic Download Manager": case "eMusic Remote": return "emusic:window"; case "Songbird": return "Songbird:Main"; default: return "navigator:browser"; } } function Restart() { // Notify all windows that an application quit has been requested. var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"] .createInstance(Components.interfaces.nsISupportsPRBool); os.notifyObservers(cancelQuit, "quit-application-requested", "restart"); // Something aborted the quit process. if (cancelQuit.data) return false; var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); var windows = wm.getEnumerator(""); var windowType = getWindowType(); while (windows.hasMoreElements()) { var myConfigWindow = windows.getNext().QueryInterface(Components.interfaces.nsIDOMWindowInternal); if (myConfigWindow.document.documentElement.getAttribute("windowtype") != windowType) { myConfigWindow.close(); } } if ("@zeniko/crashrecoveryservice;1" in Components.classes) { nsPreferences.setBoolPref("extensions.crashrecovery.resume_session_once", true); } var appStartup = Components.interfaces.nsIAppStartup; Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit); return true; } // ***** MOUSE HANDLING ***** // this.leftclick = function(evt) { var RestartProceed = prompts.confirm(null, "Restart Firefox", "Перезапустить приложение?"); if (RestartProceed) { Restart(); } } this.aleftclick = function(evt) { Restart(); } // ***** INITIALISATION ***** // this.tooltipText = "Restart"; this.style.opacity = '.85'; this.setAttribute("onclick","custombuttons.gQuot.mHandler(event, this)"); this.setAttribute('ondblclick', 'gQuot(event, this)'); // ***** ATTRIBUTES ***** // this.setAttribute('author','Rawny, zooot'); this.setAttribute('version','4'); this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/restart-session-restore.html'); this.setAttribute('dependency','FF2.0*, FL1.0*, TB2.0*, CB2 2.0.5*'); this.setAttribute('status','Complete'); this.setAttribute('public',true) посмотрите пожалуйста, можно поправить? |
mokujin > 01-09-2017 02:48:16 |
Gladius333 |
bunda1 > 01-09-2017 12:28:31 |
polk90 пишет
Выделить код Код: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%3ERestart%20%28with%20confirmation%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAA6hJREFUOE9VkwtMU1cYx/+9tYAKWAYixWXjIQpYBGEF3AZoNKEyLeCiDQ+dBidjQHj4qHEoyLYw0KCTQUarqLQisGRmG+CCo0zEGljXAI0dr0InJpDNER/Lqin026GajJ3kl3Puyf1+93+/nMPD4pGpFYLHSbxErnJ3Hr3HA3lbbXa71U6WpzbSzv9tU8NORvB5TzFPfmyu/688XStakae7LFWO/pXcYqF930/RwbYpkn8zSYnqMYqq+438ywzTyOr5Ghndb7nk3/uO/2Gv7aUgXesrKuzvKPrpj7lDHQ9pd+sEpTSbKXURu1rMlNJkpo01921LP+p9kHx9cm79CT0BaV2eHvn3mg53/Wk/1P6QZOylheL3WyZIdt3sYGG9sOfYZ/JtjWN0Vj9LkScNTHDgduKOhvEn+bdmSKoepyTNOIs8Tn4Vg+Sr6HewpmqIpEycxARJTLaT/VZ53yxFnPyV4F3Y25bWNk2bNWaKaRijmEujtLyw5wmSGlQIzZQiJEPKkzXdWHpYZxOrRknSOEFvt/xOBXdnab2ij+D/cdczWdsM+dWN0Ju1I+R2VEdI+KqGdcaLwWHLpQDsbG1Dds8cFCxy2RCtrB0n2a1HFJj/M0F05A6FaaZI8IWJBBX3iZP/YEVQntjR3PgrTth6rRMZP9pQzL52jDXtExb71AAFXZ4k770dBHn7MqqyeFDeIOhgH2iTGtaQGvg6BJLzexBZ1YzwzzXYwAj9VIOQ8pesO61BRGUL4tUuzz+zuFG2ASS/DYprBvlXI+fVAVnGZk/Gax6pEItzESnJhTh8H4LWJsN/hQRvIKx6SX+JyYmy9Bzt6gbtYYTW4YFPBT7wLIe3sBRebB0XW++cd84YvP+CMSJZadoUd6QzKNzvBEvqnoucvTfdX5QYRQ5BRi8oS4f5ba14HK3CgETFv7P7hmsnK26sN8VUKI1xRXWGd9KTVT5bndNYOucdCAwo57ouDL9rLzAIKVMHytFjvsiAZ0cNmC4bdB86P7xGqxyOblaZ4quVxoTjxe1r93vlI5ZLgDMgAMelYsu6SlfjGVO4/ZRxFRUYOLvCiOenTdyjs8O+IxfNUXevmjd/ywS1xzqDS18vdpIjAsLF91DAbUdiYKlz94H2gBcKvZAqx1bO1Vh8HistoWaVOeaXMl3IzZQrqy+uLuZnIwyrWDHvfzeZPQgEsdiwPA3Hgytd9NEqNyvjH0m928zGL90HAkqWnHPaDik/CiLHAXs1/gU8lc1wSyvYVQAAAABJRU5ErkJggg%3D%3D%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*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28%20%21custombuttons.confirmBox%28null%2C%20%22%u041F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%3F%22%2C%20%22%u0414%u0430%22%2C%20%22%u041E%u0442%u043C%u0435%u043D%u0430%22%29%20%29%20return%3B%20%0Avar%20startup%20%3D%20Services.startup%3B%0Astartup.quit%28startup.eForceQuit%20%7C%20startup.eRestart%29%3B%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%5BLeft%20%20%20%20%20%20%20%20%3D%20Restart%20application%20with%20confirmation%20dialogue%0AAlt+Left%20%3D%20Restart%20application%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
polk90 > 01-09-2017 14:02:02 |
bunda1 |
bunda1 > 01-09-2017 15:00:31 |
polk90 |
polk90 > 01-09-2017 21:00:41 |
bunda1 пишет
ааа... Супер, оно! |
Gladius333 > 01-09-2017 22:08:00 |
mokujin пишет
Спасибо пойдет, только жаль что один код надо в кнопке держать, а один в стиле. |
rgdru > 02-09-2017 01:17:06 |
Кнопка VT ( Firefox10+ ) |
Quartz1t > 02-09-2017 09:47:46 |
Помогите найти кнопку. Кнопка регулировала количество загрузки вкладок. Похожа на это дополнение. Также хочу задать вопрос о кнопке VT. Можно ли в ней ограничить размер иконок? Скажем, чтобы иконки были 16 пикс. |
bunda1 > 02-09-2017 10:19:59 |
rgdru пишет
А ты менял тему или обои? Попробуй это: Выделить код Код: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%3E%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0432%u0435%u0440%u0442%u0438%u043A%u0430%u043B%u044C%u043D%u0443%u044E%20%u043F%u0430%u043D%u0435%u043B%u044C%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20sideBarAutoClose%20%3D%20false%3B%20%20//%20true%20%3D%3E%20%u0432%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0435%20%u0431%u043E%u043A%u043E%u0432%u043E%u0439%20%u043F%u0430%u043D%u0435%u043B%u0438%20%0Aconst%20autoCloseDelay%20%3D%20500%3B%20%20%20%20%20//%20ms%0A%0Aconst%20showDelay%20%3D%20250%3B%09%09//%20ms%0Aconst%20distanceShow%20%3D%202%3B%09%09//%20px%0Aconst%20distanceHide%20%3D%2064%3B%09//%20px%0Aconst%20vtWidthCorrection%20%3D%20-1%3B%09//%20px%20%28%20number%20%5B%20+%20or%20-%20%5D%20%29%0A%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22%5C%0Aid%20%25id%25%20class%20chromeclass-toolbar%20fullscreentoolbar%20true%20context%20toolbar-context-menu%20_width%2020%20%5C%0Acustomizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%20widthcorr%200%22%0A.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A%0A//%20....................................................................................................%0A%0Aconst%20pn%20%3D%20%22custombutton.verticaltoolbar.attributes%22%3B%0Avar%20prefs%20%3D%20Application.prefs%3B%0Aif%20%28%21prefs.has%28pn%29%29%20prefs.setValue%28pn%2C%20firstAttributes%29%3B%0Avar%20pref%20%3D%20prefs.get%28pn%29%3B%0Afunction%20getAttr_pref%28%29%20%7B%0A%09return%20pref.value%0A%7D%0Afunction%20setAttr_pref%28%29%20%7B%0A%09pref.value%20%3D%20%22%22%3B%0A%09Array.slice%28document.getElementById%28toolbarId%29.attributes%29.forEach%28function%28attr%29%20%7B%0A%09%09pref.value%20+%3D%20%28attr.name%20+%20sep%20+%20attr.value%20+%20sep%29%3B%0A%09%7D%29%3B%0A%7D%0A//%20....................................................................................................%0A%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//%20....................................................................................................%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%09%09-image%3A%20-moz-linear-gradient%28rgba%28255%2C%20255%2C%20255%2C%20.5%29%2C%20rgba%28255%2C%20255%2C%20255%2C%200%29%2027px%29%20%21important%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//%20....................................................................................................%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%20....................................................................................................%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20%7B%20already%20%3D%20true%3B%20break%20%7D%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Avar%20delta%20%3D%20toolbar.getAttribute%28%22widthcorr%22%29%20-%20vtWidthCorrection%3B%0Atoolbar.setAttribute%28%22widthcorr%22%2C%20vtWidthCorrection%29%3B%0Aif%20%28delta%29%20toolbar.setAttribute%28%22_width%22%2C%20toolbar.getAttribute%28%22_width%22%29%20-%20delta%29%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09var%20width%20%3D%20toolbar.getAttribute%28%22_width%22%29%3B%0A%09%0A%09toolbox.style.position%20%3D%20toolbar.hasAttribute%28%22autohide%22%29%20%3F%20%22%22%20%3A%20%22fixed%22%3B%0A%09toolbox.style.height%20%3D%0A%09toolbar.style.height%20%3D%20browser.boxObject.height%20+%20%22px%22%3B%0A%0A%09toolbar.style.maxWidth%20%3D%0A%09toolbar.style.minWidth%20%3D%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%20width%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%09%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%09toolbar.removeAttribute%28%22style%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%20vtWidthCorrection%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Afunction%20collapser%28e%29%20%7B%0A%0A%09var%20distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28toolbar.waiting%29%20return%3B%0A%0A%09if%20%28%28distance%20%3C%3D%20distanceShow%29%20%26%26%20%28toolbar.collapsed%29%29%20%7B%0A%0A%09%09if%20%28showDelay%20%3C%201%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20return%3B%20%7D%0A%0A%09%09toolbar.waiting%20%3D%20true%3B%0A%09%09window.setTimeout%28function%28%29%20%7B%0A%0A%09%09%09if%20%28distance%20%3E%3D%20distanceShow%29%20%7B%20toolbar.waiting%20%3D%20false%3B%20return%3B%20%7D%0A%09%09%09toolbar.collapsed%20%3D%20false%3B%0A%09%09%09lock%28%29%3B%0A%09%09%09toolbar.waiting%20%3D%20false%3B%0A%0A%09%09%7D%2C%20showDelay%29%3B%0A%09%7D%0A%09if%20%28%28distance%20%3E%3D%20distanceHide%29%20%26%26%20%28%21toolbar.collapsed%29%29%20%7B%0A%09%09toolbar.collapsed%20%3D%20true%3B%0A%09%09lock%28%29%3B%0A%09%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%29%20return%3B%0A%0A%09var%20autohide%20%3D%20toolbar.hasAttribute%28%22autohide%22%29%3B%0A%09toolbar.collapsed%20%3D%20autohide%3B%0A%0A%09if%20%28%21autohide%29%20%7B%0A%09%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.setAttribute%28%22autohide%22%2C%20%22true%22%29%3B%0A%09%7D%0A%09else%20%7B%0A%09%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.removeAttribute%28%22autohide%22%29%3B%0A%09%7D%0A%09lock%28%29%3B%0A%7D%0A%0Atoolbar.ondblclick%20%3D%20function%28e%29%20%7B%0A%0A%09if%20%28%20e.button%20%7C%7C%20e.target.nodeName%20%3D%3D%20%22toolbarbutton%22%0A%09%20%20%09%20%20%20%20%20%20%7C%7C%20e.target.nodeName%20%3D%3D%20%22toolbaritem%22%20%29%20return%3B%0A%09button.click%28%29%3B%0A%7D%0A//%20....................................................................................................%0A%0Aif%20%28%21toolbar.hasAttribute%28%22autohide%22%29%29%20%7B%0A%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%7D%0Aelse%20toolbar.setAttribute%28%22autohide%22%2C%20%22true%22%29%3B%0A%0Alock%28%29%3B%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0A%0A%0A%0Afunction%20addBackground%28e%29%20%7B%0A%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20toolbar%20%3D%20document.getElementById%28%27vertical_toolbar%27%29%3B%0A%20%20%20%20%20%20var%20win%20%3D%20document.getElementById%28%22main-window%22%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20image%20%3D%20win.style.backgroundImage%3B%0A%20%20%20%20%20%20if%20%28%20image%20%3D%3D%20%27%27%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20toolbar.style.background%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20toolbar.style.background%20%3D%20image%3B%0A%20%20%20%20%20%20toolbar.style.backgroundSize%20%3D%20%27auto%20100%25%27%3B%0A%20%20%20%7D%2C%20500%29%3B%0A%7D%3B%0AaddBackground%28%29%3B%20%0AServices.obs.addObserver%28addBackground%2C%20%22lightweight-theme-styling-update%22%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.obs.removeObserver%28addBackground%2C%20%22lightweight-theme-styling-update%22%29%20%29%3B%20%0A%0A%0A%0A%0Aconst%20MPT%20%3D%20window.MousePosTracker%20%7C%7C%20%7B%20_x%3A%200%2C%20handleEvent%3A%20function%28e%29%20this._x%20%3D%20e.screenX%20%7D%3B%0Afunction%20handlePopup%28e%29%20%7B%0A%0A%20%20%20%20if%20%28toolbar.hasAttribute%28%22autohide%22%29%20%7C%7C%20toolbar.collapsed%20%7C%7C%20e.target.nodeName%20%21%3D%20%22menupopup%22%29%20return%3B%0A%0A%20%20%20%20var%20count%20%3D%20Array.filter%28document.getElementsByTagName%28%22menupopup%22%29%2C%20function%28popup%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28popup.state%20%21%3D%20%22open%22%29%20return%20false%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20node%20%3D%20popup.triggerNode%20%7C%7C%20popup%3B%20node%3B%20node%20%3D%20node.parentNode%29%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28node%20%3D%3D%20toolbar%29%20return%20true%3B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%29.length%3B%0A%0A%20%20%20%20if%20%28e.type%20%3D%3D%20%22popupshown%22%20%26%26%20count%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%21MPT._y%20%26%26%20window.addEventListener%28%22mousemove%22%2C%20MPT%2C%20false%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28e.type%20%3D%3D%20%22popuphidden%22%20%26%26%20count%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%21MPT._y%20%26%26%20window.removeEventListener%28%22mousemove%22%2C%20MPT%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20MPT._x%20%3E%20distanceHide%20%26%26%20lock%28toolbar.collapsed%20%3D%20true%29%3B%0A%20%20%20%20%7D%0A%7D%0A%5B%22popupshown%22%2C%20%22popuphidden%22%5D.forEach%28function%28type%29%20addEventListener%28type%2C%20handlePopup%2C%20true%29%29%3B%0A%0Aconst%20topic%20%3D%20custombuttons.cbService.getNotificationPrefix%28window%29%20+%20%22removeButton%22%3B%0Aconst%20obsrv%20%3D%20%7B%20observe%3A%20function%28%29%20handlePopup%28%7B%20type%3A%20%22popuphidden%22%2C%20target%3A%20%7B%20nodeName%3A%20%22menupopup%22%20%7D%20%7D%29%20%7D%3B%0AServices.obs.addObserver%28obsrv%2C%20topic%2C%20false%29%3B%0AaddDestructor%28function%28%29%20Services.obs.removeObserver%28obsrv%2C%20topic%29%29%3B%0A%0A%0A%0Afunction%20fsl%28%29%20FullScreen._isAnimating%20%3F%20lock%28setTimeout%28fsl%2C%2050%29%29%20%3A%20window.setTimeout%28lock%2C%2050%29%3B%0AaddEventListener%28%22fullscreen%22%2C%20function%28%29%20setTimeout%28lock%2C%200%29%20%26%26%20fsl%28%29%2C%20true%29%3B%0A%0A%0A%0Afunction%20n%28id%29%20document.getElementById%28id%29%3B%0Aconst%20page%20%3D%20n%28%22content%22%29%2C%20box%20%3D%20n%28%22sidebar-box%22%29%2C%20sidebar%20%3D%20n%28%22sidebar%22%29%3B%0Avar%20tvtc%2C%20timeout%3B%0A%0Afunction%20listenMO%28node%2C%20listen%29%20%7B%0A%20%20%20%20var%20func%20%3D%20node%20%3D%3D%20box%20%3F%20onBMO%20%3A%20onPMO%3B%0A%20%20%20%20%28listen%20%3F%20addEventListener%20%3A%20removeEventListener%29%0A%20%20%20%20.apply%28this%2C%20%5B%22mouseover%22%2C%20func%2C%20false%2C%20node%5D%29%3B%0A%7D%0Afunction%20onPMO%28%29%20%7B%0A%20%20%20%20listenMO%28page%2C%20false%29%3B%0A%20%20%20%20timeout%20%3D%20setTimeout%28hideSB%2C%20autoCloseDelay%20%29%3B%0A%20%20%20%20listenMO%28box%2C%20true%29%3B%0A%7D%0Afunction%20onBMO%28%29%20%7B%0A%20%20%20%20listenMO%28box%2C%20false%29%3B%0A%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20listenMO%28page%2C%20true%29%3B%0A%7D%0Afunction%20hideSB%28%29%20%7B%0A%20%20%20%20listenMO%28box%2C%20false%29%3B%0A%20%20%20%20if%20%28box.hidden%29%20return%3B%0A%20%20%20%20var%20id%20%3D%20box.getAttribute%28%22sidebarcommand%22%29%20%7C%7C%20%22viewBookmarksSidebar%22%3B%0A%20%20%20%20n%28id%29.setAttribute%28%22checked%22%2C%20true%29%3B%0A%20%20%20%20toggleSidebar%28id%29%3B%0A%7D%0Afunction%20onSBL%28%29%20%7B%0A%20%20%20%20var%20time%20%3D%20Date.now%28%29%3B%0A%20%20%20%20listenMO%28page%2C%20false%29%3B%0A%20%20%20%20if%20%28time%20-%20tvtc%20%3C%20800%29%20listenMO%28page%2C%20true%29%3B%0A%7D%0Afunction%20onVTC%28e%29%20%7B%0A%20%20%20%20var%20time%20%3D%20Date.now%28%29%3B%0A%20%20%20%20for%20%28var%20node%20%3D%20e.target%3B%20node%3B%20node%20%3D%20node.parentNode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28node%20%21%3D%20toolbar%29%20continue%3B%0A%20%20%20%20%20%20%20%20tvtc%20%3D%20time%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%7D%0Afunction%20ael%28add%29%20%7B%0A%20%20%20%20%5B%20%20%20%20%5B%22DOMContentLoaded%22%2C%20onSBL%2C%20false%2C%20sidebar%5D%2C%0A%20%20%20%20%20%20%20%20%5B%22click%22%2C%20onVTC%2C%20false%2C%20window%5D%2C%0A%20%20%20%20%20%20%20%20%5B%22command%22%2C%20onVTC%2C%20false%2C%20window%5D%0A%20%20%20%20%5D.forEach%28function%28args%29%20%7B%0A%20%20%20%20%20%20%20%20%28add%20%3F%20addEventListener%20%3A%20removeEventListener%29.apply%28this%2C%20args%29%3B%0A%20%20%20%20%7D%29%3B%0A%7D%0Aif%20%28%20sideBarAutoClose%20%29%20ael%28true%29%3B%0A%0A%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%09if%20%28reason%20%3D%3D%20%22delete%22%29%20pref.reset%28%29%3B%0A%09if%20%28%21getAttr_pref%28%29%29%20return%3B%0A%09setAttr_pref%28%29%3B%0A%09%0A%09ael%28false%29%3B%0A%7D%3B%0A%0A%0A%0Athis.style.cssText%20%3D%20%22opacity%3A%201%20%21important%3B%22%3B%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%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 02-09-2017 10:26:22 Quartz1t пишет
Да, можно. В userChrome.css: Выделить код Код:#vertical_toolbar .toolbarbutton-icon { -moz-appearance: none !important; height: 16px !important; width: 16px !important; } |
difabor > 02-09-2017 11:01:06 |
Quartz1t пишет
Посмотрите здесь Приведённый ниже код почти то же, но учитывает конфликт с расширением Link Status Redux: LoadTabProgressively Выделить код Код:var allTabMax = 20; // максимальное число табов var tabArray = []; // Отслеживать открытие, закрытие вкладок и восстановление сессии ..... function tabHandler(e) { var tab = e.target; var selTabPos = gBrowser.selectedTab._tPos; var xbw = XULBrowserWindow.statusTextField.label.split(' ') [(XULBrowserWindow.statusTextField.label.split(' ').length>1)+0]; // прятать и закрывать лишние вкладки, сохранить их адреса в массив if ( e.type !== "TabClose" && gBrowser.tabs.length > allTabMax ) { tabArray.push( (e.type == 'TabOpen') ? (tab.label == "Новая вкладка") ? xbw : tab.label : tab.linkedBrowser.contentDocument.location ); tab.style.display = 'none'; setTimeout(function() { gBrowser.removeTab( tab ); }, 150); // открывать сохранение адреса и удалять их из массива if ( e.type == "TabClose" && gBrowser.tabs.length < allTabMax && tabArray.length > 0 ) { gBrowser.loadOneTab( (tabArray.shift()).trim(), null, null, null, true, false); } }; var container = gBrowser.tabContainer; addEventListener("TabOpen", tabHandler, true, container ); addEventListener("TabClose", tabHandler, false, container ); addEventListener("SSTabRestoring", tabHandler, false, container ); Сейчас я её не использую и не проверял - работает ли она на новейших версиях ![]() Это код bunda1, oн не требует отдельной кнопки. Можно добавить в существующую. |
rgdru > 02-09-2017 15:21:07 |
bunda1 пишет
Я кнопку установил впервые.Заметил ошибку в консоли,поэтому сообщил сюда. |
Quartz1t > 02-09-2017 17:07:31 |
difabor пишет
Похожее, но не то, и на РМ не работает. |
polk90 > 05-09-2017 04:28:23 |
не работатет кнопка Tab History, (брал там) Инициализация Выделить код Код:var TU_hookCode = TU_hookMethod; function TU_hookMethod(aStr) { try { var namespaces = aStr.split("."); try { var object = this; while (namespaces.length > 1) { object = object[namespaces.shift()]; } } catch (e) { throw TypeError(aStr + " is not a function"); } var method = namespaces.pop(); if (typeof object[method] != "function") throw TypeError(aStr + " is not a function"); return object[method] = TU_hookFunc.apply(this, Array.concat(object[method], Array.slice(arguments, 1))); } catch (e) { Components.utils.reportError("Failed to hook " + aStr + ": " + e.message); } } function TU_hookFunc(aFunc) { var myCode = aFunc.toString(); for (var i = 1; i < arguments.length;) { if (arguments[i].constructor.name == "Array") { var [orgCode, newCode, flags] = arguments[i++]; } else { var [orgCode, newCode, flags] = [arguments[i++], arguments[i++], arguments[i++]]; } if (typeof newCode == "function" && newCode.length == 0) newCode = newCode.toString().replace(/^.*{|}$/g, ""); switch (orgCode) { case "{": [orgCode, newCode] = [/{/, "$&\n" + newCode];break; case "}": [orgCode, newCode] = [/}$/, newCode + "\n$&"];break; } if (typeof orgCode == "string") orgCode = RegExp(orgCode.replace(/[{[(\\^|$.?*+/)\]}]/g, "\\$&"), flags || ""); myCode = myCode.replace(orgCode, newCode); } return eval("(" + myCode + ")"); } TU_hookCode("gBrowser.loadOneTab", ["{", function() { var currentTab = this.mCurrentTab; }], [/(?=return tab;)/, function() { if (aReferrerURI/* && TU_getPref("extensions.tabutils.openLinkWithHistory", false)*/) { let currentHistory = currentTab.linkedBrowser.sessionHistory; let newHistory = tab.linkedBrowser.sessionHistory.QueryInterface(Ci.nsISHistoryInternal); for (let i = 0; i <= currentHistory.index; i++) { newHistory.addEntry(currentHistory.getEntryAtIndex(i, false), true); } } }] ); посмотрите пожалуйста, можно поправить? |
SOTVM > 13-09-2017 09:08:41 |
опять не работает кнопка вставки спецсимволов Firefox 52.3.0 (64бити)ESR Linux |
firepox > 13-09-2017 16:26:57 |
Спасибо за отличную кнопку: https://forum.mozilla-russia.org/viewtopic.php?pid=708281#p708281 Можно добавить сюда?: cmd и bat и еще, на данный момент иконку невозможно назначить, если запуск указан cmd и bat файла. Спасибо! |
firepox > 13-09-2017 18:15:15 |
делюсь способом быстрого бэкапа firefox, возможно, кому-то пригодится) Backup Firefox.cmd - кладем в корень портативного Ferefox. скрытый текст https://pastebin.com/dWNfn3Gg Запускаем Backup Firefox.cmd \ в папке Backup Firefox создается архивная копия. Я запускаю кнопкой в firefox - быстро и удобно. Рекомендую) Нужен 7-Zip |
difabor > 13-09-2017 19:17:34 |
SOTVM пишет
А что именно не работает? |
SOTVM > 14-09-2017 08:19:46 |
difabor пишет
уже починил |
rgdru > 22-09-2017 08:15:44 |
Прошу поправить кнопку Save( Firefox 24 + ) от 07.03.2017 для работы в Pale Moon 27. |
Dumby > 22-09-2017 11:53:53 |
rgdru пишет
|
rgdru > 22-09-2017 12:26:18 |
Dumby |
difabor > 30-09-2017 02:13:21 |
Можно ли сделать кнопку, аналогичную VT ( Firefox10+ ), но чтоб он был справа? |
bunda1 > 30-09-2017 08:54:30 |
difabor пишет
Кажется Dumby что то такое делал с VT. Может посмотри в его комментариях год или два назад. |
difabor > 30-09-2017 15:55:32 |
bunda1 пишет
Спасибо. |
villa7 > 30-09-2017 17:18:01 |
difabor скрытый текст Выделить код Код:const leftVT = true; const optLeftVT = { showDelay: 0, distanceShow: 10, distanceHide: 100, // relative ∏↔ widthCorrection: 7, animateTime: 0 }; const rightVT = true; const optRightVT = { showDelay: 0, distanceShow: 1, distanceHide: 50, // relative ↔∏ widthCorrection: 7, animateTime: 0 }; this.tooltipText = "L: toggle left VT\nM: toggle background image\nR: toggle right VT"; const sep = "\u00A0"; const firstAttributes = "\ class chromeclass-toolbar fullscreentoolbar true context toolbar-context-menu pwidth 20 \ customizable true flex 1 iconize large mode icons orient vertical bgimage true".replace(/ /g, sep); const pn = "custombutton.VT2.", pnl = pn + "left", pnr = pn + "right"; const prefs = Application.prefs; if (!prefs.has(pnl)) prefs.setValue(pnl, firstAttributes); if (!prefs.has(pnr)) prefs.setValue(pnr, firstAttributes); const vtlPref = prefs.get(pnl), vtrPref = prefs.get(pnr); function setAttrs(vt) { vt.textContent = ""; var attrs = (vt == vtl ? vtlPref : vtrPref).value.split(sep); for (var i = 0, l = attrs.length - 1; i < l; i += 2) vt.setAttribute(attrs[i], attrs[i + 1]); var currentSet = vt.getAttribute("currentset").split(","); currentSet.forEach(function(id) vt.insertItem(id)); } function saveAttrs(vt) { var pref = vt == vtl ? vtlPref : vtrPref; if (!pref.value) return; pref.value = ""; Array.slice(vt.attributes).forEach(function(attr) { if (attr.name != "width" && attr.name != "height") pref.value += attr.name + sep + attr.value + sep; }); } const idp = "cb-vt"; function n(id) document.getElementById(id); var vtl = n(idp + "-left"), vtlBox = n(idp + "-left-box"); var vtr = n(idp + "-right"), vtrBox = n(idp + "-right-box"); const browser = n("browser"); function createVT(left) { var side = left ? "-left" : "-right" var toolbox = document.createElement("toolbox"); toolbox.id = idp + side + "-box"; toolbox.palette = gNavToolbox.palette; var toolbar = document.createElement("toolbar"); toolbar.id = idp + side; if (left) { vtlBox = browser.insertBefore(toolbox, browser.firstChild); vtl = toolbox.appendChild(toolbar); } else { vtrBox = browser.appendChild(toolbox); vtr = toolbox.appendChild(toolbar); } setAttrs(toolbar); gNavToolbox.externalToolbars.push(toolbar); } function removeButtons(vt) { Array.slice(vt.children).forEach(function(node) { var nn = node.nodeName; if (nn == "toolbarbutton" || nn == "toolbaritem") gNavToolbox.palette.appendChild(node); }); } function removeVT(vt) { removeButtons(vt); gNavToolbox.externalToolbars.forEach(function(et, i, ets) { if (et == vt) ets.splice(i, 1); }); browser.removeChild(vt.parentNode); if (vt == vtl) vtl = null; if (vt == vtr) vtr = null; } function forEachVT(func) { var toolbars = []; if (vtl) toolbars.push(vtl); if (vtr) toolbars.push(vtr); toolbars.forEach(func); } function forEachBtn(func, arg) { var btns = []; var en = Services.ww.getWindowEnumerator(); while(en.hasMoreElements()) { var win = en.getNext(); var btn = win.document.getElementById(self.id); if (btn) btns.push(btn); } btns.forEach(function(btn) { btn[func.name].call(this, arg); }); } function widthCorr(vt) vt.setAttribute("width", parseInt(vt.getAttribute("pwidth")) + vt.opt.widthCorrection); if (leftVT && !vtl) createVT(true); if (!leftVT && vtl) removeVT(vtl); if (rightVT && !vtr) createVT(false); if (!rightVT && vtr) removeVT(vtr); forEachVT(function(vt) { vt.opt = vt == vtl ? optLeftVT : optRightVT; widthCorr(vt); }); function setHeight(box) { box.style.height = box.firstChild.style.height = browser.boxObject.height + "px"; } function onMousemove(e) { var distanceLeft = e.screenX - browser.boxObject.screenX; var distanceRight = browser.boxObject.width - distanceLeft; if (vtl) { vtlBox.show = distanceLeft <= vtl.opt.distanceShow; vtlBox.hide = distanceLeft > vtl.opt.distanceHide + vtlBox.boxObject.width; vt(vtlBox); } if (vtr) { vtrBox.show = distanceRight <= vtr.opt.distanceShow; vtrBox.hide = distanceRight > vtr.opt.distanceHide + vtrBox.boxObject.width; vt(vtrBox); } function vt(box) { var vt = box.firstChild; if (box.show) { if (box.waiting) return; box.waiting = true; setTimeout(function() { box.waiting = false; if (box.hide) return; box.setAttribute("show", true); setHeight(box); }, vt.opt.showDelay); } if (box.hide) { var st = "-" + vt.boxObject.width + "px"; box.style[box == vtlBox ? "left" : "right"] = st; box.removeAttribute("show"); setHeight(box); } } } function mm() onMousemove({ screenX: browser.boxObject.screenX + browser.boxObject.width / 2 }); mm(); function onBeforecustomization() { forEachVT(function(vt) { var st = vt.parentNode.style; st[vt == vtl ? "left" : "right"] = 0; st.position = "static"; vt.removeAttribute("width"); }); } addEventListener("beforecustomization", onBeforecustomization, false, gNavToolbox); function toggleAutohide(e) { var ahBefore, ahAfter; forEachVT(function(vt) { if (vt.hasAttribute("autohide")) ahBefore = true; if (e && !e.button && vt == vtr) return; if (e && e.button == 2 && vt == vtl) return; var box = vt.parentNode; if (vt.hasAttribute("autohide")) { vt.removeAttribute("autohide"); box.style.position = "static"; } else { vt.setAttribute("autohide", true); box.style.position = "fixed"; } saveAttrs(vt); }); forEachVT(function(vt) { if (vt.hasAttribute("autohide")) ahAfter = true; }); var func; if (ahBefore && !ahAfter) func = removeEventListener; if ((!ahBefore || !e) && ahAfter) func = addEventListener; if (func) func("mousemove", onMousemove, false, browser); } toggleAutohide({ button: -1 }), toggleAutohide(); this.onclick = function(e) { if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) return; if (e.button == 1) { forEachBtn(toggleBackgroundImage, true); return; } if (vtr) e.preventDefault(); forEachBtn(toggleAutohide, e); }; forEachVT(function(vt) { vt.ondblclick = function(e) { var nn = e.target.nodeName; if ( (["toolbar", "toolbarspring", "toolbarspacer", "toolbarseparator"].indexOf(nn) > -1) && !e.button && (e.target.parentNode == this || e.target == this) ) { forEachBtn(toggleAutohide, { button: this == vtl ? 0 : 2 }) mm(); } } }); [setAttrs, removeButtons, forEachVT, widthCorr, toggleAutohide, toggleBackgroundImage] .forEach(function(f) self[f.name] = f); var upd; forEachVT(function(vt) { if (vt.upd) { upd = true; delete vt.upd; } }); if (upd) { var en = Services.ww.getWindowEnumerator(); while(en.hasMoreElements()) { var win = en.getNext(); var btn = win.document.getElementById(this.id); if (!btn || win == window) continue; btn.forEachVT(function(vt) { btn.removeButtons(vt); btn.setAttrs(vt); btn.widthCorr(vt); btn.toggleBackgroundImage(false); }); } } const cssStr = '\ \ toolbar[id^="%idp%"] {\n\ -moz-appearance: none;\n\ border-bottom: 0;\n\ border-top: 0;\n\ }\n\ toolbar[id^="%idp%"] > toolbarseparator,\n\ toolbar[id^="%idp%"] > [id^="wrapper-separator"] {\n\ -moz-appearance: none;\n\ margin: 0.2em 2px;\n\ border-bottom: 1px solid ThreeDHighlight;\n\ border-top: 1px solid ThreeDShadow;\n\ height: 2px;\n\ border-left: none;\n\ border-right: none;\n\ }\n\ toolbar[id^="%idp%"] > toolbarspacer,\n\ toolbar[id^="%idp%"] > [id^="wrapper-spacer"] {\n\ height: 15px;\n\ }\n\ toolbox[id^="%idp%"] {\n\ -moz-appearance: none; border-top: 0;\n\ }\n\ \n\ #%idp%-left-box[show] {\n\ left: 0;\n\ }\n\ #%idp%-left-box {\n\ -moz-transition: left %lefttime%s ease;\n\ }\n\ #%idp%-right-box[show] {\n\ right: 0;\n\ }\n\ #%idp%-right-box {\n\ -moz-transition: right %righttime%s ease;\n\ }\n\ \n\ toolbar[id^="%idp%"][customizing] {\n\ min-width: 20px;\n\ }\n\ toolbar[id^="%idp%"] toolbarpaletteitem {\n\ margin-top: -2px;\n\ margin-bottom: -2px;\n\ border-top: 2px solid transparent;\n\ border-bottom: 2px solid transparent;\n\ border-left-color: transparent;\n\ border-right-color: transparent;\n\ }\n\ toolbar[id^="%idp%"] toolbarpaletteitem[dragover="left"] {\n\ border-top-color: black;\n\ }\n\ toolbar[id^="%idp%"] toolbarpaletteitem[dragover="right"] {\n\ border-bottom-color: black;\n\ }\ ' .replace(/;/g, " !important;") .replace(/%idp%/g, idp) .replace("%lefttime%", optLeftVT.animateTime) .replace("%righttime%", optRightVT.animateTime); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); const cssURI = makeURI("data:text/css," + encodeURIComponent(cssStr), null, null); if (!sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET); function setBackground(backgroundColor, borderColor) { forEachVT(function(vt) { vt.style.backgroundColor = backgroundColor; var side = vt == vtl ? "Right" : "Left"; vt.style["border" + side] = "1px solid " + borderColor; toggleBackgroundImage(false); }); } function onLWT() { setTimeout(function() { var win = n("main-window"); var backgroundImage = window.getComputedStyle(win).backgroundImage; if (backgroundImage == "none") { var backgroundColor = window.getComputedStyle(win).backgroundColor; var borderColors = backgroundColor.match(/\d+/g).map(function(color) Math.round(color / 1.5)); var borderColor = "rgb(" + borderColors.join(", ") + ")"; setBackground(backgroundColor, borderColor); return; } var url = backgroundImage.replace('url("', "").replace('")', ""); var img = document.createElementNS(xhtmlns, "img"); var canvas = document.createElementNS(xhtmlns, "canvas"); img.src = url; img.onload = function() { var width = canvas.width = img.width; var height = canvas.height = img.height; var context = canvas.getContext("2d"); context.drawImage(img, 0, 0); var arr = context.getImageData(0, 0, width, height).data; var r = 0, g = 0, b = 0; var len = arr.length; for (var i = 0; i < len; i += 4) { r += arr[i]; g += arr[i + 1]; b += arr[i + 2]; } var colors = [r, g, b]; var backgroundColors = colors.map(function(color) Math.round(4 * color / len)); var borderColors = backgroundColors.map(function(color) Math.round(color / 1.5)); var backgroundColor = "rgb(" + backgroundColors.join(", ") + ")"; var borderColor = "rgb(" + borderColors.join(", ") + ")"; setBackground(backgroundColor, borderColor); } }, 200); } onLWT(); function toggleBackgroundImage(toggle) { forEachVT(function(vt) { var st = vt.style; if (vt.hasAttribute("bgimage") - !toggle) { vt.removeAttribute("bgimage"); st.backgroundImage = ""; } else { vt.setAttribute("bgimage", true); st.backgroundImage = n("main-window").style.backgroundImage; } saveAttrs(vt); }); } toggleBackgroundImage(false); const observer = { observe: onLWT }; const topic = "lightweight-theme-styling-update"; Services.obs.addObserver(observer, topic, false); this.onDestroy = function(reason) { try { Services.obs.removeObserver(observer, topic) } catch(ex) {} if (reason == "update" || reason == "delete") { if (sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.unregisterSheet(cssURI, sss.USER_SHEET); } if (reason == "constructor") { forEachVT(function(vt) { vt.removeAttribute("width"); vt.setAttribute("pwidth", Math.max(vt.boxObject.width, 20)); saveAttrs(vt); vt.upd = true; }); } if (reason == "delete") { forEachVT(function(vt) removeVT(vt)); if (custombuttons.confirmBox("VT2", "Reset prefs ?", "Yes", "No")) { vtlPref.reset(); vtrPref.reset(); } } }; |
difabor > 30-09-2017 18:52:06 |
villa7 пишет
Вы знаете, villa7, а ведь иметь два вертикальных тулбара рядом имхо даже удобнее... |
Garalf > 27-10-2017 07:57:17 |
bunda1 |
broker > 30-10-2017 15:36:13 |
Господа здравствуйте, есть такая кнопка SONCO Timer можно сделать чтоб она отображала кириллицу? Спасибо. скрытый текст Выделить код Код:'use strict'; var {classes: Cc, interfaces: Ci, utils: Cu} = Components, helpCSS = encodeURIComponent(this.Help); Cu.import("resource://gre/modules/Timer.jsm"); const sound = Cc['@mozilla.org/sound;1'].getService(Ci.nsISound), aFile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile), as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService), ios = Cc['@mozilla.org/network/io-service;1'].getService(Ci.nsIIOService), sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService), wm = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getMostRecentWindow; pref.root = 'extensions.custombuttons.soncoTimer' + this.id.match(/\d+/) + '.'; pref.defaults = { alertCancel: 'Do you wish to cancel the alert?', alertEmpty: 'Alert message', alertHour: 0, alertIcon: 'https://raw.githubusercontent.com/srazzano/Images/master/Aalarm.gif', alertLabel: 'Change Alert Icon', alertTerminatedIcon: 'https://raw.githubusercontent.com/srazzano/Images/master/Aclock1-48.png', alertMinute: 0, alertNo: 'No', alertSecond: 0, alertTerminated: 'Alert Terminated', alertTitle: 'Alert Notification', alertYes: 'Yes', am: 'AM', audio: true, audioFile: 'Sound', audioLabel: 'Play Sound File', cancel: 'Cancel', clear: 'Clear Message Field', close: 'Close', countdown: 0, editPreset: 'Edit Presets', getFile: 'Get Sound File', getIcon: 'Change Toolbarbutton Icon', hours: 12, hour12Label: '12hr', hour24Label: '24hr', hrLabel: 'Hrs', image: 'https://raw.githubusercontent.com/srazzano/Images/master/Aclock1-16.png', imageLabel: 'Change Button Icon', message: '', messageLabel: 'Message:', minLabel: 'Min', pm: 'PM', posAlertLeft: 200, posAlertTop: 200, posEditLeft: 200, posEditTop: 200, posTimerLeft: 200, posTimerTop: 200, preset1: 'Preset Message 1', preset2: 'Preset Message 2', preset3: 'Preset Message 3', preset4: 'Preset Message 4', preset5: 'Preset Message 5', presetLabel1: 'Preset 1', presetLabel2: 'Preset 2', presetLabel3: 'Preset 3', presetLabel4: 'Preset 4', presetLabel5: 'Preset 5', reset1: 'Clear Hrs Field', reset2: 'Clear Min Field', reset3: 'Clear Sec Field', repeat: 'Repeat', secLabel: 'Sec', showTime: true, showTimeLabel: 'Show Current Time', soundFile: 'C:\\Windows\\Media\\notify.wav', soundFileLabel: 'Sound File', startTimer: 'Start Timer', timer: 'Duration:', timerNotSet: 'Timer not set', timerTitle: 'Timer Notification', timerWarning: 'https://raw.githubusercontent.com/srazzano/Images/master/Aalarm2-64.png', timestart: '', tt1: 'Left-click to set timer', tt2: 'Middle-click to terminate the timer', tt3: 'Hover to view remainig time when active', tt4: 'SONCO Timer remaining time', urlbar: false, urlbarLabel: 'In Urlbar' } for (let key in pref.defaults) { if (pref.defaults.hasOwnProperty(key)) { let val = pref.defaults[key]; switch (typeof val) { case 'boolean': Services.prefs.getDefaultBranch(pref.root).setBoolPref(key, val); break; case 'number': Services.prefs.getDefaultBranch(pref.root).setIntPref(key, val); break; case 'string': let str = Cc['@mozilla.org/supports-string;1'].createInstance(Ci.nsISupportsString); str.data = val; Services.prefs.getDefaultBranch(pref.root).setComplexValue((key), Ci.nsISupportsString, str); break; } } } pref.observe = function(prefs, callback) { let {root} = pref; function observe(subject, topic, data) { if (topic !== 'nsPref:changed') return; let pref = data.slice(root.length); if (prefs.indexOf(pref) === -1) return; callback(pref); } Services.prefs.addObserver(root, observe, false); unload => Services.prefs.removeObserver(root, observe); } var gRoot = Services.prefs.getBranch(pref.root), alertTimer = 0, dialog, curTime, remTime; function pref(key) { let {branch, defaults} = pref; if (branch == null) branch = Services.prefs.getBranch(pref.root); switch (typeof defaults[key]) { case 'boolean': return branch.getBoolPref(key); case 'number': return branch.getIntPref(key); case 'string': return branch.getCharPref(key); } return null; } function getSS(filepath) { return ios.newURI('data:text/css,' + filepath, null, null) } function loadSheet(filepath) { sss.loadAndRegisterSheet(getSS(filepath), sss.AGENT_SHEET) } function unloadSheet(filepath) { let uri = getSS(filepath); if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) sss.unregisterSheet(uri, sss.AGENT_SHEET); } function getCurrentTime() { if (pref('showTime')) { var today = new Date(), h = today.getHours(), m = today.getMinutes(), s = today.getSeconds(), ampm = ''; m = checkCurrentTime(m); s = checkCurrentTime(s); if (pref('hours') === 12) { ampm = (h < 12) ? pref('am') : pref('pm'); if (h > 12) {h = h - 12;} if (h === 0) {h = 12;} } if (wm('sonco:timer')) var mrw = wm('sonco:timer'); else var mrw = wm('sonco:alert'); mrw.document.getElementById('time').value = h + ':' + m + ':' + s + ' ' + ampm; } } function checkCurrentTime(i) { if (i < 10) {i = '0' + i}; return i; } function formatTimeDuration(millisec) { var seconds = (millisec / 1000).toFixed(0), minutes = Math.floor(seconds / 60), hours = ''; if (minutes > 59) { hours = Math.floor(minutes / 60); minutes = minutes - (hours * 60); } minutes = (minutes >= 10) ? minutes : '0' + minutes; seconds = Math.floor(seconds % 60); seconds = (seconds >= 10) ? seconds : '0' + seconds; if (hours != '') return hours + ':' + minutes + ':' + seconds; return '0:' + minutes + ':' + seconds; } function remainingTime() { if (pref('countdown')) { var val = Date.now() - pref('timestart'), diff = getTimerDuration() - parseInt(val), mrw = wm('sonco:timer'), mrd = wm('navigator:browser'); mrd.document.getElementById('sonco-time-remaining').value = formatTimeDuration(diff); mrw.document.getElementById('remaining').value = formatTimeDuration(diff); } else mrw.document.getElementById('remaining').value = ''; } function getTimerDuration() { var a = pref('alertHour'), h = a * 3600000, b = pref('alertMinute'), m = b * 60000, c = pref('alertSecond'), s = c * 1000; return h + m + s; } this.image = pref('image'); this.tooltipText = this.label + '\n\u2022 ' + pref('tt1') + '\n\u2022 ' + pref('tt2'); loadSheet(helpCSS); this.onclick = function(e) { if (e.button == 0) { if (wm('sonco:timer')) { wm('sonco:timer').focus(); return; } this.onTimer(); } if (e.button === 1) { if (wm('sonco:alert')) wm('sonco:alert').close(); if (wm('sonco:timer')) wm('sonco:timer').close(); var el = document.getElementById('sonco-time-remaining'), mra = wm('sonco:alert'), mrt = wm('sonco:timer'); if (pref('countdown')) as.showAlertNotification(pref('alertTerminatedIcon'), pref('alertTitle'), pref('alertTerminated'), false, '', null); gRoot.setIntPref('countdown', 0); gRoot.setCharPref('timestart', ''); el.parentNode.removeChild(el); clearInterval(curTime); clearInterval(remTime); alertTimer = 0; } } this.onAlert = function() { if (pref('countdown') === 0) return; var data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>\ <window xmlns="' + xulns + '" windowtype="sonco:alert" id="soncoAlert" title="' + pref("alertTitle") + '" \ minwidth="300" onload="self.onAlertLoad(this)" onclose="self.onAlertClose(this)">\ <keyset><key keycode="VK_ESCAPE" oncommand="close()"/></keyset>\ <hbox id="hbox1" class="hbox" align="center">\ <vbox id="vbox1">\ <textbox id="time" class="textbox"/>\ <hbox id="image-container" pack="center">\ <image id="alertImage" src="' + pref("alertIcon") + '"/>\ </hbox>\ </vbox>\ <textbox id="alertMessage" class="textbox" value="' + pref("message") + '" multiline="true" rows="4" flex="1"/>\ </hbox>\ <hbox id="buttonGroup" class="hbox" align="center">\ <button id="alertIcon" class="button" label="' + pref("alertLabel") + '" oncommand="self.onButton(this)"/>\ <spacer id="alert-spacer" flex="1"/>\ <button id="repeat" class="button" label="' + pref("repeat") +'" oncommand="self.onButton(this); close()"/>\ </hbox>\ </window>'; data = data.replace(/self/g, 'opener.document.getElementById("' + self.id + '")'); var url = 'data:application/vnd.mozilla.xul+xml;text/plain,' + encodeURIComponent(data); dialog = window.openDialog(url, '', 'chrome,dialog=no,resizable'); } this.onAlertLoad = function(e) { var mrw = wm('navigator:browser'); mrw.document.getElementById(self.id).hidden = false; e.document.getElementById('time').hidden = !pref('showTime'); gRoot.setIntPref('countdown', 0); gRoot.setCharPref('timestart', ''); e.moveTo(pref('posAlertLeft'), pref('posAlertTop')); wm('sonco:timer').close() alertTimer = 0; clearInterval(remTime); if (pref("showTime")) curTime = setInterval(getCurrentTime, 200); else clearInterval(curTime); e.removeAttribute('height'); e.sizeToContent(); } this.onAlertClose = function(e) { gRoot.setIntPref("posAlertLeft", e.screenX); gRoot.setIntPref("posAlertTop", e.screenY); clearInterval(curTime); } this.onButton = function(e) { switch (e.id) { case 'audioFile': var mrw = wm('sonco:timer'), fp = Cc['@mozilla.org/filepicker;1'].createInstance(Ci.nsIFilePicker); fp.init(window, null, fp.modeOpen); fp.appendFilters(fp.filterAudio); if (fp.show() != fp.returnCancel) { var file = fp.fileURL.spec.replace('file:///', '').replace(/\//g, '\\').replace(/%20/g, ' '); gRoot.setCharPref('soundFile', file); e.nextSibling.value = file; } mrw.focus(); break; case 'image': case 'alertIcon': if (e.id === 'image') var mrw = wm('sonco:timer'); else var mrw = wm('sonco:alert'); var fp = Cc['@mozilla.org/filepicker;1'].createInstance(Ci.nsIFilePicker); fp.init(window, null, fp.modeOpen); fp.appendFilters(fp.filterImages); if (fp.show() != fp.returnCancel) { var url = fp.fileURL.spec; gRoot.setCharPref(e.id, url); if (e.id === 'image') { e.nextSibling.src = url; wm('navigator:browser').document.getElementById(this.id).image = pref('image'); } if (e.id === 'alertIcon') { var mrw = wm('sonco:alert'); mrw.document.getElementById('alertImage').src = pref('alertIcon'); } } mrw.focus(); break; case 'startTimer': var mrw = wm('sonco:timer'); this.onStartTimer(); mrw.close(); break; case 'repeat': this.onStartTimer(); break; case 'preset1': case 'preset2': case 'preset3': case 'preset4': case 'preset5': var mrw = wm('sonco:timer'); mrw.document.getElementById('message').value = pref(e.id); gRoot.setCharPref('message', mrw.document.getElementById('message').value); break; case 'reset1': case 'reset2': case 'reset3': var mrw = wm('sonco:timer'); e.previousSibling.value = ''; e.previousSibling.select(); break; case 'clear': var mrw = wm('sonco:timer'); mrw.document.getElementById('message').value = ''; mrw.document.getElementById('message').select(); gRoot.setCharPref('message', ''); break; case 'editPreset': this.onEdit(); break; } } this.onCheckbox = function(e) { gRoot.setBoolPref(e.id, pref(e.id) !== false ? false : true); if (e.id === 'url') { var mrw = wm('navigator:browser'), textbox = mrw.document.getElementById('sonco-time-remaining'); mrw.document.removeElement(tetbox); } if (e.id === 'showTime') { var mrt = wm('sonco:timer'); mrt.document.getElementById('time').hidden = !pref('showTime'); if (pref('showTime')) curTime = setInterval(getCurrentTime, 200); else clearInterval(curTime); e.nextSibling.disabled = !pref('showTime'); } } this.onDestroy = function(reason) { if (reason === 'delete') { clearInterval(curTime); clearInterval(remTime); unloadSheet(this.Help); } } this.onEdit = function() { if (wm('sonco:edit')) { wm('sonco:edit').focus(); return; } var data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>\ <window xmlns="' + xulns + '" windowtype="sonco:edit" id="soncoEdit" title="' + pref("editPreset") + '" \ minwidth="445" onload="self.onEditLoad(this)" onclose="self.onEditClose(this)" persist="width height screenX screenY">\ <keyset><key keycode="VK_ESCAPE" oncommand="close()"/></keyset>\ <hbox id="hbox1" class="hbox" align="center">\ <label class="label" value="' + pref("presetLabel1") + '"/>\ <textbox id="preset1" class="textbox" value="' + pref("preset1") + '" multiline="true" rows="1" flex="1" \ oninput="self.onTextbox(this)" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ <hbox id="hbox2" class="hbox" align="center">\ <label class="label" value="' + pref("presetLabel2") + '"/>\ <textbox id="preset2" class="textbox" value="' + pref("preset2") + '" multiline="true" rows="1" flex="1" \ oninput="self.onTextbox(this)" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ <hbox id="hbox3" class="hbox" align="center">\ <label class="label" value="' + pref("presetLabel3") + '"/>\ <textbox id="preset3" class="textbox" value="' + pref("preset3") + '" multiline="true" rows="1" flex="1" \ oninput="self.onTextbox(this)" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ <hbox id="hbox4" class="hbox" align="center">\ <label class="label" value="' + pref("presetLabel4") + '"/>\ <textbox id="preset4" class="textbox" value="' + pref("preset4") + '" multiline="true" rows="1" flex="1" \ oninput="self.onTextbox(this)" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ <hbox id="hbox5" class="hbox" align="center">\ <label class="label" value="' + pref("presetLabel5") + '"/>\ <textbox id="preset5" class="textbox" value="' + pref("preset5") + '" multiline="true" rows="1" flex="1" \ oninput="self.onTextbox(this)" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ </window>'; data = data.replace(/self/g, 'opener.document.getElementById("' + self.id + '")'); var url = 'data:application/vnd.mozilla.xul+xml;text/plain,' + encodeURIComponent(data); dialog = window.openDialog(url, '', 'chrome,dialog=no,resizable'); dialog.focus(); } this.onEditLoad = function(e) { e.moveTo(pref("posEditLeft"), pref("posEditTop")) } this.onEditClose = function(e) { gRoot.setIntPref("posEditLeft", e.screenX); gRoot.setIntPref("posEditTop", e.screenY); wm('sonco:timer').close(); this.onTimer(); } this.onRadio = function(e) { gRoot.setIntPref(e.id, e.value) } this.onRemaining = function(e) { if (e === 0) self.onTimer(); if (e === 1) { var mrw = wm('navigator:browser'), mrd = wm('sonco:timer'), toolbar = mrw.document.getElementById('sonco-time-remaining'); as.showAlertNotification(pref('alertTerminatedIcon'), pref('alertTitle'), pref('alertTerminated'), false, '', null); toolbar.parentNode.removeChild(toolbar); mrw.document.getElementById(self.id).hidden = false; gRoot.setIntPref('countdown', 0); gRoot.setCharPref('timestart', ''); mrd.close(); clearInterval(curTime); clearInterval(remTime); alertTimer = 0; } } this.onRemoveTime = function() { var mrw = wm('navigator:browser'), mrt = wm('sonco:timer'); if (pref('urlbar')) var toolbar = mrw.document.getElementById('urlbar'); else { var toolbar = mrw.document.getElementById(this.parentNode.id) mrw.document.getElementById(self.id).hidden = false; } toolbar.removeChild(document.getElementById('sonco-time-remaining')); mrt.document.getElementById('remaining').value = ''; } this.onStartTimer = function() { if (!getTimerDuration()) { as.showAlertNotification(pref('timerWarning'), pref('timerTitle'), pref('timerNotSet'), false, '', null); return; } var start = new Date(), mrw = wm('navigator:browser'), tbIcon = mrw.document.getElementById(self.id), textbox = mrw.document.createElement('textbox'); gRoot.setIntPref('countdown', getTimerDuration()); gRoot.setCharPref('timestart', start.getTime()); textbox.id = 'sonco-time-remaining'; textbox.tooltipText = pref('tt4') + '\n\u2022 ' + pref('tt1') + '\n\u2022 ' + pref('tt2'); textbox.onclick = function(e){self.onRemaining(e.button);} if (pref('urlbar')) { var toolbar = mrw.document.getElementById('urlbar'); toolbar.appendChild(textbox); tbIcon.hidden = false; } else { var toolbar = mrw.document.getElementById(self.parentNode.id); toolbar.insertBefore(textbox, self.nextSibling); tbIcon.hidden = true; } remTime = setInterval(remainingTime, 200); alertTimer = setTimeout(function() { if (pref('audio') && pref('soundFile')) { var file = pref('soundFile').replace('file:///', '').replace(/\//g, '\\'); aFile.initWithPath(file); sound.play(ios.newFileURI(aFile)); } toolbar.removeChild(textbox); self.onAlert(); }, getTimerDuration()); } this.onTextbox = function(e) { if (e.id.match('alert')) { var mrw = wm('navigator:browser'); e.value = e.value.replace(/[^\d+]/g, ''); gRoot.setIntPref(e.id, e.value); mrw.document.getElementById(self.id).hidden = false; gRoot.setIntPref('countdown', 0); gRoot.setCharPref('timestart', ''); alertTimer = 0; } else { gRoot.setCharPref(e.id, e.value); gRoot.setCharPref('message', e.value); } } this.onTimer = function() { var data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>\ <window xmlns="' + xulns + '" windowtype="sonco:timer" id="soncoTimer" title="' + this.label + '" \ onload="self.onTimerLoad(this)" onclose="self.onTimerClose(this)">\ <keyset><key keycode="VK_ESCAPE" oncommand="close()"/></keyset>\ <hbox id="hbox1" class="hbox" align="center">\ <label id="timer" class="caption" value="' + pref("timer") + '"/>\ <textbox id="alertHour" class="integer" value="' + pref("alertHour") + '" oninput="self.onTextbox(this)" \ onmousedown="self.onRemoveTime()"/>\ <button id="reset1" class="reset button" label="' + pref("hrLabel") + '" tooltiptext="' + pref("reset1") + '" \ oncommand="self.onButton(this)"/>\ <textbox id="alertMinute" class="integer" value="' + pref("alertMinute") + '" oninput="self.onTextbox(this)" \ onmousedown="self.onRemoveTime()"/>\ <button id="reset2" class="reset button" label="' + pref("minLabel") + '" tooltiptext="' + pref("reset2") + '" \ oncommand="self.onButton(this)"/>\ <textbox id="alertSecond" class="integer" value="' + pref("alertSecond") + '" oninput="self.onTextbox(this)" \ onmousedown="self.onRemoveTime()"/>\ <button id="reset3" class="reset button" label="' + pref("secLabel") + '" tooltiptext="' + pref("reset3") + '" \ oncommand="self.onButton(this)"/>\ <textbox id="time" class="textbox"/>\ <textbox id="remaining" class="textbox"/>\ </hbox>\ <hbox id="hbox2" class="hbox" align="center">\ <label id="messageLabel" class="caption" value="' + pref("messageLabel") + '"/>\ <button id="preset1" class="preset" label="' + pref("presetLabel1") + '" tooltiptext="' + pref("preset1") + '" \ oncommand="self.onButton(this)"/>\ <button id="preset2" class="preset" label="' + pref("presetLabel2") + '" tooltiptext="' + pref("preset2") + '" \ oncommand="self.onButton(this)"/>\ <button id="preset3" class="preset" label="' + pref("presetLabel3") + '" tooltiptext="' + pref("preset3") + '" \ oncommand="self.onButton(this)"/>\ <button id="preset4" class="preset" label="' + pref("presetLabel4") + '" tooltiptext="' + pref("preset4") + '" \ oncommand="self.onButton(this)"/>\ <button id="preset5" class="preset" label="' + pref("presetLabel5") + '" tooltiptext="' + pref("preset5") + '" \ oncommand="self.onButton(this)"/>\ <spacer id="spacer1" class="spacer" flex="1"/>\ <button id="clear" class="button" tooltiptext="' + pref("clear") + '" \ oncommand="self.onButton(this)"/>\ </hbox>\ <hbox id="hbox3" class="hbox" align="center">\ <textbox id="message" class="textbox" value="' + pref("message") + '" oninput="self.onTextbox(this)" \ multiline="true" rows="1" flex="1" placeholder="' + pref("alertEmpty") + '"/>\ </hbox>\ <hbox id="hbox4" class="hbox" align="center">\ <button id="audioFile" class="button" label="' + pref("audioFile") + '" tooltiptext="' + pref("getFile") + '" \ oncommand="self.onButton(this)"/>\ <textbox id="soundFile" class="textbox" flex="1" value="' + pref("soundFile") + '" placeholder="' + pref("soundFileLabel") + '"/>\ </hbox>\ <hbox id="hbox5" class="hbox" align="center">\ <checkbox id="urlbar" class="checkbox" label="' + pref("urlbarLabel") + '" checked="' + pref("urlbar") + '" \ oncommand="self.onCheckbox(this)"/>\ <checkbox id="audio" class="checkbox" label="' + pref("audioLabel") + '" checked="' + pref("audio") + '" \ oncommand="self.onCheckbox(this)"/>\ <checkbox id="showTime" class="checkbox" label="' + pref("showTimeLabel") + '" checked="' + pref("showTime") + '" \ oncommand="self.onCheckbox(this)"/>\ <radiogroup id="hours" value="' + pref("hours") + '" orient="horizontal" onclick="self.onRadio(this)">\ <radio id="hour12" class="radio" label="' + pref("hour12Label") + '" value="12"/>\ <radio id="hour24" class="radio" label="' + pref("hour24Label") + '" value="24"/>\ </radiogroup>\ </hbox>\ <hbox id="buttonGroup" class="hbox" align="center">\ <button id="image" class="button" label="' + pref("imageLabel") + '" tooltiptext="' + pref("getIcon") + '" \ oncommand="self.onButton(this)"/>\ <image id="imageIcon" src="' + pref("image") + '"/>\ <spacer id="spacer2" class="spacer" flex="1"/>\ <button id="editPreset" class="button" label="' + pref("editPreset") + '" oncommand="self.onButton(this)"/>\ <button id="startTimer" class="button" label="' + pref("startTimer") + '" oncommand="self.onButton(this)"/>\ </hbox>\ </window>'; data = data.replace(/self/g, 'opener.document.getElementById("' + self.id + '")'); var url = 'data:application/vnd.mozilla.xul+xml;text/plain,' + encodeURIComponent(data); dialog = window.openDialog(url, '', 'chrome,dialog=no,resizable'); dialog.focus(); } this.onTimerLoad = function(e) { e.moveTo(pref("posTimerLeft"), pref("posTimerTop")); if (pref('showTime')) curTime = setInterval(getCurrentTime, 200); else clearInterval(curTime); e.document.getElementById('time').hidden = !pref('showTime'); e.document.getElementById('hours').disabled = !pref('showTime'); if (pref('countdown')) { remTime = setInterval(remainingTime, 200); e.document.getElementById('remaining').style.display = '-moz-box'; } else { clearInterval(remTime); e.document.getElementById('remaining').value= ''; e.document.getElementById('remaining').style.display = 'none'; } } this.onTimerClose = function(e) { gRoot.setIntPref("posTimerLeft", e.screenX); gRoot.setIntPref("posTimerTop", e.screenY); clearInterval(curTime); clearInterval(remTime); } // BUTTON ATTRIBUTES // Name: SONCO Timer // Author: Sonny Razzano a.k.a. srazzano // Updated: Oct 15, 2017 // Download: https://sonco.synthasite.com/custom-buttons-%E2%96%BA.php // Discussion: http://custombuttons.sourceforge.net/forum/viewtopic.php?f=4&t=866 |
cookiefox > 11-11-2017 20:18:05 |
Приветствую ! Ребята подскажите пожалуйста , кнопку/код , которая/й запрещает на сайте сторонние запросы исключая при этом гугл капчу, аналог third-party для adblock. Может есть кнопка замена adblock/ublock0 ? 11-11-2017 20:21:25 |
Mishania > 15-11-2017 17:40:45 |
В ESR 52 плохо работает CB Mouse Gestures+ скрытый текст 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%3ECB%20Mouse%20Gestures+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBAwEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAgEBAwAAAAACAQECAAAAAHdLNaSlZkbqkFY60ZNZO9aSWDrWkVY51o9VONaOVDfWjVI11oxSNdaMUDPWhkww0ZdYOupsQCykAAAAAAIBAQIAAAAAc0k1oNebe//0yrD/+djC/vjWv//418D/+Na///fWv//31r//99W///XTuv/11Lz/9tfA/u3Dqf/Jjm//Zz4qoAAAAAAAAAAAq2tL1vXMsf/w4c327di9++nStfvs1bn77Na7++zWu/vs1rv77NS5+/Tk0Pvt2L377NW4+/Ll0vbtxar/mFk61gAAAAAAAAAAl10/0Pvdxv/q07b71quB/9iuhP/VqX//06J0/9Khcf/SonL/z5pm/+7dzf/q1cH/1ah9/+zStPv22MP/hkww0AAAAAAAAAAAnF9C1vzcxv/kxaT70aBw/9mtg//euJX/6c+3/+zVv//s1sD/6tG5//r18P//////48Wo/+bHpvv22ML/i1Az1gAAAAAAAAAAnWBC1v3eyv/iwp/7ypFY/9qwiP/u3Mr/9+7k//jw6P/48Oj/9+/m//z69///////5862/+XHpvv42cT/jFE01gAAAAAAAAAAnmJE1v7hzv/fvZf7wX06/+LBof/27OP/z5dh/8mLTv/JjE//xIE+//Pl1v/05tn/zJJb/963jfv53cv/jVEz1gAAAAAAAAAAn2JE1v/i0f/dt477u28k/+PDo//47+j/w348/8qNUv/JjVH/xoZH/9+6l//VpXf/vnUw/963jvv53cv/jlM11gAAAAAAAAAAoGNF1v/j0f/duJD7u3Ao/+PDpf/48Oj/w4A//8qNU//JjFH/yYxR/8qOVP/KkFb/wX8+/922jfv63cv/j1Q21gAAAAAAAAAAoWVH1v/i0P/gwJ77w4FD/+bLsP/58uv/yo9X/9Cbaf/Pmmf/z5pn/86YZP/Qm2n/yY9Y/+G/m/v63Mr/kVU31gAAAAAAAAAAo2ZJ1v/hz//kyav7ypRf/+jRuv/58uz/0J9w/9Spfv/UqH3/1Kh9/9Wpfv/VqoD/z59v/+XJqfv53Mn/klc51gAAAAAAAAAApGhK1v/fzf/n0Lf70aR5/+3Zx//69fH/166I/9u3lP/btpP/27aT/9u2k//cuJX/1q2H/+fPtvv42sj/k1g71gAAAAAAAAAAoWZJ0P7fz//s3Mr72riZ/+bPuf/s3Mz/3L2e/97Ao//ewKP/3sCj/97Ao//ewaP/3Luf/+7cy/v428n/kFU50AAAAAAAAAAAunhY1vvTvf/u5Nv27+LU++rax/vq2MX77eDP++3fzvvt38777d/O++3fz/vt38778OLT+/Hm3Pb0zLT/p2dG1gAAAAAAAAAAflM+oOSpi//71L7//d/N/v7ey//+383//d3K//zdyv/83cn//NzJ//vcyP/72sf/+tzK/vTNt//XnH3/ckgzoAAAAAACAQECAAAAAINXQaS4d1fqomZK0aVoS9akZ0rWomZJ1qFkR9agZEbWnmNF1p1hRNacYELWl11A0apqSup4TDakAAAAAAIBAQIAAAAAAgEBAwEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAgEBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28%7B%0A%20%20%20//%20%u0416%u0435%u0441%u0442%u044B%20%u043C%u044B%u0448%u0438%20....%0A%20%20%20GESTURES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%u0439%20................................%0A%20%20%27W-%27%3A%7Bname%3A%27%u0423%u0432%u0435%u043B%u0438%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.enlarge%28%29%20%7D%7D%2C%0A%20%20%27W+%27%3A%7Bname%3A%27%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reduce%28%29%20%7D%7D%2C%0A%20%20%27UDU%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A%20%20%27L%3CR%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A%20%20%27L%27%3A%7Bname%3A%27%u041D%u0430%u0437%u0430%u0434%27%2Ccmd%3Afunction%28%29%7B%20BrowserBack%28%29%20%7D%7D%2C%0A%20%20%27R%27%3A%7Bname%3A%27%u0412%u043F%u0435%u0440%u0451%u0434%27%2Ccmd%3Afunction%28%29%7B%20BrowserForward%28%29%20%7D%7D%2C%0A%20%20//%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A%20%20%27L%3ER%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A%20%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u044D%u0448%27%2Ccmd%3Afunction%28%29%7B%20BrowserReloadSkipCache%28%29%20%7D%7D%2C%0A%20%20%27U%27%3A%7Bname%3A%27%u0421%u0442%u043E%u043F%27%2Ccmd%3Afunction%28%29%7B%20BrowserStop%28%29%20%7D%7D%2C%0A%20%20%7D%2C%0A%0Ainit%3Afunction%28%29%20%7B%0A%20%20%20var%20func%20%3D%20this%3B%0A%0A%20%20%20%5B%22mousedown%22%2C%20%22mousemove%22%2C%20%22mouseup%22%2C%20%22contextmenu%22%2C%20%22draggesture%22%2C%20%22DOMMouseScroll%22%5D%0A%20%20%20%20.forEach%28%28type%29%3D%3E%20addEventListener%28type%2C%20this%2C%20true%2C%20gBrowser%29%20%29%3B%20%0A%7D%2C%0A%0AhandleEvent%3Afunction%28event%29%20%7B%0A%20%20%20%20switch%28event.type%29%20%7B%0A%20%20%20%20%20%20%20%20case%22mousedown%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._startGesture%28%20event%20%29%3B%0A%20%20%20%20%20%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%20if%20%28%20event.button%20%3D%3D%202%20%26%26%20this._isMouseDownL%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%22L%3ER%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28event%29%3B%0A%20%20%20%20%20%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%20else%20if%20%28%20event.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%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%20this._isMouseDownL%20%3D%20false%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%20%20%20%20this._shouldFireContext%20%3D%20false%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%20%20%20%20this._hideFireContext%20%3D%20true%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%20%20%20%20this._directionChain%20%3D%20%22L%3CR%22%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%20%20%20%20this._stopGesture%28%20event%20%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%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%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%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22mousemove%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._progressGesture%28%20event%20%29%3B%0A%20%20%20%20%20%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%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22mouseup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20content.xdTrailArea%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.xdTrailArea.parentNode.removeChild%28%20content.xdTrailArea%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content.xdTrailArea%20%3D%20content.document.documentElement.appendChild%28document.createElementNS%28xhtmlns%2C%20%22xdTrailArea%22%29%29%3B%0A%20%20%20%20%20%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%20if%20%28%20event.ctrlKey%20%26%26%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22Reset%20Gesture%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%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%20if%20%28%20this._isMouseDownR%20%26%26%20event.button%20%3D%3D%202%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._directionChain%20%29%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownR%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28%20event%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._shouldFireContext%20%26%26%20%21this._hideFireContext%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._displayContextMenu%28%20event%20%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%7D%0A%20%20%20%20%20%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%20else%20if%20%28%20event.button%20%3D%3D%200%20%26%26%20this._isMouseDownL%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%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%20else%20if%20%28%20%28event.button%20%3D%3D%200%20%7C%7C%20event.button%20%3D%3D%201%29%20%26%26%20event.target.localName%20%3D%3D%27menuitem%27%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20activeItem%20%3D%20event.target%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20switch%28%20popup.getAttribute%28%22gesturecommand%22%29%20%29%20%7B%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%20case%22WebSearchPopup%22%3A%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%20var%20selText%20%3D%20popup.getAttribute%28%22selectedtext%22%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%20%20%20%20%20%20%20var%20engine%20%3D%20activeItem.engine%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%20%20%20%20%20%20%20if%20%28%20%21engine%20%29%20break%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%20%20%20%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28%20selText%2C%20null%20%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%20%20%20%20%20%20%20if%20%28%20%21submission%20%29%20break%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%20%20%20%20%20%20%20document.getElementById%28%27searchbar%27%29.textbox.value%20%3D%20selText%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%20%20%20%20%20%20%20gBrowser.loadOneTab%28%20submission.uri.spec%2Cnull%2Cnull%2Csubmission.postData%2Cnull%2Cfalse%20%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%20%20%20%20%20%20%20break%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%20%20%20case%22ClosedTabsPopup%22%3A%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%20undoCloseTab%28%20activeItem.index%20%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%20%20%20%20%20%20%20break%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%20%20%20case%22HistoryPopup%22%3A%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%20gBrowser.webNavigation.gotoIndex%28%20activeItem.index%20%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%20%20%20%20%20%20%20break%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%20%20%20case%22AllTabsPopup%22%3A%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%20gBrowser.selectedTab%20%3D%20gBrowser.mTabs%5BactiveItem.index%5D%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%20%20%20%20%20%20%20break%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%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.hidePopup%28%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%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20document.getElementById%28%22statusbar-display%22%29.label%20%3D%20%22%22%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22popuphiding%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20popup.removeEventListener%28%22popuphiding%22%2Cthis%2Ctrue%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.documentElement.removeEventListener%28%22mouseup%22%2Cthis%2Ctrue%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%28%20popup.hasChildNodes%28%29%20%29%20popup.removeChild%28%20popup.lastChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22contextmenu%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownL%20%7C%7C%20this._isMouseDownR%20%7C%7C%20this._hideFireContext%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20false%3B%0A%20%20%20%20%20%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%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22DOMMouseScroll%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20this._isMouseDownR%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._shouldFireContext%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._hideFireContext%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._directionChain%20%3D%20%22W%22%20+%20%28%20event.detail%20%3E%200%20%3F%20%22+%22%20%3A%20%22-%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._stopGesture%28event%29%3B%0A%20%20%20%20%20%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%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%22draggesture%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20this._isMouseDownL%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%0A%0A_displayContextMenu%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20var%20evt%20%3D%20event.originalTarget.ownerDocument.createEvent%28%22MouseEvents%22%29%3B%0A%20%20%20%20evt.initMouseEvent%28%22contextmenu%22%2Ctrue%2Ctrue%2Cevent.originalTarget.defaultView%2C0%2Cevent.screenX%2Cevent.screenY%2Cevent.clientX%2Cevent.clientY%2Cfalse%2Cfalse%2Cfalse%2Cfalse%2C2%2Cnull%29%3B%0A%20%20%20%20event.originalTarget.dispatchEvent%28evt%29%3B%0A%7D%2C%0A%0A_startGesture%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20this._lastX%20%3D%20event.screenX%3B%0A%20%20%20%20this._lastY%20%3D%20event.screenY%3B%0A%20%20%20%20this._directionChain%20%3D%20%22%22%3B%0A%7D%2C%0A%0A_progressGesture%3Afunction%28%20event%20%29%20%7B%0A%20%20%20%20var%20x%20%3D%20event.screenX%2C%20y%20%3D%20event.screenY%3B%0A%20%20%20%20var%20lastX%20%3D%20this._lastX%2C%20lastY%20%3D%20this._lastY%3B%0A%20%20%20%20var%20subX%20%3D%20x-lastX%2C%20subY%3Dy-lastY%3B%0A%20%20%20%20var%20distX%20%3D%20%28%20subX%20%3E%200%20%3F%20subX%20%3A%20%28-subX%29%20%29%2C%20distY%20%3D%20%28%20subY%20%3E%200%20%3F%20subY%20%3A%20%28%20-subY%20%29%20%29%3B%0A%20%20%20%20var%20direction%3B%0A%20%20%20%20if%20%28%20distX%20%3C%2010%20%26%26%20distY%20%3C%2010%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20if%20%28%20distX%20%3E%20distY%20%29%20direction%20%3D%20subX%20%3C%200%20%3F%20%22L%22%20%3A%20%22R%22%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20direction%20%3D%20subY%20%3C%200%20%3F%20%22U%22%20%3A%20%22D%22%3B%0A%0A%20%20%20%20var%20dChain%20%3D%20this._directionChain%3B%0A%20%20%20%20if%20%28%20direction%20%21%3D%3D%20dChain.charAt%28%20dChain.length-1%20%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20dChain%20+%3D%20direction%3B%0A%20%20%20%20%20%20%20%20%20this._directionChain%20+%3D%20direction%3B%0A%20%20%20%20%20%20%20%20%20var%20gesture%20%3D%20this.GESTURES%5BdChain%5D%3B%0A%20%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22%u0416%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%20%22+%20dChain%20+%20%28%20gesture%20%3F%20%27%20%28%27+%20gesture.name%20+%27%29%27%20%3A%20%27%27%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20this._lastX%20%3D%20x%3B%0A%20%20%20%20this._lastY%20%3D%20y%3B%0A%7D%2C%0A%0A_stopGesture%3Afunction%28event%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%20dChain%20%3D%20this._directionChain%20%29%20this.GESTURES%5BdChain%5D.cmd%28%20this%2C%20event%20%29%3B%0A%20%20%20%20%20%20%20%20XULBrowserWindow.statusTextField.label%20%3D%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%22%u041D%u0435%u0438%u0437%u0432%u0435%u0441%u0442%u043D%u044B%u0439%20%u0436%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%20%22%20+%20dChain%20%7D%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20XULBrowserWindow.statusTextField.label%20%3D%20%22%22%20%7D%2C%20600%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this._directionChain%20%3D%20%22%22%3B%0A%7D%2C%0A%0AshowAlert%3Afunction%28image%2C%20label%2C%20notification%29%20%7B%0A%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20.showAlertNotification%28image%2C%20label%2C%20notification%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%7D%2C%0A%0A_buildPopup%3Afunction%28event%2C%20gestureCmd%29%20%7B%0A%20%20%20%20var%20popup%20%3D%20document.getElementById%28%27GesturePopup%27%29%3B%0A%20%20%20%20if%20%28%20%21popup%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20popup%20%3D%20document.createElement%28%22popup%22%29%3B%0A%20%20%20%20%20%20%20%20%20popup.id%20%3D%20%27GesturePopup%27%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28%20popup%20%29%3B%0A%20%20%20%20popup.setAttribute%28%22gesturecommand%22%2C%20gestureCmd%20%29%3B%0A%20%20%20%20%0A%20%20%20%20switch%28%20gestureCmd%20%29%20%7B%0A%20%20%20%20%20%20%20%20case%22WebSearchPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20engines%20%3D%20Services.search.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20engines.length%20%3C%201%20%29%20throw%22%u041F%u043E%u0438%u0441%u043A%u043E%u0432%u044B%u0435%20%u0441%u0438%u0441%u0442%u0435%u043C%u044B%20%u043D%u0435%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u044B%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%20engines.length%20-%201%3B%20i%20%3E%3D%200%3B--i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20engine%20%3D%20engines%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20engine.name%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20engine.iconURI%20%29%20menuitem.setAttribute%28%22src%22%2C%20engine.iconURI.spec%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.insertBefore%28%20menuitem%2C%20popup.firstChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.engine%20%3D%20engine%3B%0A%20%20%20%20%20%20%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%20popup.setAttribute%28%22selectedtext%22%2C%20getBrowserSelection%28%29.toString%28%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22ClosedTabsPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21gPrefService.getBoolPref%28%22browser.sessionstore.enabled%22%29%20%29%20throw%22%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u044F%20%u0441%u0435%u0441%u0441%u0438%u0439%20%u043E%u0442%u043A%u043B%u044E%u0447%u0435%u043D%u0430%22%3B%0A%20%20%20%20%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%20catch%28e%29%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/sessionstore%3B1%22%5D.getService%28Ci.nsISessionStore%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20ss.getClosedTabCount%28window%29%20%3D%3D0%20%29%20throw%22%u041D%u0435%u0442%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%20%u0432%20%u044D%u0442%u043E%u043C%20%u043E%u043A%u043D%u0435.%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20undoItems%20%3D%20eval%28%22%28%22+ss.getClosedTabData%28window%29+%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%3D0%2C%20LEN%20%3D%20undoItems.length%3B%20i%3CLEN%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%3Dpopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2CundoItems%5Bi%5D.title%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%22menuitem-iconic%20bookmark-item%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20iconURL%20%3D%20undoItems%5Bi%5D.image%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20iconURL%20%29%20menuitem.setAttribute%28%22image%22%2C%20iconURL%20%29%3B%0A%20%20%20%20%20%20%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%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22HistoryPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20sessionHistory%20%3D%20gBrowser.webNavigation.sessionHistory%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20sessionHistory.count%3C1%20%29%20throw%22%u041D%u0435%u0442%20%u0438%u0441%u0442%u043E%u0440%u0438%u0438%20%u0432%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435.%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20curIdx%20%3D%20sessionHistory.index%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%2C%20shc%20%3D%20sessionHistory.count%3B%20i%20%3C%20shc%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20entry%20%3D%20sessionHistory.getEntryAtIndex%28i%2Cfalse%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21entry%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20popup.insertBefore%28menuitem%2Cpopup.firstChild%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2Centry.title%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20iconURL%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Ci.nsIFaviconService%29.getFaviconForPage%28entry.URI%29.spec%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.listStyleImage%20%3D%20%22url%28%22+iconURL+%22%29%22%3B%0A%20%20%20%20%20%20%20%20%20%20%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%20%20%20%20%20%20%20catch%28e%29%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20i%3D%3DcurIdx%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.style.listStyleImage%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22type%22%2C%22radio%22%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%20menuitem.setAttribute%28%22checked%22%2C%22true%22%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%20menuitem.className%20%3D%20%22unified-nav-current%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20activeItem%20%3D%20menuitem%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%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%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%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.className%20%3D%20i%20%3C%20curIdx%20%3F%20%22unified-nav-back%20menuitem-iconic%22%20%3A%20%22unified-nav-forward%20menuitem-iconic%22%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%7D%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%20break%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20case%22AllTabsPopup%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20tabs%20%3D%20gBrowser.mTabs%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tabs.length%20%3C%201%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%3D0%2C%20LEN%20%3D%20tabs.length%3B%20i%20%3C%20LEN%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20menuitem%20%3D%20popup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20tabs%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%20bookmark-item%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20tab.label%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22crop%22%2C%20tab.getAttribute%28%22crop%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.setAttribute%28%22image%22%2C%20tab.getAttribute%28%22image%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menuitem.index%20%3D%20i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.selected%20%29%20menuitem.setAttribute%28%22style%22%2C%20%22color%3A%20red%3B%20font-weight%3A%20bold%3B%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.hasAttribute%28%27unread%27%29%20%29%20menuitem.setAttribute%28%22style%22%2C%20%22color%3A%20blue%3B%22%29%3B%20%0A%20%20%20%20%20%20%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%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20document.popupNode%20%3D%20null%3B%0A%20%20%20%20document.tooltipNode%20%3D%20null%3B%0A%20%20%20%20popup.addEventListener%28%22popuphiding%22%2C%20this%2C%20true%29%3B%0A%20%20%20%20popup.openPopup%28%20null%2C%20%22%22%2C%20event.clientX%2C%20event.clientY%2C%20false%2C%20false%20%29%3B%0A%20%20%20%20document.documentElement.addEventListener%28%22mouseup%22%2C%20this%2C%20true%29%3B%0A%7D%0A%7D%29.init%28%29%3B%0A%0A%0A%0A%0A//%20%u041A%u043D%u043E%u043F%u043A%u0430%20%u0434%u043B%u044F%20%u0443%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u043E%u043C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%2C%20%u043E%u0442%2024.11.2016.%20..........................%0A%28%28%29%3D%3E%20%7B%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0438%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%20FF51%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u0443%u044E%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20var%20but%20%3D%20document.getElementById%28%27urlbar-zoom-button%27%29%3B%0A%20%20%20if%20%28but%29%20but.style.display%20%3D%20%22none%22%3B%0A%20%20%20%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u0432%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20var%20zoomButton%20%3D%20document.createElement%28%22statusbarpanel%22%29%3B%0A%20%20%20var%20urlbarIcons%20%3D%20document.getElementById%28%22urlbar-icons%22%29%3B%0A%20%20%20urlbarIcons.insertBefore%28zoomButton%2C%20urlbarIcons.lastChild%29%3B%20//%20%u043F%u0435%u0440%u0435%u0434%20%u043F%u043E%u0441%u043B%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%20%20%20addDestructor%28%28%29%3D%3E%20zoomButton.remove%28%29%29%3B%0A%20%20%20%20%20%0A%20%20%20updateZoomButton%28%29%3B%20%0A%20%20%20zoomButton.id%20%3D%20%22zoomButton%22%3B%0A%20%20%20zoomButton.style.cssText%20%3D%20%22-moz-appearance%3A%20none%3B%20border%3A%200%3B%20margin-right%3A%20-5px%3B%22%3B%20//%20Css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%0A%20%20%20zoomButton.tooltipText%20%3D%20%22%u041B%3A%20%u041C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%5Cn%u0421%3A%20%u0415%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%5Cn%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043D%u0430%20100%25%20%22%3B%0A%0A%20%20%20%0A%20%20%20//%20%u041E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u0442%u044C%20%u043A%u043B%u0438%u043A%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20addEventListener%28%22click%22%2C%20e%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20ZoomManager.toggleZoom%28%29%3B%20//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0440%u0435%u0436%u0438%u043C%20%u0438%u0437%u043C%u0438%u043D%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20//%20%u0435%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%0A%20%20%20%20%20%20%20%20%20%20%20cbu.isPref%28%22CB.zoom.allEvenly%22%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.allEvenly%22%2C%20%21cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.Percent%22%2C%20ZoomManager.zoom.toFixed%282%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20updateZoomButton%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20e.preventDefault%28%29%3B%20FullZoom.reset%28%29%3B%20%7D%3B%20//%20%u0441%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%2C%20false%2C%20zoomButton%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043A%u043E%u043B%u0435%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20addEventListener%28%22DOMMouseScroll%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20e.detail%20%3E%200%20%3F%20FullZoom.reduce%28%29%20%3A%20FullZoom.enlarge%28%29%3B%0A%20%20%20%7D%2C%20false%2C%20zoomButton%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%0A%20%20%20//%20%u0421%u043B%u0435%u0434%u0438%u043C%20%u0437%u0430%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u0435%u043C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u043C%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%20%20%20var%20str%20%3D%20%22%7B%20setTimeout%28%28%29%3D%3E%20%7B%20updateZoomButton%28%29%20%7D%2C%2050%29%3B%22%3B%0A%20%20%20var%20handleEvent%20%3D%20parseInt%28Services.appinfo.version%29%20%3E%2033%20%3F%20FullZoom.handleEvent%20%3A%20FullZoom._handleMouseScrolled%3B%0A%20%20%20var%20array%20%3D%20%5BFullZoom.reset%2C%20FullZoom.reduce%2C%20FullZoom.enlarge%2C%20ZoomManager.toggleZoom%2C%20handleEvent%5D%3B%0A%20%20%20array.forEach%28func%3D%3E%20%7B%20setTimeout%28%28%29%3D%3E%20%7B%20eval%28%20%28func.toString%28%29.replace%28%27_%27%2C%20%27.%27%29.match%28/function%20%28%5B%5E%28%5D*%29%5C%28/%29%5B1%5D%20+%20%22%20%3D%20%22%20+%20func.toString%28%29.replace%28%22%7B%22%2C%20str%29%29%20%29%7D%2C%2050%29%20%7D%29%3B%20%0A%20%20%20addDestructor%28%28%29%3D%3E%20%7B%20%0A%20%20%20%20%20%20array.forEach%28func%3D%3E%20%7B%20eval%28%20%28func.toString%28%29.replace%28%27_%27%2C%20%27.%27%29.match%28/function%20%28%5B%5E%28%5D*%29%5C%28/%29%5B1%5D%20+%20%22%20%3D%20%22%20+%20func.toString%28%29%29.replace%28str%2C%22%7B%22%29%20%29%20%7D%29%3B%20%20%0A%20%20%20%7D%29%3B%20%20%20%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u0438%20%u0438%u0437%u043C%u0435%u043D%u044F%u0442%u044C%20%u0446%u0432%u0435%u0442%20%u0438%20%u0448%u0440%u0438%u0444%u0442%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%u0430%20....%0A%20%20%20function%20updateZoomButton%28e%29%20%7B%0A%20%20%20%20%20%20zoomButton.label%20%3D%20Math.round%28ZoomManager.zoom*100%29%20+%20%22%25%22%3B%20%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20%20%0A%20%20%20%20%20%20%20%20%20zoomButton.style.fontWeight%20%3D%20ZoomManager.useFullZoom%20%3F%20%27%27%20%3A%20%27bold%27%3B%0A%20%20%20%20%20%20%20%20%20zoomButton.style.color%20%3D%20cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%3F%20%22red%22%20%3A%20%22%22%3B%0A%20%20%20%20%20%20%7D%2C%205%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0437%u0430%u043F%u043E%u043C%u043D%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0432%20%27about%3Aconfig%27%0A%20%20%20%20%20%20if%20%28%20e%20%3D%3D%20undefined%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28zoomButton.prefTimeout%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20zoomButton.prefTimeout%20%3D%20window.setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28%22CB.zoom.Percent%22%2C%20ZoomManager.zoom.toFixed%282%29%20%29%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20250%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20//%20%u0423%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u0435%u0434%u0438%u043D%u044B%u0439%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0434%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20....%0A%20%20%20addEventListener%28%22TabAttrModified%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%20e.target.linkedBrowser.currentURI.spec%20%21%3D%3D%20gBrowser.currentURI.spec%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22CB.zoom.allEvenly%22%29%20%26%26%20content.location.protocol.startsWith%28%22http%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20value%20%3D%20cbu.getPrefs%28%22CB.zoom.Percent%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20ZoomManager.zoom.toFixed%282%29%20%3D%3D%20value%20%29%20return%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.markupDocumentViewer%5BZoomManager.useFullZoom%20%3F%20%27fullZoom%27%20%3A%20%27textZoom%27%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20updateZoomButton%28e%29%3B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%200%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20updateZoomButton%28e%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%2C%20true%2C%20gBrowser.tabContainer%29%3B%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22CB%20Mouse%20Gestures+%20%20%5Cn%u0417%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u0442%20%u0436%u0435%u0441%u0442%u0438%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u041F%u041A%u041C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%5Cn%u041B%3A%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0Acustombuttons.editButton%28this%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 Жесты срабатывают через раз, грешил на мышь, но с заменой мыши проблемы не ушли. Может кто проверит на работоспособность? |
Coroner > 16-11-2017 04:25:31 |
В Firefox 57 не работают кнопки, отвечающие за запуск внешних программ/батников. скрытый текст Выделить код Код:/*CODE*/ var prgpath="C:\\Portable\\test.cmd"; var args = ['']; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(prgpath); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length) Это какие-то ограничения новой версии или всё-таки запустить можно? |
Mishania > 16-11-2017 07:41:19 |
Coroner |
Coroner > 16-11-2017 11:30:03 |
Mishania пишет
У меня сейчас закладки на нужные комментарии нет, поэтому сейчас скину в личку ссылку на инструкцию "как у меня делалось". |
Infocatcher > 16-11-2017 12:13:23 |
Mishania пишет
Старая распорка от совместимости более не работает, нужна новая. |
Coroner > 16-11-2017 12:24:13 |
Infocatcher, а 6pre или 7pre — без разницы? |
Dumby > 16-11-2017 12:56:53 |
Coroner пишет
nsILocalFile выпилен в Firefox 57 Если для кнопки не планируется устанавливать её ещё и на лису древнее чем Firefox 14, А если такая вероятность имеется, то пиши что-то типа |
Infocatcher > 16-11-2017 12:58:12 |
В Firefox 57 должны работать обе версии, без визуальных отличий. |
Coroner > 16-11-2017 13:23:00 |
Dumby, спасибо, добрый человек |
broker > 19-11-2017 22:19:19 |
"Переключаться на левую вкладку после закрытии текущей вкладки" посмотрите ато мозиловцы совсем все поломали скрытый текст Выделить код Код:// Переключаться на левую вкладку после закрытии текущей вкладки, от 22.08.2013. ................................ function tabCloseHandler(e) { var tab = e.target; if ( tab == gBrowser.mCurrentTab ) { if ( !gBrowser.visibleTabs.length ) gBrowser.addTab("about:blank"); else if ( !tab.hasAttribute('first-visible-tab') ) { gBrowser.mTabContainer.advanceSelectedTab(-1,true) }; } } addEventListener("TabClose", tabCloseHandler, true, gBrowser.tabContainer ); |
broker > 22-11-2017 00:45:40 |
Народ, нельзя ничего исправить? |
Gladius333 > 22-11-2017 11:52:55 |
broker пишет
Попробуй обновить кнопку: forum.mozilla-russia.org/viewtopic.php? … 40#p493040 A так да, мало кто ответит) тема при смерти. |
broker > 22-11-2017 16:17:12 |
Gladius333 |
drage2 > 25-11-2017 13:25:25 |
Copy the text of the link ,тако веб.аддонство есть в FF57/ А, кноп можно? , у Sm надо...Она веб.аддоны не берет. |
Ultima2m > 27-11-2017 18:14:25 |
Есть несколько отвалившихся кнопок. скрытый текст Выделить код Код:// Кнопка для управления масштабом страницы в адресной строке, от 24.11.2016. .......................................................................... (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById('urlbar-zoom-button'); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба .... var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -6px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", e=> { if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изменения масштаба if ( e.button == 1 ) { // единый масштаб для всех страниц cbu.isPref("CB.zoom.allEvenly", false); cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") ); cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ); updateZoomButton(); } if ( e.button == 2 ) { e.preventDefault(); FullZoom.reset(); }; // сбросить масштаб }, false, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.enlarge() : FullZoom.reduce(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "{ setTimeout(()=> { updateZoomButton() }, 50);"; var handleEvent = parseInt(Services.appinfo.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, handleEvent]; array.forEach(func=> { setTimeout(()=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace("{", str)) )}, 50) }); addDestructor(()=> { array.forEach(func=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace(str,"{") ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(()=> { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); // запомнить текущий масштаб в 'about:config' if ( e == undefined ) { try { window.clearTimeout(zoomButton.prefTimeout) } catch(e) {}; zoomButton.prefTimeout = window.setTimeout(()=> { cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }, 250); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) { var value = cbu.getPrefs("CB.zoom.Percent"); if ( ZoomManager.zoom.toFixed(2) == value ) return; setTimeout(()=> { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0); } else updateZoomButton(e); }, true, gBrowser.tabContainer); })(); // Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 05.06.2015. ........................................................... ((contextMenu) => { var menu = document.createElement("menu"); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADTUlEQVQ4ja2TX2xTZRjGv62xg4lpUoRME+e/YcYWxRS3BEEDF0SLtIvA2RpDx+lKTqTr2c7Xc77v/U47twPRYVyMGqlothEaiLCOcWGWUIgaySALZpmRsnVubGNs4IClsGwsJkBeL8QlGvXK5/r5vTfv7yHk/45lWa7W1tbDx48dH+nqOnkrkUhgPB6fampquiBE9H0AKPxH0DCMlalU6vzA4CBmMhns6+vD7u5uTCQS9/bv/xAbGt5DIUwEEAsAUP8XWNdjT/f0nMv29vZiW1v7uCwHbnq9FQ+kSh9u9b6Na8vWoWtt+X2v13stHFYn/jgEghBCSCgUWtbZ2TWVTHYOVVZWpRv37us/23PuwWcHDmLj3mbc4avGVSUutC11Yvn6TfdaPv6kZcuWrT9yDiOUiiIihGDRaMMXO6tl6/r0zI25+QX8uuMEyrv34A5fNZa9ugmXP/EsErsD7csex9m5ecyMTDRv3vzGpwAgSJ2m+c/8cN7ff3Hwt+lbWZy7u4BHjiXxRdc6XFXiWoSJ3YHPF7+Md2bn8af0IPanh9rD4fBGEtL1Dae+PfvdpV/G8eeBIbwzO48z2dtY/FIZ2pY6F2Fid2D8yzYcvjyO6aGx+6fPfN9sAHgIY6zA984uJf7VofbM6EQ2PZDByalfcXTsCm6v8uOKJ5/DNa9swAMHW3H0yiQOX74619HR2Q5gfkAplBJJKrVzrq0OBAO7K7ZXfdR2+MiJi5eGrw6PTeD0zSxOXZvGGzO3cWzy+t2T35y6oGqRo7puxHWTbwtFYk8tfoJzvtqIxTy7gkEuVfk+3+mvObqnNpJSNeN0fYSn/H45WVdXfwgAWkzeEGAac9Fg0PmnfbmWx8oHgEJOY+WmaXpNzoNCRHXBRZMQ0X0mY41cCAYA1Yyar9UrUCjL8pKHKmEOISRHVd15QRp0apr2TAQia3QdXmeMvWkYUMG5uQ0MeIsxc70VMV+wKHUqivLI343OJYTkbpTlJYqiOFiIFVBKi/SwWayregmltFRQWmQxVuD3+x8lJGn7t03lEEJy3W41T/FY+YoCjoCqrjDeNVbW1tYur6mpeUySJPvD3n8mhxBis0olu+p253kUT76iKPmSJdklSbIRQsjv4dqcl7QFgvMAAAAASUVORK5CYII="); contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); addEventListener("popupshowing", ()=> menu.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menu) ); var array = [ [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ], [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ], [ 'Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ] ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { var mItem = menuPopup.appendChild( document.createElement("menuitem") ); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.finder = m[2]; }); menuPopup.onclick =e=> { var url = e.target.finder + encodeURIComponent(gContextMenu.imageURL); gBrowser.selectedTab = gBrowser.addTab(url); setTimeout(()=> contextMenu.hidePopup(), 20); }; })(document.getElementById("contentAreaContextMenu") ); // CB code 2 link (кликабельные custombutton ссылки).................................................................................................... addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ var boxes = []; var pres = doc.getElementsByTagName("pre"); for(var i = 0, l = pres.length; i < l; ++i) { var pre = pres[i]; if(pre.parentNode.parentNode.parentNode.className == "codebox") boxes.push(pre); } for(var i = 0, l = boxes.length; i < l; ++i) { var box = boxes[i]; if(box.hasAttribute("data-highlight-js-parsed")) continue; box.setAttribute("data-highlight-js-parsed", "true"); // Special "codes" var tc = box.textContent; if( /^custombutton:\/\/\S+%3C\/custombutton%3E\s*$/.test(tc) || /^data:[\w-]+\/[\w-]+;base64,\S+\s*$/.test(tc) ) { tc = tc.replace(/\s+$/, ""); var a = doc.createElement("a"); a.href = tc; var icon; if(/^data:image\//.test(tc)) icon = tc; else if( /^custombutton:\/\//.test(tc) && /%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(tc) ) try { icon = decodeURIComponent(RegExp.$1); } catch(e) {} if(icon) { var img = doc.createElement("img"); img.src = icon; img.alt = ""; var s = img.style; s.marginRight = "4px"; s.verticalAlign = "middle"; a.appendChild(img); } a.appendChild(doc.createTextNode(tc)); var s = a.style; s.background = "none"; s.margin = s.padding = 0; box.innerHTML = ""; box.appendChild(a); continue; } } } }, true, document.getElementById("appcontent") ); // Добавлять новые СВ кнопки справа от этой кнопки ...................................................................................................... this._handleClick =()=> cbu.setPrefs(s, !cbu.getPrefs(s)); var observer = { observe: button=> { if ( !cbu.getPrefs(s) ) return; var toolbar = self.parentNode; toolbar.insertBefore(button, self.nextSibling); custombuttons.persistCurrentSets(toolbar.id, _id, button.id); if ( parseInt(Services.appinfo.version) < 43 ) return; function observer(subject, topic, data) { setTimeout(()=> Services.ww.unregisterNotification(observer), 500); subject.close(); }; Services.ww.registerNotification(observer); } }; var notificationPrefix = custombuttons.notificationPrefix + "installButton"; Services.obs.addObserver(observer, notificationPrefix, false); addDestructor(()=> Services.obs.removeObserver(observer, notificationPrefix) ); var s = "CB.newButtonAtRightFromCurrent"; function toggleImage() self.style.filter = cbu.getPrefs(s) ? '' : 'grayscale(1)'; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) ); |
bunda1 > 27-11-2017 21:32:20 |
Ultima2m пишет
Выделить код Код:// Кнопка для управления масштабом страницы в адресной строке, от 27.11.2017. .......................... (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById('urlbar-zoom-button'); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба ....userContext-icons page-action-buttons var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57 urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.setAttribute("context", "event.stopPropagation()"); zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -1px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", e=> { if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изминения масштаба if ( e.button == 1 ) { // единый масштаб для всех страниц cbu.isPref("CB.zoom.allEvenly", false); cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") ); cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ); updateZoomButton(); } if ( e.button == 2 ) FullZoom.reset(); // сбросить масштаб }, false, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "{ setTimeout(()=> { updateZoomButton() }, 50);"; var handleEvent = parseInt(Services.appinfo.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, handleEvent]; array.forEach(func=> { setTimeout(()=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace("{", str)) )}, 50) }); addDestructor(()=> { array.forEach(func=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace(str,"{") ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(()=> { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); // запомнить текущий масштаб в 'about:config' if ( e == undefined ) { try { window.clearTimeout(zoomButton.prefTimeout) } catch(e) {}; zoomButton.prefTimeout = window.setTimeout(()=> { cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }, 250); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) { var value = cbu.getPrefs("CB.zoom.Percent"); if ( ZoomManager.zoom.toFixed(2) == value ) return; setTimeout(()=> { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0); } else updateZoomButton(e); }, true, gBrowser.tabContainer); })(); // Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 05.06.2015. ........................................................... ((contextMenu) => { var menu = document.createElement("menu"); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADTUlEQVQ4ja2TX2xTZRjGv62xg4lpUoRME+e/YcYWxRS3BEEDF0SLtIvA2RpDx+lKTqTr2c7Xc77v/U47twPRYVyMGqlothEaiLCOcWGWUIgaySALZpmRsnVubGNs4IClsGwsJkBeL8QlGvXK5/r5vTfv7yHk/45lWa7W1tbDx48dH+nqOnkrkUhgPB6fampquiBE9H0AKPxH0DCMlalU6vzA4CBmMhns6+vD7u5uTCQS9/bv/xAbGt5DIUwEEAsAUP8XWNdjT/f0nMv29vZiW1v7uCwHbnq9FQ+kSh9u9b6Na8vWoWtt+X2v13stHFYn/jgEghBCSCgUWtbZ2TWVTHYOVVZWpRv37us/23PuwWcHDmLj3mbc4avGVSUutC11Yvn6TfdaPv6kZcuWrT9yDiOUiiIihGDRaMMXO6tl6/r0zI25+QX8uuMEyrv34A5fNZa9ugmXP/EsErsD7csex9m5ecyMTDRv3vzGpwAgSJ2m+c/8cN7ff3Hwt+lbWZy7u4BHjiXxRdc6XFXiWoSJ3YHPF7+Md2bn8af0IPanh9rD4fBGEtL1Dae+PfvdpV/G8eeBIbwzO48z2dtY/FIZ2pY6F2Fid2D8yzYcvjyO6aGx+6fPfN9sAHgIY6zA984uJf7VofbM6EQ2PZDByalfcXTsCm6v8uOKJ5/DNa9swAMHW3H0yiQOX74619HR2Q5gfkAplBJJKrVzrq0OBAO7K7ZXfdR2+MiJi5eGrw6PTeD0zSxOXZvGGzO3cWzy+t2T35y6oGqRo7puxHWTbwtFYk8tfoJzvtqIxTy7gkEuVfk+3+mvObqnNpJSNeN0fYSn/H45WVdXfwgAWkzeEGAac9Fg0PmnfbmWx8oHgEJOY+WmaXpNzoNCRHXBRZMQ0X0mY41cCAYA1Yyar9UrUCjL8pKHKmEOISRHVd15QRp0apr2TAQia3QdXmeMvWkYUMG5uQ0MeIsxc70VMV+wKHUqivLI343OJYTkbpTlJYqiOFiIFVBKi/SwWayregmltFRQWmQxVuD3+x8lJGn7t03lEEJy3W41T/FY+YoCjoCqrjDeNVbW1tYur6mpeUySJPvD3n8mhxBis0olu+p253kUT76iKPmSJdklSbIRQsjv4dqcl7QFgvMAAAAASUVORK5CYII="); contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); addEventListener("popupshowing", ()=> menu.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menu) ); var array = [ [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ], [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ], [ 'Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ] ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { var mItem = menuPopup.appendChild( document.createElement("menuitem") ); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.finder = m[2]; }); menuPopup.onclick =e=> { var url = e.target.finder + encodeURIComponent(gContextMenu.imageURL); gBrowser.selectedTab = gBrowser.addTab(url); setTimeout(()=> contextMenu.hidePopup(), 20); }; })(document.getElementById("contentAreaContextMenu") ); // CB code 2 link (кликабельные custombutton ссылки).................................................................................................... addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ var boxes = []; var pres = doc.getElementsByTagName("pre"); for(var i = 0, l = pres.length; i < l; ++i) { var pre = pres[i]; if(pre.parentNode.parentNode.parentNode.className == "codebox") boxes.push(pre); } for(var i = 0, l = boxes.length; i < l; ++i) { var box = boxes[i]; if(box.hasAttribute("data-highlight-js-parsed")) continue; box.setAttribute("data-highlight-js-parsed", "true"); // Special "codes" var tc = box.textContent; if( /^custombutton:\/\/\S+%3C\/custombutton%3E\s*$/.test(tc) || /^data:[\w-]+\/[\w-]+;base64,\S+\s*$/.test(tc) ) { tc = tc.replace(/\s+$/, ""); var a = doc.createElement("a"); a.href = tc; var icon; if(/^data:image\//.test(tc)) icon = tc; else if( /^custombutton:\/\//.test(tc) && /%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(tc) ) try { icon = decodeURIComponent(RegExp.$1); } catch(e) {} if(icon) { var img = doc.createElement("img"); img.src = icon; img.alt = ""; var s = img.style; s.marginRight = "4px"; s.verticalAlign = "middle"; a.appendChild(img); } a.appendChild(doc.createTextNode(tc)); var s = a.style; s.background = "none"; s.margin = s.padding = 0; box.innerHTML = ""; box.appendChild(a); continue; } } } }, true, document.getElementById("appcontent") ); // Добавлять новые СВ кнопки справа от этой кнопки ...................................................................................................... this._handleClick =()=> cbu.setPrefs(s, !cbu.getPrefs(s)); var observer = { observe: button=> { if ( !cbu.getPrefs(s) ) return; var toolbar = self.parentNode; toolbar.insertBefore(button, self.nextSibling); custombuttons.persistCurrentSets(toolbar.id, _id, button.id); if ( parseInt(Services.appinfo.version) < 43 ) return; function observer(subject, topic, data) { setTimeout(()=> Services.ww.unregisterNotification(observer), 500); subject.close(); }; Services.ww.registerNotification(observer); } }; var notificationPrefix = custombuttons.notificationPrefix + "installButton"; Services.obs.addObserver(observer, notificationPrefix, false); addDestructor(()=> Services.obs.removeObserver(observer, notificationPrefix) ); var s = "CB.newButtonAtRightFromCurrent"; function toggleImage() self.style.filter = cbu.getPrefs(s) ? '' : 'grayscale(1)'; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) ); |
sonyas75 > 28-11-2017 01:30:18 |
здрасти. в связи с возвратом на ФФ и почти полного допиливания этого субъекта появилось парочку вопросов. Уважаемые мастера, никак не могу заставить функционировать Save( Firefox 24 + ) от 07.03.2017. Конкретно - не могу сохранять ярлыки страниц, в смысле значки сайтов. при этом иконки и выделенный текст прекрасно сохраняются. это у меня руки кривые опять или же можно что-то подправить в коде? спс заранее |
broker > 28-11-2017 01:51:10 |
sonyas75 |
Dumby > 28-11-2017 14:51:50 |
broker пишет
Ну, можно попробовать приглядеться скрытый текст Выделить код Код:((tabs, flag) => { if (!tabs) return; addEventListener("TabSelect", () => flag = new Error().stack.includes( "\n_blurTab@chrome://browser/content/tabbrowser.xml:" ), false, tabs); addEventListener("TabClose", ({target: tab}) => { if (flag) while((tab = tab.previousSibling)) { if (tab.hidden || tab.closing) continue; if (!tab.selected) gBrowser.selectedTab = tab; break; } }, false, tabs); })(gBrowser.tabContainer); |
Andrey_Krropotkin > 28-11-2017 20:16:26 |
Поигрался с главным меню в Firefox 57. Добавил новое меню "Папки" в главное меню скрытый текст Выделить код Код:// Добавить новый пункт "Папки" в главном меню от 28.11.2017. ...................... (function() { var info1="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAPAAAAFgAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABYAAAAQAAAACgAAAAUAAAAOAAAAdAAAAH0AAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAB9AAAAeAAAABAAAAAGKa3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/wAAAH0AAAAWAAAABymt1v947f7/g+7+/47w/v+V8f7/mvH+/5zy/v+a8f7/lfH+/47w/v+D7v7/eO3+/ymt1v8AAACCAAAAGQAAAAcprdb/cez+/3zu/v+G7/7/jvD+/5Lw/v+U8f7/kvD+/47w/v+G7/7/fO7+/3Hs/v8prdb/AAAAggAAABkAAAAHKa3W/2jr/v9y7P7/e+3+/4Hu/v+G7/7/h+/+/4bv/v+B7v7/e+3+/3Ls/v9o6/7/Ka3W/wAAAIIAAAAZAAAABymt1v9b6f7/ZOr+/2vr/v9x7P7/de3+/3bt/v917f7/cez+/2vr/v9k6v7/W+n+/ymt1v8AAACCAAAAGQAAAAcprdb/S+f+/1Lo/v9Z6f7/Xer+/2Dq/v9h6v7/YOr+/13q/v9Z6f7/Uuj+/0vn/v8prdb/AAAAggAAABkAAAAGKa3W/2Dp/f9l6v3/aer9/23r/v9u6/3/b+z+/27r/f9t6/7/aer9/2Xq/f9g6f3/Ka3W/wAAAH0AAAAWAAAABSmt1v9/7f3/ge7+/4Pu/f+F7v3/he7+/4bu/f+F7v7/he79/4Pu/f+B7v7/f+39/ymt1v8AAAB0AAAADwAAAAMprdb/pPL9/6Xy/v+m8v3/p/P+/6fz/v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/AAAADgAAAAkAAAABAAAABCmt1v/Q+P7/0Pj+/9D4/v8prdb/AAAAFQAAAA0AAAAIAAAABgAAAAYAAAAGAAAABQAAAAQAAAADAAAAAAAAAAEAAAAEKa3W/ymt1v8prdb/AAAADwAAAAkAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AADAfwAA//8AAA=="; var info2="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjVJivzgAAACwElEQVQ4T7VUX0hTcRRWCV+0i5lRiRhqRbCEULSZ/5qa021ddd1td3Nuu9P5Z+ZmuimSGRVWD4H1EpFPIT1IEPQYBtWLEaXMHqSyh9CiOVqmoj2eft9tDnMJ9dCFH+d+3/nOdw/n/La4uP/9fPiydJid/E0n56+/yYp2RwwSYJCUnDKTtCeTOC51KmIIHh9I3dYUQre316QsLr0QeD9fAJylyCOVzkiIwOCR9/oHDMAxZugEJty+A+vph3IpLT37SWBuoUBZUUuCvZ0QgcEjz+3NXPcNDOlZXcpvZozIqak3Dh49XkbVDRYqrNBQoap2tuaMlcwtXYQIDB55RWEpaepNA6wuK6arz+HVKqHRMaERGknf5CKt0U4awRI9wOCRN1gdjz+FVyu3dhPdTnBprc7sbJ8VbG102mhdHBt/OBxe/dGKCCzYWsnS0vEGupht/tpO6sz+gwo6VlJJvEUiXrTT3Xv3Ly18XSli+XhEYPA6UZJ10HNcmrxNuTO85OTmk84skYnNw9HlJ53RSs9eBtQslxjRJAKDRx466LNZXaSzeNmoXK2dPsUL1NDoJLu7hxqamkmU2rojop2IwODlPNNBX16tmd7cUUZoed2IWcwvht0uj29O6vJRBW8I1+jFvmu37mgRgR1nfeTy+N8Fv620Q486ZpQRHToDOyYDb5X5xaqnpmY3dfYPkeTxk97mIrXBKkdg8CZnB+UVn5TvGatL2Lq5I0Uq9ZUSNU9Obx85Os9Rz+DlqQ7/IPUP3yBEYPCS108nqjRUqdX34/5tNeJGx8btZWrtUp1oI1dn90Roec1gd3vp/PURNhcvAYNHHrqxB49EZpQccyE/hpaVz1+87r55e3Rk457wZhv1XrxKiBgqeOQnXwU80G/7w2XCXewoNq4FL4jTdWITIW5sB/ng9zXuX/5SotuM2c4fXH4C3BQJxGxDNfsAAAAASUVORK5CYII="; var info3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25JREFUeNosU1toHFUY/s6ZM7szuzs72e4t1zVGrZEoRBOQUo1W0QpSKIKXBymKmPrgQ9EKaV4EH4w+CH2Qgn0Q8fbSSrFQ8RJtaQm1thVrSwJtitnGbDbJZm+zO/eZ48zggZ/znfNfz3++n3DOceu1/EkAc/d9sXV18uDxycGVP9/sS3WmLuemCsE9XMddcW2nDI5TUkr+Kry78tl0uIH8H4CHhyN3nv9QU4uvfKp+PnLthgbt5HZkVK21ceG3RSzfXMPkP9//fED54QPHNBdCHf1IEl4NQWbEx1zpzGzoHGLb9rDVdVHrOLDAkOwrIG63MHtAe9aW0vPqUPalKEBCEZ6kqhBlyj+sInUvi7Bp+ci9sAPfjWehcwKiSAAT4Q7fhfGXxyTdpMfzY4VemkyTCTFFfaZm4No+PJ3Cs4DHd+2I5BEV2NBcOIIIW5Dw43UVudEiMgOyamnOEZrKkP644tMordEGNzlss4jcc2/gwsU61r/dRKvtYbtiwA8qWFy20Wq5GJjIwtWMPSye9NOgXuRvWwTCWCnCTFyEGAe2VuvgnSY6lQo8X8DVJQo5sKcZCZbujTImO3H4gOA38Nd5HbVvrsCNR5+Cw4PvQz53HowJIKYG2xMw3KOjJ11H0zDg2S6jgarTWHPgBNkffExGXvGhKMA7hRlQScbRzhzmkl/D6nThGl08MXgHaNRhlzfAYkRn1MKv1WV7f2GAIaVS5EoxFAnB2cQxJCUXbV/G3/Nn4d39NMR2GQfHl2BVbWxfqwcM868zFzhhNqy96zeZ3LczhtKEgtYax2a1i3LZQ72pYyY7g9ftE9i3T0dWsNC81UT5Ng0qLP5CTu9FAjpZSLD4+OijEmKSAMsIxBRx+VIL6FWQIF2UCg6Gh+MwAlKt39YCksntnmz+/pA1uhnjb7UN6zT+4IXSAxIU1UfQXOx+Kg5GTDgmgRsE1DY86NRBXXPNpZr29j31ZjWi3Yvz/NKhh8j0Tss+Ztxw+9UYQyYdtJcScJGAMgLPc1AzOBoG9DMr/qH9JR4NVfiEaDWsIcmudvbobutoKo3BbJonaIyDhEpOYYPamxVsi7TnPTErn8rEV/UowEgiMsHC/E/o3fUM3h1i/UGfdkscUyLQF85LwOx/LUp+92P83CerbmX5y48xfXgWawFr/xNgANPvgmYH0Mg8AAAAAElFTkSuQmCC"; var info4="chrome://global/skin/dirListing/folder.png"; var info5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg=="; //Добавить подменю "Папки" var menuItem = document.createElement("panelview"); menuItem.setAttribute("id", "appMenu-Folders"); menuItem.setAttribute("title", "Папки"); menuItem.setAttribute("class", "PanelUI-subView"); var it = document.getElementById("PanelUI-bookmarkingTools"); it.parentNode.insertBefore(menuItem, it); //Добавить новый пункт "Папки" в главном меню var menuItem1 = document.createElement("toolbarbutton"); menuItem1.setAttribute("id", "Folders-menu"); menuItem1.setAttribute("label", "Папки"); menuItem1.setAttribute("closemenu", "none"); menuItem1.setAttribute("class", "subviewbutton subviewbutton-nav"); menuItem1.setAttribute("image", info1 ); menuItem1.setAttribute("oncommand", "PanelUI.showSubView('appMenu-Folders', this)"); var it = document.getElementById("appMenu-more-button"); it.parentNode.insertBefore(menuItem1, it); //Добавить пункты подменю "Папки" var menuItem2 = document.createElement("toolbarbutton"); menuItem2.setAttribute("id", "Folders2"); menuItem2.setAttribute("label", "Текущий профиль"); menuItem2.setAttribute("class", "subviewbutton"); menuItem2.setAttribute("image", info2); menuItem2.addEventListener("command", Folders2, false); menuItem.insertBefore(menuItem2, null); var menuItem3 = document.createElement("toolbarbutton"); menuItem3.setAttribute("id", "Folders3"); menuItem3.setAttribute("label", "Папка Firefox"); menuItem3.setAttribute("class", "subviewbutton"); menuItem3.setAttribute("image", info3); menuItem3.addEventListener("command", Folders3, false); menuItem.insertBefore(menuItem3, null); var menuItem4 = document.createElement("toolbarbutton"); menuItem4.setAttribute("id", "Folders4"); menuItem4.setAttribute("label", "Папка Chrome"); menuItem4.setAttribute("class", "subviewbutton"); menuItem4.setAttribute("image", info4); menuItem4.addEventListener("command", Folders4, false); menuItem.insertBefore(menuItem4, null); var menuItem5 = document.createElement("toolbarbutton"); menuItem5.setAttribute("id", "Folders5"); menuItem5.setAttribute("label", "Папка Extensions"); menuItem5.setAttribute("class", "subviewbutton"); menuItem5.setAttribute("image", info5); menuItem5.addEventListener("command", Folders5, false); menuItem.insertBefore(menuItem5, null); //----------Текущий профиль------------ function Folders2(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.launch(); } //----------Папка Firefox------------ function Folders3(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("GreD", Components.interfaces.nsIFile); file.launch(); } //----------Папка Chrome------------ function Folders4(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("chrome"); file.launch(); } //-----------Папка Extensions------------- function Folders5(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("extensions"); file.launch(); } })(); Вопрос к знающим людям. Как можно сократить код? Или как по другому добавлять в главное меню - новые пункты с подменю? |
broker > 29-11-2017 01:30:31 |
Dumby |
Viatcheslav > 29-11-2017 14:18:23 |
About: (Firefox24+) от 13.01.2015 При нажатии ПКМ по этой кнопке происходит наложение контекстного меню расширения Custom Buttons и самой кнопки (на скриншоте видно). bunda1, посмотрите, пожалуйста - может, чего можно подправить. Версия Сustom Buttons 0.0.5.8.9-fixed5-signed |
bunda1 > 29-11-2017 15:16:49 |
Viatcheslav пишет
|
unter_officer > 29-11-2017 16:26:43 |
На FF57 перестали работать: Если возможно, то поправьте пожалуйста. |
Dumby > 29-11-2017 17:46:02 |
broker пишет
Да, вижу такое. Тут, наверно, без переопределения _blurTab не обойтись. скрытый текст Выделить код Код:(bt => addDestructor(() => gBrowser._blurTab = bt) || eval( ("gBrowser._blurTab = " + bt) .replace(/if \(a[^}]+}/, "") .replace("previousSibling", "nextSibling") .replace("nextSibling", "previousSibling") ))(gBrowser._blurTab); Andrey_Krropotkin пишет
Ну, так-то, хорошая работа.
Да как угодно. Пережать код можно вплоть до полной потери человекочитаемости. скрытый текст Выделить код Код:(n => { // Добавить новый пункт "Папки" в главном меню var btn = n({ id: "Folders-menu", label: "Папки", closemenu: "none", class: "subviewbutton subviewbutton-nav", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAPAAAAFgAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABYAAAAQAAAACgAAAAUAAAAOAAAAdAAAAH0AAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAB9AAAAeAAAABAAAAAGKa3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/wAAAH0AAAAWAAAABymt1v947f7/g+7+/47w/v+V8f7/mvH+/5zy/v+a8f7/lfH+/47w/v+D7v7/eO3+/ymt1v8AAACCAAAAGQAAAAcprdb/cez+/3zu/v+G7/7/jvD+/5Lw/v+U8f7/kvD+/47w/v+G7/7/fO7+/3Hs/v8prdb/AAAAggAAABkAAAAHKa3W/2jr/v9y7P7/e+3+/4Hu/v+G7/7/h+/+/4bv/v+B7v7/e+3+/3Ls/v9o6/7/Ka3W/wAAAIIAAAAZAAAABymt1v9b6f7/ZOr+/2vr/v9x7P7/de3+/3bt/v917f7/cez+/2vr/v9k6v7/W+n+/ymt1v8AAACCAAAAGQAAAAcprdb/S+f+/1Lo/v9Z6f7/Xer+/2Dq/v9h6v7/YOr+/13q/v9Z6f7/Uuj+/0vn/v8prdb/AAAAggAAABkAAAAGKa3W/2Dp/f9l6v3/aer9/23r/v9u6/3/b+z+/27r/f9t6/7/aer9/2Xq/f9g6f3/Ka3W/wAAAH0AAAAWAAAABSmt1v9/7f3/ge7+/4Pu/f+F7v3/he7+/4bu/f+F7v7/he79/4Pu/f+B7v7/f+39/ymt1v8AAAB0AAAADwAAAAMprdb/pPL9/6Xy/v+m8v3/p/P+/6fz/v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/AAAADgAAAAkAAAABAAAABCmt1v/Q+P7/0Pj+/9D4/v8prdb/AAAAFQAAAA0AAAAIAAAABgAAAAYAAAAGAAAABQAAAAQAAAADAAAAAAAAAAEAAAAEKa3W/ymt1v8prdb/AAAADwAAAAkAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AADAfwAA//8AAA==", oncommand: "PanelUI.showSubView('appMenu-Folders', this)" }, null, document.getElementById("appMenu-more-button")); // Добавить подменю "Папки" var panelview = n({ id: "appMenu-Folders", title: "Папки", class: "PanelUI-subView", oncommand: "this.launch(event);" }, null, document.getElementById("PanelUI-bookmarkingTools"), "panelview"); var pmw = panelview.panelMultiView; if (pmw) pmw._panelViews.push(panelview); addDestructor(() => { var pmv = panelview.panelMultiView; if (pmv) { var arr = pmv._panelViews; var ind = arr.indexOf(panelview); if (ind != -1) { arr.splice(ind, 1); arr.currentView = pmv._mainView; } } btn.remove(); panelview.remove(); }); panelview.launch = e => { if (e.target == panelview) return; var [root, ...sub] = e.target.data; var file = Services.dirsvc.get(root, Ci.nsIFile); sub.length && sub.forEach(file.append); file.exists() && file.isDirectory() ? file.launch() : alert( "Folder not found.\n\n" + file.path ); } // Добавить пункты подменю "Папки" n({ id: "Folders2", label: "Текущий профиль", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjVJivzgAAACwElEQVQ4T7VUX0hTcRRWCV+0i5lRiRhqRbCEULSZ/5qa021ddd1td3Nuu9P5Z+ZmuimSGRVWD4H1EpFPIT1IEPQYBtWLEaXMHqSyh9CiOVqmoj2eft9tDnMJ9dCFH+d+3/nOdw/n/La4uP/9fPiydJid/E0n56+/yYp2RwwSYJCUnDKTtCeTOC51KmIIHh9I3dYUQre316QsLr0QeD9fAJylyCOVzkiIwOCR9/oHDMAxZugEJty+A+vph3IpLT37SWBuoUBZUUuCvZ0QgcEjz+3NXPcNDOlZXcpvZozIqak3Dh49XkbVDRYqrNBQoap2tuaMlcwtXYQIDB55RWEpaepNA6wuK6arz+HVKqHRMaERGknf5CKt0U4awRI9wOCRN1gdjz+FVyu3dhPdTnBprc7sbJ8VbG102mhdHBt/OBxe/dGKCCzYWsnS0vEGupht/tpO6sz+gwo6VlJJvEUiXrTT3Xv3Ly18XSli+XhEYPA6UZJ10HNcmrxNuTO85OTmk84skYnNw9HlJ53RSs9eBtQslxjRJAKDRx466LNZXaSzeNmoXK2dPsUL1NDoJLu7hxqamkmU2rojop2IwODlPNNBX16tmd7cUUZoed2IWcwvht0uj29O6vJRBW8I1+jFvmu37mgRgR1nfeTy+N8Fv620Q486ZpQRHToDOyYDb5X5xaqnpmY3dfYPkeTxk97mIrXBKkdg8CZnB+UVn5TvGatL2Lq5I0Uq9ZUSNU9Obx85Os9Rz+DlqQ7/IPUP3yBEYPCS108nqjRUqdX34/5tNeJGx8btZWrtUp1oI1dn90Roec1gd3vp/PURNhcvAYNHHrqxB49EZpQccyE/hpaVz1+87r55e3Rk457wZhv1XrxKiBgqeOQnXwU80G/7w2XCXewoNq4FL4jTdWITIW5sB/ng9zXuX/5SotuM2c4fXH4C3BQJxGxDNfsAAAAASUVORK5CYII=", }, panelview) .data = ["ProfD"]; n({ id: "Folders3", label: "Папка Firefox", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25JREFUeNosU1toHFUY/s6ZM7szuzs72e4t1zVGrZEoRBOQUo1W0QpSKIKXBymKmPrgQ9EKaV4EH4w+CH2Qgn0Q8fbSSrFQ8RJtaQm1thVrSwJtitnGbDbJZm+zO/eZ48zggZ/znfNfz3++n3DOceu1/EkAc/d9sXV18uDxycGVP9/sS3WmLuemCsE9XMddcW2nDI5TUkr+Kry78tl0uIH8H4CHhyN3nv9QU4uvfKp+PnLthgbt5HZkVK21ceG3RSzfXMPkP9//fED54QPHNBdCHf1IEl4NQWbEx1zpzGzoHGLb9rDVdVHrOLDAkOwrIG63MHtAe9aW0vPqUPalKEBCEZ6kqhBlyj+sInUvi7Bp+ci9sAPfjWehcwKiSAAT4Q7fhfGXxyTdpMfzY4VemkyTCTFFfaZm4No+PJ3Cs4DHd+2I5BEV2NBcOIIIW5Dw43UVudEiMgOyamnOEZrKkP644tMordEGNzlss4jcc2/gwsU61r/dRKvtYbtiwA8qWFy20Wq5GJjIwtWMPSye9NOgXuRvWwTCWCnCTFyEGAe2VuvgnSY6lQo8X8DVJQo5sKcZCZbujTImO3H4gOA38Nd5HbVvrsCNR5+Cw4PvQz53HowJIKYG2xMw3KOjJ11H0zDg2S6jgarTWHPgBNkffExGXvGhKMA7hRlQScbRzhzmkl/D6nThGl08MXgHaNRhlzfAYkRn1MKv1WV7f2GAIaVS5EoxFAnB2cQxJCUXbV/G3/Nn4d39NMR2GQfHl2BVbWxfqwcM868zFzhhNqy96zeZ3LczhtKEgtYax2a1i3LZQ72pYyY7g9ftE9i3T0dWsNC81UT5Ng0qLP5CTu9FAjpZSLD4+OijEmKSAMsIxBRx+VIL6FWQIF2UCg6Gh+MwAlKt39YCksntnmz+/pA1uhnjb7UN6zT+4IXSAxIU1UfQXOx+Kg5GTDgmgRsE1DY86NRBXXPNpZr29j31ZjWi3Yvz/NKhh8j0Tss+Ztxw+9UYQyYdtJcScJGAMgLPc1AzOBoG9DMr/qH9JR4NVfiEaDWsIcmudvbobutoKo3BbJonaIyDhEpOYYPamxVsi7TnPTErn8rEV/UowEgiMsHC/E/o3fUM3h1i/UGfdkscUyLQF85LwOx/LUp+92P83CerbmX5y48xfXgWawFr/xNgANPvgmYH0Mg8AAAAAElFTkSuQmCC", }, panelview) .data = ["GreD"]; n({ id: "Folders4", label: "Папка Chrome", image: "chrome://global/skin/dirListing/folder.png", }, panelview) .data = ["UChrm"]; n({ id: "Folders5", label: "Папка Extensions", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg==", }, panelview) .data = ["ProfD", "extensions"]; })((attrs, parent, before, name = "toolbarbutton") => { var node = (parent || before.parentNode) .insertBefore(document.createElement(name), before); for(var name in attrs) node.setAttribute(name, attrs[name]); if (!node.className) node.className = "subviewbutton"; return node; }); |
Andrey_Krropotkin > 29-11-2017 18:22:33 |
Dumby спасибо. Переинициализацию кнопки я уже подправил. Но ваш код намного приятнее глазу. |
mokujin > 29-11-2017 22:27:45 |
Привет. Выделить код Код:(function() { this.clickPageSB = function(event) {gBrowser.addEventListener('mousedown',on, false); }; function go() { clickPageSB(event); toggleSidebar(); } function on() { gBrowser.removeEventListener('mousedown',on, false); timeoutId = setTimeout(go, 1000) } function off() { clickPageSB(event); clearTimeout(timeoutId) } sidebar.addEventListener('click',off, false); clickPageSB(event); })(); работает, закрывает бок.панель как и хотелось, но постоянно при клике на страницах(после закрытия бок.панели) ошибка в консоли: Выделить код Код:Метка времени: 29.11.2017 20:58:40 Ошибка: TypeError: sidebarBroadcaster is null Источник: chrome://browser/content/browser.js Строка: 11170 т.е. оно вызываеццо при каждом клике. Пробовал что-то какие-то проверки вставлять, смотрел в исходнег... да видно не те и не туда. |
broker > 29-11-2017 23:11:35 |
Dumby
Теперь работает, спасибо. |
rubel > 30-11-2017 06:24:19 |
unter_officer пишет
Вот, поправленная gyra, кнопка Save snapshot to html для FF57 . |
unter_officer > 30-11-2017 14:17:05 |
rubel, огромное спасибо. Отлично работает. Теперь поправил бы кто оставшиеся две кнопочки: |
Gladius333 > 01-12-2017 15:31:10 |
Viatcheslav пишет
можно и этой кнопкой обойтись скрытый текст Выделить код Код: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%3ESidebar%20Sites%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAiEAAAIhAENVwL6AAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAHqSURBVHjarJM9aBVBFIW/s2wkgmDnDxoUgoJWokXERlEbf5pY2AhCCkWUgCaNvs3b2Z335lmZoETRINhKLPxD0CZgI0GtLFQUG8FGmxSBmBRzbSYSJE2IB4b5u/cMc+65MjOWYsT57cAVM9sL7AIi8EnSuxjjWKdV/Vgar0WCRrPqknQDuAB0AR+BsbS+DOwEfku6GWNsdFpV/EvQaFa5pElJ+8xsFlhrZn2dVvUrkW+R9Bb4CWyW9CrGONBpVTEHkDQK9JvZHNADzEv6WpQ16R6gG9gELJjZ2SzLvgNNXRtx2yR9AS5JOmJmfcAQy+Me8Bz4AFw3s95cUi8wHLy7X5T1LPA4ePdkueyirNcDM8G7p0VZr5G0Q41mdTB497oo6/3Bu+mirA+b2beUEwGyLMuTXj0p9kDw7k1R1kfVaFYvgUfA3VSBfqANXAUMyNPsgQ7wEJgAzgOnMuA2MJ4O7gCjwbtpYKOkBUDAuuDd+/TIOHBxMTYzsxfAieDdA+BY8G4qKT8QYxyWNCjpHICZPQOOB+8mgJPBu6lc0iFgNzAFbCjK+nTwbrJdl5//FVHSGWAmbfcUZT2/6jLKzCjK+hYwCMwlw8ynsRTdydYLQLekdrsum3n625CkrSuw8mSM0f2/ZlpNO/8ZAGBFAEu2Gqq+AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3De%3D%3E%20%7B%0A%20%20if%20%28e.target%20%21%3D%20this%29%20return%3B%0A%20%20let%20clipboard%20%3D%20gClipboard.read%28%29%3B%0A%20%20if%20%28e.button%20%3D%3D%200%29%0A%20%20%20%20menuPopup.openPopup%28this%2C%20%27after_start%27%29%3B%0A%20%20if%20%28e.button%20%3D%3D%201%29%0A%20%20%20%20openWebPanel%28clipboard%2C%20clipboard%29%3B%0A%20%20if%20%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%29%20%7B%0A%20%20%20%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%0A%20%20%20%20openWebPanel%28window.content.document.title%2C%20window.content.document.location%29%0A%20%20%7D%0A%7D%0Athis.tooltipText%20%3D%20%27%u041B%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%u043E%20%u0441%u043F%u0438%u0441%u043A%u043E%u043C%20%u0437%u0430%u0434%u0430%u043D%u043D%u044B%u0445%20%u0430%u0434%u0440%u0435%u0441%u043E%u0432%5Cn%5C%u0421%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%5Cn%5C%u041F%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%27%3B%0A%0Avar%20menuPopup%20%3D%20createNode%28%22menupopup%22%2C%20self%2C%20false%2C%20%7Bcontext%3A%20%22%22%7D%29%2C%0A%20%20%20%20sbBox%20%3D%20SidebarUI._box%2C%0A%20%20%20%20sbClsBtn%20%3D%20sbBox.querySelector%28%22.close-icon.tabbable%22%29%2C%0A%20%20%20%20wps%20%3D%20%22SidebarUI.browser.contentDocument.querySelector%28%27browser%23web-panels-browser%27%29.%22%2C%0A%20%20%20%20sep%20%3D%20%22%5Cn%5Cn%22%2C%0A%20%20%20%20help%20%3D%20self.Help.trim%28%29%2C%0A%20%20%20%20items%20%3D%20help%0A%20%20%20%20%20%20%3F%20help.split%28sep%29%0A%20%20%20%20%20%20%3A%20%5B%22New%20Tab%5Cnabout%3Anewtab%5Cnchrome%3A//mozapps/skin/places/defaultFavicon.png%22%5D%2C%0A%20%20%20%20menugroup%20%3D%20createNode%28%22menugroup%22%2C%20menuPopup%2C%20false%2C%20%7B%0A%20%20%20%20%20%20orient%3A%20%22vertical%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openPage%28event.target%29%3B%22%2C%0A%20%20%20%20%20%20oncontextmenu%3A%20%22removePage%28event.target%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%2C%0A%20%20%20%20cnOpen%20%3D%20document.getElementById%28%22context-sep-open%22%29%2C%0A%20%20%20%20cnItem%20%3D%20createNode%28%22menuitem%22%2C%20cnOpen%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20%22open-in-sidebar%22%2C%0A%20%20%20%20%20%20label%3A%20%22Open%20in%20Sidebar%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openWebPanel%28gContextMenu.getLinkURL%28%29%2C%20gContextMenu.getLinkURL%28%29%29%3B%20document.getElementById%28%27verticaltoolbar-button%27%29.click%28%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnListener%20%3D%20cnMenu.addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20cnItem.hidden%20%3D%20%21gContextMenu.onLink%29%2C%0A%20%20%20%20cnDestructor%20%3D%20addDestructor%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20cnMenu.removeEventListener%28%22popupshowing%22%2C%20cnListener%29%3B%0A%20%20%20%20%20%20cnMenu.removeChild%28cnItem%29%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20sbNav%20%3D%20%5B%0A%20%20%20%20%20%20%5B%22back%22%2C%20%22goBack%28%29%3B%22%2C%20%22back-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22forward%22%2C%20%22goForward%28%29%3B%22%2C%20%22forward-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22reload%22%2C%20%22reload%28%29%3B%22%2C%2C%20%22Reload%20current%20page%22%5D%2C%0A%20%20%20%20%20%20%5B%22stop%22%2C%20%22stop%28%29%3B%22%2C%2C%20%22Stop%20loading%20this%20page%22%5D%0A%20%20%20%20%5D%3B%0A%0Aitems.forEach%28%28item%2C%20index%29%20%3D%3E%20%7B%0A%20%20var%20%5Btitle%2C%20url%2C%20icon%5D%20%3D%20item.split%28%22%5Cn%22%29%3B%0A%20%20icon%20%3D%20%28icon.startsWith%28%27chrome%3A%27%29%20%7C%7C%20icon.startsWith%28%27data%3A%27%29%29%20%3F%20icon%20%3A%20%27moz-anno%3Afavicon%3A%27%20+%20icon%3B%0A%20%20createNode%28%22menuitem%22%2C%20menugroup%2C%20false%2C%20%7B%0A%20%20%20%20tooltiptext%3A%20url%2C%0A%20%20%20%20class%3A%20%22menuitem-iconic%22%2C%0A%20%20%20%20label%3A%20title%2C%0A%20%20%20%20image%3A%20icon%0A%20%20%7D%29.index%20%3D%20index%3B%0A%7D%29%3B%0Amenugroup.openPage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20openWebPanel%28...items%5Bindex%5D.split%28%22%5Cn%22%29%29%3B%0Amenugroup.removePage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20items.splice%28index%2C%201%29%20%26%26%20installButton%28items.join%28sep%29%29%3B%0A%0A%5B%0A%20%20%5B%27menuseparator%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%27%2C%20%27custombuttons.editButton%28this.parentNode.parentNode%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%27%2C%20%27openWebPanel%28gClipboard.read%28%29%2C%20gClipboard.read%28%29%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0441%u0430%u0439%u0442%27%2C%20%27this.parentNode.parentNode.addPage%28window.content.document.title%2C%20window.content.document.location.href%2C%20gBrowser.mCurrentTab.image%29%3B%27%5D%0A%5D.forEach%28%28%5Btype%2C%20lbl%2C%20cmd%5D%29%20%3D%3E%20%0A%20%20%20%20%20%20%20%20%20%20createNode%28type%2C%20menuPopup%2C%20false%2C%20%7Blabel%3A%20lbl%2C%20oncommand%3A%20cmd%7D%29%29%3B%0A%0Aif%20%28%21sbBox.hasAttribute%28%22navbuttons%22%29%29%20%7B%0A%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%2C%20tltp%2C%20ttxt%5D%29%20%3D%3E%20%7B%0A%20%20%20%20var%20icon%20%3D%20%22chrome%3A//browser/skin/content-contextmenu.svg%23%22%20+%20id%3B%0A%20%20%20%20id%20%3D%20%27sb-%27%20+%20id%20+%20%27-button%27%3B%0A%20%20%20%20createNode%28%22toolbarbutton%22%2C%20sbClsBtn%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20id%2C%0A%20%20%20%20%20%20oncommand%3A%20wps%20+%20cmd%2C%0A%20%20%20%20%20%20tooltip%3A%20tltp%2C%0A%20%20%20%20%20%20tooltiptext%3A%20ttxt%2C%0A%20%20%20%20%20%20style%3A%20%27list-style-image%3A%20url%28%22%27%20+%20icon%20+%20%27%22%29%3B%20-moz-image-region%3A%20rect%280%2011px%2011px%200%29%3B%27%0A%20%20%20%20%7D%29%0A%20%20%7D%29%0A%20%20sbBox.setAttribute%28%27navbuttons%27%2C%20%27true%27%29%3B%0A%7D%0A%0Afunction%20installButton%28help%29%20%7B%0A%20%20%20%20var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%3B%0A%20%20%20%20var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%20%20%20%20param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%20%20%20%20param.help%20%3D%20help%3B%0A%20%20%20%20custombuttons.cbService.installButton%28param%29%3B%0A%7D%0A%0Afunction%20createNode%28type%2C%20elm%2C%20before%2C%20attrs%29%20%7B%0A%20%20var%20node%20%3D%20before%0A%20%20%3F%20elm.parentNode.insertBefore%28document.createElement%28type%29%2C%20elm%29%0A%20%20%3A%20elm.appendChild%28document.createElement%28type%29%29%3B%0A%20%20for%28var%20name%20in%20attrs%29%20%7B%0A%20%20%20%20if%20%28attrs%5Bname%5D%29%0A%20%20%20%20%20%20node.setAttribute%28name%2C%20attrs%5Bname%5D%29%3B%0A%20%20%7D%0A%20%20return%20node%3B%0A%7D%0A%0Athis.addPage%20%3D%28title%2C%20url%2C%20icon%29%3D%3E%20%7B%0A%20%20title%20%3D%20%21title%20%3F%20url%20%3A%20title%3B%0A%20%20icon%20%3D%20%21icon%20%3F%20%27chrome%3A//mozapps/skin/places/defaultFavicon.png%27%20%3A%20icon%3B%0A%20%20var%20newItem%20%3D%20%5Btitle%2C%20url%2C%20icon%5D.join%28%27%5Cn%27%29%3B%0A%20%20installButton%28%5Bhelp%2C%20newItem%5D.join%28sep%29%29%3B%0A%7D%0A%0A%28%28browser%2C%20listener%2C%20br%29%20%3D%3E%20%7B%20if%20%28browser%29%20%7B%0A%20%20addEventListener%28%22DOMFrameContentLoaded%22%2C%20listener%2C%20true%2C%20browser%29%3B%0A%20%20var%20getBr%20%3D%20%28%29%20%3D%3E%20browser.contentDocument.querySelector%28listener.selector%29%3B%0A%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20br.window%20%3D%20%7Bparent%3A%20listener.parent%7D%3B%0A%20%20addDestructor%28%28%29%20%3D%3E%20%7B%0A%20%20%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20delete%20br.window%3B%0A%20%20%7D%29%3B%0A%7D%7D%29%28SidebarUI.browser%2C%20%7B%0A%20%20selector%3A%20%22browser%23web-panels-browser%22%2C%0A%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21e.target.hasAttribute%28%22disableglobalhistory%22%29%29%20%7B%0A%20%20%20%20%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%5D%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20id%20%3D%20%27%23context-%27%20+%20id%3B%0A%20%20%20%20%20%20%20%20var%20mItem%20%3D%20SidebarUI.browser.contentDocument.querySelector%28id%29%3B%0A%20%20%20%20%20%20%20%20if%20%28id%20%3D%3D%20%22%23context-reload%22%29%0A%20%20%20%20%20%20%20%20%20%20mItem.style.setProperty%28%27display%27%2C%20%27-moz-box%27%2C%20%27important%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20eval%28wps%20+%20cmd%29%3B%0A%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20e.target.setAttribute%28%22disableglobalhistory%22%2C%20%27false%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21%28%22window%22%20in%20e.target%29%29%0A%20%20%20%20%20%20e.target.window%20%3D%20%7Bparent%3A%20this.parent%7D%3B%0A%20%20%7D%2C%0A%20%20get%20parent%28%29%20%7B%0A%20%20%20%20delete%20this.parent%3B%0A%20%20%20%20var%20parent%20%3D%20%7B%7D%3B%0A%20%20%20%20parent.contentAreaClick%20%3D%20eval%28%60%28%24%7B%0A%20%20%20%20%20%20contentAreaClick.toString%28%29.replace%28%0A%20%20%20%20%20%20%20%20%27linkNode.getAttribute%28%22onclick%22%29%27%2C%0A%20%20%20%20%20%20%20%20%22%21target%20%26%26%20this.shouldLoadInPanelBrowser%28linkNode%29%20%7C%7C%20%24%26%22%0A%20%20%20%20%20%20%29%0A%20%20%20%20%7D%29%60%29%3B%0A%20%20%20%20parent.shouldLoadInPanelBrowser%20%3D%20link%20%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%21%28link.ownerDocument.location.protocol%20%3D%3D%20%22file%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20link.className%20%3D%3D%20%27file%27%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20this.parent%20%3D%20parent%3B%0A%20%20%7D%0A%7D%29%3B%0A%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%0A%20%20%5B%0A%20%20%20%20%27@namespace%20xul%20url%28%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20html%20url%28%22http%3A//www.w3.org/1999/xhtml%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20svg%20url%28http%3A//www.w3.org/2000/svg%29%3B%27%2C%0A%20%20%20%20%27%27%2C%0A%20%20%20%20%27@-moz-document%20url%28%22chrome%3A//browser/content/browser.xul%22%29%20%7B%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%5Bloading%5D%20%7E%20%23sb-reload-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%3Anot%28%5Bloading%5D%29%20%7E%20%23sb-stop-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20-moz-appearance%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20padding%3A%203.5px%206px%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20margin%3A%20.5px%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background-clip%3A%20border-box%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border-radius%3A%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20box-shadow%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%3Anot%28%5Bsidebarcommand%3D%22viewWebPanelsSidebar%22%5D%29%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.5%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20transition%3A%20opacity%20ease%20200ms%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%3Ahover%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.9%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%7D%27%0A%20%20%5D.join%28%27%5Cn%27%29%29%29%3B%0AaddDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28this.uri%2C%200%20%7C%7C%20uri%2C%200%29%29%3B%0Athis.uri%20%3D%20uri%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%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%5Babout%3Aconfig%0Aabout%3Aconfig%0A-%0A%0Aabout%3Aabout%0Aabout%3Aabout%0A-%0A%0Aabout%3Aaddons-memory%20%5BAddon%5D%0Aabout%3Aaddons-memory%0A-%0A%0Achrome%3A//browser/content/places/places.xul%0Achrome%3A//browser/content/places/places.xul%0A-%0A%0Aabout%3Asessionrestore%0Aabout%3Asessionrestore%0A-%0A%0A------------%0A------------%0A------------%0A%0AWatch%0Adata%3Atext/html%3Bbase64%2CPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4NCjx0aXRsZT5UaGUgQ2xvY2sgaXMgVGlja2luZyB8IE5ldyBUYWIgQmlnIENsb2NrIEJhY2tncm91bmQ8L3RpdGxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCWZ1bmN0aW9uIHBhaW50VGltZSgpew0KCQl2YXIgbm93ICAgID0gbmV3IERhdGUoKTsNCgkJdmFyIGhvdXIgICA9IG5vdy5nZXRIb3VycygpOw0KCQl2YXIgbWludXRlID0gbm93LmdldE1pbnV0ZXMoKTsNCgkJdmFyIHNlY29uZCA9IG5vdy5nZXRTZWNvbmRzKCk7DQoJCWlmIChob3VyICAgPT0gMCkgeyBob3VyID0gMTI7ICAgICAgICAgICAgIH0NCgkJaWYgKDEwICAgPiBob3VyKSB7IGhvdXIgICA9ICIwIiArIGhvdXI7ICAgfQ0KCQlpZiAoMTAgPiBtaW51dGUpIHsgbWludXRlID0gIjAiICsgbWludXRlOyB9DQoJCQ0KCQlpZiAoMTAgPiBzZWNvbmQpIHsgc2Vjb25kID0gIjAiICsgc2Vjb25kOyB9DQoJCXZhciB0aW1lU3RyaW5nID0gaG91ciArDQoJCQkJCQknOicgKw0KCQkJCQkJbWludXRlICsNCgkJCQkJCSc6JyArDQoJCQkJCQlzZWNvbmQ7IA0KCQl2YXIgbW9udGhzID0gbmV3IEFycmF5KDEzKTsNCgkJbW9udGhzWzBdICA9ICJKYW51YXJ5IjsNCgkJbW9udGhzWzFdICA9ICJGZWJydWFyeSI7DQoJCW1vbnRoc1syXSAgPSAiTWFyY2giOw0KCQltb250aHNbM10gID0gIkFwcmlsIjsNCgkJbW9udGhzWzRdICA9ICJNYXkiOw0KCQltb250aHNbNV0gID0gIkp1bmUiOw0KCQltb250aHNbNl0gID0gIkp1bHkiOw0KCQltb250aHNbN10gID0gIkF1Z3VzdCI7DQoJCW1vbnRoc1s4XSAgPSAiU2VwdGVtYmVyIjsNCgkJbW9udGhzWzldICA9ICJPY3RvYmVyIjsNCgkJbW9udGhzWzEwXSA9ICJOb3ZlbWJlciI7DQoJCW1vbnRoc1sxMV0gPSAiRGVjZW1iZXIiOw0KCQl2YXIgbm93ICAgICAgICAgPSBuZXcgRGF0ZSgpOw0KCQl2YXIgbW9udGhudW1iZXIgPSBub3cuZ2V0TW9udGgoKTsNCgkJdmFyIG1vbnRobmFtZSAgID0gbW9udGhzW21vbnRobnVtYmVyXTsNCgkJdmFyIG1vbnRoZGF5ICAgID0gbm93LmdldERhdGUoKTsNCgkJdmFyIHllYXIgICAgICAgID0gbm93LmdldFllYXIoKTsNCgkJaWYoeWVhciA8IDIwMDApIHsgeWVhciA9IHllYXIgKyAxOTAwOyB9DQoJCXZhciBkYXRlU3RyaW5nID0gbW9udGhuYW1lICsNCgkJCQkJCScgJyArDQoJCQkJCQltb250aGRheSArDQoJCQkJCQknLCAnICsNCgkJCQkJCXllYXI7DQogICAJCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uaW5uZXJIVE1MID0gIjxkaXY+Iit0aW1lU3RyaW5nKyI8YnIvPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MzhweDsnPiIrZGF0ZVN0cmluZysiPC9zcGFuPjwvZGl2PiI7DQoJfQ0KCWZ1bmN0aW9uIGJnQ29sb3IoKXsNCgkJCWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID09ICJyZ2IoMjA2LCAyMDYsIDIwNikiKXsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIjMDAwIjsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmNvbG9yID0gIiNDRUNFQ0UiOw0KCQkJfQ0KCQ0KCX0NCglmdW5jdGlvbiBvbmJvZHlsb2FkKCl7DQoJCXBhaW50VGltZSgpOw0KCQlpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtwYWludFRpbWUoKTt9LCAxMDAwKTsNCgkJaW50ZXJ2YWxJRDIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpe2JnQ29sb3IoKTt9LCA1MDAwKTsNCgl9DQoJCTwvc2NyaXB0Pg0KPHN0eWxlPg0KYm9keSB7DQoJY29sb3I6ICMwMEZGMDA7DQoJZm9udDogOTRweCBBcmlhbDsNCgltYXJnaW46IGF1dG87DQoJcGFkZGluZzoxMDBweCAwIDAgMDsNCglsZWZ0OjA7DQoJcmlnaHQ6MDsNCgl0b3A6MDsNCglib3R0b206MDsNCgliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7DQogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkOw0KCXRleHQtYWxpZ246Y2VudGVyOw0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMTAwJTsNCn0NCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keSBvbkxvYWQ9Im9uYm9keWxvYWQoKTsiPg0KPGRpdiBpZD0iZG50Ij48L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4%0Adata%3Aimage/ico%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXpJREFUeNqkU7uKwkAUvUnMGlSIWNhql3Z/wG+wtBOExY8QbAT/YMFmK3/C1EJ6CwsftYKFqEUUk5jsPQMTYnZS7YHDTO7jzL13MlqSJPQfaOPx+JPXL2Y/64Dw7XYz6/V6qMibM38mk8mKRqPR9/F4fDGSLJ/PZ7JcLpO8HbxerzHycIjOhn6z2dTxkSVQqVQobwdrtZqGPMSUoiiiOI7/9qZpxOUrfQDyAD0MQxGk4na7LfQhLxXgcpTc7XaFPilQkgIq7Pf7Ql9awePxMAaDAc1mM9GXZBAEdDqd6HK5vNk9zyPE+77/IQS4n9d0OqVut0t8PXAIdewNw6DNZpP2fL/fyXEcQjwjEC3gJFmOXCWGwyEtFguybZuq1eqbD3npDPKJEo1Gg3q9Hh0OB2q1WsoZCAHceRFM06R2u108RGwQlKeu67Rer5U+MBXgyc55UFG5XKYsIeC6LuXt4Pl8fiFP/LGdTkf5GtGWZVkmX3Pha+THtvoVYADFFmv7Z4SugwAAAABJRU5ErkJggg%3D%3D%0A%0AMyRadio%20-%20Online%20Player%0Ahttp%3A//myradio.ua/flashplayer/53%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABMLAAATCwAAAAAAAAAAAABzChH/zQ8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/80PHf9zChH/0A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/zQ8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/3zZC/+t7gv/0uLz/9LS4/+p2ff/cKjb/1A8d/9QPHf/UDx3/1A8d/9EPHf/UDx3/1A8d/9QPHf/XFyT/8Jie///////2wMT/63uC/+2Ei//3ycz//////+t6gv/VEiD/1A8d/9QPHf/RDx3/1A8d/9QPHf/UER//9r3A//vi4v/fNkL/1A8d/9QPHf/UDx3/1A8d/+JHUf/98fP/8Jie/9QPHf/UDx3/0Q8d/9QPHf/UDx3/5FJc///////bKDT/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/4D5J///////fNkL/1A8d/9EPHf/UDx3/1A8d//a9wP/wmJ7/1A8d/9QPHf/ZHSr/8Z2i/9ojL//UDx3/1A8d/9QPHf/2wMT/75KX/9QPHf/RDx3/1A8d/9QPHf/+9fb/5ltk/9QPHf/UDx3/2yg0////////////5l1m/9QPHf/UDx3/63qC//fJzP/UDx3/0Q8d/9QPHf/UDx3//vX2/+ZbZP/UDx3/1A8d/9soNP///////vX2/+NKVP/UDx3/1A8d/+t6gv/3ycz/1A8d/9EPHf/UDx3/1A8d//a9wP/wmJ7/1A8d/9QPHf/YHCn/8Z2i/9kgLP/UDx3/1A8d/9QPHf/2wMT/7o2T/9QPHf/RDx3/1A8d/9QPHf/kUlz//////9wqNv/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/gPkn//////940P//UDx3/0Q8d/9QPHf/UDx3/1BEf//S4vP/74uL/3zpF/9QPHf/UDx3/1A8d/9QPHf/jTVf//fHz/++Sl//UDx3/1A8d/9EPHf/UDx3/1A8d/9QPHf/XFyT/7o2T///////2wMT/63uC/+2Ei//3ycz//////+p2ff/VEiD/1A8d/9QPHf/RDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/eND//63qC//S4vP/0sLX/6nR8/9wqNv/UDx3/1A8d/9QPHf/UDx3/0Q8d/9APHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/84PHf9rCQ//yQ8c/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/8gPHP9wChH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%0A%0A2ip.ru.Panel%0Ahttps%3A//2ip.ru/opera-panel/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8AlF8AfJNfAP+TXwD/lF8A/5VgAP+VYAD/l2IA/5ZiAP+YYwD/mWUA/5tmAP+bZwD/m2cA/51qAP+jbwD/lF8AcZVgAP+UYAD/lV8A/5VhAP+WYgD/l2IA/5hjAP+YZAD/mmUA/5tnAP+bZwD/nWkA/51pAP+fawD/pnIA/5VgAO+WYgD/lmEA/5VgAP+VXwD/l2EA/5hkAP+ZZAD/mGMA/5plAP+daQD/nmoA/55qAP+fawD/o3AA/6p4AP+VYADvlmIA/5hjAP+VXwD/lF0A/5VgAP+bZwD/mGIA/5dgAP+aZAD/n2sA/6BsAP+fbAD/oG0A/6NwAP+pdwD/mGQA7ZplAP+XYQD/7ePW//bw6P/WwaH/lFwA/+rfz//18Oj/2cOi/55qAP+kcgD/pXIA/6Z0AP+pdgD/rn0A/5toAO2fawD/mGIA//Lr4P//////3cuy/5RbAP/v5db//////+DNrf+cZAD/pG8A/6h2AP+sewD/rn0A/7KFAP+gbQDtoGwA/55oAP/x6d3//////9zJq/+aYwD/7uXU///////28ej/5de8/9nCmv+9li3/rXsA/7SGAP+3iwD/o3AA7aRyAP+ibQD/8enb///////eyqv/oGkA/+/m0///////////////////////+/n0/7uSEP+1hwD/vJIA/6d2AO2ndwD/pXIA//Lr3f//////3cur/6VvAP/w5tT//////+vfyP/Or17/9O3d///////ZxJT/tYcA/8CWAP+qewDtq3sA/6t4AP/z693//////97Mq/+rdgD/8ejV///////j07L/tYkA/+3iyP//////382h/7iNAP/DnAD/r38A7bB/AP+tegD/9e7h///////h0bP/rnwA//Lr1////////////////////////////9G0W/++lQD/xaEA/7GDAO20hQD/soIA/+zgxf/z7d3/1rt5/7WGAP/r4L7/9O7e//Xv3v/28N//8ObL/9rGff+/mAD/w54A/8akAP+2hwDtt4gA/7mLAP+4igD/t4oA/7yPAP+9lQD/vJIA/7uSAP+9lAD/vJQA/76WAP+/lwD/w54A/8WiAP/IpwD/tYYA7beIAP+6jQD/u48A/7uRAP++lAD/vpcA/7+YAP+/lwD/v5gA/8GaAP/AmgD/w5wA/8WgAP/FogD/yKcA/7mLAPG7jgD/u48A/76UAP+/lwD/wJcA/7+ZAP/BmwD/wZwA/8KdAP/DnwD/w54A/8agAP/GogD/x6YA/8qqAH+9kADcvZMA7cCWAO3AmQDtw50A7cOcAO3EngDtxJ8A7cahAO3GogDtxqMA7ceiAO3HpADtyqcA7cuqAG////8AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAA%3D%3D%0A%0AYandex.Panel%0Ahttp%3A//op.yandex.ru/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAsAAAAUwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAADjBwcEAwcHBAMHBwQDBwcEAAAAAUbq6uurExMT/xMTE/8TExP/ExMT/xMTE/8TExP/ExMT/xMTE/8TExP9ubm6QAAAALcTExADExMQAxMTEAAAAAFrHx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/vr6+7h4eHmQAAAAQx8fHAMfHxwAAAABXy8vL/8vLy/+UlM3/AADU/4+Pzv/Ly8v/g4PO/wwM0//Ly8v/y8vL/8vLy/+kpKS6AAAAM8vLywDLy8sAAAAAU9DQ0P/Q0ND/0NDQ/05O2f8dHd3/y8vQ/4eH1f8MDN7/0NDQ/9DQ0P/Q0ND/0NDQ/2VlZXsAAAAk0NDQAAAAAE/U1NT/1NTU/9TU1P/Fxdb/FBTq/3Bw3/+Jidz/DAzr/9TU1P/U1NT/1NTU/9TU1P/JycnkDw8PUwAAAAcAAABL2dnZ/9nZ2f/Z2dn/2dnZ/4WF5f8KCvb/ODjv/w0N9f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/6ioqKYAAAAqAAAASOLi4v/i4uL/4uLi/6io6v8LC/7/QkL2/zo69/8NDf3/4uLi/+Li4v/i4uL/4uLi/+Li4v/g4OD7AAAARgAAAETx8fH/8fHx//Hx8f81Ovz/bG/5//Hx8f+fovb/GB3+//Hx8f/x8fH/8fHx//Hx8f/x8fH/7+/v+wAAAEIAAABA9vb2//b29v/29vb/HSz//7K3+f/29vb/qK35/yUz/v/29vb/9vb2//b29v/29vb/9vb2/8jIyKMAAAAkAAAAPPn5+f/5+fn/+fn5/z5U/v+osvv/+fn5/6+4+/80TP//+fn5//n5+f/5+fn/+fn5//Dw8OMXFxdBAAAABgAAADj7+/v/+/v7//v7+/+Ro/3/UG7+/7/J/P+crf3/Q2P///v7+//7+/v/+/v7//v7+/+Tk5NnAAAAGfv7+wAAAAA1/f39//39/f/9/f3/9vj9/4yk/v9Td///QWn//05z///9/f3//f39//39/f/c3NysAAAAH/39/QD9/f0AAAAAMv7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/5+fnpPj4+PgAAAAn+/v4A/v7+AAAAACn39/fi////////////////////////////////////////////////tbW1cgAAABf///8A////AP///wAAAAAVAAAAKAAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAABv///8A////AP///wD///8AAA8AAAAHAAAAAwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAADAAAABwAAAA8AAA%3D%3D%0A%0AYandex.Weather%0Ahttps%3A//yandex.kz/pogoda/almaty/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAIAICAAAAEAIAAoEAAAJgAAABAQAAABACAAKAQAAE4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqthWqr7FsqK+zk6iwsoGqr7M2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpr7JTqq6x8aqvsv+qr7L/qq+y/6qvsv+prrGhqqqqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqK2yNaqvsvqqr7L/qq+y/6qvsv+qr7L/qq+y/6qvsv+pr7KSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqrbKyqq+y/6qvsv+pr7Hqqa+yj6mvscOqr7L/qq+y/6mvsvynsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvs/Cqr7L/qq+y/6qusUUAAAAAv7+/BKmtstuqr7L/qq+y/6uusVUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAqq+ys6qvsv+qr7L/qa6xZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAACqrbKyqq+y/6qvsv+qr7JmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAKmvso+qr7LMqq+yzKqws1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP70AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+9QAAAAAAAAAAAAAAAAAA/t0AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7fAAAAAAAAAAAAAAAAAAD+xAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/skAAAAAAAAAAAAAAAAAAP2VAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9mgAAAAAAAAAAAAAAAAAA/1AAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP9XAAAAAAAAAAAAAAAAAAD/DgAA/vkAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/AAA/xUAAAAAAAAAAAAAAAAAAAAAAAD9mwAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8jAAD++wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/gAA/ywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2RAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wUAAP7GAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+0wAA/woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/yAAAP7dAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/uEAAP8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xMAAP7FAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7RAAD/HQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/woAAP2PAAD++wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP78AAD9kQAA/wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8jAAD9lAAA/uwAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7sAAD9lQAA/yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BAAA/zkAAP9uAAD9kgAA/6oAAP+qAAD/qgAA/ZIAAP9uAAD/OQAA/wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqA6qvsWypsLGkqa6za6qqqgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKuvsXmqr7L/qq+xzamusfuqrrN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpr7HDqa6y2AAAAACrr7Kmqa+xwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+yzKqvsswAAAAAqK2ymaqvsswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvssyqr7LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7LMqq+yzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+yzKqvsswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvssyqr7LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP72AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+9QAAAAAAAAAAAAD+2wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/tkAAAAAAAAAAAAA/Z8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2dAAAAAAAAAAAAAP9DAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/QAAAAAAAAAAAAAAAAAAA/rsAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+uAAAAAAAAAAAAAAAAAAAAAAAAP8aAAD+3QAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+3AAA/xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xsAAP63AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+tQAA/xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/zYAAP2EAAD9pAAA/aQAAP2EAAD/NgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E 01-12-2017 15:34:56 Andrey_Krropotkin пишет
вот еще альтернатива скрытый текст Выделить код Код: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%3EOpen%20Firefox%20folders%20and%20files%20%5BFix%21%5D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABsAAAAoAAAAFgAAAAAAAAAADggMA0MoOjIXDxQWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBCgAAADksLCytMDAw4gAAAI0bHBuDKR8lan1IaZfSg7XS+K3f/zwtN2IAAAAAAwIDAwAAAAAAAAAAAAAAAQMDAwADAwMUAgICZUtLS+xgYWH/RURF8W1tbfpQS07/hm99/8Czu/2tsK7/IiMijwAAAAADAgMCAAAAAAAAAAAAAAAAJSUlH1dXV8ROTk7cl5eX/7Gxsfytra3/fX19/UpMS/t2enf7tLe1+7u7u/8lJCSkAAAAGQUFBQABAQECAAAAAAAAAAAfHx8tYGBg8ZiYmP+Li4v9UlJS/pubm/6xsbH+paWl/qWlpf6GhYX+xsjH/1Q9R+JxQV3LRzFAWQAAAAACAQICAAAAAAMDAwNhYWHViIiI/zMzM/xvb2/+ioqK/p2dnf7n5+f+u7u7/pycnP7IyMj+WFBT/HZkb/9JQUeTAAAAAgMDAwESEhIAWlpaj4KCgv9aWlr+SUlJ/pGRkf6RkZH+i4uL/tzc3P6AgID+ysrK/sfHx/5MTk36U1ZU/zc4N4MBAAEBAgICAgkJCQB2dna+lZWV/2lpaf05OTn+bm5u/l9fX/7AwMD++vr6/ru7u/7CwsL+ysrK/lRUVPtkY2T/SEhIaQAAAAACAgIEAAAAAwcHBwBVVVWBqamp/5ubm/qQkJD+ysrK/uDg4P7b29v+0NDQ/sPDw/7Nzc3+WFhY+2xsbP9ISEhiAAAAAAICAgQCAgIFAAAAAFtbW3bKysr/x8fH+vX19f729vb+pKSk/re3t/7FxcX+zc3N/tLS0v5cXFz7dHR0/0hISGIAAAAAAwMDBAICAgQAAAAAMTExdY2Njf91dXX6tLS0/uDg4P65ubn+wsLC/s3Nzf7W1tb+29vb/mBgYPt6enr/S0tLYgAAAAADAwMEAgICBAAAAAAtLS1zd3d3/4qKivqdnZ3+pqam/re3t/7Gxsb+1NTU/t3d3f7f39/+Y2Nj+4CAgP9OTk5iAAAAAAMDAwQCAgIEAAAAAC4uLnN/f3//jIyM+p2dnf6pqan+tra2/sfHx/7Z2dn+6Ojo/u/v7/5sbGz7g4OD/1FRUWIAAAAAAwMDBAICAgQAAAAALy8vc39/f/+JiYn6nZ2d/rCwsP7AwMD+ysrK/sfHx/60tLT+mZmZ/mBgYPuTk5P/UlJSYgAAAAADAwMEAgICBAAAAAAvLy9zhISE/5CQkPmYmJj9i4uL/XZ2dv1lZWX9XFxc/WJiYv14eHj9mpqa+snJyf9RUVFhAAAAAAMDAwQCAgIEAAAAADAwMHRoaGj/SUlJ+z09Pf86Ojr/SEhI/2JiYv99fX3/lpaW/6ysrP+8vLz70tLS/1JSUmIAAAAAAwMDBAEBAQQAAAAAIyMjVzY2Nu8wMDDjS0tL5mFhYedzc3PnfHx85oeHh+WWlpbkqKio5La1tuHNzMzzb29vWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20..................%0Avar%20array%20%3D%20%5B%7Blabel%3A%20%22Profile%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/profile/profileicon.png%22%2Cvalue%3A%20%22ProfD%22%7D%2C%0A%7Blabel%3A%20%22Firefox%22%2Cimage%3A%20%22chrome%3A//branding/content/icon16.png%22%2Cvalue%3A%20%22CurProcD%22%7D%2C%0A////%7Blabel%3A%20%22Download%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/downloads/downloadIcon.png%22%2Cvalue%3A%20%22DfltDwnld%22%7D%2C%0A%7Bseparator%3A%27%27%7D%2C%0A%7Blabel%3A%20%22Extensions%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%2Cvalue%3A%20%22ProfD%2Cextensions%22%7D%2C%0A%7Blabel%3A%20%22Custom%20buttons%22%2Cimage%3A%20%22chrome%3A//custombuttons/skin/cbicon.png%22%2Cvalue%3A%20%22ProfD%2Ccustombuttons%22%7D%2C%0A%7Blabel%3A%20%22Bookmark%20backups%22%2Cimage%3A%20%22chrome%3A//custombuttons/skin/button.png%22%2Cvalue%3A%20%22ProfD%2Cbookmarkbackups%22%7D%2C%0A%7Blabel%3A%20%22Search%20plugins%28default%29%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2Cvalue%3A%20%22CurProcD%2Csearchplugins%22%7D%2C%0A%7Blabel%3A%20%22Search%20plugins%28user-defined%29%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2Cvalue%3A%20%22UsrSrchPlugns%22%7D%2C%0A%7Bseparator%3A%27%27%7D%2C%0A////%7Blabel%3A%20%22Chrome%22%2Cimage%3A%20%22chrome%3A//global/skin/dirListing/folder.png%22%2Cvalue%3A%20%22UChrm%22%7D%2C%0A////%7Blabel%3A%20%22userChrome.css%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cchrome%2CuserChrome.css%22%7D%2C%0A////%7Blabel%3A%20%22userContent.css%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cchrome%2CuserContent.css%22%7D%2C%0A%7Blabel%3A%20%22user.js%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cuser.js%22%7D%2C%0A%7Blabel%3A%20%22prefs.js%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cprefs.js%22%7D%2C%0A%7Blabel%3A%22-%20-%20-%20%20Utilities%20%20-%20-%20-%22%7D%2C%0A////%7Blabel%3A%22KeePass%20Password%20Safe%22%2Cvalue%3A%22ProfD%2C%25Soft%2CKeePass2Portable.exe%22%2Cimage%3A%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQMAAAAJcNDAvZNjAu+TYwLfkNDAvZAAAAlxAQEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx8fEJV1dXmkM9O/23pp/+883A/vG4pP/xtaD/8ce4/ragmf5COjf9V1dXmvHx8QkAAAAAAAAAAAAAAADx8fEJOjo5wZqOiv720cT+7aOJ/+mLa//ohWL/5n5a/+V4Uv/oiGb/8r2r/piGf/46OTnB8fHxCQAAAAAAAAAAV1dXmpqRjf71y7z/7aOJ/+ybf//qlHX/6Yxs/+iGY//mf1v/5XlT/+V0Tf/upo3/mIaA/ldXV5oAAAAAEBAQMENAP/354Nf+8LSf/yEXFP8gFhP/IBUR/yAUEP8gEw//IBIN/yARDP8gEQz/5XVO//K+rP5COjf9EBAQMAAAAJe5sq/+9c2///K9q/9UPzf/VDw0/1Q5MP+zdmH/qGxW/1IxJv9SLyP/bTwr/+Z7Vv/pimn/tqGZ/gAAAJcODQ3Z+Ozn/vXOwP/0xrb/IBEM/yARDP8gEQz/tH1q/1M4L/8gEQz/IBEM/yARDP/ngl//5nxX//LIuv4NDAvZNzY1+fvs5//318v/9s/C/1ZGQf9VQz3/VUE6/5VsXv9TOC//Uzgv/1M2K/9uRDX/6Ypo/+eDYP/xuKT/NjAu+Tc2Nvn88Oz/+N/W//fYzf8gEQz/IBEM/yARDP8gEQz/IBEM/yARDP8gEQz/IBEM/+qSc//pi2r/8ryp/zYwLvkODg7Z+vTy/vrm3//54Nf/s56W/25ENf/zybr/88Kx//K6p//jqZT/bkQ1/8WGcP/smn7/6pN0//PQxP4NDAzZAAAAl7q5uP787+v/+ufh/+bQyP8kIB7/wqWb//XLvP/zw7L/pIBz/y4iHv/rqZH/7aOJ/++qkv+3p6L+AAAAlxAQEDBEREP9/fn3/vvu6v/66OL/Zl1a/1ZMSP/00cX/7MW3/0E0MP99YVf/8bSf/++tlf/31sr+Qz48/RAQEDAAAAAAV1dXmpycm/799/X//O/r/+DRy/83MjH/SkE+/0A3NP9EOTX/5rur//K+q//20cT/mpCN/ldXV5oAAAAAAAAAAPHx8Qk6OjrBnZyb/v35+P788e7/49TP/5SIhP+YiIL/6Mm+//fVyf/55d3+m5OQ/jo6OcHx8fEJAAAAAAAAAAAAAAAA8fHxCVdXV5pERET9urm5/vr29P788/D//PDs//nv6/66tLH+REFA/VdXV5rx8fEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQMAAAAJcODg7ZNzY2+Tc2NvkODQ3ZAAAAlxAQEDAAAAAAAAAAAAAAAAAAAAAA8A8AAMADAACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA%3D%3D%22%2C%7D%2C%0A%7Blabel%3A%22QTranslate%206.3.1%22%2Cvalue%3A%22ProfD%2C%25Soft%2CQTranslate%206.3.1.exe%22%2C%7D%2C%0A%7Blabel%3A%22Everything%201.3.4%22%2Cvalue%3A%22ProfD%2C%25Soft%2CEverything%201.3.4.exe%22%2C%7D%2C%0A%7Blabel%3A%22VTUploader%202.2b%22%2Cvalue%3A%22ProfD%2C%25Soft%2CVTUploader.exe%22%2Cimage%3A%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAAAAABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQcAAAAAAAAAAAAAAAAAAAA0IQdsSxvEkUK8iz+9iz+9iz+9iz+9iz+9iz/Ik0Q0IQc0IQc0IQcAAAAAAAAAAAAAAAA0IQdkQRC1eyazeia0eiW0eiW0eiW0eiWwdyQ0IQc0IQdyUSM0IQcAAAAAAAAAAAAAAAA0IQdjQBCrcyGrciGscyGscyGscyGocCA0IQc0IQfEizdoRRQ0IQcAAAAAAAAAAAAAAAA0IQdhPw+laxykaxykaxykaxyhaRs0IQc0IQerdCOzeidkQRA0IQcAAAAAAAAAAAAAAAA0IQdgPhCeZBidZBieZRibYxc0IQc0IQeZYRabYxefZhlfPQ40IQcAAAAAAAAAAAAAAAA0IQdfPQ+SWxKVXRKUWxE0IQc0IQeMVhGPVxGOVxGQWBFfPRA0IQcAAAAAAAAAAAAAAAA0IQeYYBaYYBaTXBU0IQc0IQfMp3nPrH7Pq33WsoV9YDg0IQcAAAAAAAAAAAAAAAAAAAA0IQfUr3/Kpnc0IQc0IQfiyarmz7Du17qFbkw0IQcAAAAAAAAAAAAAAAAAAAA0IQfIrIffw53avZc0IQc0IQfr3cj37NuLd1o0IQcAAAAAAAAAAAAAAAAAAABuWDbVvZ3kza7lza7fx6c0IQc0IQft6+mMf2U0IQcAAAAAAAAAAAAAAAAAAABxXDzayK7s2sLs2sLs28Ll07s0IQc0IQeQg200IQcAAAAAAAAAAAAAAAAAAAByX0He08Dz6Nfz6Nbz6Nbz6Nbs4M40IQc0IQc0IQcAAAAAAAAAAAAAAAAAAABzY0be2tD69Ov69Or69Or69Or69Ort6uE0IQc0IQcAAAAAAAAAAAAAAAAAAAB5aU3c2dTt6+jt6+ft6+ft6+ft6+ft6+fw7u00IQcAAAAAAAAAAAAAAAAAAAA0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQf4AP//+AD//zwA//8eAP//DwD//weA//8DwP//AeD//wHw//8D4P//B8D//w+A//8fAP//PgD//3wA///4AP//%22%2C%7D%2C%5D%3B%0A%0Avar%20version%20%3D%20parseInt%28Services.appinfo.version%29%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28m%3D%3E%20%7Bif%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%20LOG%28m.label.slice%280%2C6%29%29%0Aif%20%28%20version%20%3E%2040%20%26%26%20m.label.startsWith%28%22Search%22%29%20%29%20return%3Bvar%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3BmItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0AmItem.setAttribute%28%22value%22%2C%20m.value%29%3BmItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%28%22image%22%20in%20m%29%20%26%26%20mItem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%28%22style%22%20in%20m%29%20%26%26%20mItem.setAttribute%28%22style%22%2C%20%22list-style-image%3A%20url%28%27%22+%20m.style%20+%22%27%29%3B%20-moz-image-region%3A%20rect%280%2C%2016px%2C%2016px%2C%200%29%22%29%3B%7D%29%3B%0AmenuPopup.addEventListener%28%22click%22%2C%20e%3D%3E%20openFirefoxFolders%28e.target.value%29%29%3B%0A//%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043F%u0430%u043F%u043A%u0438%20%u0438%20%u0444%u0430%u0439%u043B%u044B%20Firefox%2C%20%u0432%u044B%u0431%u043E%u0440%20%u0437%u0430%u0432%u044B%u0441%u0438%u0442%20%u043E%u0442%20%u0430%u0440%u0433%u0443%u043C%u0435%u043D%u0442%u0430%20%27value%27%20...................toString%28%29.startsWith%28%22Search%22%29%0Afunction%20openFirefoxFolders%28value%29%20%7Bvar%20array%20%3D%20value.split%28%22%2C%22%29%2Cdirectory%20%3D%20array%5B0%5D%2C%20folders%20%3D%20array%5B1%5D%2C%20file%20%3D%20array%5B2%5D%3B%0Avar%20dir%20%3D%20Services.dirsvc.get%28directory%2C%20Ci.nsIFile%29%3Bfolders%20%26%26%20dir.append%28folders%29%3Bfile%20%26%26%20%28dir.append%28file%29%2C%20dir.launch%28%29%29%3Bdir.exists%28%29%20%26%26%20%21file%20%26%26%20dir.reveal%28%29%3B%7D%3B%0A%0A%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 еще есть такая кнопка скрытый текст Выделить код Код: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%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u043D%u0435%u0448%u043D%u0438%u0435%20win%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u044F%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMAAwQAKCImDyo4IWkYaBzFQ6xI8FG/V/VCq0jcGGQbkwAQACQAAAAAAAIAAwAAAAAAAAAAAAAAAAEAAAIAAgIAQy4iYp9YOuZUah3/QMJQ/nfxgP97+Yb/f/+L/m/7ev87v0L1BzwIawAAAAAAAgADAAAAAAEAAAIAAAAAQR4Ki7pwNP//tG79aXQg/CGwM/tL3lP+SeJU/krmVf5I5lT8ROZQ/SjIMf8DQgWFAAAAAAACAAMAAAAAMRoKX5hKHP/qoVT69JtU/WVsGP8RmyP/LMAz/ynHM/4ozTP8Jc4w+x/KK/sbxyn7Daoa/wAlA1QAAAEAAgAAA2o5G9GhVyT/z305/N54Nv9eWxTyAnMR6Qp+DvsIig//CpQR/wucE/8KnQ//CpkG/QedAf8FZADWAwIACigYIklrMln7h0VB/6dcJPvBaCz/XC8RlgABAAACDgAlABUANAAfAUsAKABeAz8RlAhfUvkDZnP/CFtw+gcXKklSLEeVlUiB/6VamPykYGD7o1wl/2A4H5YAAAAAAgEBBAAAAAAAAQMEAAAAAAUoVmcHcfT/AIL5+QCK//8BOZ2rXjJRsJtOhf/SgLr9zoK++5hbW/9AKhaGAAAAAAICAQYAAQACAAMDBwAAAAABLlprD4///wqh9/oJsf//Al7M1FsxT6ucUYf/1Iq//Oyd1vzYkMf/X0FVhQAAAAADAgMEAAAAAAACBAQBAAAAAC1aYRSQ//8lpPr6Irj//wtt1t5GJT2DmlCF/82Juvz2reH/8Kbb/eej1P9jR1t+AAAAAAMCAwQBAwUGAAAAAAYkV2wjkv//PLP7+jzE//8VaMXMHhAaP5FLff+4d6b++rno//iz5P/3suP88rLg/2hPYn8AAAAAAQAAAAgPYW1bXeD/PJL0/1DB/fxSy///EkiRlwAAAABqOFzBp16S/+ev2Pz/we///b7s//u86vr7wev/dFxfcgAJYmhxeP//lJH+/juS+/5q0f/+V7n4/AASODwAAAAAHA4YP5NMgP+6fKj9/Mzw/f3H8/7/y/X/7LvU811Ywd54gPv8r6z//puZ/P1Akff5g+L//y5hmZ8AAAAAAgECAwAAAAA1Gy5vmlGG/8iOuP3/1vX/8sfe811YxNZ6g/f5ubb9/a6u+/uvrfz8TZPt/1GFvMcAAQwNAQAAAAAAAAACAQEDAAAAACoVJVh/QW3umWuP7V5fzeSMk/j9zcn//7+//v7Av///o6Pz+yU2XH0AAwYKAQAAAAAAAQEAAAAAAAAAAAEBAQMAAAAADwkHFAcCKUsJGb3VO0vn9lRf5/RdZMzXRkmTmw4OKTUAAAAAAgIDAwABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0Avar%20array%20%3D%20%5B%5B%22IE%22%2C%20%22c%3A%5C%5CProgram%20files%5C%5CInternet%20Explorer%5C%5Ciexplore.exe%22%5D%2C%0A%20%20%20%5B%22Explorer%22%2C%20%22c%3A%5C%5Cwindows%5C%5Cexplorer.exe%22%5D%2C%0A%20%20%20%5B%22separator%22%5D%2C%0A%20%20%20%5B%22Cmd%20Prompt%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccmd.exe%22%5D%2C%0A%20%20%20%5B%22Media%20Player%22%2C%20%22C%3A%5C%5CProgram%20Files%5C%5CWindows%20Media%20Player%5C%5Cwmplayer.exe%22%5D%2C%0A%20%20%20%5B%22Task%20Manager%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ctaskmgr.exe%22%5D%2C%20%0A%20%20%20%5B%22Control%20Panel%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccontrol.exe%22%5D%2C%0A%20%20%20%5B%22separator%22%5D%2C%0A%20%20%20%5B%22Notepad%22%2C%20%22c%3A%5C%5Cwindows%5C%5Cnotepad.exe%22%5D%2C%0A%20%20%20%5B%22Calculator%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccalc.exe%22%5D%2C%0A%20%20%20%5B%22Virtual%20Keyboard%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5COSK.exe%22%5D%2C%0A%20%20%20%5B%22Character%20table%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccharmap.exe%22%5D%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20if%20%28m%20%3D%3D%20%22separator%22%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m%5B0%5D%29%3B%0A%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20mItem.setAttribute%28%22image%22%2C%20%22moz-icon%3A//file%3A//%22%20+%20m%5B1%5D%29%3B%0A%20%20%20mItem.onclick%20%3De%3D%3E%20Components.Constructor%28%22@mozilla.org/file/local%3B1%22%2C%20%22nsIFile%22%2C%20%22initWithPath%22%29%28m%5B1%5D%29.launch%28%29%3B%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%7D%29%3B%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 |
mokujin > 03-12-2017 01:35:20 |
mokujin пишет
походу, так прально: auto-hide SideBar on click page Выделить код Код:// ---------12--------------------------- (auto-hide SideBar on click page) --------------------------------------------------------------- (function() { this.clickPageSB = function(event) {gBrowser.addEventListener('mousedown',on, false); }; function go() { clickPageSB(event); var sidebarBox = document.getElementById("sidebar-box"); if ( sidebarBox.hidden = "true") return; toggleSidebar(); } function on() { gBrowser.removeEventListener('mousedown',on, false); timeoutId = setTimeout(go, 1000) } function off() { clickPageSB(event); clearTimeout(timeoutId) } sidebar.addEventListener('click',off, false); clickPageSB(event); })(); ошибки нету, панель закрывает, но... кнопка(на VerticalToolbar) сохраняет состояние "нажатости", что тоже хреново, но терпимо. млин, чёж так сложно-то и так тупо все с этой бок.панелью ![]() |
okkamas_knife > 03-12-2017 05:52:52 |
добавь в код |
mokujin > 03-12-2017 08:05:46 |
ну это да... только вот не оно Тут еще одно что: с этим кодом в Init при старте бравзера теперь открываеццо бок.панель. оно и логично, так записано .. и открывает посл. состояние бок.панели. Надо наверно, заводить... как это... observer вроде, но даже не представляю что это и как. Пока, нехай будет так. придумаю что, изменю. |
mokujin > 04-12-2017 05:42:12 |
Сделал. Плазал в browser.js ... всё было рядом Скрывать боковую панель по клику на странице Выделить код Код:// ---------12--------------------------- (auto-hide SideBar ) --------------------------------------------------------------- // при открытой бок.панели и клике ЛКМ( ПКМ и СКМ игнор.) на странице, будет закрыта. // + можно делать выделение текста для копирования , панель не будет закрываться. // + исключения для адресов где не нужно закрывать бок.панель. Например расш-е ScrapBook. исключения можно убрать или добавить в переменную disable (function() { this.clickPageSB = function(event) { gBrowser.addEventListener('mousedown',on, false); }; function go() { clickPageSB(event); var selection = getBrowserSelection(); const sidebarbox = window.document.getElementById("sidebar-box").hidden; if ( !sidebarbox && !selection && getDomain() ) toggleSidebar(); } function on(e) { if ( e.button != 0 ) return; gBrowser.removeEventListener('mousedown',on, false); timeoutId = setTimeout(go, 500) } function off() { clickPageSB(event); clearTimeout(timeoutId) } sidebar.addEventListener('click',off, false); clickPageSB(event); // -------- Получить домен или пусто если это внутренние адреса about , chrome, file:/// т.д. --------------------------- function getDomain() { var protocol = content.location.protocol; var disable = ["about:", "chrome:", "jar:", "data:"]; if ( disable.indexOf( protocol ) !== -1 ) return; var domName = content.document.domain; return domName.replace(/^www./g,''); }; })(); Лучше даже так: скрытый текст Выделить код Код:// ---------12--------------------------- (auto-hide SideBar) --------------------------------------------------------------- (function() { this.clickPageSB = function(event) { gBrowser.addEventListener('mousedown',on, false); }; function go() { clickPageSB(event); var selection = getBrowserSelection(); const sidebarbox = window.document.getElementById("sidebar-box").hidden; if ( !sidebarbox && !selection && getLoc() ) toggleSidebar(); } function on(e) { if ( e.button != 0 ) return; gBrowser.removeEventListener('mousedown',on, false); timeoutId = setTimeout(go, 500) } function off() { clickPageSB(event); clearTimeout(timeoutId) } sidebar.addEventListener('click',off, false); clickPageSB(event); // Ф-ция вернет текущий адресс или undefined если начало адреса совпадает с исключениями в arr // Исключения в массиве arr - если положение совпадает, начинается с ... то выход. иначе возврат текущего урл. function getLoc() { let loc = content.location.href; let arr = ["chrome://scrapbook/","data:"]; for (var i = 0; i < arr.length; i++) { if ( loc.startsWith(arr[i]) == 1 ) return; } return loc; }; })(); |
ds(ds) > 04-12-2017 13:20:40 |
доброго времени.. если у кого есть мысли поделитесь |
villa7 > 04-12-2017 17:20:37 |
ds(ds) скрытый текст Выделить код Код:// Запретить дублирование вкладок, от 07.01.2015. ................................ function stopDuplicateTab(aURI) { var stop = false; for( var tab of gBrowser.tabs) { if ( tab.linkedBrowser.currentURI.spec == aURI ) { gBrowser.selectedTab = tab; stop = true; break; } } if (stop) return true; }; const handle = gBrowser.addTab; eval("gBrowser.addTab = " + handle.toString().replace('{', '{ \n\n if (stopDuplicateTab(aURI)) return;')); addDestructor(()=> eval("gBrowser.addTab = " + handle) ); |
Coroner > 12-12-2017 22:06:15 |
В 57+ какие-нибудь из кнопок серии "открыть видео в..." / "скачать видео с помощью..." работают? |
Mishania > 15-12-2017 21:25:36 |
В 52.5.2 ESR x64 больше не работает Menuitem hider. Без неё очень плохо. |
Ultima2m > 16-12-2017 04:29:15 |
Mishania пишет
У меня работает. Да и чего бы ей не работать? В ESR только безопасность обновляется. |
Mishania > 16-12-2017 07:34:44 |
Ultima2m, у меня тоже работала, пока на x64 yt обновил. Вот и думаю что случилось. |
usalex > 16-12-2017 15:15:22 |
Какая версия кнопки Autocopy+3 для 57 сейчас самая последняя и самая рабочая? |
Ultima2m > 16-12-2017 15:33:00 |
usalex пишет
скрытый текст Выделить код Код: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%3EAutocopy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy%2C%20%u043E%u0442%2008.12.2015.%20...............%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20%21cbu.getPrefs%28%22Autocopy%22%29%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A%0A//%20%u0421%u043E%u043C%u0435%u043D%u044E%20%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0432%u044B%u0434%u0435%u043B%u044F%u0435%u0442%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%27%2C%20value%3A%20%27Autocopy.selectWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20mItem.onclick%20%3De%3D%3E%20%7B%20e.stopPropagation%28%29%3B%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%20%7D%3B%20%20%0A%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20CB%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28document.createElement%28%22menu%22%29%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0AmenuPopup.lastChild.appendChild%28document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%20%29%3B%0AmenuPopup.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20...............%0Aconst%20s%20%3D%20%22Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20observe%3A%28subject%2C%20topic%2C%20data%29%3D%3E%20%7B%0A%20%20%20%20%20%20cbu.getPrefs%28%22Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22Autocopy%22%2C%20false%29%3B%20%20%0A%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target%20instanceof%20Ci.nsIDOMNSEditableElement%20%29%20return%3B%0A%20%20%20var%20win%20%3D%20e.target.ownerDocument.defaultView%3B%0A%20%20%20if%20%28%20win.top%20%21%3D%20content%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%29%20autocopy.lastSelection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%20%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%21%3D%3D%20%27mouseup%27%20%29%20return%3B%20%0A%20%20%20%0A%20%20%20var%20selection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy%22%29%20%26%26%20selection%20%26%26%20selection%20%21%3D%3D%20autocopy.lastSelection%20%29%20%7B%0A%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20%20%20%20%20%20if%20%28%20%21cbu.getPrefs%28%22Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20window.content.focus%28%29%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0AaddEventListener%28%22mousedown%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20...............%0Afunction%20middleMousePaste%28e%29%20%7B%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20cbu.getPrefs%28%27middlemouse.paste%27%29%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.commandDispatcher.getControllerForCommand%28%22cmd_paste%22%29%20%29%20%7B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20commandDispatcher%20%3D%20%28%20this.document%20%7C%7C%20document%20%29.commandDispatcher%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20controller%20%3D%20commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%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%20%20%20%20%20.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20gClipboard.read%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%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%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20...............%0AaddEventListener%28%22click%22%2C%20e%3D%3E%20%7B%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28content.document%2C%20%28gURLBar.value.startsWith%28%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%29%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20gClipboard.write%28%20content.location%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20%20%20%20%20%20document.getElementById%28%22identity-box%22%29.style.background%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20document.getElementById%28%22identity-box%22%29.style.background%20%3D%20%22%22%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20true%2C%20document.getElementById%28%22identity-box%22%29%20%29%3B%0A%0A%20%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20handleDblClick%28e%29%20%7B%0A%20%20var%20node%20%3D%20e.target%3B%0A%20%20var%20editor%20%3D%20node.editor%3B%0A%20%20%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%20....%0A%20%20if%20%28%20e.button%20%3D%3D%200%20%26%26%20cbu.getPrefs%28%22Autocopy.selectWithDoubleClick%22%29%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28%20/input%7Ctextbox%7Ctextarea/.test%28%20node.localName%20%29%20%29%20%21editor%20%3F%20node.select%28%29%20%3A%20editor.selectAll%28%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20....%20%20%20%20%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.saveWithDoubleClick%22%29%20%26%26%20node.localName%20%3D%3D%20%27img%27%20%29%20%7B%0A%20%20%20%20%20%20%20saveImageURL%28%20gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%20%29%3B%0A%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%2C%2020%29%3B%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.copyWithDoubleClick%22%29%20%26%26%20%21/findbar%7Ctabbrowser/.test%28%20node.localName%20%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%21editor%20%3F%20goDoCommand%28%22cmd_copy%22%29%20%3A%20editor.copy%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28%20node.textbox%20%7C%7C%20node%20%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20catch%28e%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043D%u043E%u0432%u044B%u0445%20%u043E%u043A%u043E%u043D%20...............%0Afunction%20observer%28subject%29%20%7B%0A%20%20%20subject.addEventListener%28%22load%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20var%20view%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u043E%u0432%20CB%20%u043A%u043D%u043E%u043F%u043E%u043A%0A%20%20%20%20%20%20if%20%28%20/custombuttons-editor/.test%28doc.URL%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%7D%29%3B%0A%7D%3B%0AServices.ww.registerNotification%28observer%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.ww.unregisterNotification%28observer%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20+%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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 |
usalex > 16-12-2017 15:48:01 |
Ultima2m |
Andrey_Krropotkin > 16-12-2017 17:23:13 |
Есть такая кнопка - "Экспорт в HTML" в контекстном меню закладок для выборочного экспорта закладок. скрытый текст Выделить код Код://-------------------- Экспорт в HTML файл в контекстном меню закладок (function () { function ImageConverter(imageURL) { this.imageURL = imageURL; this.channel = Services.io.newChannel(imageURL, null, null); this.channel.asyncOpen(this, null); } ImageConverter.prototype = { imageURL : "", channel : null, bytes : [], stream : null, Database64 : null, iscompleted : false, QueryInterface : function (iid) { if (!iid.equals(Components.interfaces.nsISupports) && !iid.equals(Components.interfaces.nsIRequestObserver) && !iid.equals(Components.interfaces.nsIStreamListener)) { throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, onStartRequest : function (aRequest, aContext) { this.stream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream); this.iscompleted = false; }, onStopRequest : function (aRequest, aContext, aStatusCode) { this.Database64 = 'data:' + this.channel.contentType + ';base64,' + btoa(String.fromCharCode.apply(null, this.bytes)); this.iscompleted = true; }, onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) { this.stream.setInputStream(aInputStream); var chunk = this.stream.readByteArray(aCount); this.bytes = this.bytes.concat(chunk); } }; var ExportHTMLFolder = { escapeHTML: function(str) { return str.replace(/[&"<>]/g, function (m) ({ "&": "&", '"': """, "<": "<", ">": ">" })[m]); }, onMenuItemCommand: function(event) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); var MPMenu = PlacesUtils.getString("BookmarksMenuFolderTitle"); var NodeID = document.popupNode._placesNode || document.popupNode.parentNode.selectedNode; fp.init(window, PlacesUIUtils.getString("EnterExport"),Ci.nsIFilePicker.modeSave); fp.appendFilters(Ci.nsIFilePicker.filterHTML); fp.defaultString = NodeID.title+".html"; if (fp.show() != Ci.nsIFilePicker.returnCancel) { var file = fp.file; var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); var charset = "UTF-8"; foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"] .createInstance(Components.interfaces.nsIConverterOutputStream); os.init(foStream, charset, 0, 0x0000); var nbTab = 5; var data = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n'; data = data + '<!-- This is an automatically generated file.\n'; data = data + '\tIt will be read and overwritten.\n'; data = data + '\tDO NOT EDIT! -->\n'; data = data + '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n'; data = data + '<TITLE>Bookmarks</TITLE>\n'; data = data + '<H1>'+ExportHTMLFolder.escapeHTML(MPMenu)+'</H1>\n'; data = data + '\n'; data = data + '<DL><p>\n'; os.writeString(data); var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); if( NodeID.type != 0 ) { query.setFolders([NodeID.itemId], 1); var result = historyService.executeQuery(query, options); node = result.root; } else { query.setFolders([NodeID.parent.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; inc = 0; var node = rootNode.getChild(inc); while(( inc < rootNode.childCount )&&( node.itemId != NodeID.itemId )) { inc++; var node = rootNode.getChild(inc); } rootNode.containerOpen = false; } this.ecrireUnMP( os, node, nbTab ); data = '</DL></p>\n'; os.writeString(data); os.close(); } }, ecrireUnMP: function( flux, elem, nbTab ) { var resultTypes = Ci.nsINavHistoryResultNode; if( elem.type == resultTypes.RESULT_TYPE_SEPARATOR ) { var chaine = new Array(nbTab).join(' ') + "<HR>\n"; flux.writeString(chaine); } else if( elem.type == resultTypes.RESULT_TYPE_URI ) { var Description= PlacesUIUtils.getItemDescription(elem.itemId); var chaine = new Array(nbTab).join(' ') + '<DT><A HREF="' + this.escapeHTML(elem.uri); if ( elem.icon.indexOf('moz-anno:favicon:http') >= 0 ) { //Services.console.logStringMessage('[ moz-anno:favicon ]: ' + elem.icon ); if ( elem.icon.indexOf('http://www.mozilla.org/2005/made-up-favicon/') < 0 ){ chaine = chaine + '" ICON_URI="' + elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http') + 'moz-anno:favicon:'.length); } var Image = new ImageConverter( elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http')) ); var thread = Cc['@mozilla.org/thread-manager;1'].getService().mainThread; while ( !Image.iscompleted ) { thread.processNextEvent(true); } chaine = chaine + '" ICON="' + Image.Database64; } else if ( elem.icon.indexOf('moz-anno:favicon:data:image') >= 0 ) { chaine = chaine + '" ICON="' +elem.icon.slice(elem.icon.indexOf('data:image')); } var chaine = chaine + '">' + this.escapeHTML(elem.title) + '</A>\n' + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; flux.writeString(chaine); } else if(( elem.type == resultTypes.RESULT_TYPE_FOLDER )||( elem.type == resultTypes.RESULT_TYPE_FOLDER_SHORTCUT )) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var Description= PlacesUIUtils.getItemDescription(elem.itemId); var chaine = new Array(nbTab).join(' ') + '<DT><H3>' + this.escapeHTML(elem.title) + '</H3>\n'; var chaine = chaine + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; chaine = chaine + new Array(nbTab).join(' ') + '<DL><p>\n'; flux.writeString(chaine); nbTab = nbTab + 4; var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); query.setFolders([elem.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; for (var inc = 0; inc < rootNode.childCount; inc ++) { var node = rootNode.getChild(inc); this.ecrireUnMP( flux, node, nbTab ); } rootNode.containerOpen = false; nbTab = nbTab - 4; chaine = new Array(nbTab).join(' ') + '</DL></p>\n'; flux.writeString(chaine); } }, init: function() { var contextMenu = document.getElementById("placesContext"); if (contextMenu) contextMenu.addEventListener("popupshowing", this.ExportHTMLFolderShowHideItem, false); }, ExportHTMLFolderShowHideItem: function(event) { var show = document.getElementById("placesContext_ExportHTMLFolder"); show.hidden = (document.popupNode.localName == "menuseparator")||( document.popupNode.className == "openintabs-menuitem"); document.getElementById("placesContext_ExportHTMLFolderSep").hidden = show.hidden; }, }; window.addEventListener("load", function load(event) { window.removeEventListener("load", load, false); //remove listener, no longer needed ExportHTMLFolder.init(); }, false); if ( document.getElementById("placesContext_ExportHTMLFolder") ) return; var copyBothMenuItem = document.createElement("menuitem"); copyBothMenuItem.id = "placesContext_ExportHTMLFolder"; copyBothMenuItem.setAttribute("label", "Экспорт в HTML"); copyBothMenuItem.setAttribute("selection", "any"); copyBothMenuItem.setAttribute("closemenu", "single"); copyBothMenuItem.addEventListener("command", function () { ExportHTMLFolder.onMenuItemCommand(event); }); var copyMenuItem = document.getElementById("placesContext_openSeparator"); copyMenuItem.parentNode.insertBefore(copyBothMenuItem, copyMenuItem); })(); Не помню где нашел. В FF56 она работает, а FF57 перестала работать. Может кто нибудь подправит? Буду очень признателен. |
Ultima2m > 17-12-2017 08:08:07 |
usalex пишет
Кнопка на сайте выложена. Кажется вот этот вариант |
Viatcheslav > 17-12-2017 14:00:42 |
usalex пишет
Я прошу прощение за то, что вмешиваюсь |
mssign > 20-12-2017 19:56:43 |
А можно как то отрегулировать ширину этой вертикальной панели. А то раза в три шире чем хотелось бы. Это VT, вертикальная панель. В 57 работает. код скрытый текст Выделить код Код:var vto = { distanceShow: 12, distanceHide: 64, showDelay: 320, color: "lightblue", fringe: "black", padding: 3, name: "VT", btn: this, tcm: document.getElementById("toolbar-context-menu"), ctm: document.getElementById("customization-toolbar-menu"), deck: document.getElementById("content-deck"), id: "cb-vt", get cust() gBrowser.currentURI.spec == "about:customizing", get xs() { delete this.xs; return this.xs = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore); }, init: function() { if (this.cust || this.btn._destructors.length) return; var vt = this.initVT(); var vto = this; this.btn.onclick = function(e) { e.button || vto.toggleVT(); } window.addEventListener("popupshown", this, false); window.addEventListener("popuphidden", this, false); window.addEventListener("resize", this, false); this.tcm.addEventListener("command", this, false); this.tcm.addEventListener("popupshowing", this, false); vto.toggleVT(vt.hasOwnProperty("on") ? vt.on : !this.xs.hasValue(location, vto.id, "collapsed") ); this.resize(); vto.btn._destructors.push({context: vto, destructor: vto.destroy}); }, destroy: function(reason) { window.removeEventListener("popupshown", this, false); window.removeEventListener("popuphidden", this, false); window.removeEventListener("resize", this, false); this.tcm.removeEventListener("command", this, false); this.tcm.removeEventListener("popupshowing", this, false); this.setCollapser(false); if (reason == "destructor" && this.cust) { var vto = this; vto.resize(); gNavToolbox.addEventListener("customizationready", vto, false); CustomizableUI.addListener(vto); this.ctm.addEventListener("command", vto, false); this.ctm.addEventListener("popupshowing", vto, false); window.addEventListener("resize", vto, false); gNavToolbox.addEventListener("aftercustomization", function ac() { gNavToolbox.removeEventListener("aftercustomization", ac, false); gNavToolbox.removeEventListener("customizationready", vto, false); CustomizableUI.removeListener(vto); vto.ctm.removeEventListener("command", vto, false); vto.ctm.removeEventListener("popupshowing", vto, false); window.removeEventListener("resize", vto, false); document.getElementById(vto.btn.id) || vto.destroyVT(); }, false); } if (reason == "delete") { CustomizableUI.removeWidgetFromArea(this.btn.id); this.destroyVT(); } }, handleEvent: function(e) this[e.type](e), command: function(e) { if (e.target.id != "toggle_" + this.id) return; e.preventDefault(); this.toggleVT(); }, popupshowing: function(e) { var menuitem = e.target.querySelector("#toggle_" + this.id); menuitem && menuitem.setAttribute("checked", this.vt.on); if (this.cust || !this.vt.contains(e.target.triggerNode)) return; for(var selector of [".customize-context-moveToPanel", ".customize-context-removeFromToolbar"]) { menuitem = e.target.querySelector(selector); menuitem && menuitem.removeAttribute("disabled"); } }, mousemove: function collapser(e) { var distance = collapser.distance = e.screenX - document.documentElement.boxObject.screenX; if (collapser.waiting) return; if (distance <= this.distanceShow && this.vt.collapsed) { if (this.showDelay < 1) { this.vt.collapsed = false; return; } collapser.waiting = true; setTimeout(function(vto) { if (collapser.distance >= vto.distanceShow) { collapser.waiting = false; return; } vto.vt.collapsed = false; collapser.waiting = false; }, this.showDelay, this); } if (distance >= this.distanceHide && !this.vt.collapsed) this.vt.collapsed = true; }, setCollapser: function(set) { set ? this.cust || window.addEventListener("mousemove", this, false) : window.removeEventListener("mousemove", this, false); }, callCollapser: function(e) { this.mousemove({screenX: document.documentElement.boxObject.screenX + MousePosTracker._x}); }, customizationready: function() { window.removeEventListener("customizationready", this, false); this.vt.on && this.insertBox(true); }, resize: function(e) { this.vt.style.maxHeight = this.deck.boxObject.height + 1 + "px"; }, popupshown: function(e) this.handlePopup(e), popuphidden: function(e) this.handlePopup(e), handlePopup: function(e) { if ( this.vt.collapsed || this.vt.on || (e.target.localName != "menupopup" && e.target.localName != "panel") ) return; setTimeout(function(vto) { var hasPopup = Array.concat( Array.slice(document.getElementsByTagName("menupopup")), Array.slice(document.getElementsByTagName("panel")) ).some(function(popup) "state" in popup && popup.state == "open" && ( vto.vt.contains(popup) || ("triggerNode" in popup && vto.vt.contains(popup.triggerNode)) || ( "anchorNode" in popup && popup.anchorNode && ( vto.vt.contains(popup.anchorNode) || vto.vt.contains(document.getBindingParent(popup.anchorNode)) ) ) ) ); vto.setCollapser(!hasPopup); hasPopup || vto.callCollapser(); }, 200, this); }, onWidgetAfterDOMChange: function(...a) { if (a[2] == this.vt.box) this.vt.hbox.style.minWidth = this.vt.boxObject.width + "px"; }, initVT: function() { var id = this.id; var boxId = id + "-customization-target"; var vt = this.vt = document.getElementById(id) || document.createElement("toolbar"); var attrs = { id: id, mode: "icons", iconsize: "small", orient: "vertical", customizable: "true", persist: "collapsed", toolbarname: this.name, fullscreentoolbar: "true", class: "chromeclass-toolbar", context: "toolbar-context-menu", style: "-moz-appearance: none; display: -moz-box; height: 100%; position: fixed; min-width: 20px" }; for(var attr in attrs) vt.setAttribute(attr, attrs[attr]); if (!vt.parentNode) { var box = vt.box = document.createElement("vbox"); vt.appendChild(box); box.id = boxId; box.style.cssText = "height: 100%; width: 100%;" vt.customizationTarget = box; gNavToolbox.appendChild(vt); if (CustomizableUI.areas.indexOf(id) == -1) { CustomizableUI.registerArea(id, {legacy: true}); } box.removeAttribute("class"); box.__defineGetter__("localName", function() Components.stack.caller.toString().indexOf("custombutton.buttonConstructor") == -1 ? "vbox" : "toolbar" ); vt.hbox = document.createElement("hbox"); vt.hbox.id = id + "-hbox"; } vt.box.style.padding = "0 " + this.padding + "px"; vt.style.backgroundColor = this.color; vt.style.borderRight = "1px solid " + this.fringe; return vt; }, destroyVT: function(reason) { var vt = this.vt; CustomizableUI.unregisterArea(vt.id, {}); vt.hbox.parentNode && vt.hbox.parentNode.removeChild(vt.hbox); vt.parentNode && vt.parentNode.removeChild(vt); this.xs.removeValue(location, vto.id, "collapsed"); this.xs.removeValue(location, vto.id, "currentset"); }, insertBox: function(ins) { var vt = this.vt; var box = vt.hbox; if (!ins) { box.parentNode && box.parentNode.removeChild(box); return; } var id = this.cust ? "customization-palette-container" : "sidebar-box"; var point = document.getElementById(id); point.parentNode.insertBefore(box, point); var mw = function() box.style.minWidth = vt.boxObject.width + "px"; mw(); setTimeout(mw, 100); }, toggleVT: function(on) { var vt = this.vt; if (on == undefined) on = !vt.on; vt.on = on; this.setCollapser(!on); vt.collapsed = !on; this.insertBox(on); } }; vto.init(); function addBackground(e) { setTimeout(function() { var toolbar = document.getElementById('cb-vt'); var win = document.getElementById("main-window"); var image = win.style.backgroundImage; if ( image == '' ) { toolbar.style.background = ''; return; }; toolbar.style.background = image; toolbar.style.backgroundSize = 'auto 100%'; }, 500); }; addBackground(); Services.obs.addObserver(addBackground, "lightweight-theme-styling-update", false); addDestructor(()=> Services.obs.removeObserver(addBackground, "lightweight-theme-styling-update") ); |
difabor > 21-12-2017 06:40:58 |
mssign, замените "style: "-moz-appearance: none; display: -moz-box; height: 100%; position: fixed; min-width: 20px" на |
Andrey_Krropotkin > 21-12-2017 09:33:22 |
Может, кто подскажет, что изменилось, в FF57 по сравнению с FF56, что все кнопки связанные с сохранением в HTML (а также сохранение в PNG (кнопка Save)) перестали работать? Единственное что здесь узнал, что nsILocalFile заменен на nsIFile. |
Viatcheslav > 21-12-2017 09:54:49 |
Помогите, пожалуйста. Есть кнопка, добавляющая прогресс-бар в адресной строке (код от Andrey_Krropotkin): скрытый текст Выделить код Код://Полоса загрузки в адресной строке (function(){ //Location Bar Enhancer5.1;Loading Bar0.3.0 var cssStr = (function(){/* #urlbar { background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%); background-size:0 0; background-repeat:repeat-x, no-repeat; // transition: background-size 350ms ease 0s !important; } #urlbar:not([connecting])::after { display:none; } @-moz-keyframes progress-bar-stripes { from { background-position: 0, 0; } to { background-position: 51px 0, 0; } } */}).toString().replace(/^.+\s|.+$/,""); var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\""); var mainW = document.getElementById("main-window"); document.insertBefore(style, mainW); function main(window) { var {document, gBrowser} = window; function $(id) document.getElementById(id); var urlbar = $("urlbar"); let pageProgress = 0; let async = makeWindowHelpers(window).async; var LoadingBar = { listener: { onChangeTab: function(e) { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) { if (gBrowser.contentDocument === aBrowser.contentDocument) { var val = (curTotalProgress-1)/(maxTotalProgress-1); pageProgress = val; urlbar.style.backgroundSize = (100*val) + '% 100%'; if (val > 0.9) async(function() { if (pageProgress > 0.95) urlbar.style.backgroundSize = '100% 100%'; }, 1000); } }, onStateChange: function() { if (pageProgress > 0.95){ async(function() { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, 1000); }else{ urlbar.style.backgroundSize = '0% 100%'; } } } }; gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.addTabsProgressListener(LoadingBar.listener); unload(function() { gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.removeTabsProgressListener(LoadingBar.listener); }, window); } watchWindows(main, "navigator:browser"); function runOnLoad(window, callback, winType) { window.addEventListener("load", function() { window.removeEventListener("load", arguments.callee, false); if (window.document.documentElement.getAttribute("windowtype") == winType) callback(window); }, false); } function runOnWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } let browserWindows = Services.wm.getEnumerator(winType); while (browserWindows.hasMoreElements()) { let browserWindow = browserWindows.getNext(); if (browserWindow.document.readyState == "complete") watcher(browserWindow); else runOnLoad(browserWindow, watcher, winType); } } function watchWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } runOnWindows(callback, winType); function windowWatcher(subject, topic) { if (topic == "domwindowopened") runOnLoad(subject, watcher, winType); } Services.ww.registerNotification(windowWatcher); unload(function() Services.ww.unregisterNotification(windowWatcher)); } function unload(callback, container) { let unloaders = unload.unloaders; if (unloaders == null) unloaders = unload.unloaders = []; if (callback == null) { unloaders.slice().forEach(function(unloader) unloader()); unloaders.length = 0; return null; } if (container != null) { container.addEventListener("unload", removeUnloader, false); let origCallback = callback; callback = function() { container.removeEventListener("unload", removeUnloader, false); origCallback(); } } function unloader() { try { callback(); } catch(ex) {} } unloaders.push(unloader); function removeUnloader() { let index = unloaders.indexOf(unloader); if (index != -1) unloaders.splice(index, 1); } return removeUnloader; } function makeWindowHelpers(window) { let {clearTimeout, setTimeout} = window; function async(callback, delay) { delay = delay || 0; let timer = setTimeout(function() { stopTimer(); callback(); }, delay); function stopTimer() { if (timer == null) return; clearTimeout(timer); timer = null; } } return { async: async, }; } })(); Для полного счастья не хватает отображения степени загрузки страницы в %, как здесь - https://www.w3schools.com/howto/tryit.a … r_label_js. Для удобства метка должна пропадать по окончании загрузки страницы вместе с прогресс-баром. Если такое возможно - сделайте, пожалуйста ![]() |
mssign > 21-12-2017 10:30:50 |
difabor пишет
Спасибо. Все бы хорошо, но значки не по центру панели. |
Andrey_Krropotkin > 21-12-2017 13:17:01 |
Заметил случайно на FF57 ели параметр - security.data_uri.unique_opaque_origin поставить в false, то работают кнопки с XUL интерфейсом |
Andrey_Krropotkin > 21-12-2017 22:32:07 |
Infocatcher Скажите пожалуйста, какие из кнопок, которые у Вас опубликованы на github.com совместимы с FF57 ( в частности интересует Custom Buttons Editor: Toggle on Top и Custom Buttons: Source Editor). С уважением к вашему труду. |
Infocatcher > 21-12-2017 23:41:13 |
Andrey_Krropotkin пишет
Надо проверять. 22-12-2017 00:00:30 |
Andrey_Krropotkin > 22-12-2017 00:52:23 |
Infocatcher Спасибо Вам за информацию. У меня стоит Custom Buttons 0.0.5.8.9.6pre и FF57.02 . Source Editor по вашей ссылке у меня заработал, а вот Toggle on Top - кнопка не хочет инилизироваться, постоянно в полутусклом состоянии. Вроде профиль ставил с нуля. Когда открываю и переинизилирую, значек кнопки становится нормальным, но в в редакторе значек не появляется. Кстати такая ситуация бывает и в других кнопках, но там получается так, что инициализация срабатывает, а кнопка в полутусклом состоянии, но далее при открытии и закрытии окна редактора иконка кнопок становится нормальной. Может я в не курсе, что не так не делаю, или что еще? И ту т я ранее задавал вопрос, может Вы покажите мне путь, где искать ответ , который я задал, несколько постов выше. Еще один вопрос -как изменить цвет фона редактора ( у меня после включения копки становится черным). Заранее спасибо. |
Dumby > 22-12-2017 01:09:41 |
Infocatcher пишет
Ой, я когда-то всё-таки склонился к использованию аскетичного редактора, скрытый текст Выделить код Код:get loadOverlaysGen() { var str = "fround" in Math ? "*" : ""; // Firefox 26+ var arr = [ '(function' + str + ' loadOverlaysGen(window, callback/*, overlayData1, ...*/) {', ' var gen = loadOverlaysGen.__generator;', ' for(var i = 2, l = arguments.length; i < l; ++i) {', ' var overlayData = arguments[i];', ' this.loadOverlay(window, overlayData[0], overlayData[1], function() {', ' gen.next();', ' });', ' yield 0;', ' }', ' callback();', ' yield 0;', '});' ]; delete this.loadOverlaysGen; return this.loadOverlaysGen = eval(arr.join("\n")); }, |
difabor > 22-12-2017 05:48:34 |
mssign пишет
Попробуйте поиграться с шириной, сделайте 30px, например. У значков есть маргины и поэтому они могут не влезть. |
mssign > 22-12-2017 07:09:08 |
difabor пишет
Тогда теряется весь смысл.. Ширина панели раздувается как раз до прежнего состояния. За исключением padding в первых строчках кода, поставил равным 0 - на пару пикселей стало уже. padding отрицательным пробовал сделать |
mokujin > 22-12-2017 07:30:57 |
Как открыть файл в Scratchpad ? Нигде не найду ни примеров, ни описаний Выделить код Код:var prof = Services.dirsvc.get('ProfD', Ci.nsIFile); var f1 = prof.path + "\\chrome\\userChrome.css"; var f2 = prof.path + "\\chrome\\userContent.css"; Scratchpad.openScratchpad(f1); // не правильно, запускает, но пустым. GM для PM это как-то делает - все скрипты открываются по ПКМ в Scratchpad-e . Но там столько всего, я понять не могу КАК?! |
difabor > 22-12-2017 07:49:08 |
mssign пишет
1. 30px всё-таки будет имхо у́же. ButtonID - ИД значка Вот как у меня выглядит кусок VT: кусочек VT в натуральную величину ![]() |
Ultima2m > 22-12-2017 08:51:04 |
del |
okkamas_knife > 22-12-2017 09:17:33 |
скорее всего там нужен сам файл а не путь |
Infocatcher > 22-12-2017 10:42:11 |
Andrey_Krropotkin пишет
В консоли ошибок по Ctrl+Shift+J должно чего-нибудь на тему выводить. Andrey_Krropotkin пишет
F12 – шестеренка – темы Dumby пишет
Ну да... строковые портянки. Я в другой своей штуке в итоге сделал подргузку нужного кода через loadSubScript(). 22-12-2017 10:43:47 Andrey_Krropotkin пишет
Тут, опять же, должна быть ругань в консоли ошибок. |
Andrey_Krropotkin > 22-12-2017 11:53:24 |
Infocatcher спасибо за ответы. Я разобрался. Все работает. скрытый текст [Custom Buttons :: Source Editor] 47:46:479 initWindow(): isFrame: false TypeError: self._init is not a function[Подробнее] toolbar.xml:145:15 skip getScripts load chrome://custombuttons/content/editor.xul [Custom Buttons :: Source Editor] 47:47:092 loadOverlay(): chrome://global/content/editMenuOverlay.xul [Custom Buttons :: Source Editor] 47:47:204 loadOverlay(): chrome://browser/content/devtools/source-editor-overlay.xul Не удалось загрузить overlay из chrome://browser/content/devtools/source-editor-overlay.xul. button.js:737:6 [Custom Buttons :: Source Editor] 47:50:595 destroyWindow(): isFrame: undefined |
mokujin > 22-12-2017 13:38:53 |
okkamas_knife пишет
мда... ЕЯПП то чтоб открыть файл, ему надо передать содержимое файла, имя и какое-то состоянияния, чтоле... Нашел такой кусок в GM(for PM) openInEditor.js Выделить код Код:function openInEditor(aScript) { let editor = GM_util.getEditor(); if (!editor) { // Without DevTools. try { ScratchpadManager.openScratchpad({ "filename": aScript.file.path, "text": aScript.textContent, "saved": true, }); } catch (e) { if (GM_util.setEditor(0)) { openInEditor(aScript); } } return undefined; } ...... ну и дальше for MacOS проверки и в другом месте и другом скрипте ЕЯПП ;-) собсно , читается скрипт для передачи в Scratchpad ![]() getScriptSource.js Выделить код Код:const EXPORTED_SYMBOLS = ["getScriptSource"]; // Given a script, return its entire source as a plain string. function getScriptSource(aScript) { let parts = []; let offsets = []; let offset = 0; aScript.requires.forEach(function (aReq) { let contents = aReq.textContent; let lineCount = contents.split("\n").length; parts.push(contents); offset += lineCount; offsets.push(offset); }); aScript.offsets = offsets; // These newlines are critical for error line calculation. // The last handles a script whose final line is a line comment, // to not break the wrapper function. // See #1491. // The semicolons after requires fix a failure of javascript's semicolon // insertion rules. parts.push(aScript.textContent); let scriptSrc = parts.join(";\n") + "\n"; return scriptSrc; } я ниасилю понять что ита и как. Думал будет просто. буду мутить с AkelPad дальше. Смысл, хотелка, была простейшая: так же как и GM for PM открывать кнопки на редактирование в Scratchpad , т.к. он уже есть, подсветка есть - а путя к "внешнему редактору" в CB не относительные. Никаких переменных, для переносной не катит. блин, неудобно всё как. |
Infocatcher > 22-12-2017 14:39:08 |
mokujin пишет
Это как подсветку синтаксиса можно встроить... через 10 костылей, 15 распорок и ломаться буде раз в две версии. Содержимое файла надо читать вручную... Выделить код Код:var path = "c:\\autoexec.bat"; OS.File.read(path).then(function(arr) { var {ScratchpadManager} = Components.utils.import("resource://devtools/client/scratchpad/scratchpad-manager.jsm", {}); ScratchpadManager.openScratchpad({ filename: path, text: new TextDecoder().decode(arr), saved: true }); }); А еще scratchpad-manager.jsm уже как минимум один раз переезжал, раньше он был в resource:///modules/devtools/scratchpad-manager.jsm |
mokujin > 22-12-2017 16:38:26 |
Ага, точно так. нашел в GM файлах, аж четыре проверки на четыре разных пути к scratchpad-manager.jsm В моём случае подошел путь под нумером 1 (PM жеж не сильно меняли) открыть userChrome.css во встроенном редакторе Scratchpad Выделить код Код:/*CODE*/ // открыть userChrome.css во встроенном редакторе Scratchpad function spUChrom() { const prof = Services.dirsvc.get('ProfD', Ci.nsIFile); var path = prof.path + "\\chrome\\userChrome.css"; OS.File.read(path).then(function(arr) { // Firefox путь до Scratchpad, подставить нужное // resource://devtools/client/scratchpad/scratchpad-manager.jsm // // Moved in Firefox 44 // http://hg.mozilla.org/mozilla-central/rev/397c69fa1677 // resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm // // Moved in Firefox 44 // http://hg.mozilla.org/mozilla-central/rev/3b90d45a2bbc // resource:///modules/devtools/scratchpad-manager.jsm // PaleMoon 27 путь до Scratchpad var {ScratchpadManager} = Components.utils.import("resource://gre/modules/devtools/scratchpad-manager.jsm", {}); ScratchpadManager.openScratchpad({ filename: path, text: new TextDecoder().decode(arr), saved: true }); }); }; spUChrom(); Запатчу(попробую) CB и будет отлично. Идея такая: добавить ключевое слово, типа если настройки в prefs.js extensions.custombuttons.external_editor == scratchpad - то открывать файл этим способом. Если нет - стандартное поведение CB (открыть или указать путь к редактору) и пропишу настройку в user.js Но это я уже сам. Благодарю за помощь! рукужму. |
usalex > 23-12-2017 00:07:50 |
Можно ли "виртуально" увеличить площадь кнопки? |
villa7 > 23-12-2017 06:01:15 |
usalex |
oleg.sgh > 23-12-2017 07:45:37 |
usalex |
usalex > 23-12-2017 19:00:11 |
oleg.sgh villa7 |
Andrey_Krropotkin > 23-12-2017 22:12:08 |
Помогите пожайлуста разобраться, что-то запутался в коде скрытый текст Выделить код Код:// Пукт меню - ["В другом профиле", "menuitem-iconic", icon3, "ucjs_Cop.Debug();"], var profileDir = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("GreD", Components.interfaces.nsIFile) .path; var fpath = profileDir + "\\firefox.exe"; window.ucjs_Cop = { clipboard: Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper), Debug: function() { var urllink=window._content.document.location.href; startProcess(fpath,["-no-remote","-P","Debug",urllink]); function startProcess(path, args){ file.initWithPath(path); if(file.exists()){ var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, args, args.length);} }; }, }; Раньше на старых версиях FF работало, на FF57 не хочет В консоли пишет "window._content is undefined" и ссылается на строчку "function startProcess(path, args)" |
Dumby > 24-12-2017 00:31:24 |
Andrey_Krropotkin пишет
Это сломали где-то с Firefox 54. Из консоли ошибка передаётся
Ну, наверно, следует отталкиваться от чего-нибудь менее запутанного. скрытый текст Выделить код Код:function openInProfile(profileName, url = gBrowser.currentURI.spec) { var firefox = Services.dirsvc.get("XREExeF", Ci.nsIFile); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); var args = ["-no-remote", "-p", profileName, url]; process.init(firefox); process.run(false, args, args.length); } openInProfile("Debug"); |
Ultima2m > 24-12-2017 08:19:23 |
Привет, Кнопка для переключения стиля из справки. Нужно чтобы при запуске ФФ стиль был включен. Или в идеале, чтобы у юзера был выбор режима. скрытый текст Выделить код Код: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%3E%u0426%u0432%u0435%u0442%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/ico%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20setStyleForPages%28%29%3B%20//%20%u041B%u041A%u041C%0A%7D%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%0Avar%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28%20self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Avar%20styleImage%20%3D%20%22data%3Aimage/ico%3Bbase64%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%3D%22%3B%0A%0Afunction%20setStyleForPages%28%20reason%20%29%20%7B%20%0A%20%20%20%20%20%20var%20style%20%3D%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%3B%20%20%0A%20%20%20if%20%28%20style%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20self.image%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20if%20%28%20%28%21style%20%26%26%20reason%20%21%3D%3D%20%27update%27%29%20%7C%7C%20%28style%20%26%26%20reason%20%3D%3D%20%27update%27%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20styleImage%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddDestructor%28function%28reason%29%20%7B%20if%20%28/update%7Cdelete/.test%28%20reason%20%29%20%29%20setStyleForPages%28reason%29%20%7D%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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/*AGENT_SHEET*/%0A%0A%20%20a%2C%20a%20span%20%0A%7B%0A%20%20text-decoration%3A%20none%20%21important%3B%20%0A%20%20color%3A%20%23BABAFF%20%21important%3B%0A%7D%0Aa%3Avisited%2C%20a%3Avisited%20span%20%7Bcolor%3A%20%23FFBABA%20%21important%3B%7D%0A%0Aa%3Ahover%2C%20a%3Ahover%20span%20%0A%7B%0A%20%20text-shadow%3A%200px%200px%208px%20green%20%21important%3B%20%0A%20%20transition%3A%20text-shadow%20.2s%20%20linear%20%21important%3B%0A%7D%0Aa%3Aactive%2C%20a%3Aactive%20span%20%20%7Bcolor%3A%20Silver%20%21important%3B%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Уменьшить яркость на всех страницах. Кнопка глючит при прокрутке колесика - яркость мигает и устанавливается рандомно скрытый текст Выделить код Код: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%3E%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u043D%u0430%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u0441%u0442%u0438%u043B%u044C%20..........%0Athis._handleClick%20%3D%28%29%3D%3E%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%20%29%3B%0A%0A%0A//%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0432%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u0445%20%u0438%20%u0441%u0442%u0438%u043B%u0435%20..........%0Athis.onwheel%20%3De%3D%3E%7B%0A%20%20%20var%20i%20%3D%20cbu.getPrefs%28l%29%2C%0A%20%20%20%20%20%20%20i%20%3D%20e.deltaY%20%3C%200%20%3F%20i%20+%20step%20%3A%20i%20-%20step%3B%0A%20%20%20if%20%28%200%20%3C%3D%20i%20%26%26%20i%20%3C%3D%2099%20%29%20cbu.setPrefs%28l%2C%20i%29%3B%0A%0A%20%20%20setStyleForPages%28%20cbu.setPrefs%28s%2C%20true%29%20%29%3B%0A%7D%3B%0A%0A%0A//%20%u0418%u0441%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20position%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20..........%0AaddEventListener%28%22mouseover%22%2C%20e%3D%3E%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target.localName%20%21%3D%3D%20%27img%27%20%29%20return%3B%20%20%0A%20%20%20%0A%20%20%20var%20img%20%3D%20e.target%2C%20node%20%3D%20img%3B%0A%20%20%20if%20%28%20getPosition%28img%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27currentPosition%27%2C%20%27true%27%29%3B%20return%3B%20%7D%3B%20%20%0A%0A%20%20%20while%28%20node%20%3D%20node.parentNode%20%29%20%7B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27relative%27%20%29%20break%3B%0A%20%20%20%20%20%20if%20%28%20getPosition%28node%29%20%3D%3D%20%27absolute%27%29%20%7B%20img.setAttribute%28%27parentPosition%27%2C%20%27true%27%29%3B%20break%3B%20%7D%3B%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%20function%20getPosition%28node%29%20%7B%20return%20getComputedStyle%28node%2C%20%27%27%29.position%20%7D%3B%20%20%0A%20%20%20%3B%0A%7D%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20css%20%u043A%u043E%u0434%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20..........%0Avar%20step%20%3D%202%2C%0A%20%20%20%20s%20%3D%20%22CB.darken%22%2C%0A%20%20%20%20help%20%3D%20self.Help%2C%0A%20%20%20%20l%20%3D%20%22CB.darken.level%22%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20about%3Aconfig%20%u0435%u0441%u043B%u0438%20%u043E%u043D%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20..........%0Acbu.isPref%28l%2C%2028%29%3B%0Acbu.isPref%28s%2C%20false%29%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20%21cbu.getPrefs%28s%29%20%3F%20self.image%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/NTU1/z8/P/89PT3/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv89PT3/Pz8//zU1Nf8AAAD/AAAA/6Ghof+YmJj/ioqK/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/ioqK/5iYmP+hoaH/AAAA/wAAAP+dnZ3/hISE/3R0dP94eHj/eHh4/3h4eP94eHj/eHh4/3h4eP94eHj/eHh4/3R0dP+EhIT/nZ2d/wAAAP8AAAD/qKio/5OTk/+CgoL/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+CgoL/k5OT/6ioqP8AAAD/AAAA/6+vr/+ampr/iYmJ/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/iYmJ/5qamv+vr6//AAAA/wAAAP+1tbX/oqKi/5GRkf+VlZX/lZWV/5WVlf+VlZX/lZWV/5WVlf+VlZX/lZWV/5GRkf+ioqL/tbW1/wAAAP8CAgL/vb29/6mpqf+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/qamp/729vf8CAgL/AAAA/8PDw/+xsbH/n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/7Gxsf/Dw8P/AAAA/zo6Ov/Pz8//xMTE/7a2tv+5ubn/ubm5/7m5uf+5ubn/ubm5/7m5uf+5ubn/ubm5/7a2tv/ExMT/z8/P/zo6Ov9aWlr/2dnZ/9PT0//Jycn/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Jycn/09PT/9nZ2f9aWlr/U1NT/9/f3//a2tr/z8/P/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/z8/P/9ra2v/f39//U1NT/1RUVP/m5ub/4+Pj/9jY2P/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9jY2P/j4+P/5ubm/1RUVP9UVFT/7u7u/+3t7f/i4uL/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/i4uL/7e3t/+7u7v9UVFT/VFRU/+/v7//y8vL/5+fn/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/5+fn//Ly8v/v7+//VFRU/1RUVP/8/Pz//////////////////////////////////////////////////////////////////Pz8/1RUVP9WVlb/kJCQ/5WVlf+VlZX/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aWlv+VlZX/lZWV/5CQkP9WVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%20%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20css%20%u0441%u0442%u0438%u043B%u044C%20%u0434%u043B%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20..........%0Afunction%20setStyleForPages%28%29%20%7B%0A%20%20%20var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20var%20css%20%3D%20help.replace%28/value/g%2C%20cbu.getPrefs%28l%29/100%20%29%3B%20%20%20%20%20%20%0A%20%20%20var%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%20%0A%20%20%20%0A%20%20%20try%20%7B%20sss.unregisterSheet%28Services.previousUri%20%7C%7C%20uri%2C%200%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20Services.previousUri%20%3D%20uri%3B%0A%20%20%20%0A%20%20%20cbu.getPrefs%28s%29%20%26%26%20sss.loadAndRegisterSheet%28uri%2C%200%29%3B%0A%7D%3B%0Acbu.getPrefs%28s%29%20%26%26%20setStyleForPages%28%29%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%20%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%5Cn%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28ftp%3A//%29%2C%20url-prefix%28file%3A//%29%2C%0Aurl-prefix%28chrome%3A//%29%2C%20url-prefix%28about%29%20%7B%0A%20%20%20browser%7B%20background%3A%20LightGray%20%21important%3B%20%7D%20%20%20%0A%20%20%20%0A%20%20%20/*%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%u0439%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u043C%u0438%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u0430%u043C%u0438%20%u043F%u0441%u0435%u0432%u0434%u043E%u044D%u043B%u0435%u043C%u0435%u043D%u0442%20%u0441%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u043E%u0439%20%u043F%u0440%u043E%u0437%u0440%u0430%u0447%u043D%u043E%u0441%u0442%u044C%u044E%20*/%0A%20%20%20html%3Aafter%2C%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0432%u0435%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%2C%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%0A%20%20%20%23appbar-content%3Aafter%2C%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%20%20%20/*%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0441%u0432%u0435%u0440%u0445%u0443%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23txbTextNodeValue%3Aafter%2C%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%20/*%20%u0440%u0430%u0448%u0438%u0440%u0435%u043D%u0438%u0435%20DOM%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20*/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23editor%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u0438%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20DOM%20%u0438%20%u0441%u0442%u0438%u043B%u0435%u0439%20*/%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23profiles-list%3Aafter%2C%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23options-panel%3Aafter%2C%0A%20%20%20window%3Anot%28%5Bclass%3D%22theme-dark%22%5D%29%20%23editor%3Aafter%2C%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%20%20%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23style-editor-chrome%3Aafter%2C%0A%20%20%20%5Bclass%3D%22theme-light%22%5D%20%23network-inspector-view%3Aafter%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20.cbeditor-textbox%3Aafter%2C%20%23newtab-window%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u0421%u0412%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u043D%u043E%u0432%u0430%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20*/%0A%20%20%20treecols%3Anot%28%5Bid%3D%22placeContentColumns%22%5D%29%3Aafter%2C%20%20%20%20%20%20%20%20%20/*%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%2C%20%u0438%u0441%u0442%u043E%u0440%u0438%u044F%2C%20%u0431%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0430%2C%20about%3Aconfig%20*/%0A%20%20%20%23devtools-webconsole%3Aafter%2C%20%23ConsoleBox%3Aafter%2C%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%2C%20%u0432%u0435%u0431%20%u043A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%20*/%0A%20%20%20%5Btitle%3D%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%5D%5BhasBrowserHandlers%3D%22true%22%5D%3Aafter%2C%20%20%20/*%20%u0440%u0430%u0437%u043D%u044B%u0435%20about%3A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20*/%0A%20%20%20%5Bid%3D%22permissions-page%22%5D%3Aafter%2C%20%5Bid%20%3D%22tabsList%22%5D%3Aafter%2C%0A%20%20%20%5Bid%3D%22contentAreaDownloadsView%22%5D%3Aafter%2C%20%5Bid%3D%22addons-page%22%5D%3Aafter%20%20%20%0A%20%20%20%7B%0A%20%20%20%20%20content%3A%20%22%22%20%21important%3B%0A%20%20%20%20%20position%3A%20fixed%20%21important%3B%0A%20%20%20%20%20top%3A%200%3B%20bottom%3A%200%3B%20left%3A%200%3B%20right%3A%200%3B%0A%20%20%20%20%20background%3A%20%23000%20%21important%3B%0A%20%20%20%20%20z-index%3A%2099999999%20%21important%3B%0A%20%20%20%20%20pointer-events%3A%20none%20%21important%3B%0A%20%20%20%20%20opacity%3A%20value%20%21important%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20%20*/%0A%20%20%20%23comments-test-iframe%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/*%20%u043A%u043E%u043C%u0435%u043D%u0442%u0430%u0440%u0438%u0438%20%u043D%u0430%20youtube%20*/%0A%20%20%20%0A%20%20%20/*%20%u043E%u0442%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0443%u043C%u0435%u043D%u044C%u0448%u0435%u043D%u0438%u0435%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20*/%0A%20%20%20svg%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22img%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22rel%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22ytp-thumbnail%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bid%3D%22watch7-sidebar-modules%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22right_block%20video_right%20video_today%22%5D%3Ahover%2C%0A%20%20%20DIV%5Bclass%3D%22photo%22%5D%3Ahover%2C%0A%20%20%20img%3Ahover%3Anot%28%5Bparentposition%5D%29%3Anot%28%5Bcurrentposition%5D%29%3Anot%28%5Bid%3D%22keyboard_picture%22%5D%29%3Anot%28%5Bid%3D%22mpiv-preview%22%5D%29%3Anot%28%5Bid%3D%22splashoverlay%22%5D%29%3Anot%28%5Bclass%3D%22prew%22%5D%29%3Anot%28%5Bclass%3D%22rel%22%5D%29%0A%20%20%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%20%20%20img%5Bparentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20position%3A%20relative%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%20left%3A%200px%3B%20bottom%3A%200px%3B%0A%20%20%20%7D%0A%20%20%20img%5Bcurrentposition%5D%3Ahover%20%7B%20%0A%20%20%20%20%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%0A%20%20%20/*%20%u043F%u043E%u043B%u043E%u0441%u0430%20%u043F%u043E%u0438%u0441%u043A%u0430%20%u043D%u0430%20youtube%20*/%0A%20%20%20%23yt-masthead-container%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%0A%20%20%20/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20*/%0A%20%20%20embed%5Bflashvars%5D%2C%20%20%0A%20%20%20div%5Bclass%3D%22html5-video-container%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-silverlight%22%5D%2C%0A%20%20%20*%5Btype*%3D%22application/x-shockwave-flash%22%5D%20%7B%20%0A%20%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%20z-index%3A%20999999999%20%21important%3B%0A%20%20%20%7D%0A%7D%0A%0A/*%20%u0438%u0441%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0435%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u044B%20%u043D%u0430%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u043D%u044B%u0445%20%u0441%u0430%u0439%u0442%u0430%u0445%20%u0434%u043B%u044F%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0438%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u0437%u0430%u0442%u0435%u043C%u043D%u0435%u043D%u0438%u044F%20*/%20%0A@-moz-document%20domain%28politobzor.net%29%20%7B%20%0A%20%20%20html%5Bxmlns%3D%22http%3A//www.w3.org/1999/xhtml%22%5D%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%20%20%20.item%20%7B%20background%3A%20LightGray%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url-prefix%28http%3A//translate.google.com/translate%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%0A@-moz-document%20url%28about%3Ahealthreport%29%2C%20url%28about%3Asessionrestore%29%2C%20url%28about%3Awelcomeback%29%20%7B%20%0A%20%20%20html%3Aafter%20%7B%20content%3A%20none%20%21important%3B%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
difabor > 24-12-2017 09:48:16 |
Ultima2m пишет
Добавьте: setStyleForPages(); предпоследней строкой (перед "addDestructor(function(reason) { if (/update|delete/.test( reason ) ) setStyleForPages(reason) });") |
Ultima2m > 24-12-2017 10:48:27 |
difabor пишет
Спасибо, работает. скрытый текст Выделить код Код: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%3EFindbar%20Persist%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaElEQVR42pWTbUhTURjH7znnnnu91yhMhSidI67T2OaI+tCalFBUBpUSYm/YNqPsbTEpK3phEEEg+WVR0Yf6ZAmDoPJT+bm+RBBjLsqK0FZIZG3a3O495/ZsrgiaZgcOXHjO//f8z/85FwlzLM2+5pQgoNRI7NnN2c6gOcRWSaKXCCEsGOi66+/Y9fi/ADan56yqlqhIQGlNW14Z6b8VnDeg1uG2yrLcLctSHCEhrRvMGjp38kXr9uaHswLAsoIQsggI1VJKnbJEM6IojuUAjPGF1VXLtG/J1MtE4nPMNPnYm+jTdB6gOdyrMEYnqChyjEkSvicIweMEky+Y4CRAp01TIIyxMoOxJZzxcs55GeNcNXTjGgK7miRLIZnSOAjGQTAJewp2GiGcgSZGwaQInWXTNBVm8Iqsbqy+HDr9PH+FrS17towlPm2mIh0mGCAYA0DIAECHMisACAAoY+Yi3TAcxw759QO+3Vd/Z9C29+DO1yPvnFQkUVEkX0E8DS5y3c1feUEWatbgdn9He+nxLm/vX1NoafPt/zD6UZYk8S1G6Ac4yQF4oYyzWWPpjm3NtgtnAr1Fx2hzNW5QS0pWyjKNzWSRd5EHwN1xRjc07772qsBhX3FAXYPHqyhKJTh4BRNJgThbyCB3DZLJMkvTOveKvisXQ8UBLk+PqigMMhjlpoBBUzpzyJzABCVhlIvr62wN/bfD54sC6l2NffD6vufaOe12KXC0873JOQrfuGOJxuK5NzJVWVGuPRkc6C4KqHWsDdfUVKOe4JHhTRvXX/+zdi/yoDVy/1FTMjW5YGhwoPOfP9N810+kr+NMRAKE6QAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%22use%20strict%22%3B%0A%0Aconst%20css%20%3D%20encodeURIComponent%28this.getAttribute%28%22Help%22%29%29%2C%0A%20%20%20%20%20%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Ci.nsIFilePicker%29%2C%0A%20%20%20%20%20%20ios%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%28Ci.nsIIOService%29%2C%0A%20%20%20%20%20%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20%20%20%20%0Apref.root%20%3D%20%22extensions.custombuttons.FindbarPersist.%22%3B%0Apref.defaults%20%3D%20%7B%0A//***%20Editable%20text%20in%20quotes%20below%0A%20%20textAdd%3A%20%22Add%22%2C%0A%20%20textAlert%3A%20%22Alert%22%2C%0A%20%20textAlert1%3A%20%22%20Protocol%20not%20listed.%22%2C%0A%20%20textAlert2%3A%20%22Add%20to%20list%20by%20clicking%20Add%20or%20click%20Settings%20to%20add/delete%20manually.%22%2C%0A%20%20textAlert3%3A%20%22Current%20List%3A%20%22%2C%0A%20%20textAlertDialog%3A%20%22Protocol%20Unlisted%20Alert%22%2C%0A%20%20textCancel%3A%20%22Cancel%22%2C%0A%20%20textClose%3A%20%22Close%22%2C%0A%20%20textEditable%3A%20%22Editable%20List%20Below%20%28No%20spaces%20and%20comma%20separate%29%22%2C%0A%20%20textHelp%3A%20%22Help%20Tab%20CSS%22%2C%0A%20%20textImages%3A%20%22Dialog%20Images%22%2C%0A%20%20textList%3A%20%22Protocol%20List%22%2C%0A%20%20textName%3A%20%22Button%20Name%22%2C%0A%20%20textOff%3A%20%22Off%22%2C%0A%20%20textOn%3A%20%22On%22%2C%0A%20%20textSettings%3A%20%22Settings%22%2C%0A%20%20textSettingsDialog%3A%20%22Findbar%20Persist%20Settings%22%2C%0A%20%20textStates%3A%20%22Button%20States%22%2C%0A%20%20textTooltip%3A%20%22Tooltip%20Text%22%2C%0A//***%20End%20of%20editable%20text%0A%20%20buttonName%3A%20%22Findbar%20Persist%22%2C%0A%20%20cssEnabled%3A%20true%2C%0A%20%20enableFindbar%3A%20false%2C%0A%20%20iconOff%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaElEQVR42pWTbUhTURjH7znnnnu91yhMhSidI67T2OaI+tCalFBUBpUSYm/YNqPsbTEpK3phEE%5C%0AEg+WVR0Yf6ZAmDoPJT+bm+RBBjLsqK0FZIZG3a3O495/ZsrgiaZgcOXHjO//f8z/85FwlzLM2+5pQgoNRI7NnN2c6gOcRWSaKXCCEsGOi66+/Y9fi/ADan56yqlqhIQGlNW14Z6b8VnDeg1uG2yrLcLctSHC%5C%0AEhrRvMGjp38kXr9uaHswLAsoIQsggI1VJKnbJEM6IojuUAjPGF1VXLtG/J1MtE4nPMNPnYm+jTdB6gOdyrMEYnqChyjEkSvicIweMEky+Y4CRAp01TIIyxMoOxJZzxcs55GeNcNXTjGgK7miRLIZnSOAjGQT%5C%0AAJewp2GiGcgSZGwaQInWXTNBVm8Iqsbqy+HDr9PH+FrS17towlPm2mIh0mGCAYA0DIAECHMisACAAoY+Yi3TAcxw759QO+3Vd/Z9C29+DO1yPvnFQkUVEkX0E8DS5y3c1feUEWatbgdn9He+nxLm/vX1Noaf%5C%0APt/zD6UZYk8S1G6Ac4yQF4oYyzWWPpjm3NtgtnAr1Fx2hzNW5QS0pWyjKNzWSRd5EHwN1xRjc07772qsBhX3FAXYPHqyhKJTh4BRNJgThbyCB3DZLJMkvTOveKvisXQ8UBLk+PqigMMhjlpoBBUzpzyJzABC%5C%0AVhlIvr62wN/bfD54sC6l2NffD6vufaOe12KXC0873JOQrfuGOJxuK5NzJVWVGuPRkc6C4KqHWsDdfUVKOe4JHhTRvXX/+zdi/yoDVy/1FTMjW5YGhwoPOfP9N810+kr+NMRAKE6QAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20iconOn%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACiUlEQVR42pWTa0iTURjHn/fddHu3F6UWKKLGdF4YrYYmSo4uqw+GEBmB4jKFhIgyCyNZ0ZdSBlI%5C%0AgK2LQihoiShO6fOnyKWLQoJsm6YarJdN08zJ3v7zveTvvpAjayg48H845z//3PP/zcAj4yxo2aW8nE+G19rN2faYcItOF9d4hpUIemGASawQr0jXV7r3w5L8ALx4eHtm5w9uM2BWwvy+yNepeajYMeDTUolS%5C%0AW+SfkhV4BoBWYciLEUPrWql2nRjMCxu430QJBdgUQRHVxQbittHhJk0MvA3BBWF1lwemWT7nclCkRD9gQYh0nesZDKcADY61WJqPM8q0COUURIBGzIKXCQImDICDWMCAKLMtBOJIFgVA2hMIIgsEkOJyEezU%5C%0Ag6CDM17epK0o5e5WayZZQfEMsFiVSQuBieJ/EgdaDS0IEHy/6SHjzjmZKthu6UxYsxjqdqsJtqSxLkGIxn8gLmPXgGEAIQSwOuAOA714SJj+LEJ3XNXCkdUD/6w2GbmlOq8o/GcsVcVIs+glhsZhLiYNYPO8%5C%0Al4OOkCAnpDuPxk6bzf0zBeremX1M9fSlvSxQ4XJnBbhjcRBw7CgQBHC4hzPoaLZ3dj9vTjtFkULQ1aJcsxQX+lFdeyGJIEkPCEYDpmSzwJ/jqd7rTAswDZX0NWs9lWhoFPx4AD8EOUkl8N555IXxZ2D/W1fv%5C%0A8aFrA8M38kfoaX3MogmB2jsSvLUQkCbB5E0PSEgShCAEzsyrbuSvjmrSAocHcD0WFEbXrGwkLy5W2fQf1IwTOePXM0JIrna6npSzMLeZ/7e33lKQFXOuRvRZJZKK6PRdHdx/ovPH73VPr1WPjb61nYrFYTt+%5C%0AgU/nPz7TR9QMbEh0SkoyVAwAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageAdd%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACF0lEQVR42o1Tz2sTQRR+s7tJG2OwSctaGxWxWJCkFgXrPQUP4sGTIKIUvErBo2fpqYLQqwjeB%5C%0AA8KCr210pN/QDcq9VKxF6P5UbSbNDPznm8m3W2SpuKD3dlZ5vve9973RkBfXPt4uoQtXNZNnCIFHmoCJFIiAZvkwsLGjcpa93nRvZldzweqgQVCAkIA5BWl+ebVEPE/J03lz7erxUMEs2v5mvqN2X+BUfGLv%5C%0A2EY6l/n67mY4H8yR2Cz14pBx6G89aBRFKZmWdGrg8DB3YpVN/k0B84wADkdsCXlVWRxTlz9MLGf/XDmT/d/WoL8wwwkJ1zOKmKwVcT9EFdWxtvYhMQg2V/mOwT+nTQkz3vgjokYjIrPeCTF5XfjqPdI9Ms+K%5C%0Ak49zgAkuB3C2IskZt6eRN0k0S/7qMjdOwaOz71PckIgEtNv/DaGlIhky18aWlsSZBWh8mrXgk5cTwEPEoBruw/uqAAa4oaaEi699wNZw0JkFbUIeB5AhQTfn+xYgpGbKXBN1jQ/LJ1cBhvFbKWYXvFL7R+42%5C%0Au+zWb89anQIbqXAO+uYrttGa9k5Q8ZGc+Di69FAGRW612dV07C3re0+lh2B01gOl2QxHuULL7M1ucOcXT4jlyP/cFnyQLYFD2E9fCYPRjmKcy9GAlWlQuSzNl63sVf2fuaBt9HEmeeZkg5pWe3SFF9pz2RXf%5C%0AJ3RhU0UuBAuyp7r/Be32NAthDcPUAAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageAlert%3A%20%22chrome%3A//global/skin/icons/question-64.png%22%2C%0A%20%20imageCancel%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJklEQVR42p2TQYjTQBSGX5qWNJrZtGJ7sGtsmwXtgmVZFxT04kVREM+CeBH02JO3vehB8e%5C%0AhRwYt48rigXkXQ7VIPQmkV3WhRl26bapImOpHttr7JTkq27nrwwTCZf97/zbzJjEAIgWhUdT2N3RVsl7Ed5XId22Nsj04YhhXNF6IANFewu+5TWto/OwtJSQIYjcAfDKDXbLLxO5y/j5B7fwHQ/LDvOJcOzs%5C%0A/LA9ME2TAgRikIPHGgKPBL06DTbntThDxByNUxgK1s2/YdrVyW49UqLHW7cCGd3lqBA5YsCy4yTRTho6J4+1KpRbYToTE3xzJfyfl8KbG8DM86HbiG234gCHCOQ56jOdTOo7aJ/U9NY+WcZICK1e/fzWQy0o%5C%0AuVlSAxDGZgMamdQchqPO4dyOUWGaC2oaoLcqMBQzysl7a9zRANZj6dSgXf3zFnqlB4wwD+iBBpWK+Pa369A4SZT3EzCx/nk4XC7wCAY8lvtcYHVtsFcJwDWB4dDoEUiwGgZrnuQqLXCybfOs4/S2BxDEEmAr%5C%0ARiMSih0lpfv6lSqjYmzDsdYpXvoi2KPw5r2q3xb/xiGKVkLAYfOISZj6hqkPw+opVQ83D1Q7q+9RvDi/TNNG+MXDcnYtInNOjcHNa8itoMahsI2lSUbj6bvR1cpOhV/mqaZz3Hye3FnUTNYbholgnpFLLZp9%5C%0Auu8uRjaq6tJfqUzshcp2jcI8ufy9PT/q6P6X+f8x86rQqGIF3bbQAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageClose%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACAklEQVR42qWT309SYRzGP+fE8aCOwdBwFZlASQQjwRajcdWvtf6Ati76B10XXTWW1RWD0RK%5C%0AU4RziD5boxCmTocKRdug9JzFoNWt+r973nO/7vM/3ed5Hoq8OoSuBZgcrf6gGtLugOkDqfTtfLEMpA9MK6I+hcBMi/Ye3IP8Zwh2Q47AaBH9Xkq6YAAWo1Gy2W9r4OPLQEEq1ivv4OB+AqPF/BXLV0dFIx+1%5C%0AGPz1F3d/H1Wxu3YdJyaD9VjRd83h4OTODbreTXFjg+/o6D05OzNu/joxg8fl4MTuL3GjwfnGR7c1N3hgjGHO9A+Wq3y8/j8eRJyZo1+ss53Kk8nkTIBGJEIxGsY6Noe/u8iGToVYq6a+hY45QERKs2Wz3tKk%5C%0ApnsViKKLxcG+PqmBhlNvrxSEYdjSN+WQStVzG12yWPHBXEkIMS91uaxWyK6r68HoohDccxul0CvzOTwUtFuqtFhsCcCedJnB09GUaYucuCBAECNtiOSfLPE0kCAk9EEzMEqIVl5b4mErxSte58buNFwIcHFA%5C%0AUepgAom8A4J9GUBTqQtiNQoGdYpGApg2OcKGIwkKHy0VHMJnPZlErlV8i/peNgpVeqw3aeOmHdOmn3FOzCOU03DbC9ERoMimC0x+mb+KeTxA0wvQI1kJwp+eCJFzoGpvWWZytf4lz+yzOw332/wA3xhvxRw2%5C%0ABzwAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20imageSettings%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0UlEQVR42mOcOnnyThZmZuf0rCwOBgaGPwzYAVtsTMxqby8fv+8/vzN8/f61LScrpxok%5C%0AwcjKwtJ+4+bVijUrVr8or66RxKa7pqbmWFZWluXTp08ZsrOyNxka6IXOnD3nF9gAMMHIWFZWVNTp7e68ws7NKxJZs4yMjOOuXbv2cXBwMMyYMYNBTkEObHtdXd2pvXv3LmSEKeRkZZVKTIh76u/nM9XdNzAH%5C%0AJm5oaJiwdOnS+T9//mS4f/8hw+Onzxmeg1ySnc7g5eWVxohsGzcbK3tcXMyPAG+fFvfA4FqwwVxc1rt37Tpy/PhxBmdnZ4a/f/8ycHNzM9y6detHQECAOSO6f0GGxMRE/Wg3MCgQyiucmGkX8L9hfi/Dsk2b%5C%0AwJpdXV0ZXr16xVBRUTHx7NmzBRgGwAy5HhH14/fRwwzLPnxkyDhwlME/tWDz0+ePHqioSEqePHly15cvX2bDAxEbWCkh+d8pO41hUv9khne//55YIBL88Ov9eRHo6rAawCIX8l/n+SaGMjFBBre8fIaZnb2g%5C%0ABLKx/t3bAIIGsMoH/xd0y2N4deY6g5up0Q+3NZ4csenJDF9Wr2Poe/OGQYKDmbn2xdt/WA0AaRZyy2F4deEOg5C1KcPHVTV/HN7v/WvPxcWev2Auw5uKGoamx48YFnz6xIhhAKtc8H8BrxKGN6evMAhZGTN8%5C%0AXNfw68/TTewgORdOzh8OQENyFy1leN/UyNB84xrD3I8fGeEGsAA1C/qWMbw+ep5B2N6c4eOa+j9AzazIrnPj4vofKiLCEDZ9OsP7xmaG6bdvMnS+f8/IyCIT8Js/qJ7l/bHTDIKWQGevb/j758lGFmyB6w40%5C%0AJF5cnMF70hSGt5UVDJn37v5hZGQXTWCRsJ/PF9LI8HFF+f8/T7cwMeABzpycH6dLSvIVvn7N8PznTzFYGKSxSLpP/PN8JycDEcCBg+PHgR8/7IDMUwAJ9h3/3XPKfAAAAABJRU5ErkJggg%3D%3D%22%2C%0A%20%20protocolList%3A%20%22http%3A%2Chttps%3A%2Cfile%3A%2Cftp%3A%2Cchrome%3A%22%2C%0A%20%20toolTip%3A%20%22Middle-click%20or%20Ctrl%20+%20Left-click%20%20%3E%20%20Settings%22%0A%7D%0A%0Afor%20%28let%20key%20in%20pref.defaults%29%20%7B%0A%20%20if%20%28pref.defaults.hasOwnProperty%28key%29%29%20%7B%0A%20%20%20%20let%20val%20%3D%20pref.defaults%5Bkey%5D%3B%0A%20%20%20%20switch%20%28typeof%20val%29%20%7B%0A%20%20%20%20%20%20case%20%22boolean%22%3A%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setBoolPref%28key%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22number%22%3A%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setIntPref%28key%2C%20val%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20%22string%22%3A%0A%20%20%20%20%20%20%20%20let%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D.createInstance%28Ci.nsISupportsString%29%3B%0A%20%20%20%20%20%20%20%20str.data%20%3D%20val%3B%0A%20%20%20%20%20%20%20%20Services.prefs.getDefaultBranch%28pref.root%29.setComplexValue%28%28key%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%7D%20%7D%20%7D%0A%0Afunction%20pref%28key%29%20%7B%0A%20%20let%20%7Bbranch%2C%20defaults%7D%20%3D%20pref%3B%0A%20%20if%20%28branch%20%3D%3D%20null%29%20branch%20%3D%20Services.prefs.getBranch%28pref.root%29%3B%0A%20%20switch%20%28typeof%20defaults%5Bkey%5D%29%20%7B%0A%20%20%20%20case%20%22boolean%22%3A%20%0A%20%20%20%20%20%20return%20branch.getBoolPref%28key%29%3B%0A%20%20%20%20case%20%22number%22%3A%20%0A%20%20%20%20%20%20return%20branch.getIntPref%28key%29%3B%0A%20%20%20%20case%20%22string%22%3A%20%0A%20%20%20%20%20%20//return%20branch.getCharPref%28key%29%3B%0A%20%20%20%20%20%20return%20branch.getComplexValue%28key%2C%20Ci.nsISupportsString%29.data%3B%0A%20%20%7D%0A%20%20return%20null%3B%0A%7D%0A%0Apref.observe%20%3D%20function%28prefs%2C%20callback%29%20%7B%0A%20%20let%20%7Broot%7D%20%3D%20pref%3B%0A%20%20function%20observe%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20if%20%28topic%20%21%3D%3D%20%22nsPref%3Achanged%22%29%20return%3B%0A%20%20%20%20let%20pref%20%3D%20data.slice%28root.length%29%3B%0A%20%20%20%20if%20%28prefs.indexOf%28pref%29%20%3D%3D%3D%20-1%29%20return%3B%0A%20%20%20%20callback%28pref%29%3B%0A%20%20%7D%0A%20%20Services.prefs.addObserver%28root%2C%20observe%2C%20false%29%3B%0A%20%20unload%20%3D%3E%20Services.prefs.removeObserver%28root%2C%20observe%29%3B%0A%7D%0A%0Afunction%20getSS%28filepath%29%20%7B%20%0A%20%20return%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20filepath%2C%20null%2C%20null%29%3B%0A%7D%0A%0Afunction%20loadSheet%28filepath%29%20%7B%20%0A%20%20sss.loadAndRegisterSheet%28getSS%28filepath%29%2C%20sss.USER_SHEET%29%3B%0A%7D%0A%0Afunction%20unloadSheet%28filepath%29%20%7B%0A%20%20let%20uri%20%3D%20getSS%28filepath%29%3B%0A%20%20if%20%28sss.sheetRegistered%28uri%2C%20sss.USER_SHEET%29%29%20sss.unregisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%7D%0A%0Afunction%20loadAndObserve%28prefName%2C%20filepath%29%20%7B%0A%20%20if%20%28pref%28prefName%29%29%20loadSheet%28filepath%29%3B%0A%20%20pref.observe%28%5BprefName%5D%2C%20function%28%29%20%7Bpref%28prefName%29%20%3F%20loadSheet%28filepath%29%20%3A%20unloadSheet%28filepath%29%3B%7D%29%3B%0A%20%20unload%20%3D%3E%20unloadSheet%28filepath%29%3B%0A%7D%0A%0Afunction%20unload%28callback%2C%20container%29%20%7B%0A%20%20let%20unloaders%20%3D%20unload.unloaders%3B%0A%20%20if%20%28unloaders%20%3D%3D%20null%29%20unloaders%20%3D%20unload.unloaders%20%3D%20%5B%5D%3B%0A%20%20if%20%28callback%20%3D%3D%20null%29%20%7B%0A%20%20%20%20unloaders.slice%28%29.forEach%28unloader%20%3D%3E%20unloader%28%29%29%3B%0A%20%20%20%20unloaders.length%20%3D%200%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20if%20%28container%20%21%3D%20null%29%20%7B%0A%20%20%20%20container.addEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%20%20%20%20let%20origCallback%20%3D%20callback%3B%0A%20%20%20%20callback%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20container.removeEventListener%28%22unload%22%2C%20removeUnloader%2C%20false%29%3B%0A%20%20%20%20%20%20origCallback%28%29%3B%0A%20%20%7D%20%7D%0A%20%20function%20unloader%28%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20callback%28%29%3B%0A%20%20%20%20%7D%20catch%28ex%29%20%7B%7D%0A%20%20%7D%0A%20%20unloaders.push%28unloader%29%3B%0A%20%20function%20removeUnloader%28%29%20%7B%0A%20%20%20%20let%20index%20%3D%20unloaders.indexOf%28unloader%29%3B%0A%20%20%20%20if%20%28index%20%21%3D%3D%20-1%29%20unloaders.splice%28index%2C%201%29%3B%0A%20%20%7D%0A%20%20return%20removeUnloader%3B%0A%7D%0A%0Afunction%20gCV%28aKey%2C%20aBranch%29%20%7B%0A%20%20return%20Services.prefs.getComplexValue%28%28%28%21aBranch%29%20%3F%20pref.root%20+%20aKey%20%3A%20aKey%29%2C%20Ci.nsISupportsString%29.data%3B%0A%7D%0A%0Afunction%20sCV%28aKey%2C%20aVal%2C%20aBranch%29%20%7B%0A%20%20var%20str%20%3D%20Cc%5B%22@mozilla.org/supports-string%3B1%22%5D.createInstance%28Ci.nsISupportsString%29%3B%0A%20%20str.data%20%3D%20aVal%3B%0A%20%20Services.prefs.setComplexValue%28%28%28%21aBranch%29%20%3F%20pref.root%20+%20aKey%20%3A%20aKey%29%2C%20Ci.nsISupportsString%2C%20str%29%3B%0A%7D%0A%0Afunction%20getProtocol%28%29%20%7B%0A%20%20var%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%2C%20list%20%3D%20pref%28%22protocolList%22%29.split%28%22%2C%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20list.length%3B%20i++%29%20if%20%28list%5Bi%5D%20%3D%3D%3D%20uri%29%20return%20list%5Bi%5D%3B%0A%7D%0A%0Afunction%20toggleFindbar%28%29%20%7B%0A%20%20removeEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20if%20%28pref%28%22enableFindbar%22%29%20%26%26%20getProtocol%28%29%29%20%7B%0A%20%20%20%20gFindBar.hidden%20%3D%20false%3B%0A%20%20%20%20this.image%20%3D%20pref%28%22iconOn%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20gFindBar.hidden%20%3D%20true%3B%0A%20%20%20%20this.image%20%3D%20pref%28%22iconOff%22%29%3B%0A%7D%20%7D%0A%0Avar%20gRoot%20%3D%20Services.prefs.getBranch%28pref.root%29%2C%0A%20%20%20%20css2%20%3D%20%27%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23textEditable%20%7B%5C%0A%20%20%20%20%20%20%20%20margin-left%3A%2081px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23hbox1%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2047px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20%23hbox5%20%7B%5C%0A%20%20%20%20%20%20%20%20margin-top%3A%2017px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.button%20%7B%5C%0A%20%20%20%20%20%20%20%20min-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.icon%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20max-height%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20max-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.image%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20width%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23settingsDialog%20.button-text%20%7B%5C%0A%20%20%20%20%20%20%20%20margin%3A%200%202px%200%206px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%7B%5C%0A%20%20%20%20%20%20%20%20padding%3A%202px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%23image1%20%7B%5C%0A%20%20%20%20%20%20%20%20max-height%3A%2064px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20max-width%3A%2064px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.button%20%7B%5C%0A%20%20%20%20%20%20%20%20min-width%3A%2032px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20%23protocol%20%7B%5C%0A%20%20%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20font-weight%3A%20bold%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.image%20.button-icon%20%7B%5C%0A%20%20%20%20%20%20%20%20height%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20margin-right%3A%204px%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20width%3A%2016px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%23alertDialog%20.button-text%20%7B%5C%0A%20%20%20%20%20%20%20%20margin%3A%200%202px%200%202px%20%21important%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%27.replace%28/%23/g%2C%20%22%2523%22%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20if%20%28e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%7C%7C%20e.button%20%3D%3D%3D%201%29%20this.settingsDialog%28%29%3B%0A%20%20if%20%28%21e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%26%26%20%21getProtocol%28%29%29%20this.alertDialog%28%29%3B%0A%20%20if%20%28%21e.ctrlKey%20%26%26%20e.button%20%3D%3D%3D%200%20%26%26%20getProtocol%28%29%29%20%7B%0A%20%20%20%20var%20bool%20%3D%20pref%28%22enableFindbar%22%29%20%21%3D%3D%20true%20%3F%20true%20%3A%20false%3B%0A%20%20%20%20gRoot.setBoolPref%28%22enableFindbar%22%2C%20bool%29%3B%0A%7D%20%7D%0A%0Athis.settingsDialog%20%3D%20function%28%29%20%7B%0A%20%20var%20data%20%3D%20%27%3C%3Fxml%20version%3D%221.0%22%3F%3E%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%20type%3D%22text/css%22%3F%3E%5C%0A%20%20%20%20%3Cwindow%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22settingsDialog%22%20windowtype%3D%22settings%3Adialog%22%20minheight%3D%22202%22%20minwidth%3D%22484%22%20%5C%0A%20%20%20%20%20%20title%3D%22%27%20+%20pref%28%22textSettingsDialog%22%29%20+%20%27%22%20persist%3D%22screenX%20screenY%20width%20height%22%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox1%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textName%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textName%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22buttonName%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22buttonName%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textStates%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textStates%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22iconOn%22%20class%3D%22button%20icon%22%20label%3D%22%27%20+%20pref%28%22textOn%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22iconOn%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22iconOff%22%20class%3D%22button%20icon%22%20label%3D%22%27%20+%20pref%28%22textOff%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22iconOff%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox2%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textTooltip%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textTooltip%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22toolTip%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22toolTip%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox3%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textImages%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textImages%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageAlert%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAlert%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAlert%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageAdd%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAdd%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAdd%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageSettings%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textSettings%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageSettings%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageCancel%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textCancel%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageCancel%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22imageClose%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textClose%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageClose%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Clabel%20id%3D%22textEditable%22%20value%3D%22%27%20+%20pref%28%22textEditable%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox4%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textList%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textList%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Ctextbox%20id%3D%22protocolList%22%20class%3D%22textbox%22%20value%3D%22%27%20+%20pref%28%22protocolList%22%29%20+%20%27%22%20flex%3D%221%22%20oninput%3D%22self.onTextbox%28this%29%22%20onblur%3D%22self.onBlur%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox5%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Ccheckbox%20id%3D%22cssEnabled%22%20label%3D%22%27%20+%20pref%28%22textHelp%22%29%20+%20%27%22%20checked%3D%22%27%20+%20pref%28%22cssEnabled%22%29%20+%20%27%22%20oncommand%3D%22self.onCheckbox%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cspacer%20id%3D%22spacer1%22%20flex%3D%221%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnClose%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textClose%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageClose%22%29%20+%20%27%22%20oncommand%3D%22close%28%29%22/%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%3C/window%3E%27%3B%0A%20%20data%20%3D%20data.replace%28/self/g%2C%20%22opener.document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29%22%29%3B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20encodeURIComponent%28data%29%3B%0A%20%20window.openDialog%28url%2C%20%22%22%2C%20%22chrome%2Ccenterscreen%2Cdialog%2Cresizable%2CalwaysRaised%22%29%3B%0A%7D%0A%0Athis.alertDialog%20%3D%20function%28%29%20%7B%0A%20%20var%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%3B%0A%20%20var%20data%20%3D%20%27%3C%3Fxml%20version%3D%221.0%22%3F%3E%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%20type%3D%22text/css%22%3F%3E%5C%0A%20%20%20%20%3Cwindow%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22alertDialog%22%20windowtype%3D%22alert%3Adialog%22%20onblur%3D%22close%28%29%22%20%5C%0A%20%20%20%20%20%20title%3D%22%27%20+%20pref%28%22textAlertDialog%22%29%20+%20%27%22%20persist%3D%22screenX%20screenY%20width%20height%22%3E%5C%0A%20%20%20%20%20%20%3Chbox%20id%3D%22hbox1%22%20class%3D%22hbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%3Cvbox%20id%3D%22vbox1%22%20class%3D%22vbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cimage%20id%3D%22image1%22%20src%3D%22%27%20+%20pref%28%22imageAlert%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%3C/vbox%3E%5C%0A%20%20%20%20%20%20%20%20%3Cvbox%20id%3D%22vbox2%22%20class%3D%22vbox%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Chbox%20id%3D%22hbox2%22%20class%3D%22hbox%22%20align%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22protocol%22%20class%3D%22label%22%20value%3D%22%27%20+%20uri%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert1%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert2%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert2%22%29%20+%20%27%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Clabel%20id%3D%22textAlert3%22%20class%3D%22label%22%20value%3D%22%27%20+%20pref%28%22textAlert3%22%29%20+%20%27%26quot%3B%27%20+%20pref%28%22protocolList%22%29%20+%20%27%26quot%3B%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3Chbox%20id%3D%22hbox3%22%20class%3D%22hbox%22%20align%3D%22center%22%20pack%3D%22center%22%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnAdd%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textAdd%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageAdd%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnSettings%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textSettings%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageSettings%22%29%20+%20%27%22%20oncommand%3D%22self.onButton%28this%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22btnCancel%22%20class%3D%22button%20image%22%20label%3D%22%27%20+%20pref%28%22textCancel%22%29%20+%20%27%22%20image%3D%22%27%20+%20pref%28%22imageCancel%22%29%20+%20%27%22%20oncommand%3D%22close%28%29%22/%3E%5C%0A%20%20%20%20%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%20%20%20%20%3C/vbox%3E%5C%0A%20%20%20%20%20%20%3C/hbox%3E%5C%0A%20%20%20%20%3C/window%3E%27%3B%0A%20%20data%20%3D%20data.replace%28/self/g%2C%20%22opener.document.getElementById%28%27%22%20+%20self.id%20+%20%22%27%29%22%29%3B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20encodeURIComponent%28data%29%3B%0A%20%20window.openDialog%28url%2C%20%22%22%2C%20%22chrome%2Ccenterscreen%2Cdialog%2Cresizable%22%29%3B%0A%7D%0A%0Athis.onTextbox%20%3D%20function%28e%29%20%7B%0A%20%20//gRoot.setCharPref%28e.id%2C%20e.value%29%3B%0A%20%20sCV%28e.id%2C%20e.value%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22buttonName%22%29%20this.label%20%3D%20pref%28e.id%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22toolTip%22%29%20this.tooltipText%20%3D%20pref%28e.id%29%0A%20%20this.label%20%3D%20pref%28%22buttonName%22%29%3B%0A%20%20this.tooltipText%20%3D%20this.label%20+%20%22%5Cn%5Cu2022%20%22%20+%20pref%28%22toolTip%22%29%3B%0A%7D%0A%20%20%0A%0Athis.onButton%20%3D%20function%28e%29%20%7B%0A%20%20addEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22btnAdd%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22alert%3Adialog%22%29%2C%20uri%20%3D%20gBrowser.contentDocument.documentURIObject.spec.split%28%22//%22%29%5B0%5D%3B%0A%20%20%20%20//gRoot.setCharPref%28%22protocolList%22%2C%20pref%28%22protocolList%22%29%20+%20%22%2C%22%20+%20uri%29%3B%0A%20%20%20%20sCV%28%22protocolList%22%2C%20pref%28%22protocolList%22%29%20+%20%22%2C%22%20+%20uri%29%3B%0A%20%20%20%20mrw.close%28%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22btnSettings%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22alert%3Adialog%22%29%3B%0A%20%20%20%20this.settingsDialog%28%29%3B%0A%20%20%20%20mrw.close%28%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20fp.init%28window%2C%20null%2C%20fp.modeOpen%29%3B%0A%20%20fp.appendFilters%28fp.filterImages%29%3B%0A%20%20if%20%28fp.show%28%29%20%21%3D%20fp.returnCancel%29%20%7B%0A%20%20%20%20//gRoot.setCharPref%28e.id%2C%20fp.fileURL.spec%29%3B%0A%20%20%20%20sCV%28e.id%2C%20fp.fileURL.spec%29%3B%0A%20%20%20%20e.image%20%3D%20fp.fileURL.spec%3B%0A%20%20%7D%0A%20%20if%20%28e.id%20%3D%3D%3D%20%22imageClose%22%29%20%7B%0A%20%20%20%20var%20mrw%20%3D%20Services.wm.getMostRecentWindow%28%22settings%3Adialog%22%29%3B%0A%20%20%20%20mrw.document.getElementById%28%22btnClose%22%29.image%20%3D%20pref%28%22imageClose%22%29%3B%0A%7D%20%7D%0A%0Athis.onCheckbox%20%3D%20function%28e%29%20%7B%0A%20%20var%20bol%20%3D%20pref%28e.id%29%20%21%3D%3D%20false%20%3F%20false%20%3A%20true%3B%0A%20%20gRoot.setBoolPref%28e.id%2C%20bol%29%3B%0A%7D%0A%0Athis.onBlur%20%3D%20function%28e%29%20%7B%0A%20%20e.value%20%3D%20e.value.replace%28/%2C%2C+/g%2C%20%22%2C%22%29.replace%28/%5E%2C/%2C%20%22%22%29.replace%28/%2C%24/%2C%20%22%22%29.replace%28/%5Cs+/g%2C%20%22%22%29%3B%0A%20%20//gRoot.setCharPref%28e.id%2C%20e.value%29%3B%0A%20%20sCV%28e.id%2C%20e.value%29%3B%0A%7D%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%20%20if%20%28reason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%20%20%20%20removeEventListener%28%22click%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20removeEventListener%28%22mouseover%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20removeEventListener%28%22DOMContentLoaded%22%2C%20toggleFindbar%2C%20false%29%3B%0A%20%20%20%20unloadSheet%28css%29%3B%0A%20%20%20%20unloadSheet%28css2%29%3B%0A%20%20%20%20//Services.prefs.deleteBranch%28pref.root%29%3B%0A%7D%20%7D%0A%0Athis.label%20%3D%20pref%28%22buttonName%22%29%3B%0Athis.tooltipText%20%3D%20pref%28%22buttonName%22%29%20+%20%22%5Cn%5Cu2022%20%22%20+%20pref%28%22toolTip%22%29%3B%0A%0Aif%20%28pref%28%22enableFindbar%22%29%20%26%26%20getProtocol%28%29%29%20this.image%20%3D%20pref%28%22iconOn%22%29%3B%0Aif%20%28pref%28%22enableFindbar%22%29%20%26%26%20%21getProtocol%28%29%20%7C%7C%20%21pref%28%22enableFindbar%22%29%29%20this.image%20%3D%20pref%28%22iconOff%22%29%3B%0A%0AloadSheet%28css2%29%3B%0AloadAndObserve%28%22cssEnabled%22%2C%20css%29%3B%0A%0AaddEventListener%28%22click%22%2C%20toggleFindbar%2C%20false%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20toggleFindbar%2C%20false%29%3B%0A%0A//%20Name%3A%20Findbar%20Persist%0A//%20Author%3A%20Sonny%20Razzano%20a.k.a.%20srazzano%0A//%20Created%3A%20Jul.%201%2C%202016%0A//%20Updated%3A%20Sep.%208%2C%202016%20%28Added%20protocol%20ftp%3A/chrome%3A%20and%20settings%20dialog%29%0A//%20Homepage%3A%20http%3A//custombuttons.sourceforge.net/forum/viewtopic.php%3Ff%3D4%26t%3D3776%0A//%20Description%3A%20Toggles%20Findbar%20and%20persist%20on%20all%20page%20protocols%20http%3A%2C%20https%3A%2C%20file%3A%2C%20ftp%3A%20and%20chrome%3A%20%28editable%20in%20settings%20dialog%29%2C%20while%20initiated%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%23settingsDialog%20%7B%0A%20%20padding%3A%202px%204px%204px%200%20%21important%3B%0A%7D%0A%20%20%20%20%20%20%0A%23settingsDialog%20.hbox%2C%0A%23alertDialog%20%23hbox3%20%7B%0A%20%20margin%3A%202px%200%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23hbox3%20.button%20%7B%0A%20%20margin-left%3A%204px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23hbox5%20%7B%0A%20%20margin-top%3A%202px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.label%20%7B%0A%20%20margin-top%3A%204px%20%21important%3B%0A%20%20text-align%3A%20right%20%21important%3B%0A%20%20width%3A%2078px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%2C%0A%23settingsDialog%20.button%2C%0A%23alertDialog%20.button%20%7B%0A%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20background%3A%20linear-gradient%28%23EEE%2C%20%23BBB%29%20%21important%3B%0A%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20border-radius%3A%203px%20%21important%3B%20%0A%20%20box-shadow%3A%200px%201px%202px%20rgba%280%2C%200%2C%200%2C%200.3%29%20inset%2C%202px%202px%202px%20%23222%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%20%7B%0A%20%20padding%3A%203px%204px%202px%204px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.button%2C%0A%23alertDialog%20.button%20%7B%0A%20%20padding%3A%203px%200%200%203px%20%21important%3B%0A%7D%0A%0A%23alertDialog%20.image%20.button-icon%20%7B%0A%20%20margin-right%3A%200%20%21important%3B%0A%7D%0A%0A%23settingstDialog%20.image%20.button-text%20%7B%0A%20%20margin%3A%200%202px%200%204px%20%21important%3B%0A%7D%0A%0A%23alertDialog%20.image%20.button-text%20%7B%0A%20%20margin%3A%200%202px%200%206px%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20.textbox%3Ahover%2C%0A%23settingsDialog%20.textbox%5Bfocused%5D%2C%0A%23settingsDialog%20.button%3Ahover%2C%0A%23alertDialog%20.button%3Ahover%20%7B%0A%20%20background%3A%20%23FFF%20%21important%3B%0A%7D%0A%0A%23settingsDialog%20%23textEditable%20%7B%0A%20%20margin%3A%202px%204px%20-4px%2093px%20%21important%3B%0A%20%20font-style%3A%20italic%20%21important%3B%0A%7D%0A%0A@-moz-document%20url%28chrome%3A//browser/content/browser.xul%29%20%7B%0A%20%20%23main-window%20findbar%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20background%3A%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23CCC%20%21important%3B%0A%20%20%20%20border-radius%3A%205px%20%21important%3B%0A%20%20%20%20box-shadow%3A%20none%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgUlEQVR42mNkoBAwUt2AhoaGeijdSIw4I7oiIIax4YpxiaMYAFO0cOFCBl5eXoagoCAGZE3r1q1j+Pz5M0N8fDyKIRgGgBQKCQkxvHv3DmwICKCLYTUAlyEgAGKDgIODA24v4DIEBLDZTBsD8HkBlyHUC0SKo5HihESVpEwOoNgAAE1frxFe2fGiAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%2048px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42q2TvRWAIAyELzY6g7WbOIez8JjFOdzE2hm0MZqozyg+CuEqOI4Pwg8hUZQVwMtCqKpVO/NcPJLGp7LkAHBN9nyMOSIQs44zEVvfQm7AGXJtC9Q1fN8f4V3qdx0wTfDD8ICHAAk2DTCOCtFVX943wJRgJ6ikLTtxLlLCDhAz2InotfKVzQ+IlmAg8Vv4fYjJ15j6kJKfcpbP9EcblnvEEeDffrAAAAAASUVORK5CYII%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-closebutton%20.toolbarbutton-text%20%7B%0A%20%20%20%20margin-left%3A%20-4px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-clear%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLklEQVR42qVTW4tSURReRyMdr01qjooonBQTOiD0qIR4eVAjLxCCL4L14O8ZEOZtHicSBcMbmg8hKFQqFg3l7cUHEbyAgoPX1hGNsAZhWvCxzj5nrW9/59trE/CfQdylyWazUev12r9ara6OEuj1eg3CvNlsAPFxNBrdp5udTicZj8dbxwgeIahcLveGJohEIp/6/f5Dk8lE5vP5FhL9W4HX6z3B9DwWi62azebrTCYDYrEY+Hw+XFxcfG40Gqfz+fyq1WrVCZ/Px0B2DjbwMZ9ifszlckmKotQkSUq63S7TarUCTSISiYDD4cDl5eUXrH2fTqevCdztFY/HI/EDWyAQsJVK5QOpVMq/ublhzmYzwDXU63XaOEilUiCRSIDJZEI0Gi1ms9lzwu1265DthcfjebZYLABNgul0ut1NLpfDcDjcNtVqNbDb7ZBMJkEoFAJ6UEScEzunKUx+o9FIqlQqkMlkgAYBygeNRgPL5XK7rlQqYDAYIBQKFc1m84dCofD9t4kOh+MJKnnpcrkM7XYbGAwGaLVaQLO2BPhbMB6PIRwOl7E8ibU//xqkvZJAIEDSKmgiFosFCoUC8PggkUhco5JouVz+duskWiwWPRZ5n2LQsnU63fZXcBZ+4PpdtVr9enSU1Wo1hafiDwaDJJ41lEql5mQyedvpdOq33QU24mSXWfT7s7MzNQ6PjZ7AwWCQ7vV6tOzlATZ7gnsH2MeaLkKsds+HuNtt/DN+AXlHCgCxWmnnAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-clear%3Ahover%20%7B%0A%20%20%20%20background%3A%20%23FFF%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACc0lEQVR42qWTX0hTYRjGn685p87p/LPM2fyTS6HEtFOCiZpbFystJQqhSEJv9KKrLiIRqRzVRV1YKF6USReWaWKptJXMPwlSKgiFWE0RlJDMzMTU7Zzz9U5WCCWCffDjPbyc9/me853nY/jPxbYydCcLFkmG1e1GxaYCeQJLP7YfJZwDxMPlUR4gSbDm5J8UOptahzcTMBLm8aGbdZ7pjprytvkRbkgzZQuOzt5hUdrAwd1ipqVy7kI9F53O8Vqb7QVMsU4otVo8r7vaPurg+qVVVDyeg43VlDAluQumDcKJSBpM81MHH4jdl5ESFZ0c1zW2Q2E2W2C3dyAn5hN8AwPR3nC7k8u4Vf6E9zDarcpPHXJQpQ5S+2vCNDrD7oiQiJ3h7kWXj7iwgtA9BrT2KmEy5ZJIG8xx41AoFLC31DdWPuVnWfV5liXLuHiooOyE6BKx+OU7lr8tQRsRirBdevycnofGoENTv4JECkikGaZgJ14PtDy69oyfWTuD03thoWI1ZwpClNEAXUwkZFHG3IfPiEo1gq9IYC4ZD94yJCVlorS0sPFyLu5f7+COP4d4o5Blk5NLGXlFR6fGJuHDFYhONkJadq8JaGO2wzW9gLSyey30ejXnvP+vIP12UlScL3hcTL+fhErlB128HosTs2i3N/fRr6uq7UPXhkmsOM5yKGXlCQnpR2SyFJ+SiFn6FFv3qwHqX2kYxMtNo3w4DhZdAKzFZaeEqXeT6HkzNDjzA5WOCdj+dRe2EWoiiNAQ/p5eih6piWEo9UT441dUj8ygm/ouYpVwe58l5hXxJVTeqvT2aBSyF4kQvXU9fEu3cf36BSQ89XDedE3mAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-textbox%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%20200px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-textbox%5Bstatus%3D%27notfound%27%5D%20%7B%0A%20%20%20%20background%3A%20%23F00%20%21important%3B%0A%20%20%20%20color%3A%20%23FFF%20%21important%3B%0A%20%20%20%20text-shadow%3A%201px%201px%202px%20%23000%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.tabbable%20%7B%0A%20%20%20%20-moz-appearance%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%2C%0A%20%20%23main-window%20findbar%20.findbar-find-previous%20%7B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%202px%204px%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%20%7B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABSklEQVR42qXQv0sCYRzH8c+lEZWcUOed9MPQJSihoUHaWluCgohqaelPqNVrbWhu6b9oqaGWEKJoac8uMX8l/sjT8/H0mxfpIXn6QJ/lHg7eL3geAf+c0O+ntHlD4cUp1IoMeqWOqsGQ1FKoPx8KXMD68RNF1hRoWYbcp4F8juHtJY7i7TYfEDmKUXBV6caFQh2ZVw3G/S4fEN67I2VZ7salWgPl9wRaD/t8QGjrmsSA3I0rholm+gP0eMAH+DeuaMwn2XGLgGyKH5DagOnx2rG1Qh4U2xkArFyST54Gud1go+Oo0ogdW2MM0L9ARhXIZwDtROgFli6iUmBObUxMQm+gN+6saQLlEigZV9vA6d8rhM6jrpmA2vKIgMs9NO7/BgtnUWE2qEL02ohD7PiIPYg1h9gZ6CD+edU6UjrRNx4M/CI/X4d4OMCxb7reuhENyrkyAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%20%20margin-right%3A%205px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%5Bdisabled%3Dtrue%5D%20%7B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABJElEQVR42qWRvYqDQBRGrxKsEosUol0a8VksQwqxySsItrbWllpZRIQpLfdprExnEVHxF3UdwWHD6mZgPxiuOJzDzDcM/DPM1k/TNJEsy1DXNVRVtcwkSSAIAp1K4HkeUhQFsiyD1+u1zDiOwXVdOoHjOOhyuRA4z3N4Pp/g+z6dwLZtJEkSgcuyhDRN6a9gWRY6n88Exj0URQFhGNIJcImn04nAwzAsk1pgGAY6HA4ExmnbFh6Px75A13UkCALZ6LqOwDjjOELf98vCzxpFkf4m0DTtLoqiyrIsNE3zBq+ZpmkRz918zYLg1xVut9ud53kVH59hmI/wZgfX63WRcBxHJHvwbok/JWsfW/CuYJUcj0cVf8/PuQn/KVgleO7BHwU0+QaQocoRLKElSwAAAABJRU5ErkJggg%3D%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%3Anot%28%5Bdisabled%3Dtrue%5D%29%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%20%7B%0A%20%20%20%20-moz-image-region%3A%20auto%20%21important%3B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR42tXQvUoDQRSG4W+UEAt/CCQhglqJvYUoEisrL8AipLQWbLR15g68CRUbK69BBEEURDBEggHRJAzjqrPubmY97lbrkh93sfLANGd4n+Iw/HHY0M+10310XdBFRaQGwri8OMO15eLqusZxsyUSA2G8vjrHJ0sTkNJB47aF5t09R21b/Ar8jC1tIDte8GzIlzbshzrH464YCPSLlXJhfXbxoV34rwr01AiQPdEDDI0dA/+LAN8Ab1YMiYCVY1qYLWA0kwGyWWgf8djzAP0OcmxAthAAbOAR8xtnZManojgcJUHnm7036weMlU/I5IpRHE77GXRZTQaMLB8R5UvxZRqALR0SitP/GcD8AbFcIbYi1QHqOwmBFPMNG5KzEWHCSEoAAAAASUVORK5CYII%3D%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%5Bdisabled%3Dtrue%5D%20%7B%0A%20%20%20%20list-style-image%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/ElEQVR42tWRO4qEQBCGa/CBGHgH72DkDSY3GRARPIBnshU6UDT0GF7AxNhAEd+i7paBrMzOrLLR/FBBdfN9dFfd4J+5vbs0TdOY5xlc1yWXBQgrinJv2xaSJIkppeS0AGFVVe+SJEFZlpBlGaRpGvu+T/4U/ISbptkERVFAnudYcRiG5KXgN7iqKqjreuu7rsM+jqKIPAnewTgHHOa6rjCO40GyCwzDoLIsA8dxwDAM9H1/gJdlgWmatsKXfAseL4do2zZlWXaHMcMwgOM4j1NbsCyL8jy/wxiUeZ53ToDfEQThcHZJoOs6FUXxkwWapj3NANcaBME5wZV8AeRHxBGt/ThhAAAAAElFTkSuQmCC%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-previous%3Anot%28%5Bdisabled%3Dtrue%5D%29%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-find-next%5Bchecked%5D%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-find-previous%5Bchecked%5D%3Ahover%20%7B%0A%20%20%20%20background-color%3A%20%23FFF%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20%7B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%20%7B%0A%20%20%20%20background%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACRElEQVR42qWTS6hSURSGl2/FIpRwEuQkEB2Y3CAHDZwEotwLiRg4CQpMJ81FnDhQQQwkxEkiCEo0EPLSQNKJJGYgPuI6CSVNUQLfen0fbW97jHxcvQs253DY5/v//a+1SXBECQQCtlgsftHpdHKxWOzzrr2kQ+Fer/cei8U6DQaDtyaTCaD1rVAonPd6PeLaAiqVim2z2V4tFgtGJpMBv98P/X4fyGRytVarva/X65fXEnA6nU94PN59Pp8Pq9UKWq0WPhEg90Cj0Tr5fP5Nt9s9TsBsNj/kcrkK5B44HA6gHgCbzYbRaAQejweKxeLXRCIROeoEOp3urkgkejafzylMJhOWyyUwGAyQSCSA+gHT6XSODLyORqPTgwXkcvlNpVL5EjXzBobhaAiCACqVisF4oohGo/FBr9dfbPp/p4BQKKQYDIbnCH4HOyaRSP/hfyeIKJfLAZ/PV97G2CngcDjOEPQEAykUCuD88RNFhbNftdvtjy6XK7OLsVXAZDI9QE09xe90On3tHI3jWgQ3Frn/YrVaP+2LeKOAVqu9rdFoDKVSad1UDMeF88dwJPIdxfKuUqns428WMBqNQrVa/RSNHjSbzbVrnD+Gown6FQqFfNlsdraXvk3AYrGcKBSKM3yBqtUqDAYDGI/HMJvNLpPJ5NtIJNK7CnyrgN1ufySVSh8Ph8M/m5B7FNcinU77A4FA7arwrQKoRHiFw2ERamwbnaSSSqUu3G73j0PgWwXQDTXmcrlzmUz289+3eDw+PBSO6zdwHx8gUmei8gAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%204px%2C%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-highlight%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACgElEQVR42qWSXUhTYRjH/zvneI5s1RylJtgHBBGCSCF6UUmghd0IohZEiJE4uwgzEM1AzCZ2YfhBn2wFXqRGkDCLCAxrihkYSxph0oeGupwf286287mz0zHorqmbf3hvXh5+v+d53leHOFJmMu02m0wjP3i+p8rttqxXq4sVbrPZTmdx3IPZtra9QVnGiqI8sbJs5ZSiCFsWnD+Tn3q95e50WJZ3/HY48NViARsIQEcQ719LUvFbQVjckmDZTvdwdGH5L/0VKCoBcWEBruYbUD0eJFLUzy6f78C0LKtxCSYfM5cPJovdskhA2JYJ964OkIkpCGsTOBsbsexyddctLdXENUF/M5NXnCMOiUEiwZCkNag1ySn7MZfeBZHYB1kU+ZaGhrTB4WF/zIK6c3R6a3l4gmfVVL1RB0KJQBV1UBkK/gCD2aRWaWIm8YLZbO6N+ZELsinmhQUOKRDOYQwkKEKBykOD0xA4CZyPkAZdaYWVnfPD0RjrChYHaJshIl0kaRIMrSCyBqdoSLKE0CrUT/Mp5lNNHut6jKiCj1am+lCyeF9VSegNGvzvL0+AhLAGVzHn3dlxuHbl6kYr/q+gpiIvo7lij5Na7qcNRm0tGlxVKISpCELeCPxB48uSdqnI+Z2PxCWw1NeUVpcce4bVXuild6AVPxQG4LwKeM7wufoRedQ+zgY2gkcVdDbVVZ09eeIh510FHRpAqnEQPCuDC9Ce9lfbc28/X5nZDDyqwHrzWn3BkcxbQoBFAimAYYIgfH2CfdyTf+ne0thm4VEFWsrWztTTO6UUpXzzhnyOUedIX23H0JtY4FEFuVkZ/g+TXyqLjmeP/ruzj0y4Y4Wv5Q8F6iIgX85TdgAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20%7B%0A%20%20%20%20background%3A%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAABvklEQVR42rWUOYsqURCFT6u4ICouiAtiYqTirzExFMHERAQjg0uHgoobGKiIgfh73HEJDUQQxDURnVcFT2aCx2udmYKGey/d56tz6tISfrmkdz+sVCrifr/j8Xjw4/F4EIvF5B8B5PN5YTKZYLVaWZxA2+0WmUzmZwC5XE4EAgHodDr8dTEYDFAoFL4PkGVZGAwGuFwu7HY7OByOJ6BYLL4HqNVq4vOeOt9sNvD5fFCpVAwYDocolUqvA0h8uVzymuKw2+0wm82w2WyIx+Nyp9NhODkol8uvA/4MTlAcRqORARTL6XTC7XaDJEmIRCJ8ToBqtfoagLofj8cIBoMcBQktFgvo9XpeU4XDYV6PRqPXAYlEQni9Xo5lv9/DYrGAgK1Wi4XS6bQIhULPGdTrdeWAaDQq3G43nE4n7y+XC9+Y2Wz2BUDuyMFkMiHHygHUvd/v5+6ortcrO5nP509Av98Xq9WK3zkcDjifz2g0GvJ/AclkUtBQaZAkrNVqecjkYDqdotvtylBY/wRQ9uv1Gs1mk8Wy2aygq0kdt9vt9wEkTrdErVbjeDw+40ilUkKj0XAM5KrX6ymCvP03VVoflz3vEVRW3O4AAAAASUVORK5CYII%3D%29%20no-repeat%200%204px%2C%20linear-gradient%28%23EEE%2C%20%23AAA%29%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%3Ahover%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACMUlEQVR42rXUS2hTQRQG4P/m5qWJ0aZpb0IxJJG22IAxiSXFokXBgsWCFMWFqAtdaEEQuhQ34kJwoRioIFWIgiiuBME3orQ2L9O86KJtrIqU1FeiMX1Ec483EyiKXSRRh7mLAzPnO5yZuRz+8+Bq3djjHSciEdKEKH2ta1fCu9f2R76agC3nEiSsUsBUr2TJRZHwemYB9wbs/wZwnAyQu1WPFSqeJS8h/tAbxC5s/3ug89RL0muLMDbV492HBZgb1ZB6hUDwLWIXawRS/QP0azzYtgcjH9WwW7WQyTgGhELTiHm7qwdKyefGQhAhY6d5y70fEVsnmhpUuHKomTvsmyzlRyQwheilndUDia3dpLZYwOtWSzdGhI9rxh1FC6hQAMfJ4G63snOI+iXgck91QKn6zOgI6to7ADkPFEWcyZoQEVzluylN5yYLA+L+FKJDVQLDGzykl6pXGU04KByAL30NDydm0f/sJtvnOPaAHG4Ls5L+SUSv7qocmIFA7z3roTKbWZzLL6LOaMCj1KclwHn0Ptld5RaNh6UWDVUBPN/ooYZ1LTjSdoLF58NnsUYw4PF0Zgk4fvsVxeNf2NnkM1+xmMsjef13ZFngqXsb6TUKFL//QLpICApO9M5PQWsyYiKRRG/0RcXvZ9mFftdm0lltSMxmsW/4LlsT3LGbdI0G3EgrcfrJYO1AyNFBvEYDnpcj+y2HrrFytWFPF3FyJXLzc/hcENGXHK0IqflvWun4CYr06hFCjHr8AAAAAElFTkSuQmCC%29%20no-repeat%200%204px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-entire-word%20%7B%0A%20%20%20%20background%3A%20%23CCC%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACM0lEQVR42q2US4hSYRTHz0Wvr8wXiG+FXI3bFuOuhQUu2rQIWtdCdCM+yJAJRuMi1WJAzRdK4Lo2FUQQgqFIuBB1EYGIlJM0tskX13vVOncoiCHIO3k23+V7/c75/+/5COARgUDgkkwmM1MU9W7bM8S2GyORCGk2m6nBYLCZz+eHuVyO3ikgHo9fdblc1/v9PtRqtTf5fP71zgDhcFiC0lBut1tAkiSUy2V6tVrdz2az7H8DvF6vRCqVBoxGo9TpdCq4uV6vB41G4xVW8fbcgFAoZNLr9Vfw8svtdjusUql0SqXyntVqhWazWVgul98KhcIJb0AwGBQRBBHVarUqm80GAoEA6vV6ar1ef9bpdI/sdjt0u927iUSC8Xg8t3D9eSaTYbcGcBGNRp2Y4U2RSCTAKsBisQACAMGnwEqlcozbhg6HYx+rO95sNlmsZsZLIjR2D4fbKA2J4xe8WItGkygTmEwmmEwmIJFIYDabQbVa/cowzJNisTjhZbLf77dg5jfS6XQSm4xA2Y7QE5hOp98RJMNvUqFQwGKxAKyEoWn6AI1ntgb8GQi4iIAHGo0GWq3WAWa/lMvljzFzFiU6YVn2RTKZ/Mirgt+Bv+ohGnwBPSF/Ad6LxeJn2AsBXH6JJn/gZfLZ8Pl8DrzwDspxajrnA9cHqVTq/H3wF4k8arV6jwMMh8NP4/H4CDv5x84A3HMhFAopg8EAnU7nYalU+meT8QJwEYvFro1GIzO+pE+3PfMT2B/gEZMDjLUAAAAASUVORK5CYII%3D%29%20no-repeat%20left%20center%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-entire-word%5Bchecked%5D%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACa0lEQVR42q3TS0wTURQG4DNzp5127LulU0uBABpIQ1iA2jbEINFEYqIL48YVWxYoLrBalQCJISYGE6FG3WhCjAtZuNGoCw0mPpo2KKU1EWnlUSpvdNCWTmfu1HbhQl3YQf7lzT35cu85hwAZ0XrDLRaGaJjurR8otoYo9iJ1KanxOHKLkZn13PfUZiUecq1uK1BxZaan65ChNziVhvuvZ/ux33Nx2wDqwgxbxmwmu47YEUMS0D4c38CiUC4O7uP+G1CcDlpUavWr3aX6kjaPzlQ4ezuZgpFAohv73Ze3DCh9sb01NnWnlRZPjobnGLWJdbI65Tt3uQJGQssnMJ+O4RtNYdkAdT5mZCATLbFa7K5qEgxYgntvkq0ZTIYcNuNac5USHkc3jMt9td9QR+AuIOoMvr6HKxooxNwTaxd43p+hzchpR+AuQyBhASQqP6oSwO3n81EM5NhBp6ntWXhpAiThcP41i7K+iPFNHqNAHCkxaJQiUB8RhSp1GpIuMwI05tEVTgSGIYH7iuHOy/lYLptqxTeb47KarOj60AQ4ezVHqfYDiRBrMfGsWoS1H/yS1ag0aXcgRak+BzzHw5PxlVQ6k63Ij+9a0cBvvTn3yZEHErVGDKPj03ZCpU2ZNTSXyQpZkMTJlEB4xYG6p7Je8CvoVGhhp81iBlqrqDEUgM/DBK3pIEQ+KOWIs3iw8ZGsJv8FdI4dV9PUA1JvR/VWBLv0IjwMxLu5a56t78Gf0XgjL8wmXUsVq4Mvibn38VXeld9kYdsAyjfNmql0ss6mgtFIohHfOvDPJZMFFFLdP9U3u7DeIA65jhZb8xNNSOwRvU1bqQAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%20left%20center%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.findbar-highlight%20.toolbarbutton-text%2C%0A%20%20%23main-window%20findbar%20.findbar-case-sensitive%20.toolbarbutton-text%20%7B%0A%20%20%20%20background%3A%20none%20%21important%3B%0A%20%20%20%20border%3A%20none%20%21important%3B%0A%20%20%20%20box-shadow%3A%20none%20%21important%3B%0A%20%20%20%20margin-left%3A%2018px%20%21important%3B%0A%20%20%20%20padding-top%3A%202px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27notfound%27%5D%20+%20.findbar-find-status%2C%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27wrapped%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23FFF%20%21important%3B%0A%20%20%20%20border-radius%3A%203px%20%21important%3B%0A%20%20%20%20box-shadow%3A%200%201px%202px%20rgba%280%2C%200%2C%200%2C%20.5%29%20inset%20%21important%3B%0A%20%20%20%20color%3A%20%23000%20%21important%3B%0A%20%20%20%20font-weight%3A%20bold%20%21important%3B%0A%20%20%20%20height%3A%2024px%20%21important%3B%0A%20%20%20%20margin-left%3A%205px%20%21important%3B%0A%20%20%20%20min-width%3A%2024px%20%21important%3B%0A%20%20%20%20padding%3A%204px%206px%200%2024px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27notfound%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAACqklEQVR42pWUXUgUURTHz8ydGQVpmIwk19U2t2ILVosi+sL2JVkfgkxIg+yDEKFekqKiF333oR4ysc3o40Uf8otAezKQiAqSgtXaJJVg/didTTfd2Z3ZO9uZdbXF1t3tD8M9s/ee/++ee/YOA1noBiFSPss6NnPcPmAY8GvayIyuj7ZTGsiUy6SbvInGe0Xx3m6T6VJxfj7wHAcQi4GGz89AADyy3PZ2bq65k1L5vwF3cbdHi4p67SUlFs3ng4gsg65pawlEEIBIEnh03d05NXWyNxqdyRpwHXdeUVg4ut9stixOTMSNUyUYMUMIjAmCu9/nc3RR6s8K8EAUWyrt9uagxwNSdTVYOzrAU1cHi0ND8XnJ6YRdXV0w2dgIcnc3UOzLa1VtbQ6FbmUF6C8t/bWd56Wl2Vk4trCw9vtXhBiyofmq3uExGSZjquq9oig7MVTSAq4ScuJCWdkbdXoaaDQKW6qqwJ5kmCw3AgODg/E4oOvwQlEqXlI6khZwh+cdZ2y24QUErC7YipDydZDPaC4nzA2F8Z/1OBSq6aW0Jy2gyQBYrcNBr3dtsgABB9YBPiHAlwAY6xSs4Kmi1PRlAlwkZMdps/kHG1i5Q9vQ/BA2MpU+ImQ+AZmnFFpDIdt4LPYtY5PvS9KkmVKLEdcEg38bWlsbH48kAftEceXIVPV7SyRSnrHJhq7x/OWDgvAkl2XBgqaHXS4YwXEmsVsTVnUcIR8aGmAaxyU8nlfhcGMPpY/We214k2/n5Dzfw/P1hGH+WZgcG5+N95HIQLumncXXSNYAFNskCM+sHHc+DytJlfAbzb+oap9L0+rxdSmVSdqPnaFzHFdZTEjTJpZ15iWqWcYj8ev6sIfStkFKB4xCNsrPCEhal3tKEAqKWVZ8GA4bl2QZH5op8Q/uPxcgcP8LuQAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%205px%20%21important%3B%0A%20%20%7D%0A%20%20%0A%20%20%23main-window%20findbar%20.find-status-icon%5Bstatus%3D%27wrapped%27%5D%20+%20.findbar-find-status%20%7B%0A%20%20%20%20background%3A%20%23FFF%20url%28data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAQCAYAAAAMJL+VAAAB+UlEQVR42mNkoDFgJFUDd9Du/zA2KyMjw4e1LnjNYCTGsK/rXBnRxWAAWY4oCxYtWgQ3YNYNbTCdpnEVQ2PmBkkwPT3gOYp4XFwcI0ELgsOiGViZGRmc6s+DxXbWGTD8/cfA8OcvEP/7D8QMDGqZhxn+f/nBcHaWM1D8P8MvoNyVQyuJt+DD138M4b2XwGJba2AWIEJHKf0ww5dfjAzXJluB+V9+/me4cYRMCzZV6YNd3T7nKkP/6rsMPLICDF85OSEa3n5m+H/vJUNhih6DochF0i14+uo7w8leC4bffyE+mLD4GsOEQ28YGIR5oBZ8YUgxEWSIDdFkeHBqNWELVq9e/d/LNwhsQUDrWYb3H38ybGsxY2BnZWb4+ec/AzMwafbPv8ow9chrsPoUCxGGxHAtoNwfhsen15FmgX3lSYa3H34yHO+3ZuBgYwZH8DegV77/+M8wf+UNBlCUJIRpMfwHxv7Pf8wMT8+tIsWCvwyOVacY3gAtONaHsOAf0NQvvxgYOFghWt8DHfIbKP73LyPD07NEWACLg59/GBhk4/YxfPvHxPBgth3YEHAyBeJfQEv+Avm/ofy///+D4+f5uTXEWQBj48pM+ABBC1AkPXf8ZxDjZ2D4+I2B4edvsNj/lx8YGM5FEF2G4VdotOI/o7gAihB1LaACAABKph8gxHqCawAAAABJRU5ErkJggg%3D%3D%29%20no-repeat%200%205px%20%21important%3B%0A%20%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E |
difabor > 24-12-2017 17:14:23 |
Ultima2m пишет
У меня - работает... Окно диалога вызывается. |
Ultima2m > 24-12-2017 17:36:40 |
У меня при клике СКМ вылетает окошко. ФФ-57 скрытый текст ![]() |
lokiju > 24-12-2017 18:09:35 |
Ultima2m пишет
А если в about:config |
difabor > 24-12-2017 18:10:42 |
Ultima2m пишет
Я не понял, у Вас ФФ57 или 52? |
Ultima2m > 24-12-2017 19:15:16 |
difabor пишет
Сижу на FF-52 ESR и допиливаю под себя FF-57 |
difabor > 25-12-2017 01:04:53 |
Ultima2m пишет
Так на 52-й у Вас СКМ работает? |
Ultima2m > 25-12-2017 05:36:53 |
difabor пишет
На 52 у меня дополнение FindBar Tweak стоит. |
difabor > 25-12-2017 09:52:27 |
Ultima2m пишет
У меня оно тоже стоит. |
Andrey_Krropotkin > 25-12-2017 16:47:12 |
Dumby спасибо за ответ с профилями. скрытый текст Выделить код Код:var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); fp.open(function (rv) { if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); } }); А вот допустим в кнопке Save+- fileContent явно не задан и как заменить? (особенно интересует последняя строчка) скрытый текст Выделить код Код:var fp = window.makeFilePicker(); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilter("", "*.png"); fp.defaultString = getTabLabel() + " " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png"; if (fp.show() == fp.returnCancel || !fp.file) return; Если у Вас есть время, посмотрите пожалуйста. |
Viatcheslav > 25-12-2017 18:14:29 |
Прошу меня простить за дублирование просьбы - думаю, что просто не заметили Viatcheslav пишет
|
Dumby > 25-12-2017 20:45:14 |
Andrey_Krropotkin пишет
Не готов согласиться. fileContent задан явно в переменной url, скрытый текст Выделить код Код:var fp = window.makeFilePicker(); fp.init(window, "Сохранить как…", fp.modeSave); fp.appendFilter("", "*.png"); fp.defaultString = getTabLabel() + " " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png"; /* if (fp.show() == fp.returnCancel || !fp.file) return; var wbp = window.makeWebBrowserPersist(); parseInt(Services.appinfo.version) < 36 ? wbp.saveURI(url, null, null, null, null, fp.file, null) : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+ */ fp.open(res => { if (res == fp.returnCancel || !fp.file) return; var save = window.makeWebBrowserPersist().saveURI; save.length < 8 ? save(url, null, null, null, null, fp.file, null) : save(url, null, null, null, null, null, fp.file, null); }); P.S. Позволю себе напомнить про будущее toLocaleFormat. |
Andrey_Krropotkin > 26-12-2017 12:05:59 |
Dumby спасибо. Да в 58 не только toLocaleFormat заменят, но и многое другое - Firefox Site Compatibility. Опять придется все править. |
Andrey_Krropotkin > 26-12-2017 21:51:44 |
Благодаря Dumby подgравил кнопку для FF57 - Создает пункт в контекстном меню закладок "Экспорт в HTML файл" (сохраняет выборочно папки или любой пункт из контекстного меню закладок в HTML) скрытый текст Выделить код Код://-------------------- Экспорт в HTML файл в контекстном меню закладок //Источник - https://github.com/ardiman/userChrome.js/blob/master/exporthtmlfolder/ExportHTMLFolder.uc.xul (function () { function ImageConverter(imageURL) { this.imageURL = imageURL; this.channel = Services.io.newChannel(imageURL, null, null); this.channel.asyncOpen(this, null); } ImageConverter.prototype = { imageURL : "", channel : null, bytes : [], stream : null, Database64 : null, iscompleted : false, QueryInterface : function (iid) { if (!iid.equals(Components.interfaces.nsISupports) && !iid.equals(Components.interfaces.nsIRequestObserver) && !iid.equals(Components.interfaces.nsIStreamListener)) { throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, onStartRequest : function (aRequest, aContext) { this.stream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream); this.iscompleted = false; }, onStopRequest : function (aRequest, aContext, aStatusCode) { this.Database64 = 'data:' + this.channel.contentType + ';base64,' + btoa(String.fromCharCode.apply(null, this.bytes)); this.iscompleted = true; }, onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) { this.stream.setInputStream(aInputStream); var chunk = this.stream.readByteArray(aCount); this.bytes = this.bytes.concat(chunk); } }; var ExportHTMLFolder = { escapeHTML: function(str) { return str.replace(/[&"<>]/g, function (m) ({ "&": "&", '"': """, "<": "<", ">": ">" })[m]); }, onMenuItemCommand: function(event) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); var MPMenu = PlacesUtils.getString("BookmarksMenuFolderTitle"); var NodeID = document.popupNode._placesNode || document.popupNode.parentNode.selectedNode; fp.init(window, PlacesUIUtils.getString("EnterExport"),Ci.nsIFilePicker.modeSave); fp.appendFilters(Ci.nsIFilePicker.filterHTML); fp.defaultString = NodeID.title+".html"; fp.open(res => { if (res == fp.returnCancel || !fp.file) return; var file = fp.file; var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); var charset = "UTF-8"; foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"] .createInstance(Components.interfaces.nsIConverterOutputStream); os.init(foStream, charset, 0, 0x0000); var nbTab = 5; var data = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n'; data = data + '<!-- This is an automatically generated file.\n'; data = data + '\tIt will be read and overwritten.\n'; data = data + '\tDO NOT EDIT! -->\n'; data = data + '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n'; data = data + '<TITLE>Bookmarks</TITLE>\n'; data = data + '<H1>'+ExportHTMLFolder.escapeHTML(MPMenu)+'</H1>\n'; data = data + '\n'; data = data + '<DL><p>\n'; os.writeString(data); var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); if( NodeID.type != 0 ) { query.setFolders([NodeID.itemId], 1); var result = historyService.executeQuery(query, options); node = result.root; } else { query.setFolders([NodeID.parent.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; inc = 0; var node = rootNode.getChild(inc); while(( inc < rootNode.childCount )&&( node.itemId != NodeID.itemId )) { inc++; var node = rootNode.getChild(inc); } rootNode.containerOpen = false; } this.ecrireUnMP( os, node, nbTab ); data = '</DL></p>\n'; os.writeString(data); os.close(); }); }, ecrireUnMP: function( flux, elem, nbTab ) { var resultTypes = Ci.nsINavHistoryResultNode; if( elem.type == resultTypes.RESULT_TYPE_SEPARATOR ) { var chaine = new Array(nbTab).join(' ') + "<HR>\n"; flux.writeString(chaine); } else if( elem.type == resultTypes.RESULT_TYPE_URI ) { var Description= PlacesUIUtils.getItemDescription(elem.itemId); var chaine = new Array(nbTab).join(' ') + '<DT><A HREF="' + this.escapeHTML(elem.uri); if ( elem.icon.indexOf('moz-anno:favicon:http') >= 0 ) { if ( elem.icon.indexOf('http://www.mozilla.org/2005/made-up-favicon/') < 0 ){ chaine = chaine + '" ICON_URI="' + elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http') + 'moz-anno:favicon:'.length); } var Image = new ImageConverter( elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http')) ); var thread = Cc['@mozilla.org/thread-manager;1'].getService().mainThread; while ( !Image.iscompleted ) { thread.processNextEvent(true); } chaine = chaine + '" ICON="' + Image.Database64; } else if ( elem.icon.indexOf('moz-anno:favicon:data:image') >= 0 ) { chaine = chaine + '" ICON="' +elem.icon.slice(elem.icon.indexOf('data:image')); } var chaine = chaine + '">' + this.escapeHTML(elem.title) + '</A>\n' + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; flux.writeString(chaine); } else if(( elem.type == resultTypes.RESULT_TYPE_FOLDER )||( elem.type == resultTypes.RESULT_TYPE_FOLDER_SHORTCUT )) { var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService); var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService); var Description= PlacesUIUtils.getItemDescription(elem.itemId); this.escapeHTML(elem.title) + '</H3>\n'; var chaine = new Array(nbTab).join(' ') + '<DT><H3>' + this.escapeHTML(elem.title) + '</H3>\n'; var chaine = chaine + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n'; chaine = chaine + new Array(nbTab).join(' ') + '<DL><p>\n'; flux.writeString(chaine); nbTab = nbTab + 4; var options = historyService.getNewQueryOptions(); var query = historyService.getNewQuery(); query.setFolders([elem.itemId], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; for (var inc = 0; inc < rootNode.childCount; inc ++) { var node = rootNode.getChild(inc); this.ecrireUnMP( flux, node, nbTab ); } rootNode.containerOpen = false; nbTab = nbTab - 4; chaine = new Array(nbTab).join(' ') + '</DL></p>\n'; flux.writeString(chaine); } }, init: function() { var contextMenu = document.getElementById("placesContext"); if (contextMenu) contextMenu.addEventListener("popupshowing", this.ExportHTMLFolderShowHideItem, false); }, ExportHTMLFolderShowHideItem: function(event) { var show = document.getElementById("placesContext_ExportHTMLFolder"); show.hidden = (document.popupNode.localName == "menuseparator")||( document.popupNode.className == "openintabs-menuitem"); document.getElementById("placesContext_ExportHTMLFolderSep").hidden = show.hidden; }, }; window.addEventListener("load", function load(event) { window.removeEventListener("load", load, false); //remove listener, no longer needed ExportHTMLFolder.init(); }, false); if ( document.getElementById("placesContext_ExportHTMLFolder") ) return; var contextMenu = document.getElementById("placesContext"); var copyBothMenuItem = document.createElement("menuitem"); copyBothMenuItem.id = "placesContext_ExportHTMLFolder"; copyBothMenuItem.setAttribute("label", "Экспорт в HTML"); copyBothMenuItem.setAttribute("selection", "any"); copyBothMenuItem.setAttribute("closemenu", "single"); copyBothMenuItem.addEventListener("command", function () { ExportHTMLFolder.onMenuItemCommand(event); }); contextMenu.insertBefore(copyBothMenuItem, document.getElementById("placesContext_newSeparator") ); var SMenuItem = document.createElement("menuseparator"); SMenuItem.id = "placesContext_ExportHTMLFolderSep"; contextMenu.insertBefore(SMenuItem, document.getElementById("placesContext_ExportHTMLFolder") ); })(); Если есть желающие найти и устранить недостатки - буду очень рад. |
Andrey_Krropotkin > 26-12-2017 22:43:16 |
На стадии переделки, (все нет времени довести до ума), но вполне работает для FF57 кнопка - дополняет контекстное меню кнопок дополнительными пунктами: скрытый текст Выделить код Код:/*Дополнительные пункты в контекстном меню кнопки*/ const topicURL = "http://forum.mozilla-russia.org/viewforum.php?id=34" const cbNamespace = "http://xsms.nm.ru/custombuttons/"; const nsIFilePicker = Ci.nsIFilePicker; const nsIFile = Ci.nsIFile; function $(aId) { return document.getElementById(aId); }; ///////////////////////////////////////////////////////////////////////////// /////////////////////////////// Context menus /////////////////////////////// ///////////////////////////////////////////////////////////////////////////// function addMenuItem(aNewIDs, aNodeIDs, aLabel, aIcon, aCommand) { for (var i = 0; i < aNewIDs.length; i++) { // Remove previously created menuitems if any if ($(aNewIDs[i])) $(aNewIDs[i]).parentNode.removeChild($(aNewIDs[i])); let mi = e4xConv_parseXULFromString( '<menuitem xmlns="' + e4xConv_encodeHTML(xulns, true) + '"\n\ id="' + e4xConv_encodeHTML(aNewIDs[i], true) + '" class="menuitem-iconic"\n\ image="' + e4xConv_encodeHTML(aIcon, true) + '" label="' + e4xConv_encodeHTML(aLabel, true) + '"\n\ oncommand="' + e4xConv_encodeHTML(aCommand, true) + '"/>'); if (i == 0) mi.setAttribute("observes", "custombuttons-contextbroadcaster-primary"); if ($(aNodeIDs[i])) { if ($(aNodeIDs[i]).nextSibling) { $(aNodeIDs[i]).parentNode.insertBefore(mi, $(aNodeIDs[i]).nextSibling); } else { $(aNodeIDs[i]).parentNode.appendChild(mi); } } } }; var saveImg1 = "data:application/file;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///8A////AESqAABHpgAASKAAAEukAQxMpQMYR6MAAEepAQ9MpgOLRKgACUenAABHpgAARKoAAP///wD///8A////AP///wBEqgAARaIAAFS2FVBj0jS3Y9AzyVG0EUROrwt8TKcDs0ikAANInwAAR6YAAESqAAD///8A////AP///wD///8ARKQAAVvJKJtj0jX/SaAJ/0abCv9UtSH/U7QX8lW5IMddwyfQW8Iii0mqBQ1DqQAA////AP///wD///8A////AEWlAAFYwB6YXsYc5F7GFt9bwA+vVbgWvU6rAKBRrgf0RZgA/02oDP9ezCzJR6UBA////wD///8A////AP///wBFrAAASKIAADiGNQAeYIIpF1iJHVa4GKEve0tFLHl1Pla7J51exRnUWL8VjEetAAP///8A////AP///wD///8AC0WuAAk/tAAANdpIAFD6/wA+7f8gd6jqBlPX+QBE9PIGS8uDLnZLADqNJwAzjDMA////AP///wD///8A////AAAw0QAALc0AAEPdegBI4f8AK8P/ADHX/wAwzf8AL8b/AEno/gAz2zYALtEQAC3VAP///wD///8A////AP///wAAMssAADjSMwBA2pIATen/ADG9/wBe1v8ATcz/ADHK/wBN5/4ASeH/AEvl6wA10DP///8A////AP///wD///8AADnTSQBO5/8ANc7/ADnR/xC+9/8C0f//AMj//wCP8P8ALcX/ACrC/wBE3f8ASeOf////AP///wD///8A////AABI4Z4ARN3/ACvG/wJAxP8Z5v//AMT//wDE//8Axv7/AETM/wA51P8AUervADjSPP///wD///8A////AP///wAAOdRiAFry+QBS6/QATOP/H+P8/xDe//8J1///E9H4/wFE2f8AReC6ADTOEwAyywD///8A////AP///wD///8AADDNAAAyzCcARN7WACvG/wVfzf8d0vf/HM30/whf0/8AI7n/ADzV+AA40kUAMswA////AP///wD///8A////AAAwywAAPNdTAEfg/wAsw/8AOdb/ADLP/wAswv8AReP/AC7H/wA40f8AR+GfADDKAP///wD///8A////AP///wAAMswAADfRQgBY8f8AT+j/AE7o7AA+1/8AK8T/AE7o/wBN5f8AVe7/AD/ZbAAwywD///8A////AP///wD///8AADPMAAAyywAANM4vADjSUQA0zikAU+z3AEff/wBJ4sMAN9EtADjROQAyywAAM8wA////AP///wD///8A////AAAzzAAAM8wAADHLAAAwywAAMcsAAD/YXQBK4pYAN9AxAC/KAAAwygAAM8wAADPMAP///wD///8A+R8AAPAfAADABwAAwAMAAPgDAADwHwAA8AcAAOADAADAAwAAwAMAAMAHAADgBwAA4AcAAOAHAADwDwAA/j8AAA=="; var saveImg2 = "data:application/file;base64,AAABAAEAEBACAAEAAQCwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAADbAAADpcAAA//AAANVwAAD/8AAAKsAAAD/AAAP//AAAP8AAAD/AAAD/8AAAwDAAAP/wAAA/wAAAP8AAA"; var saveImg3 = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf//rEH4j6xB8IesQeHDrEHD4axBh/CsQYf4rEGH8KxBw+GsQeHDrEHwh6xB+I+sQf//rEH//6xB//+sQQ=="; var saveImg4 = "data:application/file;base64,AAABAAEAEBACAAEAAQCwAAAAFgAAACgAAAAQAAAAIAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAD/8AAA//AAAP/wAAA/wAAAP8AAA"; var saveImg = "data:application/file;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8BAAAAFwAAAGkAAABzAAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAAHUAAAB1AAAAdQAAADkAAAAP////AQAAAIdgZmj/YWlt/2FobP9haGz/YGhr/2Boa/9fZ2v/X2dr/15mav9dZWn/XGRo/0ZNUP8AAACdAAAAFf///wEAAACr2tzc/9ve4P/a3t//1dnZ/7S2tf+foJz/m5ya/6apqP/O0tP/09fZ/9DV1v+hqq//AAAAuQAAABX///8BAAAAq+3u7//e4eL/ub29/2hnXv9oVUX/U0As/zgxGf83Lx3/YWBX/7a5uv/S1tj/o6yx/wAAALkAAAAV////AQAAAKv29/f/19na/1dUQf9jXDv/dmtJ/4FoSP9VQiL/V0Ek/008Iv9HQTP/yc3P/6Wus/8AAAC5AAAAFf///wEAAACr+Pj4/5uamP9tY0L/g31b/6GLa/+McVH/eFY5/4xwUv9yXkD/RTki/4uMiv+nsLT/AAAAuQAAABX///8BAAAAq/n6+v+FfXL/waSM/8qznf/DrZP/ooFi/7WfhP+qh2//blk9/1A+Iv9aWlH/pK2x/wAAALkAAAAV////AQAAAKv6+/v/d3Rr/9zCsP/RxbH/z8Wu/9fJt//Qvab/qItv/5iOb/9tYUH/VVJK/6Wtsf8AAAC5AAAAFf///wEAAACr+/z8/4mHff+3pI//3NK//+HXxf/m3Mz/5trJ/9rMuf+bgWT/d14//2hnYP+osbX/AAAAuQAAABX///8BAAAAq/z9/f/FxL7/j4l+//Xw5f/29ez/8/Dl/+DMuv/VuaP/poZn/2dFKv+srav/oamt/wAAALkAAAAV////AQAAAKv+/v7/+/z8/5iZjf+5uqr/6+PW/+3i1P/kzL3/vZR+/4NhSf+Qh3z/z9HS/4qQkv8AAAC1AAAAFf///wEAAACr/v7+//7+/v/u7u3/tbiv/5WSgP+DfGj/e25Z/29gTv+sppz/vr6+/5aYmP90eHr/AAAApwAAABP///8BAAAAq/////////////////7+/v/9/f3//f39//v8/P/5+fn/1dXV/2pqav9TU1P/QUFB/wEBAYkAAAAJ////AQAAAKv7+/v//////////////////v7+//7+/v/+/v7/+vr6/9fY2P/V1tb/7Ozs/4KCgv8EBAQrAAAAA////wEAAACFlJSU/6ioqP+qqqr/qqqq/6qqqv+qqqr/qKio/6anp/2kpaX9o6Oj/4qKitUZGRk9////Af///wH///8BAAAAFQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABTBAQEUx8fH1dfX18z////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w=="; var saveImg6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABKklEQVR42mNkQAMNDAxCQMoTiB2BWAEq/ACI9wPxdqD8O2T1jGiao4HUEgb8IAaobimGAUDBGiDVzEAcqAWqb4EbQKTNWF3CCPXzW5ho/f//YDqHkZFhCpQNA7lAMV4gzY4QEmZEtx1mgCtQ8W4o2xLIPg5lJwDZUghDYkAGzAEyktENMAQqPA9l6wDZEkB6D6Yhc0EG7AGynfEZYAxkawHpxVC+A5CvC6RFGBj2Em2AIZCeg8Q3BtLSUAMIegGkwQBIz8U0YC7OQEQ2wAjIPoekGRQTUC/E4IxGkMKzaNEI8jso4chDbGdgA0UjekJ6A8S3gRikFWQyKOF/higGR50UFLPBEhLM9AZoUv4F1cAA1QTi/2SAJFkQnxdCoyZlJEPIz0xIhpCUnQFx83abgfUZOQAAAABJRU5ErkJggg=="; var saveImg7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASUlEQVR42mNkoBAw0s6ABob/aHxGkg1I8zEGM2dtOTskDED3MxCgGIBpASOGATANhACyi6hrAGVeoDgQB6UB2PxMvAFEAooNAAC7izYR2pQ0nAAAAABJRU5ErkJggg=="; var loadImg = "data:image/x-icon;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////AQAAAB+yg2l71ZRt+daTa//Wk2v/1pNr/9aTa//Wk2v/v4NlywYEAycAAAAX////Af///wH///8B////Af///wHdo4M53Zx3/+Sgef/innb/4p52/+Kedv/lo3r/5aR6/+mqgfvPj27N////Af///wH///8B////Af///wH///8B4KSD8+mmff/opH3/56N6/+Whef/no3r/66qB/8KBXf/Fg1//0Y5s78+Pbqn///8B////Af///wH///8B////AeGlg//trIX/7ayE/+6thP/urIX/9bWL/8eFYf/GhF//yYZh/9SPa/nkn3j/////Af///wH///8B////Af///wHkn3j/76+G/+6uh//vrob/76+G//W3jP/GhF//y4di/9ONZ//XkWr/5J94/////wH///8B////Af///wH///8B5J94/++wif/wsIj/8LGJ//CxiP/0toz/y4di/8+KZf/vroP/766D/+SfeP////8B////Af///wH///8B////AeSfeP/xs4v/8bOL//Cziv/ws4v/87WL/9CNa+3QjWvt3p96/96fev/en3r/////Af///wH///8B////Af///wHkn3j/8rWN//K2jf/ytY3/8rWN//O2jvfdo4Lj0I5sJdCObCXQjmwl0I5sJf///wH///8B////Af///wH///8B5J94//O3j//zuI//87iP//O4j//zuZDx3aOD7////wH///8B////Af///wHdo4M/5J94/+SfeP/kn3j/5J94/++2j//zupH/9LqR//O6kv/0upL/87qR/+SfeP/kn3j/5J94/+SfeP////8B////Af///wHkoXr/9cCY//W8k//0vJT/9L2T//S8lP/0vZT/9LyU//S8lP/1vJT/9cCY/+Shev////8B////Af///wH///8B9b+WC+SjfP/2yqP/9b+W//a/lf/2v5X/9b6V//W+lv/1vpX/9sqj/+SjfP////8B////Af///wH///8B////Af///wH2wZgX5aZ+//fTrP/2wJj/9sCY//bAmP/2wZj/99Os/+Smf/////8B////Af///wH///8B////Af///wH///8B////Af///wHkqYH/99ax//fCmv/3wpn/99aw/+Sogf////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AeWrhP/317L/99ey/+WrhP////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B5a2F/+Wthf////8B////Af///wH///8B////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w=="; var saveImg5 = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1FQr1FRT7BRUU+wUVFPsFFRT7BRUU+wUVFPsFFRT7BRUU+wUVFPsFFRT7BRUU+wU1FQrwAAAAAAAAAAAAAAAHd0cpz//////////////////////////////////////////////////////////3d0cpwAAAAAAAAAAAAAAAB4d3Sc/////+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg//////94d3ScAAAAAAAAAAAAAAAAenh3nP/////i4uL/4uLi/5yiz/9HYcT/PWrR/1qQ3P+nuNr/4uLi/+Li4v//////enh3nAAAAAAAAAAAAAAAAH18eJz/////5OTk/2FluP8IJ6r/D1TU/wli4v8FZeb/D3He/4y+5f/k5OT/+/v7/318eJwAAAAAAAAAAAAAAACBfXyc/////5Wc0v8JKq//E2Pd/yFTrv9EKTn/LjVZ/xaF2/8OdNP/zNnm//z8/P+BfXycAAAAAAAAAAAAAAAAhIGBnP////89Xc7/Dk7N/wpQ0/8zVp//TGCK/4U2Cf9DW2b/Eqj7/5C+5//8/Pz/hIGBnAAAAAAAAAAAAAAAAIaEgZz/////Kmnf/wlFzf8gPZ7/uXcl/8OAK/+UTBL/b1Az/zfG9f9srdX/+fn5/4aEgZwAAAAAAAAAAAAAAACJhoac/////0iN6P8HQtH/EVzd/2mCqf/dqkz/0pY6/6FnKv9Nvt7/kMfs//X19f+JhoacAAAAAAAAAAAAAAAAiomJnP////+Mr+r/FFnU/xVRyv+LorL/8Oqh//nXbP+5omH/Urvf/8bj7v/s7Oz/iomJnAAAAAAAAAAAAAAAAI6Kipz/////2+n3/5aSm/+hcEn/4uXC////2P/25KD/rqSD/7HR5//o6Oj/4eHh/46KipwAAAAAAAAAAAAAAACPjo6c//////j4+P/4+Pj/3s/F/9i/n//p27n/5NG0/+7r6f/r6+v/3t7e/9LS0v+Pjo6cAAAAAAAAAAAAAAAAk4+PnP/////6+vr/+vr6//r6+v/6+vr/+vr6//j4+P/19fX/r66t/62sq/ObmprrkI2NpgAAAAAAAAAAAAAAAJOTk5z//////Pz8//z8/P/8/Pz/+/v7//r6+v/4+Pj/9fX1/66trfHs7Ozrp6emp4aGhhMAAAAAAAAAAAAAAACWlpOc/////////////////v7+//39/f/6+vr/9/f3//Pz8/+bmprrp6enp3NzcxYAAAAAAAAAAAAAAAAAAAAAmJiWnJiYlpyYmJacmJiWnJeTk52SkZGemJiWnJeTk52SkZGej4+LpIaGhhMAAAAAAAAAAAAAAAAAAAAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACAAwAAgAMAAIADAACABwAAgA8AAA=="; var moveToMenu = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABKElEQVR42o3TMUvDQBQH8P+7tLlEwaW4ugl+iU6CCA4i0tbdqavgZ/ErCE79DsVBkYpKLR2kuApOatG297zLJWkqXnIPwrsk937cveQIJXHZBZt8cgFyzaEqYGuTvl7feM2FVAIHR8Bj341UAu1T4PPdjXgBJgzyPKDFy4SDIkJZo1yRASZ+FDB5Itzfct7YBGjuBBBh6oT6ed2OazGjsV3wQ2Cu64bXUKM7FgZJgPaufinTSVFhrDPFheVIe01nwLgfq9HNVCRAaw8Q6USWS4B05mgVIH2/qG+ABh+46im7heP9EELOLRDZpVqAQev8ZwUS/DBLivMtlDWxc7Ycs6yBhyov9vqMGcBBDB5/rxT7/Qfntjn/FXsDrmIvoHUonMVegMllx/kXlvSRMQ0GPE4AAAAASUVORK5CYII="; var removeFromToolbar = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACMElEQVR42p3Sz2/SUBwA8G9pgQJd6QYZQQkOjUFdXMCLMn9B4l3myRgXhydPZgcTY2KyLfGiF/wT9GTmhfIXjMQ4NP5YD5qZTGdVdEx+9FVKSwttrTV4QD3AN3mH9837fr7v+/Kww1e4ic2HiSYMRGxufcHjxs87nQ5GN0zodnXQNLVomvCAL6ZR/xxmAS9VsX1umz1pJ/dfKGeD4+58OERNYQQO7Y4BWs8E3XCAqvRAEkWkdpTcNptm+4DpMVUOtboZl4tY2reXWmTGvbDTVKFnALicTrvYsFqbpgEOBw6tpgiigOb4Yoa1gTMzY1B+XUexKM1gLid8a3QgQHtBklQQBJm3RuAxDBiPl0z4aMq+eu1rFYmiFLOBowd8QJEEiLIBlbpV7PdArdZCApJX3j9O3e/Pe/Di0zTpJgvB8CSjSG1o7O7mbCA04QIHjoGsGuAfI6FRk0D8ISe3VlPc4OPGL61nab+/QDE0VD9/+T1CKOCCtqoDQRBAe0n4yH/nZUVLVtjTCP4R8cvPN8LRSKL6qVKygUjIC0rXAAMw6+EI6GkmoGaDM0DP8KuzfyHx+WfLe6KRpdpOlbMB+E9oWof78OhEcjB/5OqLbHAyUEB1oYTBCDFz7VWaYZg11BTYkYBj17lFyu3Lo5aYGwk4fuNNHgd8QVHk2EjA7K3NDVM3iuV708tDA2dXtqb0rr5mrWT57jQaGjh1+13eKio+uXOo9Gs/NJC6+TZhdf7zQ38Ceg0HgF1MCP0AAAAASUVORK5CYII="; var iconADD = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACDUlEQVR42nWT30sUURTHz91Zd9FkVBRrX0oScTMI8weSIYSU/QMFbb5oGAn+AQo9B/UH9BAF+lIr+OLrSETQQ4GhEVRrUFkP/SLRNcvUnXv8nrmz7XVcB86cy7nn+5kz556ryHrueKxIYcFkPMmbxXHgzA6NDyguatQewBzHkKMMQDnWPgDsIwYh8/hATP8HQCRJEFIc5iA1DpljZIGogJU/9WXp39DR1pj99QBwe45dZb6UhCXE2Hx6m4xtQZQ/8SDni+DdSNopVYtysUiFpVbDqp4vPL4uCWc6zt+H+wvbAOBrCBCRFgh0AtIA6BboBVADc6eeZLMCGOq/kkF8Hcs8AO8tgDwav5M0AI/bw87Xw9dml+bvSUamtfsGYmuIrQDwKgIoQirkF3pR9uCbz28vx+tTMWo6VRdsL79eLax80yePtc3MTlwYKwMIT8HTvYufFkc+bq4NOjWN9Kf6cIVsHNr4sePnf9LxytqH06Od1w6oICGA9uZGOnvEpb7tgkrefLl8UXZvdTV5CYe3vv9Wzy6dVnfL9KAKfkcALeihaSKT+yj3Imji1XRPBvFyTTSn4LHMi5Y5SCnrGFc3c5MCqKtMD5c5RnsOisfILlmD1NxA5yThwy96GhkkRtlxrP3oIO0d5ZKXfSSbUYaJ1/tGef9lovAyUeQyAaKCO4nLpPRBABWJlwCWt6vYBccZ9A793wmLAAAAAElFTkSuQmCC"; var customBtn = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNqcUkuIUmEUPl4fML6bBsFRacRF2EaCcRO48bFLEIJcBIJLxb2b2UWLkIEgQQjauVFaKmgYuclUTMUHKoaKE4GPxnxh5r3ezh0QHJFmmA/OPZfDfx7fdw7AfojQ7qGx4QawdgMymeyRyWR6IZVKucFg8N10Ov0Ot4VGozmNRCLx5XL5F/HHbrefYZh7m1yWWq0+TafTn2kEdqXr9TrtcDje3JR4xRHH1QYCgXOz2Wzs9/sQj8dBIpEATtGrVqu9yWSywmdLNGq3AAeNsFgsz202mxk7QzKZBK1WCzqdjtHjKUmSx41Go4L+slQqpYvF4keKoibXpnA6nWfY+VehUKBSqRTJ0Oh2u3Qul6MHgwE9Ho9pLMD4H16v95zD4RxuU6BbrdYlPh5g8tfFYvET9XiIiRylUsnQgPl8DtgVhsOheL1eS6LRaGy1Wg02FAA5VmKxWB1/yUQioWOxWHKXy2XEYsDQEggEgKJCJpOBcrnMbOliW4MNSOaDCbVKpVISCoVGHBnQQygUgnK1AkeH9z+Ew+HX2xoQezZDjUaj3ygDiMViaLfbV8kK+TGw2WysJzzafry3QK1W+9Lr9RpIDbLZLEhE4vedTsdvMBieuN3ulwRBPLh2B7uYzWYXzWZzjBoc5PP5MJ70K1xfEsVc4cpNeDcnuLFvzM3978gILpcrRy/w+XybGE+v1z/z+/2frFarG9d5AHeBSqUyeDyetwqF4jHcFXw+/4TH44n+CTAA3Ccog288LRAAAAAASUVORK5CYII="; var saveAll = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACOElEQVR42mNkwAJ+7xf7//3tKwZeIUELRqf3JxnwAEZkzrtlwnv/MzE6/WfkWCwS/iTu7RLO/wzMPAwc/z4Lc0f/eIfTgP/7BM0PXDY5ofB9N8M/EB8k+BcoyQw1mEWd4SurLIO97lkUFzX9b/oPNmBznc7/////MbAzfIdoBoI/P77Abfnzn4XhH9A0kOLA7icQV88HKn0EdcH6Ss3/yM76/f0jg2vTXYZ/f39j9fdUgQkMdTp1DNFXoiEGrCzFNMCj6SrD/79/MDQzsbAzCEfyMTBwADkbGBjBBiwrRDXgF9AAz6ZLWF1QIlHCsFRnKdj2pYxLIQYsytPAMMC75SLYBVMkpzDkPM+By0lFSTEwCDAwvJ79eouoqKgv2IB5WWgGfPvI4N95kUEyQQwcJVXbq8CGeEp6MlzUuQi2fcKbCQgDZqWhG/CJIaDrLIPMf0kGBjeggAoDw5YNWxh8rHwYGMQZGB5PfszAysq6RUJCAmLAtCR1DAMCu08zzJSZxtDm0cbA8AQoyAxJGyDbWx+2MrCwsGyRkZGBGDApDpsBx8FhME95HkObfhtYM4MqA8OdnjtgNSAXyMvLQwzoi8JmwGF4NGoc12Bg6IHYXnuzFm6AsrIyxIAJ+UHXfj27oomIhc9AA/ajpAOdPToMV1yuwPnMzMxbNDU14QaEAqnGH28fqYGywt/fP5i8q5czYUtIMABygY6ODsSAJUuWOKMrUFHT2PPvzy90YZhX/79//36dt7d3KACPfPJHOU7GxAAAAABJRU5ErkJggg=="; let cIDs = ["custombuttons-contextpopup-exportXML", "custombuttons-contextpopup-exportXML-sub"]; let bIDs = ["custombuttons-contextpopup-bookmarkButton", "custombuttons-contextpopup-bookmarkButton-sub"]; addMenuItem(cIDs, bIDs, "Сохранить код кнопки в XML файл", saveImg, "document.getElementById('" + this.id + "').saveXML(('triggerNode' in this.parentNode) " + "? this.parentNode.triggerNode.URI " + ": document.popupNode.URI);", "X"); let xIDs = ["custombuttons-contextpopup-importnewbutton", "custombuttons-contextpopup-importnewbutton-sub"]; let aIDs = ["custombuttons-contextpopup-addnewbutton", "custombuttons-contextpopup-addnewbutton-sub"]; addMenuItem(xIDs, aIDs, "Добавить кнопку из XML файла\u2026", loadImg, "document.getElementById('" + this.id + "').checkDocumentForCBXML(content.document);"); let fIDs = ["custombuttons-contextpopup-copyImageURI", "custombuttons-contextpopup-copyImageURI-sub"]; let b2IDs = ["custombuttons-contextpopup-copyURI", "custombuttons-contextpopup-copyURI-sub"]; addMenuItem(fIDs, b2IDs, "Копировать изображение кнопки в формате base64", saveImg1, "document.getElementById('" + this.id + "').copyImageURI();"); let f1IDs = ["custombuttons-contextpopup-saveButtonImage", "custombuttons-contextpopup-saveButtonImage-sub"]; addMenuItem(f1IDs, cIDs, "Сохранить изображение кнопки", saveImg1, "document.getElementById('" + this.id + "').saveImageURI();"); let f2IDs = ["custombuttons-contextpopup-copyButtonsCodeText", "custombuttons-contextpopup-copyButtonsCodeText-sub"]; addMenuItem(f2IDs, b2IDs, "Копировать код кнопки как текст", saveImg2, "document.getElementById('" + this.id + "').copyButtonsCodeText();"); let f3IDs = ["custombuttons-contextpopup-copyAsHTML", "custombuttons-contextpopup-copyAsHTML-sub"]; addMenuItem(f3IDs, b2IDs, "Копировать код кнопки как HTML ссылку", saveImg3, "document.getElementById('" + this.id + "').copyToHTMLCode();"); let f4Ds = ["custombuttons-contextpopup-copyToBBCode", "custombuttons-contextpopup-copyToBBCode-sub"]; addMenuItem(f4Ds, b2IDs, "Копировать код кнопки как BBcode сылку", saveImg4, "document.getElementById('" + this.id + "').copyToBBCode();"); let f5Ds = ["custombuttons-contextpopup-saveAsHTML", "custombuttons-contextpopup-saveAsHTML-sub"]; addMenuItem(f5Ds, bIDs, "Сохранить код кнопки в HTML файл", saveImg5, "document.getElementById('" + this.id + "').saveToHTMLCode();"); let f8Ds = ["custombuttons-contextpopup-saveAsHTMLAll", "custombuttons-contextpopup-AsHTMLAll-sub"]; addMenuItem(f8Ds, f5Ds, "Сохранить все кнопки в HTML файл", saveAll, "document.getElementById('" + this.id + "').saveToHTMLALLCode();"); let f6Ds = ["custombuttons-contextpopup-getButtonId", "custombuttons-contextpopup-getButtonId-sub"]; let b1IDs = ["custombuttons-contextpopup-remove", "custombuttons-contextpopup-remove-sub"]; addMenuItem(f6Ds, b1IDs, "Показать Id кнопки", saveImg6, "document.getElementById('" + this.id + "').idMIonclick(content.document);"); let f7Ds = ["custombuttons-contextpopup-addNextButton", "custombuttons-contextpopup-addNextButton-sub"]; var addMI = document.getElementById('custombuttons-contextpopup-addnewbutton'); addMI.setAttribute('image', iconADD); var addMI1 = document.getElementById('custombuttons-contextpopup-addnewbutton-sub'); addMI1.setAttribute('image', iconADD); var addMI2 = document.getElementById('custombuttons-contextpopup-move-moveToPanel'); addMI2.setAttribute('image', moveToMenu); var addMI3 = document.getElementById('custombuttons-contextpopup-move-removeFromToolbar'); addMI3.setAttribute('image', removeFromToolbar); var addMI4 = document.getElementById('custombuttons-contextpopup-customize'); addMI4.setAttribute('image', customBtn); var saveToFile = function (fileContent, fileName) { var uc = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); uc.charset = 'utf-8'; fileContent = uc.ConvertFromUnicode(fileContent); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterHTML); fp.appendFilters(fp.filterAll); fp.open(function (rv) { if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); } }); }; function readFile(aFile) { var data = ""; var fstream = Cc["@mozilla.org/network/file-input-stream;1"]. createInstance(Ci.nsIFileInputStream); fstream.init(aFile, -1, 0, 0); var charset = "UTF-8"; const replacementChar = Ci.nsIConverterInputStream .DEFAULT_REPLACEMENT_CHARACTER; var is = Cc["@mozilla.org/intl/converter-input-stream;1"]. createInstance(Ci.nsIConverterInputStream); is.init(fstream, charset, 1024, replacementChar); var str = {}; while (is.readString(4096, str) != 0) { data += str.value; } is.close(); return data; }; function stringToDOM(aString) { var parser = new DOMParser(); var dom = parser.parseFromString(aString, "text/xml"); if (dom.documentElement.nodeName == "parsererror") { return null; } else { return dom; } }; function importXMLtoButton(aStrXMLData) { loadURI("custombutton://" + escape(aStrXMLData)); }; function getCBOverlay() { var dirsvc = Cc["@mozilla.org/file/directory_service;1"]. getService(Ci.nsIProperties); var file = dirsvc.get("ProfD", Ci.nsIFile); file.append("custombuttons"); file.append("buttonsoverlay.xul"); return file; }; this.checkDocumentForCBXML = function checkDocumentForCBXML(aDocument) { if (((aDocument.contentType == "text/xml") || (aDocument.contentType == "application/xml"))&& (aDocument.documentElement.localName == "custombutton")) { var serializer = new XMLSerializer(); var xml = serializer.serializeToString(aDocument); importXMLtoButton(xml); } else { this.loadXML(); } }; this.loadXML = function loadXML() { var fp = window.makeFilePicker(); fp.init(window, "Установить кнопку из XML файла", nsIFilePicker.modeOpen); fp.appendFilters(fp.filterXML); fp.appendFilter("Все файлы", "*.*"); fp.displayDirectory = FileUtils.File( getPathToHtmlFileFolder() ); fp.open(re=> { if ( re == fp.returnOK ) gBrowser.selectedTab = gBrowser.addTab(fp.file.path); }) var xmlData = readFile(fp.file); var xmlDOM = stringToDOM(xmlData).documentElement; if (!xmlDOM) { custombuttons.alertBox("Импорт не удался", "Это не XML файл!"); return; } if ((xmlDOM.localName == "custombutton") && ((xmlDOM.getAttribute("xmlns:cb") == cbNamespace) || (xmlDOM.getAttribute("xmlns") == cbNamespace))) { importXMLtoButton(xmlData); } else { custombuttons.alertBox("Импорт не удался", "XML файл не содержит кнопок!"); } } this.copyImageURI = function copyImageURI() { var btn = document.popupNode; if (!btn) return; cbu.gClipboard.write(btn.image); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "Изображение кнопки скопировано в буфер", false, "", null); } this.copyToHTMLCode = function copyToHTMLCode() { var btn = document.popupNode; if (!btn) return; var code = "<p><div id=\"install\" style=\"background: transparent -moz-linear-gradient(center top , rgb(224, 102, 255) 30%, rgb(125, 38, 205) 55%); text-shadow: 0pt -1px 0pt rgb(122, 55, 139); border: 1px outset rgb(85, 26, 139); border-radius: 1em; padding: 0; width: 240px; text-align: center;\"><a href=\"" + btn.URI + "\" style=\"display: block; padding: 1em; color: #ffffff; text-decoration: none;\" title=\"Click here to install " + btn.name + "\" rel=\"nofollow\"><img src=\"" + btn.image + "\" alt=\"" + btn.name + "\" style=\"vertical-align: middle; float: left;\"/>" + btn.name + "</a></div></p>"; cbu.gClipboard.write(code); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "HTML кнопки скопирован в буфер", false, "", null); } this.copyToBBCode = function copyToBBCode() { var btn = document.popupNode; if (!btn) return; var code = "[url=" + btn.URI + "][B]" + btn.name + "[/B][/url]"; cbu.gClipboard.write(code); //.toXMLString()); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "BBCode кнопки скопирован в буфер", false, "", null); } this.saveImageURI = function saveImageURI() { var btn = document.popupNode, br = gBrowser; if (!btn) return; if(btn.image != "") { var tab = br.mCurrentTab; br.selectedTab = br.addTab(btn.image); setTimeout( function() { window.content.document.title = btn.name; saveDocument(window.content.document); //br.removeCurrentTab(); //br.selectedTab = tab; }, 200); } else custombuttons.alertBox("Эта кнопка не имееет изображения!"); } this.copyButtonsCodeText = function copyButtonsCodeText() { var btn = document.popupNode; if (!btn) return; var code = ((btn.cbCommand == "") || (btn.Command == "/*CODE*/")) ? "" : ("\n/*CODE*/\n" + btn.cbCommand + "\n"); var init = ((btn.cbInitCode == "") || (btn.cbInitCode == "/*Initialization Code*/")) ? "" : ("\n/*Initialization Code*/\n" + btn.cbInitCode); cbu.gClipboard.write(code + init); //custombuttons.alertSlide(btn.name, "Код скопирван в буфер"); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "Код скопирван в буфер", false, "", null); } this.createNextButton = function(aButton) { custombuttons.cloneButton(aButton, true); window.setTimeout(function(){ if(!aButton.nextSibling.hasAttribute('initialized')) { custombuttons.editButton(aButton.nextSibling); } }) } this.saveXML = function saveXML(aStrURI) { var cbURI = (aStrURI != undefined) ? aStrURI : readFromClipboard(); if (!cbURI || !/^custombutton\:\/\//.test(cbURI)) { custombuttons.uChelpButton(this); return; } var cbXML = cbURI.replace(/^custombutton\:\/\//, ""); var decodeXML = unescape(cbXML); var btnName = decodeXML.match(/\<name\/?.+/).toString(); var name = "untitled"; if (!/\<name\/\>/.test(btnName)) { name = btnName.replace(/\<\/?\w+\>/g, "").toString(); } var image = decodeXML.match(/\<image\/?.+/).toString(); var icon = ""; if (!/\<\image.*\[\].*\>$/.test(image)) { icon = image.match(/[^\[\]]+/g)[2].toString() .replace(/custombuttons\-stdicon\-\d/, "").toString(); } function htmlEntities(str) { return str.replace(/&/g, "&").replace(/</g, "<") .replace(/>/g, ">").replace(/"/g, """); } var xmlTemplate = "custombuttons/\"\n\ xmlns:html=\"http://www.w3.org/1999/xhtml\">\n\ <html:head>\n\ <html:title><![CDATA[" + name + "]]></html:title>\n\ <html:link rel=\"shortcut icon\" href=\"" + icon + "\"/>\n\ <html:style type=\"text/css\"><![CDATA[\n\ body { font-size: medium; margin: 0; }\n\ body, code:before, help:before, initcode:before {\n\ font-family: \"Verdana\", sans-serif;\n\ }\n\ #wrapper { position: fixed; top: 1em; right: 1em; text-align: center; }\n\ p { font-size: small; text-align: center; }\n\ #button {\n\ background-color: rgb(85, 168, 2);\n\ background-image: linear-gradient(to bottom, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -moz-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -o-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ background-image: -webkit-linear-gradient(top, rgb(147, 200, 94),\ rgb(85, 168, 2));\n\ border: 1px solid rgb(58, 116, 4);\n\ border-radius: .5em;\n\ -moz-border-radius: .5em;\n\ -webkit-border-radius: .5em;\n\ padding: 0;\n\ margin-bottom: 1em;\n\ box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -moz-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -o-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -webkit-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ }\n\ #button a {\n\ color: #000;\n\ text-shadow: -1pt -1px 0pt rgba(255, 255, 255, .5);\n\ padding: 1em;\n\ text-decoration: none;\n\ }\n\ :-moz-any-link:focus {\n\ color: white;\n\ outline-color: transparent;\n\ text-decoration: none;\n\ }\n\ #button a, code, code:before, initcode, initcode:before, help, help:before {\ \n display: block;\n\ }\n\ #credits { position: fixed; bottom: 1em; right: 1em; font-size: small; }\n\ custombutton { background-color: rgb(171, 171, 171); margin: 1em; }\n\ date, image, mode, accelkey { display: none; }\n\ name { font-weight: bold; font-size: x-large; }\n\ code:before, help:before, initcode:before {\n\ font-weight: bold;\n\ font-size: large;\n\ margin: 0 0 1em;\n\ padding: .5em;\n\ }\n\ code:before { content: \"Код\"; }\n\ help:before { content: \"Справка\"; }\n\ initcode:before { content: \"Инициализация\"; }\n\ code, initcode, help {\n\ background-color: rgb(255, 255, 255);\n\ border: 1px inset rgb(170, 170, 170);\n\ font: medium monospace;\n\ margin: 1em 1em 2em 0;\n\ padding: 1em;\n\ text-align: left;\n\ width: 840px;\n\ white-space: pre-wrap;\n\ word-wrap: break-word;\n\ }\n\ .clear { clear: both; }\n\ ]]></html:style>\n\ </html:head>\n\ <html:body>\n\ <html:div id=\"wrapper\">\n\ <html:div id=\"button\">\n\ <html:a href=\"" + cbURI + "\" rel=\"nofollow\" title=\"Установить " + htmlEntities(name, "ENT_COMPAT") +"\">\n\ <![CDATA[Установить кнопку]]>\n\ </html:a>\n\ </html:div>\n\ <html:div id=\"credits\">\n\ <html:a href=\"" + topicURL +"\">\n\ <![CDATA[Другие кнопки]]><html:br/>\ <![CDATA[на форуме Mozilla Россия]]>\n\ </html:a>\n\ </html:div>\n\ </html:div>\n\ </html:body>"; decodeXML = decodeXML.replace(/custombuttons\/\"\>/, xmlTemplate); name += ".xml"; saveToFile(decodeXML, name); var btn = document.popupNode; var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "сохранена в XML файл", false, "", null); } var mrw = mostRecentWindow('navigator:browser'); var css = '@-moz-document url("chrome://browser/content/browser.xul"){' + this.Help + '}'; var uri = makeURI('data:text/css,' + encodeURIComponent(css)); var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); if (!sss.sheetRegistered(uri, sss.USER_SHEET)) sss.loadAndRegisterSheet(uri, sss.USER_SHEET); this.idMIonclick = function idMIonclick() { var btn = document.popupNode.id; var box = custombuttons.confirmBox("Копировать в буфер", btn, "Да", "Нет"); if (box) { custombuttons.cbService.writeToClipboard(btn); custombuttons.alertSlide(btn, "Скопирована в буфер"); } } function mostRecentWindow(windowType) { return Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow(windowType); } this.saveToHTMLALLCode = function saveToHTMLALLCode() { var fp = window.makeFilePicker(); fp.init(window, "Укажите папку для экспорта CB кнопок!", fp.modeGetFolder); fp.open(re=> { if ( re != fp.returnOK ) return; cbu.setPrefs("CB.exportsButtonsToHtmlFile.path", convertFromUnicode("UTF-8", fp.file.path)); exportsButtonsToHtmlFile(); }) }; this.saveToHTMLCode = function saveToHTMLCode() { var btn = document.popupNode; var xml = '<html xmlns="' + e4xConv_encodeHTML(xhtmlns, true) + '">\n\ <head>\n\ <meta http-equiv=\'Content-Type\' content=\'text/html; charset=utf-8\'/>\n\ <title>' + e4xConv_encodeHTML(btn.name + ' for Custom Buttons') + '</title>\n\ <link rel=\'icon\' type=\'image/vnd.microsoft.icon\' href="' + e4xConv_encodeHTML(btn.image, true) + '"/>\n\ <style type="text/css">\n\ .button a{\n\ background-color: rgb(85, 168, 2);\n\ background-image: linear-gradient(to bottom, rgb(147, 200, 94), rgb(85, 168, 2));\n\ background-image: -moz-linear-gradient(top, rgb(147, 200, 94), rgb(85, 168, 2));\n\ border: 1px solid rgb(58, 116, 4);\n\ border-radius: .5em;\n\ -webkit-border-radius: .5em;\n\ padding: 0;\n\ margin-bottom: 1em;\n\ box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -o-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ -webkit-box-shadow: 1px 2px 3px rgba(0, 0, 0, .25);\n\ color: #000;\n\ text-shadow: -1pt -1px 0pt rgba(255, 255, 255, .5);\n\ padding: 0.5em;\n\ text-decoration: none;\n\ }\n\ pre { border: 1px inset rgb(170, 170, 170); \n\ background-color: rgb(255, 255, 255);}\n\ body { background-color: rgb(245, 245, 220);} \n\ </style> \n\ </head>\n\ <body>\n\ <section id=\'install\'><h1>' + e4xConv_encodeHTML(btn.name) + '</h1>\n\ </section>\n\ <div class="button"><a href="' + e4xConv_encodeHTML(btn.URI, true) + '">Установить кнопку</a></div>\n\ <section id=\'init\'><h2>Инициализация</h2><pre>' + e4xConv_encodeHTML(btn.cbInitCode) + '</pre></section>\n\ <section id=\'code\'><h2>Код</h2><pre>' + e4xConv_encodeHTML(btn.cbCommand) + '</pre></section>\n\ <section id=\'help\'><h2>Справка</h2><pre>' + e4xConv_encodeHTML(btn.Help) + '</pre></section>\n\ </body>\n\ </html>'; var html = '<!DOCTYPE html>\n' + xml; var name = btn.name + ".HTML"; saveToFile(html, name); var as = Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService); as.showAlertNotification(btn.image, "Кнопка: " + btn.name, "сохранена в HTML файл", false, "", null); } function e4xConv_parseXULFromString(xul) { xul = xul.replace(/>\s+</g, "><"); return new DOMParser().parseFromString(xul, "application/xml").documentElement; } function e4xConv_encodeHTML(s, isAttr) { s = String(s) .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """); if(isAttr) { s = s .replace(/\t/g, "	") .replace(/\n/g, "
") .replace(/\r/g, "
"); } return s; }; function exportsButtonsToHtmlFile() { var visibleCBbuttons = [...document.querySelectorAll('[cb-mode]')]; var paletteCBbuttons = [...custombuttons.palette.querySelectorAll('[cb-mode]')]; var allCBbuttons = visibleCBbuttons.concat(paletteCBbuttons); var array = []; allCBbuttons.forEach(but=> { if ( !but.URI ) return; var name = but.getAttribute("label") || "Без названия"; if ( but.URI.endsWith("custombutton%3E") ) var uri = but.URI; var image = but.getAttribute("image") || "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACNFBMVEXDRgDweQDnbwC0NgDCRQC7PQDtpTu+QQD78q3PUwDCRAD//8vbYQDLTgDocAD0iQX1jQbGSgD7iAD4gwDVaw7vdwDyegD+igDweQDlawDyhAXveADmZwDzmBbtcwDwkhHveADmhBTkgxbweADkfRH+igD7hADXZQX0gADyjA/tfgvveQDiawDQVADRXgfnbwD1jAb9iQD9z0PVZAbxpinykRHtdgD5mRbERQDDRgDOYArCRAD9iQD3ewDxegD3dwDFRgDAQAD+hgD4fQDucgDtgQftfwTISQDCRQDvdgD5lxb1kRb2qh7wnynkagD766LDRQDDRwDDRQDspjbtpzbuqDbvqzv//8DUZAbCRQD//83pjhvveQbvggW+QQDfcxLlmUb//8veYADMTwDHSADVVwC8PgDwixb78q3oZgDUWADRVADCRQD9iQDERwDBQQDYVQC+PgC0NgDbYQDWWgDUWADSVQDFSAC+QAC7PAC0NgD+wRL+/kD+/zb+7i3+8Cv+/DX+wBL/+DD/rwz+qgz+rwz/tAz+sQzfbAT+3iP/+jD//Dz1jwP+nwf5iwf7pBz2tRr4lwb/ogfsdQT+2R7/9ET+2iT8yyLmgBL5iQL2egLokhP7zzT60zv1zUr0gAL1ewP50yn9+UL++EXooyngaAH41EPzowzyySj+xxzlhhHvvyruwjXxvTnUag3+zxrwigP+swz86U/ZXwD75lHqegD6xzb//kn+uhPTXAG3OAD/+UC2vFeJAAAAe3RSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAACfnwAIaelpAAA2+wD7UQAAa3oArKzRzMysnwgAvPQA/gAAw3prw0oALr16vS4AACnF6bspAAAA/mIAADQAAAAAAI8AAEwA0vv7kd2yAuuvr+vKABL23U+8Sk/d9vUDIIAQAAAQgCAfvupHAAABB0lEQVR4Xi3IU3fDABgA0C+u26FdZ9u2bdu2vZSzbds2/tyac3IfLxjpGyA6MimqY6gHTNgiiNwkwRM1E7EhTrYyTfMzzsh0ZEPiH+D6+u5mV1jEhpe5haVCYW1T4suEvUOkk7PLpVJ5WFnl7hEUDN5LPvsHJ6cazdn13f3DYxu0B35+/Y2qVSr17NzGeUgohIVHLK/PMDa39qKieRATGxd/9cS4uU1MwnmQktqY/qGlaVr7/ZOVDTmQm5df8PwyNj4xOTVdjOM4kCRZOr+wWFa+srpWQVEU8PnV2zu7NbV19UfHDQRBAIfTdNHc0soVdnR2dfdgGAgEvW99/QNc4eDQ8O8Ihv0D77NPgbVLZ6kAAAAASUVORK5CYII="; array.push("<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"); }); var before = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n"; var after = "\n</body>\n</html>"; var text = before + array.join("") + after; var text = convertFromUnicode("UTF-8", text); var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); file.initWithPath( getPathToHtmlFileFolder() ); file.append("CB buttons " + new Date().toLocaleFormat("%d.%m.%Y. %H·%M·%S") + ".html"); custombuttonsUtils.writeFile(file.path, text); var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) alertsService.showAlertNotification(saveImg5, "Экспорт в HTML", "Экспортировал все CB кнопки как HTML в " + file.path); setTimeout(()=> alertsService.closeAlert(), 4000); }; function getPathToHtmlFileFolder() { try { return Services.prefs.getComplexValue("CB.exportsButtonsToHtmlFile.path", Ci.nsISupportsString).data } catch(e) { return "C:" }; }; function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }; this.MoveToolbarButtons = MTB = { // Start editable preferences MoveButtonMICBContext: true, // Add "Move button" menu item to Custom Buttons context menu? MoveButtonMITBarContext: false, // Add "Move button" menu item to toolbars context menu? ShowMoveAlert: false, // Show the alert with instructions when moving buttons? MoveBtnImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVQ4" + "jWNgGJTgaAXHf2LEcGrGZQBBQ45WcPz/fZ0XpwG45FAUEDIAqzyyJLIiZIxNHqdmYvHRCo7/DLhsIEYziivQDcHn" + "BawxgqyQUCzgjQlC6YCotEB2QkJWTIzY4AAAezv/caeCLKcAAAAASUVORK5CYII=", // End editable preferences _UID: "__cb_move_toolbar_buttons_" + custombuttons.getNumber(self.id), WindowIDs: ["main-window", "messengerWindow", "msgcomposeWindow"], ToolbarContexIDs: ["toolbar-context-menu", "aios-toolbar-contextmenu", "aios-sbhtoolbar-contextmenu"], Pref: "extensions.custombuttons.MoveToolbarButtons.Id" + custombuttons.getNumber(self.id) + ".MoveButtonID", SP: Services.prefs, Init: function() { if (!(MTB._UID in window)) { window[MTB._UID] = { Initialized: false }; } if (!window[MTB._UID]["Initialized"]) { window[MTB._UID]["Initialized"] = true; custombuttons.isPref(MTB.Pref, ""); if ("CustomizableUI" in window) { var originalFunction = custombuttons.persistCurrentSets.toString(); eval("custombuttons.persistCurrentSets=" + originalFunction .replace(", newButtonId)", ", newButtonId, aToRight)") .replace("pos + 1", "aToRight ? pos : pos + 1")); } if (MTB.MoveButtonMICBContext) { var contextPops = document.getElementsByTagName("menupopup"); let p = 0, pLen = contextPops.length; for (; p < pLen; p++) { var cPopID = contextPops[p].id; if (cPopID.substr(0, 26) === "custombuttons-contextpopup") { var cPopEl = document.getElementById(cPopID); var moveMIID = "custombuttons-contextpopup-moveButton" + cPopID.slice(26); var moveMIEl = document.getElementById(moveMIID); if (!moveMIEl) MTB.CreateMoveMI(moveMIID, cPopEl); } } } if (MTB.MoveButtonMITBarContext) { Array.prototype.slice.call(MTB.ToolbarContexIDs).forEach(function(aTBCtxID, aIndex) { let Ctx = document.getElementById(aTBCtxID); let tBarCtxMIID = MTB._UID + "moveButton" + aIndex; if (!document.getElementById(tBarCtxMIID)) { if (Ctx) { MTB.CreateMoveMI(tBarCtxMIID, Ctx); Ctx.addEventListener("popupshowing", function(aE) { document.getElementById(tBarCtxMIID).hidden = (document.popupNode.tagName !== "toolbarbutton"); }, false); } } }); } addDestructor(function(aReason) { if (aReason === "delete") { SP.resetUserPrefs(MTB.Pref); delete window[_UID]; } if (aReason === "delete" || aReason === "update") { window[MTB._UID]["Initialized"] = false; } }); } }, getPopupNode: function(aEl) { if (custombuttons.popupNode) return custombuttons.popupNode; var popupNode = aEl; while (popupNode.tagName.toLowerCase() !== "toolbarbutton") { popupNode = popupNode.parentNode; } return popupNode; }, CreateMoveMI: function(aMItemID, aPopupEl) { let moveMIEl = aPopupEl.appendChild(document.createElementNS(xulns, "menuitem")); moveMIEl.setAttribute("id", aMItemID); moveMIEl.setAttribute("label", "Переместить кнопку..."); moveMIEl.setAttribute("image", MTB.MoveBtnImage); moveMIEl.setAttribute("tooltip", MTB._UID + "moveButtonMI_tooltip"); moveMIEl.setAttribute("onclick", "document.getElementById(\"" + self.id + "\").MoveToolbarButtons.MoveOnClick(event);"); }, MoveOnClick: function(aE) { var popupNode = MTB.getPopupNode(aE.target); if (!popupNode) return; aE.stopPropagation(); aE.preventDefault(); if (aE.button === 0 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) { MTB.SP.setCharPref(MTB.Pref, popupNode.id); window.addEventListener('click', MTB.MoveListener, true); window.addEventListener('mouseup', MTB.DefaultPrevention, true); window.addEventListener('mousedown', MTB.DefaultPrevention, true); window.addEventListener('contextmenu', MTB.DefaultPrevention, true); MTB.HidePopup(aE.target); MTB.ShowMoveAlert && Services.prompt.alert(null, self.name, "Now click ANY toolbarbutton element inside ANY toolbar.\n" + "Left click will position the button to the left of the target.\n" + "Right click will position the button to the right of the target.\n\n" + "To cancel the movement, just click ANY element inside the browser that IS NOT a toolbarbutton.\n"); } }, MoveListener: function(aE) { MTB.DefaultPrevention(aE); window.removeEventListener('click', MTB.MoveListener, true); window.removeEventListener('mouseup', MTB.DefaultPrevention, true); window.removeEventListener('mousedown', MTB.DefaultPrevention, true); window.removeEventListener('contextmenu', MTB.DefaultPrevention, true); var anchor = aE.target; if (anchor.tagName !== "toolbarbutton") return; var toolbar = anchor.parentNode; var BtnToMove = document.getElementById(MTB.SP.getCharPref(MTB.Pref)); if (aE.button === 0 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) toolbar.insertBefore(BtnToMove, anchor); else if (aE.button === 2 && !aE.shiftKey && !aE.ctrlKey && !aE.altKey) toolbar.insertBefore(BtnToMove, anchor.nextSibling); if ("CustomizableUI" in window) custombuttons.persistCurrentSets(toolbar.id, anchor.id, BtnToMove.id || BtnToMove.getAttribute("id"), !(aE.button === 2)); else { toolbar.setAttribute("currentset", toolbar.currentSet); document.persist(toolbar.id, "currentset"); } MTB.SP.setCharPref(MTB.Pref, ""); }, DefaultPrevention: function(aE) { aE.preventDefault(); aE.stopImmediatePropagation && aE.stopImmediatePropagation(); aE.stopPropagation(); }, Tooltips: function(aRem) { var popSetID = MTB._UID + "popupset"; var popSetEl = document.getElementById(popSetID); if (popSetEl) popSetEl.parentNode.removeChild(popSetEl); if (aRem) return; if (!popSetEl) { popSetEl = document.createElementNS(xulns, "popupset"); popSetEl.setAttribute("id", popSetID); } popSetEl.appendChild(MTB.parseXML("<tooltip xmlns=\"" + xulns + "\" xmlns:html=\"" + xhtmlns + "\" id=\"" + MTB._UID + "moveButtonMI_tooltip" + "\">" + "<description><html:b>Instructions</html:b> : After clicking this menu item, you can " + "click ANY toolbarbutton element inside the application to place the currently " + "selected button to the left (with Left click) or to the right (with Right click) " + "of the targeted toolbarbutton.</description>" + "<separator/>" + "<description><html:b>Note</html:b> : It can be ANY toolbarbutton, not just " + "other Custom Buttons.</description>" + "</tooltip>")); setTimeout(function() { Array.prototype.slice.call(MTB.WindowIDs).forEach(function(aWinID) { let win = document.getElementById(aWinID); if (win) !document.getElementById(popSetID) && win.appendChild(popSetEl); }); }, 100); }, parseXML: function(aXML) { // Return parsed XML aXML = aXML.replace(/>\s+</g, "><"); // Linearize XML return (new DOMParser).parseFromString(aXML, "application/xml").documentElement; }, HidePopup: function(aEl) { try { aEl.hidePopup(); } catch (aError) { try { aEl.parentNode.hidePopup(); } catch (aError) { try { aEl.parentNode.parentNode.hidePopup(); } catch (aError) { try { aEl.parentNode.parentNode.parentNode.hidePopup(); } catch (aError) {} } } } } }; this.MoveToolbarButtons.Init(); |
Garalf > 28-12-2017 18:22:27 |
difabor |
Ultima2m > 28-12-2017 19:16:38 |
Garalf пишет
Это дополнение. Не работает. |
difabor > 28-12-2017 23:30:18 |
Garalf пишет
Так я не спорю на этот счёт. Просто я пока не собираюсь ставить ФФ57 и выше и поэтому не смогу с этим помочь. |
Ultima2m > 29-12-2017 17:40:57 |
Привет. Не знаю, где спросить, поэтому тут пишу. |
sonyas75 > 29-12-2017 17:45:55 |
Ultima2m Выделить код Код:// ... Дополнительные возможности для значка идентификации сайта в строке адреса ............... addEventListener("click", e=> { e.preventDefault(); e.stopPropagation(); // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... if ( e.button == 0 ) BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "permTab" : "generalTab")); // ПКМ копирует текущий адрес .... if ( e.button == 2 ) { gClipboard.write( content.location ); // значок идентификации сайта мигает синим .... document.getElementById("identity-box").style.background = "blue"; setTimeout(()=> document.getElementById("identity-box").style.background = "", 1000); } }, true, document.getElementById("identity-icon") ); ну я еще цвет себе на синий поменял |
rubel > 30-12-2017 06:47:39 |
Ultima2m пишет
А у меня вообще нет фавиконки в адресной строке ни на одном сайте, только на вкладке. FF-55 |
Ultima2m > 30-12-2017 08:50:54 |
sonyas75 rubel |
oleg.sgh > 30-12-2017 09:01:55 |
Ultima2m, rubel |
sonyas75 > 30-12-2017 09:23:51 |
вот да - у меня еще и вот эта кнопка с возвратом иконок установлена |
Ultima2m > 30-12-2017 09:28:18 |
oleg.sgh пишет
Да. Самое то. спасибо. А как запретить выпадение контекстного меню при клике по иконке в адресной строке, кто-нибудь знает? |
mokujin > 30-12-2017 11:03:20 |
Ultima2m пишет
Взято из кнопки bunda1 , чуть переделал под себя. Копир адресс ПКМ по значку идентификации в строке адреса Выделить код Код:// ---05------ Копир адресс ПКМ по значку идентификации сайта в строке адреса --------------- (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... e.preventDefault(); e.stopPropagation(); var doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 2: // ПКМ копирует текущий адрес .... identBox.oncontextmenu = function() { return false; } if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } }; gClipboard.write(decodeURIComponent( content.location )); // значок идентификации сайта мигает красным .... document.getElementById("identity-box").setAttribute("style", "background:#0080FF;"); setTimeout(function() { document.getElementById("identity-box").removeAttribute("style") }, 500); } } , true, identBox ); })(); |
Ultima2m > 30-12-2017 13:45:47 |
mokujin пишет
Нормально. Только выкинул блок case 0: а то у меня 2 окошка выскакивало. |
mokujin > 30-12-2017 15:07:51 |
Ultima2m пишет
а так если скрытый текст Выделить код Код:// ---05------ Копир адресс ПКМ по значку идентификации сайта в строке адреса --------------- (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... identBox.onclick = function() { return; } var doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 2: // ПКМ копирует текущий адрес .... identBox.oncontextmenu = function() { return false; } if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } break; }; gClipboard.write(decodeURIComponent( content.location )); // значок идентификации сайта мигает красным .... document.getElementById("identity-box").setAttribute("style", "background:#0080FF;"); setTimeout(function() { document.getElementById("identity-box").removeAttribute("style") }, 500); } // } , true, document.getElementById("identity-box") ); } , true, identBox ); })(); |
Viatcheslav > 30-12-2017 15:10:12 |
Похоже, моя просьба слишком сложная Кнопка, добавляющая прогресс-бар в адресной строке (код от Andrey_Krropotkin) Выделить код Код://Полоса загрузки в адресной строке (function(){ //Location Bar Enhancer5.1;Loading Bar0.3.0 var cssStr = (function(){/* #urlbar { background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%); background-size:0 0; background-repeat:repeat-x, no-repeat; // transition: background-size 350ms ease 0s !important; } #urlbar:not([connecting])::after { display:none; } @-moz-keyframes progress-bar-stripes { from { background-position: 0, 0; } to { background-position: 51px 0, 0; } } */}).toString().replace(/^.+\s|.+$/,""); var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\""); var mainW = document.getElementById("main-window"); document.insertBefore(style, mainW); function main(window) { var {document, gBrowser} = window; function $(id) document.getElementById(id); var urlbar = $("urlbar"); let pageProgress = 0; let async = makeWindowHelpers(window).async; var LoadingBar = { listener: { onChangeTab: function(e) { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) { if (gBrowser.contentDocument === aBrowser.contentDocument) { var val = (curTotalProgress-1)/(maxTotalProgress-1); pageProgress = val; urlbar.style.backgroundSize = (100*val) + '% 100%'; if (val > 0.9) async(function() { if (pageProgress > 0.95) urlbar.style.backgroundSize = '100% 100%'; }, 1000); } }, onStateChange: function() { if (pageProgress > 0.95){ async(function() { urlbar.style.backgroundSize = '0% 100%'; pageProgress = 0; }, 1000); }else{ urlbar.style.backgroundSize = '0% 100%'; } } } }; gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.addTabsProgressListener(LoadingBar.listener); unload(function() { gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.removeTabsProgressListener(LoadingBar.listener); }, window); } watchWindows(main, "navigator:browser"); function runOnLoad(window, callback, winType) { window.addEventListener("load", function() { window.removeEventListener("load", arguments.callee, false); if (window.document.documentElement.getAttribute("windowtype") == winType) callback(window); }, false); } function runOnWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } let browserWindows = Services.wm.getEnumerator(winType); while (browserWindows.hasMoreElements()) { let browserWindow = browserWindows.getNext(); if (browserWindow.document.readyState == "complete") watcher(browserWindow); else runOnLoad(browserWindow, watcher, winType); } } function watchWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } runOnWindows(callback, winType); function windowWatcher(subject, topic) { if (topic == "domwindowopened") runOnLoad(subject, watcher, winType); } Services.ww.registerNotification(windowWatcher); unload(function() Services.ww.unregisterNotification(windowWatcher)); } function unload(callback, container) { let unloaders = unload.unloaders; if (unloaders == null) unloaders = unload.unloaders = []; if (callback == null) { unloaders.slice().forEach(function(unloader) unloader()); unloaders.length = 0; return null; } if (container != null) { container.addEventListener("unload", removeUnloader, false); let origCallback = callback; callback = function() { container.removeEventListener("unload", removeUnloader, false); origCallback(); } } function unloader() { try { callback(); } catch(ex) {} } unloaders.push(unloader); function removeUnloader() { let index = unloaders.indexOf(unloader); if (index != -1) unloaders.splice(index, 1); } return removeUnloader; } function makeWindowHelpers(window) { let {clearTimeout, setTimeout} = window; function async(callback, delay) { delay = delay || 0; let timer = setTimeout(function() { stopTimer(); callback(); }, delay); function stopTimer() { if (timer == null) return; clearTimeout(timer); timer = null; } } return { async: async, }; } })(); Можно ли правую сторону прогресс-бара скруглить? Помогите, пожалуйста. Спасибо ![]() |
okkamas_knife > 30-12-2017 16:10:22 |
и как вы представляете скруглить фон? |
Viatcheslav > 30-12-2017 21:45:24 |
okkamas_knife пишет
Точно так же, как это было в расширении Status-4-Evar. Правда, скругление там было фиксированное и не настраивалось |
Coroner > 30-12-2017 22:10:18 |
Viatcheslav пишет
Прогресс-бар занимает же всю строку урла. Вы хотите, скруглить правую часть урла? |
Viatcheslav > 31-12-2017 07:50:33 |
Coroner пишет
Не урла, а прогресс-бара Coroner пишет
Он перемещается от нуля до максимума, левая сторона неподвижна |
Ultima2m > 31-12-2017 11:35:10 |
mokujin пишет
OK. |
Coroner > 31-12-2017 12:24:46 |
Viatcheslav пишет
Никто никуда не перемещается. Закрашивается urlbar, котрый Вы называете "прогресс-баром" Скруглить урлбар можно попробовать. |
difabor > 31-12-2017 13:13:31 |
Coroner пишет
В CTR, в Custom CSS code: С величиной радиуса можно "поиграться". |
Viatcheslav > 31-12-2017 14:11:07 |
Coroner пишет
Хорошо, пусть будет так Coroner пишет
Он у меня и так скруглён комплектом стилей от Aris-T2 - CustomCSSforFx - Custom CSS tweaks for Firefox 57+ difabor пишет
Спасибо, но ожидаемого эффекта - скругление краёв закрашиваемого фона - это не даёт. Я, возможно, что-то неправильно понимаю |
Coroner > 31-12-2017 14:26:55 |
Viatcheslav пишет
Попробовал. Выходит когда как. скрытый текст ![]() Возможно если сайты грузились бы медленнее — всегда доходило бы до конца. 31-12-2017 14:28:25 |
Andrey_Krropotkin > 01-01-2018 23:59:20 |
Старожилы подскажите пожалуйста, как совместить |
okkamas_knife > 02-01-2018 00:22:16 |
читать документацию по css никто не хочет. да. |
negodnik > 02-01-2018 00:43:21 |
Andrey_Krropotkin |
Coroner > 02-01-2018 01:50:54 |
okkamas_knife пишет
Не ворчи))) и да покарает меня модер за офтопп. |
okkamas_knife > 02-01-2018 02:56:03 |
я выше уже сказал насчет фона. |
Coroner > 02-01-2018 12:41:09 |
okkamas_knife пишет
Непонятно то, что у меня на гифке всё закрашивается. Наглядно видно. |
okkamas_knife > 02-01-2018 14:16:04 |
да закрашивается у него всё. ему подавай чтоб у этой заливки скругление было. |
Viatcheslav > 04-01-2018 06:12:40 |
okkamas_knife пишет
Может, Вы ещё и разработчиков дополнений скрытый текст ![]() okkamas_knife пишет
Вы таки губите в себе талант писателя-сказочника okkamas_knife пишет
Насчёт "закрашивается" - всё верно, только не "подавай", а "помогите, пожалуйста, если можно" |
okkamas_knife > 04-01-2018 06:29:59 |
почему сам то не сделаешь как в том дополнении? только если конечно там это стилем сделано. ога. ну и если случится чудо то поделись потом свойством цсс которое скругляет фон , сделай шах и мат! |
momo2000 > 04-01-2018 15:53:26 |
Как выделенный текст послать в портабельный QTranslate? |
Dumby > 04-01-2018 19:11:57 |
momo2000 пишет
Ну, там же, по ссылке, написано: «js-ctypes to send keys winapi». Справка QTranslate пишет
Сподобился проверить в такой конфигурции скрытый текст VMware® Workstation 11.0.0 build-2305329 Windows 10 Pro 10.0.10240 x64 Firefox Nightly 59.0a1 (2018-01-03) (32-бит), e10s включён Custom Buttons 0.0.5.8.9.6pre QTranslate 6.4.0 Работает. Окно QTranslate появляется, и выделенный текст в нём есть. |
mokujin > 04-01-2018 19:43:03 |
momo2000 |
momo2000 > 05-01-2018 08:45:10 |
mokujin var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); Вот я идумаю, как так сделать, чтобы по нажатию кнопки из буфера текст сразу был всавлен, походу морока, тогда черт с ней. |
mokujin > 05-01-2018 16:45:49 |
momo2000 пишет
да, вроде, не морока ниразу Запустить QTranslate и жмакнуть(программно) дважды CTRL(код Dumby) Выделить код Код:/* CODE */ // Запустить QTranslate и жмакнуть(программно) дважды CTRL(код Dumby) // - стандартн. комбин. для захвата текста из окна в QTranslate. // интервал можно увеличить или уменьшить, зависит от железа setTimeout(function() dblCtrlSend(), 2000); quickTranslate(); // ----------------------------------- = QuickTranslate = ---------------------------------------------- function quickTranslate() { // скопировать выделенный текст в буфер. // gClipboard.write(document.commandDispatcher.focusedWindow.getSelection().toString()); var profile = Services.dirsvc.get('ProfD', Ci.nsIFile); profile.initWithPath(profile.path + "\\Soft\\QTranslate\\QTranslate.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); var arg = []; process.init(profile); process.run(false, [arg], 1); // setTimeout(function() window.content.focus(), 500); }; function dblCtrlSend() { // See https://gist.github.com/Noitidart/0de3be2442a0295eb386 // vk codes: https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx // Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up] var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]]; // Ctrl+Q [Ctrl-Down, Q-Down, Q-Up, Ctrl-Up] //var data = [[0x11, false], [0x51, false], [0x51, true], [0x11, true]]; var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {}); var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [ {wVk: ctypes.unsigned_short}, {wScan: ctypes.unsigned_short}, {dwFlags: ctypes.unsigned_long}, {time: ctypes.unsigned_long}, {dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long}, {padding0: ctypes.uint8_t.array(8)} ]); var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]); var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)())) )); var user32 = ctypes.open("user32"); try { var SendInput = user32.declare("SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int); SendInput(pInputs.length, pInputs, INPUT.size); } finally { user32.close(); } }; 05-01-2018 16:55:48 Выделить код Код:// змени моё тело на своё function quickTranslate() { var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); file.initWithPath('D:\\DRIVE\\PORTABLE\\QTranslate\\QTranslate.exe'); file.launch(); } |
Garalf > 08-01-2018 12:29:51 |
mokujin |
mokujin > 08-01-2018 16:40:03 |
Garalf пишет
все работает. У мя и в PM и в FF 57.3 (расш-е CB отседава взято да прибудет с Infocatcher сила! ) эта кнопка делает то что и задумано - запускает QTranslate и выделенный текст вставляеццо, сразу переводиццо. См. ошибки в консоли у себя. Кнопка никак не предназначена для постоянного использования(жмаканья при выделении взамен нажатия ctrl )! Т.е. весь эффект только на один раз, для сафсем ленивых: программа не запущена - запускаем и жмакаем(программно через 2 сек.) дважды CTRL. Дальше жмакать CTRL можно и нужно ручками. Никаких проверок и условий тут нет. Они и не нужны, QT сам прекрасно отовсюду забирает текст. |
mokujin > 08-01-2018 17:17:09 |
а куда подевалось в 57-й getBrowserSelection(); |
Dumby > 08-01-2018 19:07:17 |
mokujin пишет
Нет, не только у тебя. |
Garalf > 08-01-2018 19:14:25 |
mokujin |
mokujin > 08-01-2018 19:48:28 |
Dumby пишет
Какой-то абсурд, кароче. Выделить код Код:if(getBrowserSelection()) { setTimeout(function() dblCtrlSend(), 2000); return; }; quickTranslate(); ........ а в 57-й знач надо добавить еще и эту ф-цию (замену я пока не нашел\не понял как) Выделить код Код:if(getBrowserSelection()) { setTimeout(function() dblCtrlSend(), 2000); return; }; quickTranslate(); // выпиленная в 57-й ф-ция, вернуть её взад и заюзать в кнопке. function getBrowserSelection(aCharLen) { let focusedElement = document.activeElement; if (focusedElement && focusedElement.localName == "browser" && focusedElement.isRemoteBrowser) { throw "getBrowserSelection doesn't support child process windows"; } return BrowserUtils.getSelectionDetails(window, aCharLen).text; } ........... |
Andrey_Krropotkin > 09-01-2018 20:06:17 |
Dumby Вы когда-то делали кнопку консоль браузера в боковой панели и в новой вкладке для разных версий. Для 57 не посмотрите? Или хотя бы попроще - прикрепить окно снизу или сбоку как у вебконсоли? |
Dumby > 13-01-2018 00:30:32 |
Andrey_Krropotkin пишет
OK, попробую скрытый текст Выделить код Код:({ title: "Консоль браузера", icon: "chrome://devtools/skin/images/tool-webconsole.svg", url: "chrome://devtools/content/webconsole/webconsole.xul", init() { var trg = document.getElementById("browser"); trg && addEventListener("DOMContentLoaded", this, false, trg); var attrs = { sidebartitle: this.title, sidebarurl: this.url, type: "checkbox", group: "sidebar", checked: SidebarUI.isOpen && SidebarUI.browser.getAttribute("src") == this.url }; var broadcaster = this.element("broadcaster", Object.assign({ id: "viewBrowserConsoleSidebar" }, attrs), document.getElementById("mainBroadcasterSet")); Object.assign(attrs, { autoCheck: "false", label: this.title, observes: broadcaster.id, oncommand: `SidebarUI.toggle("${broadcaster.id}");` }); var btn = this.element("toolbarbutton", Object.assign({ id: "sidebar-switcher-browserconsole", class: "subviewbutton subviewbutton-iconic" }, attrs)); this.element("observes", {element: broadcaster.id, attribute: "checked"}, btn); document.querySelector("#sidebarMenu-popup > toolbarseparator").before(btn); var menuitem = this.element("menuitem", Object.assign({ id: "menu_browserConsoleSidebar" }, attrs), document.getElementById("viewSidebarMenu")); var css = `\ #${btn.id} > .toolbarbutton-icon, #sidebar-box[sidebarcommand="${broadcaster.id}"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon { list-style-image: url(${this.icon}); -moz-context-properties: fill; fill: currentColor; opacity: 0.8; } #TabsToolbar[brighttext] .tabbrowser-tab:not([visuallyselected=true]) .tab-icon-image[src="${this.icon}"] { filter: url("chrome://devtools/skin/images/filters.svg#icon-normal-dark"); }`; var dwu = QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); var str = "data:text/css," + encodeURIComponent(css), type = dwu.AGENT_SHEET; dwu.loadSheetUsingURIString(str, type); addDestructor(() => { for(var node of [broadcaster, btn, menuitem]) node.remove(); dwu.removeSheetUsingURIString(str, type); }); self.onclick = e => { if (e.button == 2) return; if (!e.button) return SidebarUI.toggle(broadcaster.id); var st = gBrowser.selectedTab, tab; if (!e.ctrlKey) tab = gBrowser.visibleTabs.find( tab => tab.linkedBrowser.currentURI.spec == this.url ); if (tab == st) return; if (!tab) tab = gBrowser.addTab(this.url); gBrowser.moveTabTo(tab, st._tPos + 1); gBrowser.selectedTab = tab; } if (gBrowser.currentURI.spec == this.url) { var doc = gBrowser.selectedBrowser.contentDocument; if (!doc.querySelector("link")) this.handleEvent({target: doc}); } }, handleEvent({target: doc}) { if (!doc || Cu.isCrossProcessWrapper(doc)) return; var win = doc.defaultView, url = doc.documentURI; var inTab = !String(win).includes("ChromeWindow"); if (url == this.url) { if (inTab) { var link = doc.createElementNS(xhtmlns, "link"); link.setAttribute("rel", "shortcut icon"); link.setAttribute("href", this.icon); doc.documentElement.firstChild.before(link); } this.loader.Services.ww.wins.push(win); new this.loader.HUD_SERVICE().toggleBrowserConsole().then(bc => { if (!inTab) return; var dummy = {close() {}}; var parent = this.inIDOMUtils.getParentForNode(doc, true); if (parent && parent.id == "web-panels-browser") { SidebarUI._title.value = this.title; SidebarUI._icon.src = this.icon; dummy.close = () => SidebarUI._icon.removeAttribute("src"); } win.onbeforeunload = () => {bc.chromeWindow = dummy;} }, Cu.reportError); } else if ( inTab && url == "chrome://devtools/content/shared/widgets/VariablesView.xul" ) { var iframe = win.frameElement; if (!iframe || iframe.ownerDocument.documentURI != this.url) return; var listener = Services.els.getListenerInfoFor(iframe) .find(obj => obj.type == "load").listenerObject; iframe.removeEventListener("load", listener, true); win.addEventListener("load", () => listener({target: doc}), {once: true}); } }, get loader() { delete this.loader; var id = _id + "-browser-console"; var url = "resource://devtools/shared/Loader.jsm?" + id; var loader = {exports: {}}, nsvo = Cu.import(url, loader); addDestructor(reason => reason[5] == "e" && Cu.unload(url)); if (id in nsvo) return this.loader = nsvo[id]; Services.scriptloader.loadSubScript("resource://devtools/client/webconsole/hudservice.js", loader); var e = new CustomEvent("DOMContentLoaded", {bubbles: false}), ww = loader.Services.ww; loader.Services.ww = Cu.getGlobalForObject(nsvo).Object.create(ww, { wins: {value: []}, openWindow: {value: function() { var win = this.wins.shift(); setTimeout(() => win.dispatchEvent(e), 0); return win; }} }); Services.obs.removeObserver(loader.gDevToolsBrowser, "browser-delayed-startup-finished"); var func = nsvo.require("devtools/client/framework/browser-menus").removeMenus; for(var win of CustomizableUI.windows) func(win.document); return this.loader = nsvo[id] = loader; }, element(name, attrs, parent) { var node = document.createElement(name); for(var attr in attrs) node.setAttribute(attr, attrs[attr]); if (parent) parent.appendChild(node); return node; }, get inIDOMUtils() { delete this.inIDOMUtils; return this.inIDOMUtils = "inIDOMUtils" in Ci ? Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils) : InspectorUtils; } }).init(); |
Andrey_Krropotkin > 16-01-2018 10:39:55 |
Dumby спасибо, все отлично работает на 57 версии |
mokujin > 16-01-2018 18:06:48 |
Может подскажет кто, с кнопкой для PaleMoon скрытый текст Выделить код Код:// ---------------- Копировать адресс RSS ленты в адр. строке по ПКМ ---------------------------------- (function copyRSSadr() { addEventListener("mousedown", e => { var rssadr = e.target.getAttribute('feed'); switch (e.button) { case 2: if (rssadr) { e.target.oncontextmenu = function() { return false; }; var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); gClipboard.write(rssadr); alertsService.showAlertNotification(gBrowser.mCurrentTab.image, rssadr, "Адресс RSS-ленты скопирован", false, "", null, ""); // тут должно быть действие для случая когда !rssadr - т.е. несколько лент на сайте и надо открыть меню, которое откр-ся по левому клику break; } } }, false, document.getElementById("ub-feed-button"), document.getElementById("ub-feed-menu")); })(); ...там сделано по-дураццки КМК: значек один-и-тот же id имеет, но иногда это меню - если на сайте больше одного источника RSS а когда один источник - это иконка с адресом(в доп.свойствах). Свои действия посадил на ПКМ и норм. копируется адресс RSS . Теперь бы доделать , чтоб по томуже ПКМ, когда else (!rssadr) - открыть список лент. Ежли кто знает, подскажите как. |
okkamas_knife > 16-01-2018 19:06:47 |
подошел не так |
mokujin > 16-01-2018 20:22:31 |
а в том и моя печаль-беда, что это ничего не изменит |
okkamas_knife > 17-01-2018 01:10:00 |
могу предложить такой костыль скрытый текст вот тебе заготовка ессно переделай исправив ид кинь в инициализацию лкм даст алерт скм стандартное меню св копки пкм откоет меню с рсс Выделить код Код:var btn = this; this.onclick = function(event) { if(event.button == 0){ alert("ЛКМ"); // Действие при клике ЛКМ } else if(event.button == 1) { // Действие при клике СКМ gShowPopup(this); // Показываем контекстное меню кнопки } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов var ps = document.getElementById("feedsPopup"); // ищи нужный попап в mainPopupSet ps.openPopup(btn) } }; // Блокируем контекстное меню при клике ПКМ без модификаторов.............. this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { event.preventDefault(); event.stopPropagation(); } }; |
mokujin > 17-01-2018 03:03:10 |
okkamas_knife скрытый текст Выделить код Код:// ---------------- Скопировать адресс RSS ленты в адр. строке ПКМ или откроется меню с лентами и там тоже ПКМ копирует адрес ---------------------------------- (function() { addEventListener("mousedown", e => { var rssadr = e.target.getAttribute('feed'); switch (e.button) { case 2: e.target.oncontextmenu = function() { return false; }; if (rssadr) { var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); gClipboard.write(rssadr); alertsService.showAlertNotification(gBrowser.mCurrentTab.image, rssadr, "Адресс RSS-ленты скопирован", false, "", null, "5000"); } else { var ps = document.getElementById("ub-feed-menu"); // так просто, а я ковырялся несколько дней и безтолку. ps.showPopup( -1, -1, "popup", "bottomleft", "topleft"); // в других случаях может нужно openPopup() break; }; } }, false, document.getElementById("ub-feed-button"), document.getElementById("ub-feed-menu")); })(); ... я уже пол исходника(этой ф-ции что создает меню из omni.ja ) в кнопку скопировал, постоянно ошибки всякие. Благодарю. |
Viatcheslav > 17-01-2018 22:24:41 |
Заинтересовала кнопка GrabScroll (Firefox24+) от 24.04.2016. С тех пор, наверное, чего-то поменялось, и кнопочка не фурычит. Прокрутка не работает ни правой, ни левой кнопкой (менял в настройках), двойное нажатие ПКМ не вызывает меню СВ. Думал, конфликтует с установленным Yet Another Smooth Scrolling (хочу попробовать кнопку как альтернативу этому расширению) - отключал, ничего не меняется. bunda1, если можно - поправьте, пожалуйста. Спасибо |
drage2 > 18-01-2018 11:39:05 |
Кнопка "увеличить изображение" аж 2014г. Работает,но не с мультипроцессом...FF58 - можно и выкл. мульти, так с запуском тормоза. Кнопку саму нельзя рихтануть? |
Andrey_Krropotkin > 18-01-2018 12:21:02 |
Dumby насчет кнопки - консоль браузера в боковой панели и в новой вкладке. |
bunda1 > 18-01-2018 22:09:19 |
Viatcheslav пишет
Странно но у меня работает. Двойное нажатие ПКМ не вызывает меню СВ, потому что в Сustom Buttons что-то сломано и иеперь в всех кнопках меню нельзя вызвать двойным нажатием ПКМ. А многопроцессный режим у тебя включен? |
Viatcheslav > 18-01-2018 22:41:05 |
bunda1 пишет
Да, включен. А как должно быть? |
bunda1 > 19-01-2018 09:49:27 |
Viatcheslav пишет
Должно быть так как тебе удобней, но похоже что GrabScroll не работает с включенным многопроцессным режимом и я пока не могу это исправить. |
Viatcheslav > 19-01-2018 10:51:35 |
bunda1 пишет
Спасибо за ответ. Надеюсь, что ключевое слово - "пока" |
oleg.sgh > 19-01-2018 11:13:03 |
Viatcheslav |
drage2 > 19-01-2018 11:28:16 |
Вопрос! можно ли менять кнопкой путь? Пример: network.proxy.autoconfig_url строка file:///D:/Proxy.pac |
bunda1 > 19-01-2018 12:20:34 |
drage2 Выделить код Код:var path1 = 'file:///D:/Proxy.pac' var path2 = 'file:///C:/Proxy.pac'; var s = 'network.proxy.autoconfig_url'; this._handleClick =()=> { var path = getPath() == path1 ? path2 : path1; cbu.setPrefs(s, convertFromUnicode("UTF-8", path)); }; function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }; function getPath() { try { return Services.prefs.getComplexValue(s, Ci.nsISupportsString).data } catch(e) { return path1 }; }; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); icon.src = getPath() == path1 ? self.image : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC'; }; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage)); |
Viatcheslav > 19-01-2018 12:36:10 |
О, спасибо |
mokujin > 19-01-2018 13:01:54 |
так же можно эту кнопку заюзать №148 скрытый текст Выделить код Код:"use strict" this.onclick = function(e) { switch (e.button) { case 0: var tabs = gBrowser.visibleTabs || gBrowser.tabs, recentlyUsedTabs = Array.sort(tabs, function(tab1, tab2) { return tab2.lastAccessed - tab1.lastAccessed }), tab = tabs[recentlyUsedTabs.indexOf(gBrowser.selectedTab) + 1] || null; if (tab) gBrowser.selectedTab = tab; break; case 1: var tabs = gBrowser.tabContainer.childNodes; for (var i = 0, cnt = 0; i < tabs.length; i++) if (tabs[i].hasAttribute("pinned")) cnt++; gBrowser.selectedTab = tabs[cnt]; break; case 2: if (e.shiftKey || e.ctrlKey) { this.oncontextmenu = function() { return true; } return; } this.oncontextmenu = function() { return false; } var tabs = gBrowser.tabContainer.childNodes, last = tabs.length - 1; gBrowser.selectedTab = tabs[last]; } var sTab = gBrowser.selectedTab; sTab.scrollIntoView(true); } this.tooltipText = this.label + "\n\ \u2022 Left-click > Last Selected Tab\n\ \u2022 Middle-click > First Unpinned Tab\n\ \u2022 Right-click > Last Tab\n\ \u2022 Shift/Ctrl + Right-click > Context Menu"; // Button Name: Tab Select // Created: Feb 8, 2017 // Updated: July 24, 2017 shift or ctrl + right-click for custombuttons-contextpopup // Author: Sonny aka srazzano // Homepage: http://custombuttons.sourceforge.net/forum/viewtopic.php?f=4&t=6420 // Description: See homepage // Support: srazzano@gmail.com Взял оттудава только то что проблемное, то что по ЛКМ хочу чтоб было на вкладке: скрытый текст Выделить код Код:// Клик по активной вкладке - переход на предыд. посещенную... неробит this.onDestroy = function() { removeEventListener("click", TabSwitch, false, gBrowser.mTabContainer); }; function TabSwitch(e) { switch (e.button) { case 0: var tabs = gBrowser.visibleTabs || gBrowser.tabs, recentlyUsedTabs = Array.sort(tabs, function(tab1, tab2) { return tab2.lastAccessed - tab1.lastAccessed }), tab = tabs[recentlyUsedTabs.indexOf(gBrowser.selectedTab) + 1] || null; if (e.target == gBrowser.mCurrentTab ) gBrowser.selectedTab = tab; break; } }; addEventListener("click", TabSwitch, false, gBrowser.mTabContainer); на активной вкладке как и надо - переключается на предыд. посещенную, - но нельзя выбрать вкладку, срабатывает этот код опять . ЕЯПП , то в момент выбора она мгновенно становится тоже mCurrentTab и код опять на ней срабатывает еще раз. если событие поменять на mousedown, не лучше... выбрать тогда нельзя вкладки. ![]() Помогите знатоки! |
drage2 > 19-01-2018 13:09:50 |
bunda1 |
bunda1 > 19-01-2018 14:30:56 |
mokujin пишет
onDestroy там совсем лишний. И я не понял что ты хочешь добится? |
mokujin > 19-01-2018 14:56:23 |
клик по активной вкладке - переход на пред. активную. Создатель кнопки написал этот код, который вычисляет пред.активную вкладку и переходит на нее, но сделал это в кнопке. А я хочу это все чтоб было на активной вкладке. |
bunda1 > 19-01-2018 19:20:32 |
mokujin пишет
А если переделать Активировать вкладку наведением курсора немного над вкладкой или: Выделить код Код:// ЛКМ + ПКМ на текущий таб, переместить таб в новую группу, от 06.12.2014. ................................ function moveTabToNewGroup(e) { if ( e.button == 2 && this.leftButtonDown ) { // временно блокируем контекстное меню вкладки addEventListener("popupshowing", function f(e) { e.preventDefault(); removeEventListener( e.type, f ); }); // переместить текущий таб в новую группу setTimeout(function() { var tab = e.target; if ( gBrowser.visibleTabs.length == 1 ) return; TabView.moveTabTo( tab, null ); window.gBrowser.selectedTab = tab; }, 50 ); } if ( e.button == 0 ) { this.leftButtonDown = true; // сбросить переменную и обработчики function c(e) { this.leftButtonDown = false; removeEventListener( e.type, c ); }; addEventListener("mouseup", c ); addEventListener("mousemove", c ); } }; addEventListener("mousedown", moveTabToNewGroup, true, gBrowser.tabContainer); или: Выделить код Код:// Двойной левый клик на табе закрывает страницу, двойной правый имитирует нажатие на звёздочку в адресной строке .................. function closeAddBookTab(e) { if ( e.target.localName != "tab" ) return; e.preventDefault(); e.stopPropagation(); if ( e.button == 0 ) { gBrowser.removeCurrentTab() }; if ( e.button == 2 ) { PlacesCommandHook.bookmarkPage( e.target.linkedBrowser, undefined, true ); setTimeout(function() document.getElementById("tabContextMenu").hidePopup(), 0); var panel = document.getElementById("editBookmarkPanel"); addEventListener("popupshown", function() { removeEventListener("popupshown", arguments.callee, true, panel ); panel.moveTo( e.screenX, e.screenY ); // переместить рядом с вкладкой document.getElementById('editBMPanel_foldersExpander').click(); // показать все папки закладок }, true, panel ); } }; addEventListener("dblclick", closeAddBookTab, false, gBrowser.mTabContainer); 19-01-2018 19:21:49 Выделить код Код:// Настройка длинного клика мыши для вкладки .............. addEventListener("mousedown", e=> { var targ = e.target; if ( e.button || targ.localName !== "tab" ) return; targ.onclick =()=> clearTimeout(targ.timer); targ.timer = setTimeout(()=> { gBrowser.removeTabsToTheEndFrom(gBrowser.mCurrentTab); }, 450); }, true, gBrowser.mTabContainer); |
SendInfo > 19-01-2018 20:07:25 |
mokujin пишет
Надо с другой стороны зайти. ЛКМ по активной вкладке "нажимает" CTRL+TAB |
bunda1 > 19-01-2018 20:23:12 |
drage2 пишет
Да, есть такая проблема. Перестал работать triggerNode в: Выделить код Код:// отслеживать открытие контекстного меню на странице .... addEventListener("popupshowing", function(e) { menuitem.hidden = !gContextMenu.onImage; // скрывать пункт если не контекстное меню изображений if ( !gContextMenu.onImage ) return; // получить координаты и размеры изображения var trg = e.target.triggerNode; g.win = trg.ownerDocument.defaultView; g.rect = trg.getBoundingClientRect(); }, true, contextMenu); Может кто подскажет чем его заменить? |
drage2 > 19-01-2018 21:25:26 |
bunda1 bunda1 пишет
Это проблема, но ...В 57 мульти не нужен и кнопка работает. А в 58 финал это уже не актуально, кнопка "путь к proxy.pac" не будет работать в 58 никогда... |
bunda1 > 19-01-2018 21:28:10 |
drage2 пишет
Да, к сожалению мультирежим ломает многие Сustom Buttons кнопки и коды |
Dumby > 20-01-2018 04:09:43 |
Andrey_Krropotkin пишет
Да, действительно, пункты множатся. bunda1 пишет
Двойное нажатие ПКМ не вызывает меню СВ потому, скрытый текст Выделить код Код:// Настройка функций кликов мыши для кнопки ............... /* this.onclick =e=> { if ( e.button == 0 ) GrabScroll.toggle(); if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { e.preventDefault(); menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); } }; this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; */ this.onclick = e => e.button || GrabScroll.toggle(); this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup() || e.ctrlKey || !!menuPopup.openPopup(this, "after_start"); mokujin пишет
Сначала пишем простой набросок, скрытый текст Выделить код Код:((trg, sortFunc, flag) => { addEventListener("mousedown", e => flag = e.target != gBrowser.selectedTab, true, trg); addEventListener("click", e => { if ( flag || e.button || e.ctrlKey || e.shiftKey || e.altKey || e.detail != 1 || ~~"что-то ещё" ) return; var tabs = [...(gBrowser.visibleTabs || gBrowser.tabs)]; var recentlyUsedTabs = tabs.sort(sortFunc); var tab = tabs[recentlyUsedTabs.indexOf(e.target) + 1]; if (tab) gBrowser.selectedTab = tab; }, false, trg); })(gBrowser.tabContainer, (tab1, tab2) => tab2.lastAccessed - tab1.lastAccessed); |
bunda1 > 20-01-2018 11:20:05 |
Dumby пишет
Нет, раньше на старых версиях Firefox двойное ПКМ вызывала СВ меню даже если на одиночный ПКМ уже висело меню настроек кнопки. А за код спасибо :) |
Andrey_Krropotkin > 20-01-2018 12:45:03 |
Dumby
теперь не множатся. Все отлично. |
Viatcheslav > 20-01-2018 14:24:19 |
В главном меню |
unter_officer > 20-01-2018 14:57:31 |
Viatcheslav |
Andrey_Krropotkin > 20-01-2018 17:07:54 |
Dumby Попробовал добавить в твою кнопку Консоль браузера открытие в bottom панели, посмотри пожалуйста, не испортил ли я твой код. По твоему методу добавления панели, у меня как то не вышло. скрытый текст Выделить код Код:/*Initialization Code*/ ({ title: "Консоль браузера", icon: "chrome://devtools/skin/images/tool-webconsole.svg", url: "chrome://devtools/content/webconsole/webconsole.xul", init() { var trg = document.getElementById("browser"); trg && addEventListener("DOMContentLoaded", this, false, trg); var attrs = { sidebartitle: this.title, sidebarurl: this.url, type: "checkbox", group: "sidebar", checked: SidebarUI.isOpen && SidebarUI.browser.getAttribute("src") == this.url }; var broadcaster = this.element("broadcaster", Object.assign({ id: "viewBrowserConsoleSidebar" }, attrs), document.getElementById("mainBroadcasterSet")); Object.assign(attrs, { autoCheck: "false", label: this.title, observes: broadcaster.id, oncommand: `SidebarUI.toggle("${broadcaster.id}");` }); var btn = this.element("toolbarbutton", Object.assign({ id: "sidebar-switcher-browserconsole", class: "subviewbutton subviewbutton-iconic" }, attrs)); this.element("observes", {element: broadcaster.id, attribute: "checked"}, btn); document.querySelector("#sidebarMenu-popup > toolbarseparator").before(btn); var menuitem = this.element("menuitem", Object.assign({ id: "menu_browserConsoleSidebar" }, attrs), document.getElementById("viewSidebarMenu")); var css = `\ #${btn.id} > .toolbarbutton-icon, #sidebar-box[sidebarcommand="${broadcaster.id}"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon { list-style-image: url(${this.icon}); -moz-context-properties: fill; fill: currentColor; opacity: 0.8; } #TabsToolbar[brighttext] .tabbrowser-tab:not([visuallyselected=true]) .tab-icon-image[src="${this.icon}"] { filter: url("chrome://devtools/skin/images/filters.svg#icon-normal-dark"); }`; var dwu = QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); var str = "data:text/css," + encodeURIComponent(css), type = dwu.AGENT_SHEET; dwu.loadSheetUsingURIString(str, type); addDestructor(() => { for(var node of [broadcaster, btn, menuitem]) node.remove(); dwu.removeSheetUsingURIString(str, type); }); function $(aId) { return document.getElementById(aId); } gCBBrowserConsole= this; this.panel = false; this.togglePanel = function() { this.panel = !this.panel; $("BrowserConsole-splitter").hidden = !this.panel; $("BrowserConsole-panel").hidden = !this.panel; $("BrowserConsole-iframe").setAttribute("src", this.panel ? this.url : ""); } function makeXML(aXMLString) { return (new DOMParser).parseFromString(aXMLString, "application/xml") .documentElement; } function $xml(aNode, aId, aXML) { var node = $(aId); node && node.parentNode.removeChild(node); aNode && aNode.appendChild(makeXML(aXML)) } $xml($("appcontent"), "BrowserConsole-splitter", '<splitter xmlns="' + xulns + '" id="BrowserConsole-splitter"' + ' orient="vertical" hidden="true">' + '<grippy oncommand="this.parentNode.nextSibling.collapsed =' + ' !this.parentNode.nextSibling.collapsed;"/></splitter>'); $xml($("appcontent"), "BrowserConsole-panel", '<vbox xmlns="' + xulns + '" id="BrowserConsole-panel"' + ' height="300" hidden="true">' + '<toolbox><toolbar align="center">' + '<label value="Консоль браузера" flex="1" crop="end"/>' + '<toolbarbutton class="tabs-closebutton"' + ' image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACt0lEQVQ4jaWSzUtUYRTGn/fcGZ25H+m9Iyne8fpFq4lGCsFFIW21NiKKuHIn4qpazDraabnMTVEh+Af0B0QIIohBowhlkM1MMTre+VLngzv3PW1SKWvVWR0eOL/zcM4jmBn/U4G/iTuzsyK7unoLUl4HABDtdExNbV1fXr60Tfzp4J1h3Dd1/ak1OHhN7+kBiHCaTsPd2NgrlMsP7x4fv/0nYE3XH9ix2GLbzIwQmvYbmCsVHL16xd+3tx/dOTl5dqbTWfPeMIavOs6COT0tmBmyWAS1toJaWyGLRbCUMKemxFXHWXhvGMOXACrw2BwdJYUITX190MbG4O/twf/yBdrYGJr6+6EQwbx3j1QhHv8GWDfNNjUavR3u6ACyWQRjMQRsG+rkJNSJCQRsG8FYDDKbRbi9Harj3F43zbYLB41Gr2bbRIUCFACnS0vwMhkEbBsB24aXyaCcSEDJZiFyOWidnYRGo/f8jQpQp9NTiFwOACCJACEuDsgMeXAAuC7YMECeBwWonwOaLOtT/evXMhTlSs00oS8vI2jbqGcyADOau7pgvHiB8vg4tMND1F233GRZn87pzIwtXX9eiEb5uLubC2/ecC2V4qOhIT4aGuJqKsX516/52HG4EI3ylq4/P5s7z8FHy2qXnvehOxTqDBGhFongiusCAMqWhVA+j5qU+Far/RDB4M2BfP7gUpCSLS03qr7/NiyEExEC6i+9AsBlRpU5FVaU+zdKpeSlHCSTSazOzW0XNW2gCjzZ9/3Pu77Pu77P+77/uQo8cTVt4OXMzM7a2tpFlBOJhFhZWWkulUphz/NUKWWYmUPM3GwCKgBRAKoA6kRUI6JKIBCo6rpeGRkZqQlmRjqdxuLiIm1ublIul6NKpaI0Gg3yfV8AABFxMBiUoVBIRiIRPx6Py/n5eRmPx/ETBvM/dPD/rBwAAAAASUVORK5CYII="' + ' oncommand="gCBBrowserConsole.togglePanel();"/>' + '</toolbar></toolbox>' + '<iframe id="BrowserConsole-iframe" src="" flex="1"/>' + '</vbox>'); self.onclick = e => { //if (e.button == 2) return; //if (!e.button) return SidebarUI.toggle(broadcaster.id); if (e.button == 0) return SidebarUI.toggle(broadcaster.id); if (e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ){ e.preventDefault(); this.togglePanel(); } var st = gBrowser.selectedTab, tab; // if (!e.ctrlKey) tab = gBrowser.visibleTabs.find( if (e.button == 1){ tab = gBrowser.visibleTabs.find( tab => tab.linkedBrowser.currentURI.spec == this.url ) if (tab == st) return; if (!tab) tab = gBrowser.addTab(this.url); gBrowser.moveTabTo(tab, st._tPos + 1); gBrowser.selectedTab = tab;} } if (gBrowser.currentURI.spec == this.url) { var doc = gBrowser.selectedBrowser.contentDocument; if (!doc.querySelector("link")) this.handleEvent({target: doc}); } }, handleEvent({target: doc}) { if (!doc || Cu.isCrossProcessWrapper(doc)) return; var win = doc.defaultView, url = doc.documentURI; var inTab = !String(win).includes("ChromeWindow"); if (url == this.url) { if (inTab) { var link = doc.createElementNS(xhtmlns, "link"); link.setAttribute("rel", "shortcut icon"); link.setAttribute("href", this.icon); doc.documentElement.firstChild.before(link); } this.loader.Services.ww.wins.push(win); new this.loader.HUD_SERVICE().toggleBrowserConsole().then(bc => { if (!inTab) return; var dummy = {close() {}}; var parent = this.inIDOMUtils.getParentForNode(doc, true); if (parent && parent.id == "web-panels-browser") { SidebarUI._title.value = this.title; SidebarUI._icon.src = this.icon; dummy.close = () => SidebarUI._icon.removeAttribute("src"); } win.onbeforeunload = () => {bc.chromeWindow = dummy;} }, Cu.reportError); } else if ( inTab && url == "chrome://devtools/content/shared/widgets/VariablesView.xul" ) { var iframe = win.frameElement; if (!iframe || iframe.ownerDocument.documentURI != this.url) return; var listener = Services.els.getListenerInfoFor(iframe) .find(obj => obj.type == "load").listenerObject; iframe.removeEventListener("load", listener, true); win.addEventListener("load", () => listener({target: doc}), {once: true}); } }, get loader() { delete this.loader; var id = _id + "-browser-console"; var url = "resource://devtools/shared/Loader.jsm?" + id; var loader = {exports: {}}, nsvo = Cu.import(url, loader); addDestructor(reason => reason[5] == "e" && Cu.unload(url)); if (id in nsvo) return this.loader = nsvo[id]; Services.scriptloader.loadSubScript("resource://devtools/client/webconsole/hudservice.js", loader); var e = new CustomEvent("DOMContentLoaded", {bubbles: false}), ww = loader.Services.ww; loader.Services.ww = Cu.getGlobalForObject(nsvo).Object.create(ww, { wins: {value: []}, openWindow: {value: function() { var win = this.wins.shift(); setTimeout(() => win.dispatchEvent(e), 0); return win; }} }); Services.obs.removeObserver(loader.gDevToolsBrowser, "browser-delayed-startup-finished"); var func = nsvo.require("devtools/client/framework/browser-menus").removeMenus; for(var win of CustomizableUI.windows) func(win.document); return this.loader = nsvo[id] = loader; }, element(name, attrs, parent) { var node = document.createElement(name); for(var attr in attrs) node.setAttribute(attr, attrs[attr]); if (parent) parent.appendChild(node); return node; }, get inIDOMUtils() { delete this.inIDOMUtils; return this.inIDOMUtils = "inIDOMUtils" in Ci ? Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils) : InspectorUtils; } }).init(); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; // Подсказка у кнопки............................................................................. this.tooltipText = "Консоль браузера" +"\n"+ "ЛКМ: В боковой панели" +"\n"+ "СКМ: В новой вкладке" +"\n"+ "ПКМ: В bottom панели" +"\n"+ "Ctrl+ПКМ: Стандартное меню "; |
drage2 > 20-01-2018 17:27:47 |
Button Proxy.pac пишет
Шикарная кнопка...Черт бы побрал эту 58...Не работает... |
bunda1 > 25-01-2018 20:01:54 |
drage2 пишет
Выделить код Код:var path1 = 'file:///D:/Proxy.pac' var path2 = 'file:///C:/йцукен.pac'; var s = 'network.proxy.autoconfig_url'; this._handleClick =()=> { var path = getPath() == path1 ? path2 : path1; cbu.setPrefs(s, convertFromUnicode("UTF-8", path)); }; function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }; function getPath() { try { return gPrefService.getStringPref(s, "") } catch(e) { return path1 }; }; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); icon.src = getPath() == path1 ? self.image : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC'; }; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage)); |
Andrey_Krropotkin > 26-01-2018 00:20:09 |
Скажите пожалуйста, кто может подправить Выделить код Код:// Получить выделенный текст из страницы или 'false' .............. function getSelect() { var el = document.commandDispatcher.focusedElement; try { return el.value.substring(el.selectionStart, el.selectionEnd) } catch(e) {}; var sel = document.commandDispatcher.focusedWindow.getSelection(); return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"").replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A"); }; почему то возвращает все время 'false' |
mokujin > 26-01-2018 00:27:58 |
Andrey_Krropotkin пишет
просто со страницы, то так 26-01-2018 00:38:51 скрытый текст Выделить код Код:// получаем выделенный текст function getSelect() { var sel = document.commandDispatcher.focusedWindow.getSelection(); // из страницы if ( sel.isCollapsed ) { var el = document.commandDispatcher.focusedElement; // из текстового поля if ( el && el.textLength ) sel = el.value.substring(el.selectionStart, el.selectionEnd); } if ( sel.anchorNode && sel.anchorNode.parentNode.tagName == 'PRE' ) { // из 'PRE' var sel = sel.focusNode.data.substring(sel.anchorOffset, sel.focusOffset); } if ( sel == '') { // если выделенного текста нет return; } return sel; // if (sel) gClipboard.write(sel); }; alert(getSelect()); |
Andrey_Krropotkin > 26-01-2018 08:59:54 |
mokujin на 57 работало, а на 58 не работает и этот вариант |
drage2 > 26-01-2018 12:18:55 |
bunda1 |
drage2 > 26-01-2018 14:18:21 |
mokujin mokujin пишет
Ошибка Javascript , что не так? И в 57 и в 58.... |
mokujin > 26-01-2018 15:26:38 |
drage2 пишет
ошибка в другом месте. С javascript все в порядке и в 57.3 тоже. |
bunda1 > 26-01-2018 19:29:28 |
Andrey_Krropotkin |
Andrey_Krropotkin > 26-01-2018 22:26:38 |
bunda1 Спасибо, действительно на 58 работает |
mokujin > 26-01-2018 22:33:28 |
А никто не делал кнопку, чтоб отслеживала открытие вкладки и ставила стиль у нее html, body {background-color: #AAA;} на пару секунд, а при отрисовке страницы убирала этот стиль Я кагбе понимают, что нужно какой-то листенер, на какое-то событие ставить... а там таймер, а может лучше еще один листенер, на что-то типа pageshow - но соорудить такое не могу. или с чего начать подскажите Сейчас сделано просто, в userContent стоит правило без !important Выделить код Код:@-moz-document url-prefix("http://"), url-prefix("https://") { html, body { background: #BBB; background-color: #BBB; } } ... но оно влияет на сайты. Еслиб это отменялось когда выводится страница. Если уже есть такой код, поделитесь. |
drage2 > 26-01-2018 23:44:48 |
Какая это кнопка ? Полностью код можно? |
lokiju > 26-01-2018 23:59:31 |
mokujin пишет
Меня не достаёт: |
mokujin > 27-01-2018 01:05:40 |
эт понятно. flux - да, как и кнопка со стилем ночным, как и расширение ScreenDimmer... всё это костыли и все это можно юзать, чтоб исправить одну , реально бесящую особенность всех бравзеров - яркий белый фон, мелькающий до загрузки страницы. А если страница еще и где нибудь в Китае или на медленном сервере где-то в США с кучей скриптов... то это белое пятно и пару сек. может висеть. |
Ultima2m > 27-01-2018 07:26:06 |
lokiju пишет
Для изменения этой настройки не обязательно лезть в about:config mokujin пишет
Попробуйте этот код. Раньше вроде работало Выделить код Код:/* Цвет пустой страницы */ @-moz-document url("about:blank") {body {background-color: #444444 !important;}} /* Цвет при загрузке страницы */ browser {-moz-appearance: none !important; background: #444444 !important;} |
mokujin > 27-01-2018 12:58:16 |
Оппа, вроде есть! Ultima2m навел на мысль, пока что сделал так в userChrome.css Выделить код Код:/* Заменить слепящий белый цвет при открытии вкладки */ .tabbrowser-tabbox, .browserStack, .browserContainer, #content, #appcontent, browser { -moz-appearance: none !important; background: #5E5646 !important; background-color: #5E5646 !important; } .. может, чего лишее тут из селекторов, будем посмотреть. Пока что, вродеб, то что нужно.... но есть что-то ещё, еще какой-то элемент видать, мелькает уже серым перед показом самой страницы. Это уже нааамного лучше. |
drage2 > 29-01-2018 21:26:04 |
Есть кнопка "передать видео" ....Но т.к в Sm2.53 нет интеграции с IDM ?, пишу : |
mokujin > 29-01-2018 21:32:44 |
drage2 пишет
где? что? как?! |
selevo > 31-01-2018 16:24:46 |
хочу кнопку сохранения страницы в формате 7zip |
bunda1 > 31-01-2018 19:42:27 |
selevo пишет
Нет. |
Ultima2m > 03-02-2018 05:11:38 |
После обновления 58 код скрытый текст Выделить код Код:// Дополнительные возможности для значка идентификации сайта в строке адреса ............... (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... e.preventDefault(); e.stopPropagation(); var doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 2: // ПКМ копирует текущий адрес .... identBox.oncontextmenu = function() { return false; } if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } }; gClipboard.write(decodeURIComponent( content.location )); // значок идентификации сайта мигает.... document.getElementById("identity-box").setAttribute("style", "background: orange;"); setTimeout(function() { document.getElementById("identity-box").removeAttribute("style") }, 500); } } , true, identBox ); })(); конфликтует с функцией вызова "информации о странице" - она вызывается один раз, а потом нужна перезагрузка И еще к теме. Как сделать, чтобы сразу открывалось старое окно "информации о странице", подробное, а не эта новая красота? |
mokujin > 03-02-2018 15:05:58 |
Ultima2m скрытый текст Выделить код Код:// ---02------ Копир адресс ПКМ по значку идентификации сайта в строке адреса ---2018------------ (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... identBox.onclick = function() { return false; } let doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 2: // ПКМ копирует текущий адрес .... if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } break; } else { identBox.oncontextmenu = function() { return false; } }; gClipboard.write(decodeURIComponent( content.location )); // значок идентификации сайта мигает identBox.setAttribute("style", "background:#0080FF;"); setTimeout(function() { identBox.removeAttribute("style") }, 500); } } , true, identBox ); })(); чего и эта не пашет? |
Ultima2m > 03-02-2018 15:22:28 |
mokujin пишет
Кнопка работает. Не работает ЛКМ на identity-box - не открывает вкладку 'Разрешения'. |
mokujin > 03-02-2018 16:02:34 |
а, дык нету у мну 58-й и я хз. что там вызываеццо теперь. возьми "Инспектор" by Infocatcher и посмотри что за панель\комманда вызываеццо по клику. |
Ultima2m > 03-02-2018 16:26:50 |
mokujin пишет
скрытый текст Выделить код Код:box [44×20] namespaceURI: XUL margin: 0 4px 0 0 border: 0 padding: 0 4px id = identity-box class = unknownIdentity mixedDisplayContent align = center aria-label = Просмотреть информацию о сайте onclick = gIdentityHandler.handleIdentityButtonEvent(event); ondragstart = gIdentityHandler.onDragStart(event); onkeypress = gIdentityHandler.handleIdentityButtonEvent(event); role = button |
mokujin > 03-02-2018 18:01:19 |
ну во-первых , это не то. это тот же значек идентиф. зачем оно? там наверно окошко вылазит, как раньше и в нем кнопка, типа "Подробнее..." или что там. Вот её и глянь, что она запускает. |
Ultima2m > 03-02-2018 19:44:49 |
mokujin пишет
Там только это есть Выделить код Код:switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... identBox.onclick = function() { return false; } let doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab ===== и оно РАБОТАЕТ |
mokujin > 03-02-2018 20:22:37 |
ну норм. чёгоб, ему не работать, вставил пральную команду и всё Выделить код Код:switch (e.button) { case 0: // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' .... identBox.onclick = function() { return false; } gIdentityHandler.handleMoreInfoClick(event); break; } 03-02-2018 20:24:27 03-02-2018 20:30:02 |
Ultima2m > 04-02-2018 08:17:28 |
mokujin пишет
Спасибо. Твой код лучше работает. |
drage2 > 06-02-2018 14:39:39 |
Вопрос, есть аддон https://addons.mozilla.org/ru/firefox/addon/cpd/?src=api , одним кликом чистит приват. данные.Но нет "горячей клавиши" , а на панели уже кнопок,как грязи... Хочу на этот "Клик" - кнопку, ну, и назначить,типа, F1.... |
difabor > 06-02-2018 21:37:34 |
drage2 пишет
У этого аддона, как я понял, есть кнопка (иконка). У неё должен быть ИД. Тогда, если знать этот ИД, то можно сымитировать и клик на ней. Выделить код Код:addEventListener('keydown',(e)=> {if (!e.ctrlKey && !e.altKey && !e.shiftKey && (e.keyCode==181)) {//Это код F1 var btn = document.getElementById("buttonID"); btn.dispatchEvent(new MouseEvent("click", {//Здесь может быть вместо click -> command etc., надо пробовать bubbles: true, cancelable: true, view: window, detail: 1, ctrlKey: true, altKey: false, shiftKey: false, metaKey: false, button: 0 })); } },0,window); Попробуйте, может и получится. Главное - узнать ИД Вашей кнопки. |
drage2 > 07-02-2018 15:09:15 |
difabor |
mokujin > 07-02-2018 21:04:22 |
расширение вообще не нужно |
drage2 > 07-02-2018 22:28:19 |
mokujin пишет
Ни и на черта это? Надо без окна чистить...Типа такого: А, надо "настройки сайтов"- очистить , код??? // очистить кэш .... |
mokujin > 08-02-2018 01:19:00 |
Его воообще не надо чистить, по хорошоему. А на каждую одну операцию понаписать гор. клавиши можно, но это тупо. Есть панель где все в одном месте. |
drage2 > 08-02-2018 12:44:40 |
mokujin |
mokujin > 08-02-2018 15:21:01 |
а, ну если в кнопку-меню, то да. норм. вариант. Я больше гор. клавишами пользуюсь, хотя и менюшек наклепал тоже несколько. Но для служебных ф-ций гор. клавиши всё же пользую. drage2 пишет
|
drage2 > 08-02-2018 16:04:29 |
mokujin пишет
Не то....Надо Site.Setting - или clear или remove или delete/////А кнопка одна - F1 ?, к примеру, в ней все коды и одна notification..... cps.removeAllDomains(null); |
drage2 > 13-02-2018 11:12:16 |
Как загнать вторую кнопку в адрес в SM (2.53/gecko56) Использую код, типа: |
mssign > 13-02-2018 15:19:14 |
Открыть видео в PotPlayerMini |
bunda1 > 13-02-2018 19:54:51 |
drage2 пишет
Пример: Выделить код Код:var urlbar = document.getElementById("urlbar-icons"); var button1 = document.getElementById("custombuttons-button17"); urlbar.insertBefore(button1, urlbar.lastChild); var button2 = document.getElementById("custombuttons-button20"); urlbar.insertBefore(button2, urlbar.lastChild); |
bunda1 > 13-02-2018 20:52:51 |
mssign пишет
Исправил кнопку Открыть видео в PotPlayerMini для соместимости с FF57-58. |
drage2 > 14-02-2018 01:11:31 |
bunda1 bunda1 пишет
За SM -все ОК!.....Кнопка видео тоже,но есть один минус,плеер запускается если видео не обнаружено. У меня другая, там notification, если нет захвата, но ПКМ , как меню,и только потом в плейлист....Пытаюсь скрестить, ....но пока лажа выходит. |
mokujin > 14-02-2018 17:49:16 |
Подскажите с кнопкой, чтоб ставила путь к файлу proxy.pac из профиля. Я ту часть, что в настрйки пишет вродеб сделал... но хз. как c файлами работать, проверить на существование. Выделить код Код:const prof = Services.dirsvc.get('ProfD', Ci.nsIFile); if exist ProfD\\proxy.pac { // вот это как правильно будет? let proxypath = "file:///" + prof.path + "\\proxy.pac"; let pp = proxypath.replace(/(\\)+/g,'/'); cbu.setPrefs( "network.proxy.autoconfig_url", pp ); }; |
bunda1 > 14-02-2018 20:28:51 |
mokujin Выделить код Код:var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\prefs.js"); if ( file.exists() ) { alert(file.path); }; |
mokujin > 14-02-2018 20:40:33 |
Понял. Благодарю. |
drage2 > 15-02-2018 12:41:57 |
Кнопка Memory бесполезна при многопроцессорном режиме...Поэтому вопрос снят... |
Ultima2m > 17-02-2018 19:40:33 |
Кто-нибудь знает кнопку для быстрого переключения дополнений? |
bunda1 > 17-02-2018 20:21:22 |
Ultima2m пишет
|
Coroner > 17-02-2018 23:42:25 |
Открыть видео в PotPlayerMini( Firefox24+ ), от 13.02.2018. Пара ссылок, наугад взятых: |
bunda1 > 17-02-2018 23:51:37 |
Coroner пишет У меня откривает на FF58 17-02-2018 23:53:27 |
mokujin > 18-02-2018 00:26:59 |
Coroner ха, а там какая-то муть |
Coroner > 18-02-2018 00:48:14 |
bunda1 пишет
Спасибо за быстрый ответ! 18-02-2018 00:50:41 mokujin пишет
Может чего на ютюбе изменили? |
drage2 > 18-02-2018 13:27:42 |
Coroner пишет
Еще как открывается..... |
Coroner > 18-02-2018 13:36:46 |
drage2 пишет
Меня терзают смутные сомнения... Открывается: Не открывается: Ладно, простите за офтоп, тут не с кнопкой проблемы... |
drage2 > 18-02-2018 22:45:37 |
Донецк может и Ростовской области быть, но мысль правильная, "не в кнопке дело". |
Coroner > 19-02-2018 00:05:14 |
drage2 пишет
Да ну, какой я продвинутый... Хотя за комплимент спасибо, приятно. drage2 пишет
Спасибо за подсказку. Она бесценна. drage2 пишет
Он где угодно может быть, но никак не может быть моим местонахождением, о чём я и написал. По кнопке: нельзя ли ограничить её применение лишь на сайтах с видео и на ссылках на видео? |
drage2 > 19-02-2018 01:57:41 |
Coroner пишет
У меня так и есть.Плеер не запускается,если нет захвата видео. |
bunda1 > 19-02-2018 10:09:08 |
Coroner пишет
Не знаю как это сделать |
drage2 > 19-02-2018 14:15:26 |
Видео в PotPlayer, але в MPC-Be ...да в какой надо.....Отрихтовал меню !!! Выделить код Код:/*Initialization Code*/ var path = "C:\\PotPlayer\\PotPlayer.exe"; var addToPlaylistKey = "/add"; var sysPlayerName = "PotPlayer"; var openIn = "Откыть в "+sysPlayerName; var videoMoved = "Видео перенесено в "+sysPlayerName; var noFound = "Не найдено видео на странице, доступное для переноса в "+sysPlayerName; var Menu_n_TooltipTxts = [{ label: "Действие кнопки: Перенести видео со страницы в "+sysPlayerName, radio: '', value: 'videotoplayer', tooltipTxt: 'Перенести видео со страницы в '+sysPlayerName }, { label: "Действие кнопки: Перенести видео в плейлист "+sysPlayerName+'`а', radio: '', value: 'videotoplaylist', tooltipTxt: 'Перенести видео со страницы в плейлист '+sysPlayerName+'`а' }, ]; var YoutubeID = /(?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})(?:\W|$)/; var imgFlashMinimize = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAABu6AAAbugE6tOQgAAACXUlEQVR42o2SXUiTYRTHf8+a+YWV2jQ3moTTVmm1bmIZUVGiXnQrdFcQFN4YhHhpIIpBSFd9eNWlF0U2CsW+SfoAwUQimIZCmDCnY9srbXN7et733dZcEv1vzvOc7/M/h6lUCv9el6SgoEDOjoxIZpwuuVjtlEiFe1U1Urx21hECWQScfPsSoVuEEHiUwrurAjHrdFGoItSflKaRDaltOc+PR48xkjkcDhlfXZPDDqcUmDo6yyv1KISqazyCSl+MQK8moxr7v05TXF2Fdd7MT8yQko1olIuBZbS5OZ62XzDz5UL3ul3XIG9W2GTfHru0kgc1M/PBFb0XbE0exJeBW4i7D4w6xWY1CtWgsWAQl7baYzSpN2g4pJvcbq/hwId3zJxrw6qM+uAGfqm3XFujbdHPuMtNMp7AGspOoEsoPXoEmZI0P/fhO3UW0d3dLQcHBw2H+vp6/H4/D+saSMRiJlHp0bK4c7AREY4QSW6YDna7XS4tLWGxWEgmk7SrCfapNWXwVwa1A5F5uzuvmTxYPn2maGqaoCDrXJpHoE5BKhwmpSjYcfUKJd7j/LzRg/iYXqaOEJurleR+tHUOv5lgZ+Mhgr5nfO8bQFteRoypA8ognJcgA7ka4vSYj6rmEybf6+u8OtNCdGEBMTQ0JPv7+wkEApv23ZlI0FRuIx6J0OYbpba1hW/3h3nfdZ2iikqkddvWJOXC7XajrpnxJ6P4Ll1mbuIFhWVl5Ib8M4GOY2otjUo6dtv+KEV2EVj5D6zoBxiPbWkT6Qa27KKjo4PJyUlaIxGRb/N0deHt7eU3M38VXBCKUs0AAAAASUVORK5CYII="; var imgFlashMaximize = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAABu6AAAbugE6tOQgAAACd0lEQVR42nVTW0iTYRh+vh2aGlZq09xoEttslVbrJsyIihLnRbdCdwVBsZsFQ7w0EGVhjK46eNWlF0U2CsXOJB1AMJEINkWhrcHcgW3/aJvb2/f9/zbnsufm+7/38Lzv+7zfj4ViEf6DFoJWq6XlqSnCkslC620mAnE8bG0n9s5kRgKgOgBnP7wBEx7GGOzc0LOvGWzZZIGOZ/A7ipKESkpH32X8evoMMpnRaKRcLE6TRhMxKDY4m1pEFhivK39Eub0eDKIapSUc/rGI+rZWaFYUfmTlk7CZTuNqJAwpEMCLgSsKXzVE1D1zJ91p1tPoAQNpUAM+M1aiG6IX6LvtYN/H74I9eCzXqVeqQccHzUajsEixYblJ0aAcUGpyl6EdRz5/xNIlBzTcKQaX8Yd/UzwOx7ofsxYbCrk8NInKBOIEdp88ASoSel/54Dt3EWxoaIg8Ho8cYLVa4ff78cTciXw2qwhVkhLBYFA23D/aBZZMIVXYVAIMBgOFQiGoVCoUCgUM8AkO8TWVITOo1WrZKcB3wMpOm/OWooPq6zfULSwiykrdimZrBBQSFJNJFLkEe27eQEPPafx2D4N9KS1TIFHSq4yG6ouUwfH3c9jbdQxR30usjo5DCofBZvgDKiNZQ1AGxRI4P+NDa+8ZRe9MBm8v9CG9tgbm9XppbGwMkUhk276d+Ty6m/TIpVJw+KbR0d+Hn48m8cl1G3XNLSCNeksk/Ac2mw1iBbPPp+G7dh2BudfQNTaiOmUbgfhbavlOcVsXP4379VtGVlkE/nmubrcbExMT22wb4gHmsjt2yUoVdxxjcHAQ8/Pz6E+lWK3P7nKhZ2QEfwESYiFcNfq6ywAAAABJRU5ErkJggg=="; var imgFlashToPlayer = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAADn0lEQVR42j2Se1CUZRTGn29v6Mq6CwQUlxX2gq4IyBhk8keQ5ow4hZrSjWGSTDA10z+a7jGNjV3QRctWF5HAJAGBsYmYcKKcidDhLlqQRGhLODuuCLIQLrtP726XM9837/e97znnPef3HDiiDTy2+W2gdvFSntKGEa+/VEWxC/BfQ3eMkcPqYA7p9TTW8Z+T14xpzH73PHOslcAfIkta+RScEVH+b8jGFQpcyJnluo8HeVURDDRYkjgxcp0Vai1zW0TSXrudR9RK5uz9isn9vcA1ccvt0DBmVE6zKu0pGs6SGw50YlSrwTW9GWiNMfBbVTA9c3Nsz1rLlqg4tipUrPmTXFPrIUpEZVNOJ7/JfpzH52v4ebSetoRULqq+x1dz3yC2Coe9CokpFW5azpB5m97i8p5urOjowIrOTtGHqGFSp2NYE2mq9UH0ihsxJvh5BPryiY2m9KcxnHcfdDdHGV9P/B4WC7dwnZbJgF5R5K8Lwzjy5jv0Xr3Mj9bupFFctaX4BwyJc6lVb6TaZELi8aNoW5YKWWQEErIfxfr0o0hcrJRQqV7IqbGxAPq6+AR+qTewfdfLvDXjY9Thu5Q/uyqjOKWoCIfkcsiDNQiauAlbjhVNNR0wB7VLmHG5WJqczpLIB3ggbgmN58g96/Yxpa8n0Kr0guAgs6zCQP5hYM4LHbqkkScfgco9IyqUIA3HmqgUIs2fdQtdkrB7dyOix69jMGYpFB6f2J+UNlwoR17zQSi9HrgW6OD3V4nXKxBJAwKkH5/c54VbEw6nKhTGwZ8QYo6BI+FBWFML8KMlC37fBTN/Ib/pQ2w6/yn8fKfVWqBNiNsRZ+aliGi2z9PyRok1QMQ7O0vHsTK2CYw9Kjm/tjzE3A8u0lw1S1M1sdJ+G3ueswLnTEtYHxrJxuAQ/nayMhDs6uzmd5lreFYXzoYoPRtj43lGDGSXwOu3MbePzzT7uLxSTFO5WkObAHVJKBkI7rvMK4dK2Sn+q4UmpyKieFqsXyiV7CvcxgYnmVhHPvxeP3cUlBEXraW843AEgvttNpaKZJ+E38/PohfRHhrCCo2a+554hYm1c0yxu7h9y0EWFr2PjJbvYRn6Gah/sZBlqx9jsQjcnpnPlSfGuX+egoWrtzLptJvJFRN8fuN+7ti8E1n1jVg2cAWp3V3/j7O0S6slJRl8Qhbl3Tv4ZVs5hjYWwNBch9i2GsmRtx6juZkIujUJ+T2PX4zA85/9Da+Q/IlOIKaJAAAAAElFTkSuQmCC"; var imgHTML5Minimize = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAACgUlEQVR42n1TXUiTYRR+vrn5ky7LLMdskLHcREcUFSViOJPCahSsRYKyLPu5yLqyIOiH0qKEBVnoTUGXUVlEF10ECY1d7SIlMjIT+dqmYmNrptvcd3rf1znNZQ988HHOec55zs8LMMiOrQSNRkM/rpwkyAdLKdS6gySaAwS41d/TTtO99whJM1kLc0i2lZLEvEBOHml1aiA2DRWnZD14i8yahjk+pxQXF1Po3DYKNptp3kaBI6X0bNf6d1KyinBkPXIj0e9Bwdp8wY72uqDGIsQ6z0PKUCNelI3s47egyF+S+RaBZ4qPfKLInUaabDJTWgDvmekHqy+ySkP1RnwOR91bCrWVyMwWRtETLzkZuia9rjJgMBzrbthbc1rtvAQKjKZEBttPQc2cGPwVHSD5G6PMgIYGkAjnigAlTpBOlKziJaqfVhr6VJadwpHPu2i8Dr9zN9DW1pYSaDQaSbZvpqmHrRTr7yO+hbQuxrxumn7TQ6EzFvLWbRyFXq8XvatUKhHQWbZajPn7/k0zRw0rm9IyMCeYE8y5MGJPbYnYx+Pt+he8ru/GWZqYmPjrW4qp7gs0fsxEYmKD4SgMKzRiHHW6vMMkD4vEifcvMfvkrvgP6zKwFMps8uYumtcIBTa91s4VyDYTjQf8yypQ4lEKtZSR7xA7SZfLRR0dHWBBqcxs37hcXYH6uj3Qu18l1zunQHvfCyUwjMhNOyJjSvo1LYbJZCKr1Urjfh8ps7GUPfrhOf10msWkpYXH82+Ul5ejmfxoqdLNPxEk2InEfxM+js14/6uAgz+/roqCEU/thq+3Leu69hXlHshTS7mpCsFg8OpyZIfDIR4kI4IRwYhpCv8AX0MOITtZcjYAAAAASUVORK5CYII="; var imgHTML5Maximize = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAACkElEQVR42nVTXUiTYRR+vrn5ky7LLMdskLHcZI4oKkrEcCaFlRTYIkFZlv1cZIFgQdAPpUUJC7LQm4Iuo7KILrwIEhpe7SIlMjIT+XLTYWNr5n7cd3rf1zmn4gODfeec55zn/LwAg2zfSdBoNPT7xlmCfLSYAi17SKJ5QIBbPT3tNNv7iJAwky0/i+TaYpKYF8jKIa1ODURnoeKUjCd9SK+sn+dzSmFhIQUu7SJ/k5kWbOQ9UUyv9m3+KCWqCEfGMxfigwPI25gr2JFeJ9RIQbTzMqQ0NWIFmcg8fQ+K/D2RLwU8U2zsK4UeNNB0o5lWBPCemX6w+iKrNFJjxLdgxLUjX1uG9ExhFD3xktOBW9L7cgOGg9Hu+oOV59WOayDveFKkv/0c1MyJ4b+RIZJ/MkoYNDKEeDBbBCgxgnSmaB0vUfGyzNCvsu4VjlzeRcNteBz7gba2tqRAo9FIct12mnnaQtHBfuJbEF3o9fpk0KTbRbMfeihwwUru6q3j4E7eu0qlEgGdJevFmH8d3hY+aVjbKDIsOBM7AHOCORdHPFBVJPbxfLf+Da87ceci+Xy+Jb/lmOm+QlOnTCQmNhyMwLBGI8ZRrcs5TvKoSBz/9BZzLx6K/0FdGpZDmUvc3FXzBqGgVq+t4wrkWhNNeT2rKlBiEQo0l9DEMXaSTqeTOjo6wIKSmdm+cb2iFDXVB6B3vUusd16B9rEbincUobt1CE0qK68pFSaTiWw2G015JkiZiybtkc+v6Y/DLCYtLT4edlmShJRPAYvFgibyoLlct/BEEGcnEvtH+DIZdmP5Lbe2ti5RwZ9fV2ne2EDVlh/3rZu6DhVkH8lRS9nJCn6//+ZqLdjtdvEgGRGMCEZcsYn/nFgG2tp3ugwAAAAASUVORK5CYII="; var imgHTML5ToPlayer = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAACvUlEQVR42m2TW0hUURSG/6MDGaMjRBc17SHSSTO6qJUlvkjkJcsgdBISKZV6SHwosh6MLj4VkhiCFRiGRJpodhEkL5URRVOmaE2omc59kBrTnBmds9p7z6UpWrDOPmefb6+1zr/WkfS5cQRACmIXRDa/JtwYJBrL3gAYzxcRN3DG3NNJrqHndOUN29DuXT9tulNDpjnihyGIygEitoKfgM1mE3jTJ08IGM4W0nxtGdlL42niBw+al0CLkyOU0eYleAx9/nba2kxkL99BKffYemIzHqXFwA/wuKaGalpovy6cAeI4hwVg6XtMhqoSsp9KJlmW6fuxjVTcTfTewgBNjKroa06sk6eo6Cfq/kb0IDVafAJPIXnVwKFCHZ4eBJwFaok/r+3UCSgIwQpgeSja25PQqwcazulomUowwiTDGQ0piitB5imsWBUuNveMpOOtBoJSkH4ccDlAY8NwzyoF0NlailuJOnK5GYA5O9yt9eKF7AhByNGLcDfWozQRyH7oFdtqtZL+8Baary8XOk//JMrqCFDScLqALNpXtPCkgcp6iAYMnpcCaNsd3cuhm8NEaS1ETBMUxKjgA/w6+Gy/RoeSTcDQDDDKvGonkHwhXnzRkoswbnFh17OJPwd4AOPlk6Jfge4zXi9vC+8+L60xJcqfnbtCtETvieju78BS01VxPxsRLFYV81pvspmMUdyuNlALU6c6Fdi2mmktxumAmqxm038r4CYvOsVAGvPi/Ht8OLmSCu9UQP7wElgZiaVLx/+qIKxOC9k8IcqV3Z5K7n4G6gaBI3HsYTIn1iF+nY4mf3aryUgyU8xnzoE2uv/FM7/81wrUQOpOX/cuITwkySdqVr4OXS1qhLEK+ipHcU0LpEUBFbVq6aPFgX0vpjz9/dfCFFJoZoQyt0ZL5Jt92y+izDVKhCokZSAbWMFvQdYd/GD76UUAAAAASUVORK5CYII="; if(!(cbu.getPrefs("CB.videoout.action")) || cbu.getPrefs("CB.videoout.action").length < 9) cbu.setPrefs("CB.videoout.action", "videotoplayer"); var tmp = '', tmpp = '', innerA = '<div style="display:block!important;color:#00ff00!important;width:250px!important;font:bold 16px serif!important;z-index:999!important;opacity:1!important;visibility: visible!important;', innerB = 'left:5px!important;position:absolute!important;height:auto!important;box-sizing:border-box!important;padding:5px!important;margin:5px!important;', stopPl = "javascript:(function(){v=document.getElementById('movie_player');if(v){v.stopVideo()}else{v=document.getElementsByTagName('video');if(v){v[0].src='';try{v[0].load()}catch(e){}};}})();", ytIMGouter = function(ytID) {return '<div width="100%"><br /><a target="_blank" href="https://www.youtube.com/watch?v=' + ytID + '"><img src="https://i.ytimg.com/vi/' + ytID + '/hqdefault.jpg"></a><br />' + innerA + 'background-color:black!important;position:relative!important;bottom:20px!important;"> ' + videoMoved + '</div><br /></div><br />'}, handlWin = function(currentWin) { tmp = ''; var elem = currentWin.document.getElementsByTagName('video'), currLoc = currentWin.location; if(elem.length > 0) { if(currLoc.hostname.indexOf('youtu') != -1 && (tmp = currLoc.toString().match(YoutubeID)) && tmp[1].length == 11) { play(cbu.getPrefs("CB.videoout.action") == "videotoplaylist" ? 'https://www.youtube.com/embed/' + tmp[1] : 'https://www.youtube.com/watch?v=' + tmp[1]); videoMovedbox = currentWin.document.createElement('videoMoved'); videoMovedbox.innerHTML = innerA + innerB + 'top:-15px!important;"><b>' + videoMoved + '</b></div>'; loadURI(stopPl); currentWin.document.getElementById('eow-title').appendChild(videoMovedbox); return true; }; for(i = 0; i < elem.length; i++) { if(((tmp = getSrc(elem[i].parentNode, currLoc)) && tmp.length > 2) || (i == 0 && currentWin.document.body.innerHTML.substring(0, 7) == '<video ' && (tmp = currLoc.toString()))) { videoMovedbox = currentWin.document.createElement('videoMoved'); videoMovedbox.innerHTML = innerA + innerB + 'top:20px!important;background-color:black!important;">' + videoMoved + '</div>'; play(tmp); if(currLoc.hostname == 'www.youtube.com') { elem[i].parentNode.parentNode.appendChild(videoMovedbox); } else { elem[i].parentNode.appendChild(videoMovedbox); }; elem[i].src = ''; try { elem[i].load() } catch(e) {}; return true; } } }; currentWin._elems = currentWin.document.getElementsByTagName('iframe'); if(currentWin._elems.length > 0) { for(currentWin._iCounter = 0; currentWin._iCounter < currentWin._elems.length; currentWin._iCounter++) { if((currentWin._elems[currentWin._iCounter].src.indexOf('youtube.com') > -1) && (tmp = currentWin._elems[currentWin._iCounter].src.match(YoutubeID)) && (tmp[1].length == 11)) { play(cbu.getPrefs("CB.videoout.action") == "videotoplaylist" ? 'https://www.youtube.com/embed/' + tmp[1] : 'https://www.youtube.com/watch?v=' + tmp[1]); currentWin._elems[currentWin._iCounter].outerHTML = ytIMGouter(tmp[1]); return true; }; if(currentWin._elems[currentWin._iCounter].clientWidth > 80 && currentWin._elems[currentWin._iCounter].clientHeight > 40 && handlWin(currentWin._elems[currentWin._iCounter].contentWindow))return true; } }; elem = currentWin.document.getElementsByTagName('object'); currLoc = currentWin.location; if(elem.length == 0) { elem = currentWin.document.getElementsByTagName('embed') }; if(elem.length > 0) { for(i = 0; i < elem.length; i++) { if(elem[i].innerHTML.indexOf('youtu') != -1 && (tmp = elem[i].innerHTML.match(YoutubeID)) && tmp[1].length == 11) { play(cbu.getPrefs("CB.videoout.action") == "videotoplaylist" ? 'https://www.youtube.com/embed/' + tmp[1] : 'https://www.youtube.com/watch?v=' + tmp[1]); elem[i].outerHTML = ytIMGouter(tmp[1]); return true; } else { if(elem[i].clientWidth > 80 && elem[i].clientHeight > 40) { if(((tmp = getSrc(elem[i].parentNode, currLoc)) || (tmp = getLink(elem[i], currLoc))) && tmp.length > 2) { play(tmp); elem[i].outerHTML = innerA + 'background-color:black!important;bottom:20px!important;"> ' + videoMoved + '</div>'; return true; }; }; } }; }; return false; }; this.onclick = this.oncontextmenu = e => { if(e.button == 0) { if(cbu.getPrefs("CB.videoout.action").substring(0,6) == "videom"){ elem = content.document.getElementsByTagName('object'); if(elem.length == 0) { elem = content.document.getElementsByTagName('embed') }; resizeObjs(elem); resizeObjs(content.document.getElementsByTagName('iframe')); resizeObjs(content.document.getElementsByTagName('video')); } else { if(!handlWin(content))custombuttons.alertSlide1(noFound); } }; if(e.button == 1) gShowPopup(self); if(e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) { e.preventDefault(); menu.showPopup(self, -1, -1, "popup", "bottomleft", "topleft"); } }; custombuttons.alertSlide1 = function(sTitle) { var as = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); as.showAlertNotification('chrome://global/skin/icons/information-16.png', "", sTitle, false, "", null); setTimeout(() => as.closeAlert(), 999); }; function resizeObjs(objs) { if(!objs) return; LEVELS = 3; dir = (cbu.getPrefs("CB.videoout.action") == "videomaximize") ? 1 : -1; for(i = 0; i < objs.length; i++) { var Width = new Array(LEVELS) var Height = new Array(LEVELS) Width[0] = objs[i].clientWidth; Height[0] = objs[i].clientHeight; if((Width[0] > (-20 * dir + 100)) && (Height[0] > (-20 * dir + 60))) { obj = objs[i]; for(var k = 1; ((k < LEVELS) && (obj.parentNode)); k++) { obj = obj.parentNode Width[k] = obj.clientWidth; Height[k] = obj.clientHeight; }; Width[0] = Width[0] + dir * (Width[0] / 5 | 0); Height[0] = Height[0] + dir * (Height[0] / 5 | 0); objs[i].style.width = Width[0] + "px"; objs[i].width = Width[0]; objs[i].style.height = Height[0] + "px"; objs[i].height = Height[0]; obj = objs[i]; for(var k = 1; ((k < LEVELS) && !(objs[i].tagName == 'IFRAME') && (obj.parentNode) && (Width[k]) && (Height[k]) && (Width[k] > (-20 * dir + 100)) && (Height[k] > (-20 * dir + 60))); k++) { obj = obj.parentNode Width[k] = Width[k] + dir * (Width[k] / 5 | 0); Height[k] = Height[k] + dir * (Height[k] / 5 | 0); obj.style.width = Width[k] + "px"; obj.width = Width[k]; obj.style.height = Height[k] + "px"; obj.height = Height[k]; } } }; }; function restProtHost(lnkR, curLoc) { if(lnkR.length==0)return ''; let tr = lnkR.replace(/^:\/\//, curLoc.protocol + "//"); if(!tr.match(/^https?:\/\//i)){ lnkR = tr.replace(/^\/+/, ''); if(lnkR.split('/')[0].split('?')[0].split('#')[0].toLowerCase().match(/^(?:[-a-z\d]+\.)+[a-z\d]{2,6}$/)){ tr = curLoc.protocol + '//' + lnkR; }else{ tr = curLoc.protocol + '//' + curLoc.host + "/" + lnkR; } }; return tr; }; function getSrc(vobj, currentLoc) { var t = '', tt = ''; if((((t = vobj.innerHTML.match(/<video.*?\ssrc=(?:(?:'([^']*)')|(?:"([^"]*)")|([^\s]*))/i)) && (t) && (tt = t[1] || t[2] || t[3]) && tt.indexOf('blob:') == -1 ) || ((t = vobj.innerHTML.match(/<source.*?\ssrc=(?:(?:'([^']*)')|(?:"([^"]*)")|([^\s]*)).*?\stype=['"]?video\//i)) && (t) && (tt = t[1] || t[2] || t[3]))) && tt.length > 2 && tt.indexOf('blob:') == -1 ) { if(tt.indexOf(".mp4/?") == -1) { tt = tt.replace(/&/g, "&") }; t = restProtHost(tt, currentLoc); return t; }; return ''; }; function getLink(obj, curLocation) { if(!obj || !obj.tagName) return ''; var flashvars = '', // src = '', q = obj.tagName.toLowerCase(); var getParam = function(e, n) { var v = '', r = new RegExp('^(' + n + ')$', 'i'), param = e.getElementsByTagName('param'); for(var igp = 0, p; p = param[igp]; igp++) { if(p.hasAttribute('name') && p.getAttribute('name').match(r)) { v = p.getAttribute('value'); break }; }; return v; }; if(q == 'object') { // src = obj.getAttribute('data') || obj.getAttribute('src') || getParam(obj, 'movie|data|src|code|filename|url') || (obj.getElementsByTagName('embed').length > 0 ? obj.getElementsByTagName('embed')[0].getAttribute('src') : ''); flashvars = getParam(obj, 'flashvars'); } else if(q == 'embed') { // src = obj.getAttribute('src'); flashvars = obj.getAttribute('flashvars'); } else return ''; if(!flashvars) return ''; // src = restProtHost(src, curLocation); var restPath = function(f, s) { return(f.substring(0, 4) == 'http') ? f : s.replace(/[#?].*$/, '').replace(/[^\/]*$/, f) }; function videoLinkExtract(fl) { //alert(fl); var linkArr = [], outLinks = [], jj = 0, lba = '', lbb = '', decodeURL = function(s) { try { return decodeURIComponent(s) } catch(e) { return unescape(s) } }; for(var ij = 0; ij < 3; ij++) { lba = lba + String.fromCharCode(parseInt((Math.random() * 15 + 1) + '', 10)); lbb = lbb + String.fromCharCode(parseInt((Math.random() * 15 + 16) + '', 10)); }; function pushWithMerit(lnk) { var merit = -11; if(lnk.match(/^https?:\/\//i)) merit = merit + 40; if(outLinks.length == 0) merit = merit + 1; if(lnk.match(/^\//)) merit = merit + 7; if(lnk.match(/^\/\//)) merit = merit + 30; if(lnk.match(/240p([^a-z]|$)/i)) merit = merit + 1; if(lnk.match(/[^a-z]240([^a-z0-9]|$)/i)) merit = merit + 1; if(lnk.match(/360p([^a-z]|$)/i)) merit = merit + 3; if(lnk.match(/[^a-z]360([^a-z0-9]|$)/i)) merit = merit + 3; if(lnk.match(/480p([^a-z]|$)/i)) merit = merit + 5; if(lnk.match(/[^a-z]480([^a-z0-9]|$)/i)) merit = merit + 5; if(lnk.match(/720p([^a-z]|$)/i)) merit = merit + 7; if(lnk.match(/[^a-z]720([^a-z0-9]|$)/i)) merit = merit + 7; if(lnk.match(/\.mp4([^a-z]|$)/i)) merit = merit + 8; if(lnk.match(/_hd([^a-z]|$)/i)) merit = merit + 6; if(lnk.match(/\.(jpg|xml)([^a-z]|$)/i)) merit = merit - 40; if(merit > 0) outLinks.push(merit + lba + lnk); Services.console.logStringMessage('merit:'+merit+' lnk->'+lnk); }; linkArr.push(fl); while(linkArr.length > jj && jj < 30) { var testPaths = []; testPaths = linkArr[jj].split(/(\.(?:flv|mp4|m3u8))/i); if(testPaths[testPaths.length - 1] == '') testPaths.pop(); for(k = 1; k < testPaths.length; k = k + 2) { if(testPaths[k - 1].indexOf(lba) > -1) { pref = testPaths[k - 1]; } else { var testAboutDom = testPaths[k - 1].toLowerCase().split(/(https?:\/\/)/); if(testAboutDom[testAboutDom.length - 1]=='') testAboutDom.pop(); var pTest = testAboutDom[testAboutDom.length - 1].split(/(\?[^\?]*?&)/); if(pTest.length>2){ pTest.pop(); pTest.pop(); }; testAboutDom[testAboutDom.length - 1] = pTest.join(''); pref = testPaths[k - 1].substring(testAboutDom.join('').lastIndexOf("&") + 1); }; t2 = pref.lastIndexOf(lbb); if(t2 > -1) { pref = pref.substring(t2 + 3); } else { t2 = pref.lastIndexOf('{"'); if(t2 > -1) pref = pref.substring(t2 + 2); t2 = pref.lastIndexOf('["'); if(t2 > -1) pref = pref.substring(t2 + 2); t2 = pref.lastIndexOf(',"'); if(t2 > -1) pref = pref.substring(t2 + 2); t2 = pref.toLowerCase().lastIndexOf('"http://'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf('"https://'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf(',http://'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf(',https://'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf(';http'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf('*https://'); if(t2 > -1) pref = pref.substring(t2 + 1); t2 = pref.toLowerCase().lastIndexOf(' or '); if(t2 > -1) pref = pref.substring(t2 + 4); pref = pref.substring(pref.split('/')[0].toLowerCase().split('%2f')[0].lastIndexOf('=') + 1); } if(pref.length > 0) { if(pref.split('?')[0].toLowerCase().match(/%[2-3][0-9a-f]/)) { t2 = pref.indexOf('"') if(t2 > -1) pref = pref.substring(t2 + 1); suff = testPaths[k + 1] ? testPaths[k + 1].split('&')[0].split('"')[0].split(';')[0].split(/,http/i)[0] : ''; if((suff != testPaths[k + 1]) || (testPaths.length < k + 3)) { if(testPaths.length > k + 1) { testPaths[k + 1] = ((pref == testPaths[k - 1]) ? '' : '&') + testPaths[k + 1].substr(suff.length) }; t2 = pref.lastIndexOf(lba); if(t2 > -1) pref = pref.substring(t2 + 3) linkArr.push(decodeURL(pref + testPaths[k] + suff)); } else { testPaths[k + 1] = (pref == testPaths[k - 1] ? '' : lbb) + pref + testPaths[k] + suff } } else { suff = testPaths[k + 1] ? testPaths[k + 1].split(';')[0].split('"]')[0].split('"}')[0].split('",')[0].split(/,https?:\/\//i)[0].split('*https://')[0].split(' or ')[0] : ''; t2 = suff.indexOf('&'); if((t2 > -1) && (pref != testPaths[k - 1])) { if(t2 == 0) suff = ''; if(suff.charAt(0) != '?') suff = suff.split(/(&[^&]+=https?:\/\/)/i)[0]; }; if((suff != testPaths[k + 1]) || (testPaths.length < k + 3)) { if(testPaths.length > k + 1) { testPaths[k + 1] = ((pref == testPaths[k - 1]) ? '' : '&') + testPaths[k + 1].substr(suff.length) }; t2 = pref.lastIndexOf(lba); if(t2 > -1) pref = pref.substring(t2 + 3); pushWithMerit(pref + testPaths[k] + suff); } else { testPaths[k + 1] = lba + (pref == testPaths[k - 1] ? '' : lbb) + pref + testPaths[k] + suff } } } }; jj = jj + 1; }; if(outLinks.length == 0) return ''; function srt(a, b) { a = parseInt(a.substr(0, a.indexOf(lba)), 10); b = parseInt(b.substr(0, b.indexOf(lba)), 10); if(a < b) return 1; if(a > b) return -1; return 0 }; outLinks.sort(srt); outLinks[0] = outLinks[0].substr(outLinks[0].indexOf(lba) + 3) if(outLinks[0].indexOf('_hq.mp4/?time=') > 0) outLinks[0] = outLinks[0].replace(/&/g, '&'); return outLinks[0]; }; ol = videoLinkExtract(flashvars); if(!ol) return ''; // ol = ol.replace(/^:?\/\//, curLocation.protocol + "//"); // return restPath(ol, src); return restProtHost(ol, curLocation); }; var fflag = false; AddonManager.getAddonsByTypes(["plugin"], function (addons) { addons.forEach(function (addon) { if (addon.name == "Shockwave Flash") { if (addon.userDisabled == false) { addon.userDisabled = false; self.image = cbu.getPrefs("CB.videoout.action").substring(0,9) == "videotopl" ? imgFlashToPlayer : (cbu.getPrefs("CB.videoout.action") == "videominimize" ? imgFlashMinimize : imgFlashMaximize ); fflag = true; } else addon.userDisabled = true; } }); }); if(!fflag){ self.image = cbu.getPrefs("CB.videoout.action").substring(0,9) == "videotopl" ? imgHTML5ToPlayer : (cbu.getPrefs("CB.videoout.action") == "videominimize" ? imgHTML5Minimize : imgHTML5Maximize ); }; function toggleFlash() { var fflag = false; AddonManager.getAddonsByTypes(["plugin"], function(addons) { addons.some(function(addon) { if(addon.name == "Shockwave Flash") { if(addon.userDisabled == false || fflag) { addon.userDisabled = true; if(!fflag){ self.image = cbu.getPrefs("CB.videoout.action").substring(0,9) == "videotopl" ? imgHTML5ToPlayer : (cbu.getPrefs("CB.videoout.action") == "videominimize" ? imgHTML5Minimize : imgHTML5Maximize ); setTimeout(() => self.getElementsByTagName('menuitem')[0].setAttribute('checked', false), 10); BrowserReload(); fflag = true; }; } else { addon.userDisabled = false; self.image = cbu.getPrefs("CB.videoout.action").substring(0,9) == "videotopl" ? imgFlashToPlayer : (cbu.getPrefs("CB.videoout.action") == "videominimize" ? imgFlashMinimize : imgFlashMaximize ); setTimeout(() => self.getElementsByTagName('menuitem')[0].setAttribute('checked', true), 10); BrowserReload(); return true; } }; return false; }); }); } var menu = self.appendChild(document.createElement("menupopup")); self.image = "moz-icon://file://" + path; var playerName = path.split("\\").pop().replace(".exe",""); self.label = "Открыть видео в " +sysPlayerName; setTimeout(() => { Menu_n_TooltipTxts.forEach((m) => { if("separator" in m) { menu.appendChild(document.createElement("menuseparator")); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); if("radio" in m) { mItem.setAttribute("type", "radio"); mItem.setAttribute('checked', cbu.getPrefs("CB.videoout.action") == m.value); if(cbu.getPrefs("CB.videoout.action") == m.value) { self.tooltipText = m.tooltipTxt; } mItem.onclick = () => { cbu.setPrefs("CB.videoout.action", m.value); tmp = (self.image == imgFlashToPlayer || self.image == imgFlashMinimize || self.image == imgFlashMaximize); if(m.value.substring(0,9)=='videotopl'){ self.image = tmp ? imgFlashToPlayer : imgHTML5ToPlayer; } else if(m.value=='videominimize') { self.image = tmp ? imgFlashMinimize : imgHTML5Minimize; } else self.image = tmp ? imgFlashMaximize : imgHTML5Maximize; self.tooltipText = m.tooltipTxt; }; } if("checkbox" in m) { mItem.setAttribute('type', 'checkbox'); mItem.setAttribute('checked', (self.image == imgFlashToPlayer || self.image == imgFlashMinimize || self.image == imgFlashMaximize )); mItem.onclick = function(e) { e.stopPropagation(); e.preventDefault(); if(e.button == 0) toggleFlash(); } } menu.appendChild(mItem); }); menu.onclick = function(e) { e.stopPropagation(); if(e.button > 0) e.preventDefault(); }; }, 100); var contextMenu = document.getElementById("contentAreaContextMenu"); var menuitem = contextMenu.insertBefore(document.createElement("menuitem"), document.getElementById("context-sep-open")); menuitem.setAttribute("label", "Открыть в " +sysPlayerName); menuitem.setAttribute("class", "menuitem-iconic"); menuitem.setAttribute("image", "moz-icon://file://" + path); menuitem.onclick = () => play(gContextMenu.linkURL); addEventListener("popupshowing", ()=> menuitem.hidden = !gContextMenu.onLink, false, contextMenu); addDestructor(()=> menuitem.remove() ); var contextMenu = document.getElementById("contentAreaContextMenu"); var mItem = contextMenu.insertBefore(document.createElement("menuitem"), document.getElementById("context-copyvideourl")); mItem.setAttribute("label", openIn); mItem.onclick = () => { var vurl = gContextMenu.mediaURL, videoelem = gContextMenu.target; if(videoelem && videoelem.nodeName.toLowerCase() == 'video') { if(content.location.hostname.indexOf('youtu') != -1 && (tmp = content.location.toString().match(YoutubeID)) && tmp[1].length == 11) { play(vurl); videoMovedbox = content.document.createElement('videoMoved'); videoMovedbox.innerHTML = innerA + innerB + 'top:-15px!important;"><b>' + videoMoved + '</b></div>'; loadURI(stopPl); content.document.getElementById('eow-title').appendChild(videoMovedbox); return; }; if(content.location.hostname == 'www.youtube.com') { videoelem.parentNode.parentNode.appendChild(videoMovedbox); } else { var inFrameHref = inFrameWin.location.href, found = false; if(inFrameWin.location.hostname == 'www.youtube.com' && (tmp = inFrameHref.match(YoutubeID)) && tmp[1].length == 11){//и значит во фрейме elem = inFrameWin.parent.document.getElementsByTagName('iframe'); if(elem.length > 0) { for(i = 0; i < elem.length; i++) { if(elem[i].contentWindow == inFrameWin) { elem[i].outerHTML = ytIMGouter(tmp[1]); found = true; break; }; }; }; if(!found)inFrameWin.document.body.innerHTML = ytIMGouter(tmp[1]); return; }; videoelem.parentNode.appendChild(videoMovedbox); }; videoelem.src = ''; try { videoelem.load() } catch(e) {}; } else play(vurl); }; addEventListener("popupshowing", () => { mItem.hidden = !gContextMenu.onVideo || !gContextMenu.mediaURL; mItem2.hidden = !gContextMenu.linkURL; mItem3.hidden = framItem.hidden || gContextMenu.target.ownerDocument.location.hostname.indexOf('youtube.com') == -1; }, false, contextMenu); addDestructor(() => {mItem.remove();mItem2.remove();mItem3.remove()}); function play(link) { var file = Services.dirsvc.get('CurProcD', Ci.nsIFile); var MozExeDir = file.path.split('\\').slice(0,-1).join('\\'); file.initWithPath(path); if(!file.exists()) { custombuttons.alertBox("File not found!", MozExeDir + Path); return; }; var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, [link, cbu.getPrefs("CB.videoout.action") == "videotoplaylist" ? addToPlaylistKey : ""], 2); }; |
bunda1 > 19-02-2018 14:35:10 |
drage2 |
drage2 > 19-02-2018 14:43:18 |
bunda1 |
SOTVM > 22-02-2018 10:51:04 |
drage2 пишет
вообще всё сломалось |
mssign > 22-02-2018 13:44:54 |
drage2 пишет
в 58 не работает. Пытается открыть везде кроме ютуба. |
drage2 > 22-02-2018 14:13:27 |
mssign |
drage2 > 24-02-2018 12:14:56 |
Я так понимаю, что в кнопке ключ нельзя прописать? Типа: |
Milоrdaп > 24-02-2018 12:17:39 |
А почему в Firefox 52 все кнопки перестали работать я ничего не делал |
bunda1 > 24-02-2018 19:01:29 |
Milоrdaп пишет
Так не бывает что ничего не делал. Может попробуй переустановить Сustom Buttons и кнопки заработают а может и нет. |
Ultima2m > 24-02-2018 19:37:15 |
Milоrdaп пишет
52 вообще-то довольно стабильная версия. На ней ESR-ветка висит. |
Ultima2m > 01-03-2018 13:20:23 |
Есть таая строка oncommand = goDoCommand('downloadsCmd_clearDownloads') Выделить код Код:this.onclick = function(e) { if ( e.button == 0 ) { goDoCommand('downloadsCmd_clearDownloads'); } }; По клику должно очищать список загрузок, но не очищает. |
beggrr > 01-03-2018 14:14:08 |
У меня до сих пор исправно работала кнопка Find. Выделить код Код:const observer = MutationObserver(onFindbar); observer.observe(gFindBar, { attributes: true, attributesFilter: ["hidden"] }); addDestructor(function() observer.disconnect()); а конкретно на первую строчку const observer = MutationObserver(onFindbar) Что изменилось в 47 версии и что можно сделать? |
Viatcheslav > 07-03-2018 13:14:42 |
Средствами |
Gladius333 > 10-03-2018 11:04:13 |
Viatcheslav пишет
В каком-то из сборок видел аддон, который сам очищает, вот ссылка forum.ru-board.com/topic.cgi?forum=2&to … start=1620 на сборки. |
SendInfo > 10-03-2018 13:52:20 |
Viatcheslav пишет
Download Panel Tweaker, настройка встроенной панели загрузок | Форум Mozilla Россия |
Viatcheslav > 10-03-2018 14:25:41 |
Gladius333 пишет
Спасибо, но устанавливать ещё одно расширение из-за одной только чистки истории загрузок - не лучший вариант. Да, знаю, таких достаточно, например, Clear Browsing Data, но в нём
SendInfo пишет
Спасибо. Про установку расширений, тем более несовместимых (устаревших), ради одной фишки - нет, не годится |
Ultima2m > 10-03-2018 16:00:57 |
В кнопке "Очистить загрузки" есть команда oncommand = goDoCommand('downloadsCmd_clearDownloads') |
SendInfo > 10-03-2018 18:09:32 |
Ultima2m пишет
В секцию "Код" и левой кнопкой мыши при открытых "Загрузки" Viatcheslav пишет
Нет. Посмотреть как сделано. И перенести подходящее в кнопку. |
Viatcheslav > 10-03-2018 19:05:17 |
SendInfo пишет
Увы, я в этом совсем не силён |
SendInfo > 11-03-2018 00:49:31 |
Viatcheslav Выделить код Код:var global = Components.utils.import("resource:///modules/DownloadsCommon.jsm", {}); if(global.DownloadsData && global.DownloadsData.removeFinished) {global.DownloadsData.removeFinished();} if(global.PrivateDownloadsData && global.PrivateDownloadsData.removeFinished) {global.PrivateDownloadsData.removeFinished();} Components.classes["@mozilla.org/browser/download-history;1"] .getService(Components.interfaces.nsIDownloadHistory) .removeAllDownloads(); У меня в[firefox]42 очищает загрузки |
Ultima2m > 11-03-2018 04:51:46 |
SendInfo пишет
Спасибо, в 58 тоже работает. |
Viatcheslav > 11-03-2018 07:13:16 |
SendInfo пишет
Отлично |
Garalf > 21-03-2018 11:22:09 |
В FF59 перестала работать кнопка Autocopy+3. Можно ли восстановить ее работоспособность? |
drage2 > 28-03-2018 20:28:05 |
открыть изображение в новой вкладке? Кнопка есть, не не берет canvas/ Выделить код Код:/*Initialization Code*/ function open_imgnewtab() { var address = gContextMenu.imageURL||gContextMenu.mediaURL; var newTab = gBrowser.addTab(address); gBrowser.selectedTab = newTab; } var contextMenu = document.getElementById("contentAreaContextMenu"); var menuId = "imgnewtab-open"; var menuItem = document.getElementById(menuId); if (menuItem) { contextMenu.removeChild(menuItem); }; menuItem = document.createElement("menuitem"); menuItem.setAttribute("id", menuId); menuItem.setAttribute("label", "Открыть изображение"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC/UlEQVR4Xp3RfUyUBRzA8e9zzz3HHd4BJ4eLF9G4CxCmuM5jatop1oSgurCYFM60NVvaen/RFWVtyZprsv5isf4gY/MllNabpajtINzZDb2GBCKSvByEetZx3HHPPU/eIucaa6vP9vvz+/v98WM2z9lIeLO8sOjtR5c++95jS1/Z5rSusaeTyG2Wv+C7J93+koV/EHZVLCo7WLf+9Hctm6cnfqlTz3a2qoeaW+UPX605udaWZAV4oG5i0ZInT3i0afZVAjPsINVsKXotvyxj17i1IDEBA3aTxA/dW/FPZrI23636WupPvb//YqVtc2uDt6153nX37i1aZmzdVrCzypVZ+ymT4pExDwWSmZJkB+cvyfSNT5GdkiisLl+9avHFwp2Do/7yG72n9kDErwF4y5XldFlT30hBFpeIGsITPfT+dg69JkaVw8MTKzxsXDeMyZIiCVnOZ670eseVa56TQFjrXIC+IlvafYffYuBnI8UrRvlx+UMoOhNaDay8a4SVhklQk+noS2YoaDTduNx+CPn6BQBt5Zr0whwbxeoHx4ikG9FtXIZIFFFQQImBIoMs80dkis+9eQz0+gLq6PFWIACgybDoHOaFoiFaZCD6oAUpSQOxeBj9a2IyKDJHO3T0+wUCgx1upsfOAiqANtlsTBWVCMqmNJIsZpD08SB+/VYcCk5x4sKdXOrpnmLk+EFgjBkadHMiqpiAqFc403Wtv+nIwMeR6emYosRQAFWN0XVeoCRHUOcG2zsID7gBhRmaoat4Q/r50XAkKp/2Xq2VQoGGSDCoHPvG19584MzeL7/wdl75PS/W5+sMhX79+gAwxO3iX/ip6eGWsLsy1tNY9Nnwfse57k+KL5cuNmQBwus73nn58GGP4nI91QbYmE2102hp+6ikafDbTYGRrzaEG5/PexcQGu9Lzai/P79/T/WGyezs3O2AxL/QPr4sIecRe+LdC0AP8P3TuS8erbEp+8oyuoBC/qu60syshuqFtdvvnVcLmPiftDOxwCz+BPiNM36XpsjoAAAAAElFTkSuQmCC"); menuItem.addEventListener("command", open_imgnewtab, false); contextMenu.insertBefore(menuItem, document.getElementById("context-viewimage")); contextMenu.addEventListener("popupshowing", setMenuDisplay, false); function setMenuDisplay(aEvent) { if (gContextMenu.imageURL||gContextMenu.mediaURL) { document.getElementById("imgnewtab-open").hidden = false; } else document.getElementById("imgnewtab-open").hidden = true; } А, просто код нельзя? Для дефолтного пункта?Типа: кнопка HOME? Выделить код Код:/*Initialization Code*/ try { document.getElementById("home-button").setAttribute("onclick", "event.stopPropagation(); if (event.button == '0') { ( (Application.prefs.getValue('browser.startup.homepage', 0)).split('|') ).forEach(function(url) { getBrowser().selectedTab = getBrowser().addTab( url ) }) }"); } catch(e) { }; |
unter_officer > 29-03-2018 00:12:16 |
drage2 пишет
Выделить код Код:/*Initialization Code*/ try { document.getElementById("context-viewimage").setAttribute("onclick", "gBrowser.selectedTab = gBrowser.addTab(checkForMiddleClick(this, event))"); } catch(e) { }; |
drage2 > 29-03-2018 10:31:14 |
unter_officer |
Viatcheslav > 29-03-2018 18:16:44 |
unter_officer пишет
Парни, а что должна делать сия кнопа? Пробовал устанавливать - чё-то не разобрался |
drage2 > 29-03-2018 19:03:24 |
Viatcheslav |
Viatcheslav > 29-03-2018 20:24:56 |
drage2 пишет
Спасибо, дошло |
Gladius333 > 30-03-2018 13:53:15 |
Специально для этого код писать? эта как копировать ссылки, когда все это можно через ctrl или alt, мне так удобнее, нечасто пользуюсь. |
Garalf > 13-04-2018 15:29:02 |
|
ARG > 19-04-2018 01:45:55 |
Подскажите, есть кнопка для менеджера сессий? Session Manager не подходит - мне совершенно не нужно вручную сохранять сессии. Нужно чтобы как в разных аддонах, запоминалось энное число последних сессий, которые можно открыть. |
bunda1 > 19-04-2018 08:32:25 |
ARG пишет
Вроде нету такой кнопки. |
ARG > 19-04-2018 16:39:04 |
Совсем забыл, что в самих лисьеподобных, в меню Журнала, есть функция восстановления последней сессии. Но есть один минус - такой пункт есть в меню, но нет такой кнопки. Можно как то реализовать кнопку копирующую пункт меню? |
bunda1 > 19-04-2018 17:49:18 |
ARG пишет
или |
ARG > 20-04-2018 05:46:29 |
bunda1 пишет
Работает, спасибо! А второй нет. |
drage2 > 13-05-2018 17:42:27 |
Нужна кнопка типа Tabclick, т.к. Tabmix приказал долго жить. Особенно убивает дв.клик по панели вкладок...Раньше закрывал этим все вкладки, теперь окно клацает. |
Dumby > 14-05-2018 21:46:49 |
drage2 пишет
Стиль хоть пытался регистрировать? скрытый текст |
drage2 > 15-05-2018 13:12:44 |
Dumby |
Dumby > 15-05-2018 19:17:54 |
drage2 Ну вот, например, чисто от балды скрытый текст Выделить код Код:(selectors => addEventListener("dblclick", e => { if ( e.button || e.ctrlKey || e.shiftKey || e.altKey || !e.originalTarget.matches(selectors) ) return; var hbuTabs = [], param = {animate: false}; gBrowser.selectedTab = gBrowser.tabs[0]; for(var tab of gBrowser.visibleTabs.reverse()) //if (tab.pinned) break; else gBrowser._hasBeforeUnload(tab) ? hbuTabs.push(tab) : gBrowser.removeTab(tab, param); for(tab of hbuTabs) gBrowser.removeTab(tab, param); }, false, document.getElementById("TabsToolbar") || 1))("" + [ "#tabbrowser-tabs [class*=scrollbox]", "#TabsToolbar > toolbarspring", "#TabsToolbar", ]); |
Garalf > 15-05-2018 20:42:33 |
Dumby |
Dumby > 15-05-2018 22:36:35 |
Garalf Кстати, сейчас попробовал следующим образом: |
drage2 > 15-05-2018 23:40:40 |
Dumby |
Garalf > 16-05-2018 08:44:29 |
Dumby пишет
А вот так нормально. Спасибо. |
drage2 > 16-05-2018 13:16:19 |
Garalf |
Dumby > 16-05-2018 17:10:48 |
Garalf пишет
Нет, костыли, надеюсь, работают и в сборке FF61b4, и в сегодняшней Nightly. скрытый текст Костыли всего-лишь навсего снимают некий искусственный принципиальный запрет на установку и невыключение неподписанных и Legacy расширений. Этот запрет существует для официальных Release и Beta сборок, Шестьдесят первая версия ознаменовалась эпическим эпизодом chrome.manifest для оверлейных расширений игнорируется. custom_buttons-0.0.5.8.9-fixed8 является оверлейным расширением, Официальной версии Custom Buttons для Firefox 61 пока(?) нет. На крайний случай, можешь попробовать поставить мод, Инструкция по установке: Важно: это фейковый bootstrap, поэтому, как и раньше, |
Garalf > 16-05-2018 18:05:33 |
Dumby скрытый текст // Autocopy+3 от 05-05-2015. // Настройка функций кликов мыши для кнопки ................................ // Проверить наличие строк в 'about:config' и создать если не существует ................................ // Создать меню ................................ var menuPopup = self.appendChild( document.createElement("menupopup") ); // добавить стандартное контекстное меню .... // Установить нужную иконку кнопки при старте браузера или при изменениях настроек в 'about:config' ................................ // Выключать кнопку при закрытии браузера если это разрешено в 'about:config' ................................ // Функции автоматически копирует выделенный текст на странице, если это разрешено в 'about:config' ................................ // Cредней кнопкой мыши вставить текст из буфера обмена в текстовые поля с заменой выделенного текста ................................ if ( /input|password|textarea|textbox|searchbar|findbar|cbeditor/.test( e.target.localName.toLowerCase() ) var node = e.target; if ( /input|textbox|textarea/.test( node.localName ) ) !editor ? node.select() : editor.selectAll(); // Наблюдатель следит за открытием окон адреса которых указанны в коде и добавляет им обработчики ................................ win.addEventListener("click", middleMousePaste, true ); // Подсказка для кнопки ................................ |
sonyas75 > 16-05-2018 18:30:09 |
Garalf пишет
вот да, волшебно бы было. можно даже в просто 60 без плюсика ибо ЕСР. |
drage2 > 16-05-2018 19:46:01 |
В FF 60 - настройка кнопки: вместо F2 - unknown_113 ? Парит реально , где поганка зарыта? Простое переключение в about:config , типа false- true , делаю, но раньше проще было. Теперь вторую иконку прописывать надо.... PlacesUtils.history.clear(); Очистить историю , а надо "очистить историю закрытых вкладок" Нужен дв.клик по вкладке - закрыть остальные! ...Есть креативщики? |
Dumby > 19-05-2018 09:39:48 |
Garalf пишет
Не, «+3», для меня слишком заморочно. скрытый текст Выделить код Код: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%3EAutocopy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAgEAAcHBAAIBwQACAcEAAgHBAAIBwQACAcEAAgHBAAIBwQACAQDAQEAAAAAAAAAAAAAAAADAgADAAAAACcVAB+qXAC3vGsB4LlqAd26agHeumoB3rpqAd66agHeumoB3rhoAN26agHgs2IAxTceAC8AAAAAAAEAAAIBAAQAAAQAoFcApv2zVv/+1qn8/9Of///Uov//1KL//9Si///Uov//1KL//9en//7Vpfz9t2L/tGMAvwEAAQAAAAAAKBUAH6FXAKnPcgD12IYf/dyMJ/3biiP924sk/duLJf3biyX924sm/dqJIv3im0P9/du1/P7Xqv+7agHdCQUACAAAAQCrXgCz+69R//TFj/vxvn//8r5///K+gP/yvoD/8r6A//K+f//yvX7/9MKH/9yMKv/inkv9/960/7loAN0HAwAICQUACLxrAdz91af//+LB/f/fu///4b///+G////hv///4b///+G///7fu///58n/8cOK/9qMK/3/4Lr/umoC3gcDAAgHBAAIuWoC3f/Vpf/+4MD9/t67//7fvv/+4L///uC///7gv//+377//t26///kxv/xwYb/248t/f/kw/+6agPeBwMACAcEAAi6agLe/9qw///oz/3/5cr//+fN///nzv//587//+fO///nzf/+5cj//+zW//LFj//bkC/9/+nN/7pqA94HAwAIBwQACLpqAt7/37n//+7c/f/r1v//7dn//+3a///t2v//7dr//+3Z//7q1f//8uP/8siW/9uQMf3/7NX/umoE3gcDAAgHBAAIumoC3v/jwf//8+j9//Dh///y5P//8+X///Pl///z5f//8uT//vDg///47v/yy53/25Ey/f/w3P+6awTeBwMACAcEAAi6agLe/+bJ///48v3/9er///bt///37v//9+////fu///27f/+9On///34//LOo//bkTL9//Hf/7lqBd0HAwAIBwQACLpqAt7/6c////z6/f/48f//+vT///r1///69f//+vX///r0//738P//////8dGo/9uTNf3/9Of/vGsE3AkEAAgHBAAIuWkC3f/q0f///v79//r0///79////Pj///z4///8+P//+/f//vn0///////y06z/2Iso+/3Def+rXQCzAAACAAkFAAi7agHd/u3a//////z//v39/////f////3////9/////f////3+/fz9/////fPcvv7QbwD1oVYCqScVAB8AAAAAAQACALRiAL/9yYf//vLk/P/t1///7tn//+7Z///u2f//7tn//+7Z///t1//98eP8/L1u/6BVAKYAAAUAAgEABAABAAAAAAAANx4ALrNhAMW7agLguWoC3bpqAt66agLeumoC3rpqAt66agLeuWoC3bxrAeCqWwC3JxUAHwAAAAADAgADAAAAAAAAAAAAAAAABAMCAQgEAAgHBAAIBwQACAcEAAgHBAAIBwQACAcEAAgHBAAICAQABwMDAgAAAAABAAAAAAAAAAAAAAAA6AGAQaAAgEGgAIBBgAAAQYAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAACAQQAAgEGAAoBBgAKAQcALgEE%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.closest%28%22toolbarpaletteitem%22%29%20%7C%7C%20%28script%20%3D%3E%20%7B%0A%09var%20id%20%3D%20%60CB%24%7B_id.slice%2820%29%7D%3AAutocopy%60%2C%20pid%20%3D%20id%20+%20%22Parent%22%3B%0A%09var%20nsvoStr%20%3D%20%60Components.utils.import%28%22resource%3A//gre/modules/Services.jsm%22%2C%20%7B%7D%29%60%3B%0A%09var%20nsvo%20%3D%20eval%28nsvoStr%29%2C%20%7BServices%7D%20%3D%20nsvo%2C%20parent%20%3D%20nsvo%5Bpid%5D%3B%0A%09if%20%28%21parent%29%20%7B%0A%09%09var%20cid%20%3D%20id%20+%20%22Child%22%2C%20u%20%3D%20code%20%3D%3E%20%22data%3A%2C%22%20+%20encodeURIComponent%28code%29%3B%0A%09%09var%20pref%20%3D%20%22CB.Autocopy.settings%22%2C%20topic%20%3D%20%22quit-application-granted%22%3B%0A%09%09var%20PREF_ENABLED%20%3D%201%2C%20PREF_BLINK%20%3D%202%2C%20PREF_RESET%20%3D%204%3B%0A%0A%09%09%28parent%20%3D%20nsvo%5Bpid%5D%20%3D%20%7B%0A%09%09%09init%28%29%20%7B%0A%09%09%09%09this.readSettings%28%29%3B%0A%09%09%09%09if%20%28%21this%5BPREF_ENABLED%5D%29%20return%3B%0A%09%09%09%09this.initChild%28%29%3B%0A%09%09%09%09if%20%28this%5BPREF_RESET%5D%29%20this.setObserver%28true%29%3B%0A%09%09%09%7D%2C%0A%09%09%09destroy%28reason%29%20%7B%0A%09%09%09%09var%20ud%20%3D%20reason%5B5%5D%20%3D%3D%20%22e%22%3B%0A%09%09%09%09if%20%28ud%20%7C%7C%20%21this.obsAdded%29%20this.saveSettings%28%29%3B%0A%09%09%09%09delete%20nsvo%5Bpid%5D%3B%0A%09%09%09%09if%20%28reason%20%3D%3D%20%22delete%22%29%20Services.prefs.clearUserPref%28pref%29%3B%0A%09%09%09%09if%20%28%21this%5BPREF_ENABLED%5D%29%20return%3B%0A%0A%09%09%09%09this.destroyChild%28%29%3B%0A%09%09%09%09if%20%28ud%20%26%26%20this%5BPREF_RESET%5D%29%20this.setObserver%28false%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20processURL%28%29%20%7B%0A%09%09%09%09delete%20this.processURL%3B%0A%09%09%09%09this.frameURL%20%3D%20u%28%60%24%7BnsvoStr%7D%5B%22%24%7Bcid%7D%22%5D.init%28this%29%3B%60%29%3B%0A%09%09%09%09return%20this.processURL%20%3D%20u%28script.replace%28/%25ID%25/g%2C%20cid%29%0A%09%09%09%09%09.replace%28%22%25NSVO%25%22%2C%20nsvoStr%29.replace%28%22%25BLINK%25%22%2C%20this%5BPREF_BLINK%5D%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20frameURLDestroy%28%29%20%7B%0A%09%09%09%09delete%20this.frameURLDestroy%3B%0A%09%09%09%09this.processURLDestroy%20%3D%20u%28%60%24%7BnsvoStr%7D%5B%22%24%7Bcid%7D%22%5D.forget%28%29%3B%60%29%3B%0A%09%09%09%09return%20this.frameURLDestroy%20%3D%20u%28%60%24%7BnsvoStr%7D%5B%22%24%7Bcid%7D%22%5D.destroy%28this%29%3B%60%29%3B%0A%09%09%09%7D%2C%0A%09%09%09initChild%28%29%20%7B%0A%09%09%09%09Services.ppmm.loadProcessScript%28this.processURL%2C%20true%29%3B%0A%09%09%09%09Services.mm.loadFrameScript%28this.frameURL%2C%20true%29%3B%0A%09%09%09%7D%2C%0A%09%09%09destroyChild%28%29%20%7B%0A%09%09%09%09Services.mm.removeDelayedFrameScript%28this.frameURL%29%3B%0A%09%09%09%09Services.mm.loadFrameScript%28this.frameURLDestroy%2C%20false%29%3B%0A%09%09%09%09Services.ppmm.removeDelayedProcessScript%28this.processURL%29%3B%0A%09%09%09%09Services.ppmm.loadProcessScript%28this.processURLDestroy%2C%20false%29%3B%0A%09%09%09%7D%2C%0A%09%09%09readSettings%28%29%20%7B%0A%09%09%09%09this.prefVal%20%3D%20Services.prefs.getIntPref%28pref%2C%203%29%3B%0A%09%09%09%09for%28var%20setting%20of%20%5BPREF_ENABLED%2C%20PREF_BLINK%2C%20PREF_RESET%5D%29%0A%09%09%09%09%09this%5Bsetting%5D%20%3D%20Boolean%28this.prefVal%20%26%20setting%29%3B%0A%09%09%09%7D%2C%0A%09%09%09saveSettings%28%29%20%7B%0A%09%09%09%09var%20settings%20%3D%200%3B%0A%09%09%09%09for%28var%20setting%20of%20%5BPREF_ENABLED%2C%20PREF_BLINK%2C%20PREF_RESET%5D%29%0A%09%09%09%09%09if%20%28this%5Bsetting%5D%29%20settings%20+%3D%20setting%3B%0A%09%09%09%09if%20%28this.prefVal%20%21%3D%20settings%29%0A%09%09%09%09%09Services.prefs.setIntPref%28pref%2C%20settings%29%3B%0A%09%09%09%7D%2C%0A%09%09%09btns%3A%20new%20Set%28%29%2C%0A%09%09%09register%28btn%29%20%7B%0A%09%09%09%09this.btns.add%28btn%29%3B%0A%09%09%09%09btn._handleClick%20%3D%20this.click%3B%0A%09%09%09%09btn.oncontextmenu%20%3D%20this.context%3B%0A%09%09%09%09this.setImg%28btn%2C%20this%5BPREF_ENABLED%5D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09unregister%28btn%2C%20reason%29%20%7B%0A%09%09%09%09this.btns.delete%28btn%29%3B%0A%09%09%09%09if%20%28%21this.btns.size%29%20this.destroy%28reason%29%3B%0A%09%09%09%7D%2C%0A%09%09%09setImg%28btn%2C%20state%29%20%7B%0A%09%09%09%09btn.ownerDocument.getAnonymousElementByAttribute%28%0A%09%09%09%09%09btn%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%0A%09%09%09%09%29.src%20%3D%20state%0A%09%09%09%09%09%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%09%09%09%09%09%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%09%09%09%7D%2C%0A%09%09%09click%28%29%20%7B%0A%09%09%09%09var%20newState%20%3D%20parent%5BPREF_ENABLED%5D%20%3D%20%21parent%5BPREF_ENABLED%5D%3B%0A%09%09%09%09for%28var%20btn%20of%20parent.btns%29%20parent.setImg%28btn%2C%20newState%29%3B%0A%09%09%09%09newState%20%3F%20parent.initChild%28%29%20%3A%20parent.destroyChild%28%29%3B%0A%09%09%09%09if%20%28parent%5BPREF_RESET%5D%29%20parent.setObserver%28newState%29%3B%0A%09%09%09%7D%2C%0A%09%09%09context%28e%29%20%7B%0A%09%09%09%09if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%29%20return%3B%0A%09%09%09%09if%20%28e.detail%20%3E%201%29%20return%20parent.popup.hidePopup%28%29%3B%0A%09%09%09%09if%20%28%21this.contains%28parent.popup%29%29%20this.appendChild%28parent.popup%29%3B%0A%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09parent.popup.openPopup%28this%2C%20%22after_start%22%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20popup%28%29%20%7B%0A%09%09%09%09var%20win%20%3D%20Services.wm.getMostRecentWindow%28%22navigator%3Abrowser%22%29%3B%0A%09%09%09%09var%20doc%20%3D%20win.document%2C%20popup%20%3D%20doc.createElement%28%22menupopup%22%29%3B%0A%09%09%09%09popup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%3B%22%29%3B%0A%09%09%09%09popup.setAttribute%28%22oncommand%22%2C%20%22handleCommand%28event.target%29%3B%22%29%3B%0A%09%09%09%09for%28var%20%5Blab%2C%20pref%5D%20of%20win.Object.entries%28%7B%0A%09%09%09%09%09%22%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%22%3A%20PREF_BLINK%2C%0A%09%09%09%09%09%22%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%22%3A%20PREF_RESET%0A%09%09%09%09%7D%29%29%20%7B%0A%09%09%09%09%09var%20menuitem%20%3D%20popup.appendChild%28doc.createElement%28%22menuitem%22%29%29%3B%0A%09%09%09%09%09menuitem.setAttribute%28%22label%22%2C%20lab%29%3B%0A%09%09%09%09%09menuitem.setAttribute%28%22type%22%2C%20%22checkbox%22%29%3B%0A%09%09%09%09%09if%20%28this%5Bmenuitem.pref%20%3D%20pref%5D%29%20menuitem.setAttribute%28%22checked%22%2C%20true%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09popup.handleCommand%20%3D%20menuitem%20%3D%3E%20%7B%0A%09%09%09%09%09var%20newState%20%3D%20this%5Bmenuitem.pref%5D%20%3D%20menuitem.hasAttribute%28%22checked%22%29%3B%0A%09%09%09%09%09if%20%28%21this%5BPREF_ENABLED%5D%29%20return%3B%0A%0A%09%09%09%09%09if%20%28menuitem.pref%20%3D%3D%20PREF_BLINK%29%0A%09%09%09%09%09%09Services.ppmm.broadcastAsyncMessage%28cid%20+%20%22%3AFromParent%22%2C%20%7Bblink%3A%20newState%7D%29%3B%0A%09%09%09%09%09else%20if%20%28menuitem.pref%20%3D%3D%20PREF_RESET%29%0A%09%09%09%09%09%09this.setObserver%28newState%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09delete%20this.popup%3B%20return%20this.popup%20%3D%20popup%3B%0A%09%09%09%7D%2C%0A%09%09%09obsAdded%3A%20false%2C%0A%09%09%09setObserver%28set%29%20%7Bthis.obsAdded%20%3D%20set%0A%09%09%09%09%3F%20Services.obs.addObserver%28this%2C%20topic%2C%20false%29%0A%09%09%09%09%3A%20Services.obs.removeObserver%28this%2C%20topic%29%3B%0A%09%09%09%7D%2C%0A%09%09%09observe%28%29%20%7B%0A%09%09%09%09Services.obs.removeObserver%28this%2C%20topic%29%3B%0A%09%09%09%09this%5BPREF_ENABLED%5D%20%3D%20false%3B%0A%09%09%09%09this.saveSettings%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%29.init%28%29%3B%0A%09%7D%0A%09parent.register%28this%29%3B%0A%09addDestructor%28reason%20%3D%3E%20parent.unregister%28this%2C%20reason%29%2C%20parent%29%3B%0A%0A%7D%29%28%60%28nsvo%20%3D%3E%20%28nsvo%5B%22%25ID%25%22%5D%20%3D%20%7B%0A%09x%3A%20-1%2C%20y%3A%20-1%2C%20d%3A%20false%2C%0A%09handleEvent%28e%29%20%7Be.button%20%7C%7C%20this%5Be.type%5D%28e%29%3B%7D%2C%0A%09mousedown%28e%29%20%7Bthis.x%20%3D%20e.screenX%3B%20this.y%20%3D%20e.screenY%2C%20this.down%20%3D%20true%3B%7D%2C%0A%09mouseup%28e%29%20%7B%0A%09%09var%20%7Bdown%7D%20%3D%20this%3B%20this.down%20%3D%20false%3B%20if%20%28%21down%29%20return%3B%0A%09%09if%20%28e.screenX%20%3D%3D%20this.x%20%26%26%20e.screenY%20%3D%3D%20this.y%20%26%26%20%28e.detail%20%3D%3D%201%20%7C%7C%20e.target.matches%28%0A%09%09%09%22textarea%5Bdisabled%5D%2Cinput%5Bdisabled%5D%2Cbutton%2Cselect%2Csummary%22%0A%09%09%29%29%29%0A%09%09%09return%3B%0A%09%09var%20name%20%3D%20e.originalTarget.nodeName%3B%0A%09%09if%20%28/%5E%28%3F%3A%28%3F%3Axul%3A%29%3F%28%3F%3Aslider%7Cscrollbarbutton%29%7Cresizer%29%24/.test%28name%29%29%0A%09%09%09return%3B%0A%09%09this.x%20%3D%20this.y%20%3D%20-1%3B%0A%09%09var%20win%20%3D%20this.getFocusedWin%28e.target.ownerGlobal%29%3B%0A%09%09var%20sel%20%3D%20win.getSelection%28%29%3B%0A%09%09if%20%28sel.toString%28%29%29%20%7B%0A%09%09%09this.cm.doCommand%28%22cmd_copy%22%2C%20null%2C%20win%29%3B%0A%09%09%09this.blinkEnabled%20%26%26%20this.blink%28win%2C%20e.detail%20%3E%201%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09blinkEnabled%3A%20%25BLINK%25%2C%0A%09blink%28win%2C%20pause%29%20%7B%0A%09%09if%20%28pause%29%20return%20win.setTimeout%28%28%29%20%3D%3E%20this.blink%28win%29%2C%20100%29%3B%0A%09%09var%20sc%20%3D%20win.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09.getInterface%28Components.interfaces.nsIWebNavigation%29%0A%09%09%09.QueryInterface%28Components.interfaces.nsIDocShell%29%0A%09%09%09.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09.getInterface%28Components.interfaces.nsISelectionDisplay%29%0A%09%09%09.QueryInterface%28Components.interfaces.nsISelectionController%29%3B%0A%09%09sc.setDisplaySelection%28sc.SELECTION_OFF%29%3B%0A%09%09sc.repaintSelection%28sc.SELECTION_NORMAL%29%3B%0A%09%09win.setTimeout%28%28%29%20%3D%3E%20%7B%0A%09%09%09sc.setDisplaySelection%28sc.SELECTION_ON%29%3B%0A%09%09%09sc.repaintSelection%28sc.SELECTION_NORMAL%29%3B%0A%09%09%7D%2C%20150%29%3B%0A%09%7D%2C%0A%09getFocusedWin%28win%29%20%7B%0A%09%09var%20focusedWin%20%3D%20%7B%7D%3B%0A%09%09var%20elm%20%3D%20Services.focus.getFocusedElementForWindow%28win.top%2C%20true%2C%20focusedWin%29%3B%0A%09%09return%20focusedWin.value%3B%0A%09%7D%2C%0A%09get%20cm%28%29%20%7B%0A%09%09delete%20this.cm%3B%0A%09%09return%20this.cm%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-manager%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsICommandManager%29%3B%0A%09%7D%2C%0A%09count%3A%200%2C%0A%09init%28cfmm%29%20%7B%0A%09%09this.count%20+%3D%201%3B%0A%09%09cfmm.addEventListener%28%22mousedown%22%2C%20this%29%3B%0A%09%09cfmm.addEventListener%28%22mouseup%22%2C%20this%29%3B%0A%09%09cfmm.addEventListener%28%22unload%22%2C%20this%29%3B%0A%09%09if%20%28this.count%20%3D%3D%201%29%0A%09%09%09this.cpmm.addMessageListener%28%22%25ID%25%3AFromParent%22%2C%20this%29%3B%0A%09%7D%2C%0A%09destroy%28cfmm%29%20%7B%0A%09%09this.count%20-%3D%201%3B%0A%09%09cfmm.removeEventListener%28%22mousedown%22%2C%20this%29%3B%0A%09%09cfmm.removeEventListener%28%22mouseup%22%2C%20this%29%3B%0A%09%09cfmm.removeEventListener%28%22unload%22%2C%20this%29%3B%0A%09%09if%20%28%21this.count%29%0A%09%09%09this.cpmm.removeMessageListener%28%22%25ID%25%3AFromParent%22%2C%20this%29%3B%0A%09%7D%2C%0A%09receiveMessage%28msg%29%20%7B%0A%09%09if%20%28%22blink%22%20in%20msg.data%29%20this.blinkEnabled%20%3D%20msg.data.blink%3B%0A%09%7D%2C%0A%09unload%28e%29%20%7Bthis.destroy%28e.target%29%3B%7D%2C%0A%09forget%3A%20%28%29%20%3D%3E%20delete%20nsvo%5B%22%25ID%25%22%5D%0A%0A%7D%29.cpmm%20%3D%20this%29%28%25NSVO%25%29%3B%60%29%3B%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 drage2 пишет
Ага, вижу. Поганка зарыта там же, где и обычно. скрытый текст Замени в CBKeyMapComponent.js на Выделить код Код:var ikey = Components. interfaces. nsIDOMKeyEvent || Cc ["@mozilla.org/appshell/appShellService;1"]. getService (Ci. nsIAppShellService). hiddenDOMWindow. KeyEvent; Ну, или вот, custom_buttons-0.0.5.8.9-fixed8.xpi с этой правкой. |
sonyas75 > 19-05-2018 10:30:28 |
Dumby пишет
я попробовал. гмм, сейчас глянул, из той автокопи+3 я только и пользовался функцией копирования при выделении текста. так что все прекрасно, спасибо. 19-05-2018 10:49:00 Выделить код Код:// Создать кнопку ярлык для сайта, от 18.08.2014. // Дублировать кнопку и установить для новый кнопки иконку, название и код ................................ custombuttons.cloneButton( self ); var newButtonLink = custombuttons.makeButtonLink("update", self.nextSibling.id ); var params = custombuttons.cbService.getButtonParameters( newButtonLink ).wrappedJSObject; params.name = gBrowser.mCurrentTab.label; params.image = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/Portrait.png"; params.code = "gBrowser.selectedTab = loadURI ('" + content.location + "');"; params.initCode = "var icon = document.getAnonymousElementByAttribute( this, 'class', 'toolbarbutton-icon');" + "\n" + "icon.style.width = '16px', icon.style.height = '16px';" params.wrappedJSObject = params; custombuttons.cbService.installButton( params ); ВНИМАНИЕ!!! этот код на 60 ЕСР у меня завоевал весь мир! она, кнопка эта, начала копировать сама себя, клоны начали плодить клонов, эти клоны рождали других, ценой неимоверных нечеловеческих усилий я остановил размножение этой кнопки и спас мир от такого кода. |
drage2 > 19-05-2018 11:05:14 |
Dumby this.onclick = function(e) { Как на левую клавишу запустить конкретный файл? Это для кнопки Memory. |
Dumby > 20-05-2018 09:07:21 |
sonyas75 пишет
Звучит так, как если бы код попал во вкладку Инициализация. скрытый текст Выделить код Код:custombuttons.cloneButton(self, true); var newButtonLink = custombuttons.makeButtonLink("update", self.nextSibling.id); var params = custombuttons.cbService.getButtonParameters(newButtonLink).wrappedJSObject; params.name = gBrowser.selectedTab.label; params.image = gBrowser.selectedTab.image || "chrome://global/skin/icons/Portrait.png"; params.code = `loadURI("${gBrowser.currentURI.spec}");`; params.initCode = 'document.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon")\n\t' + '.style.cssText = "width: 16px; height: 16px;";'; custombuttons.cbService.installButton(params.wrappedJSObject = params); drage2 пишет
Подробностей снова нет. Может так попробуй скрытый текст Выделить код Код:((trg, param, tab, lst = { handleEvent(e) { if (e.button || e.ctrlKey || e.shiftKey || e.altKey) return; this[e.type](e); }, click: e => e.detail == 2 && tab && e.stopPropagation(), mouseup(e) { if (e.detail < 2) return tab = e.target; if (tab.nodeName == "tab" && (tab = e.target == tab)) setTimeout(this.closeTabs, 50, gBrowser.selectedTab); }, closeTabs(tab) { var hbuTabs = []; for(var t of gBrowser.visibleTabs.reverse()) if (//!t.pinned && t != tab) gBrowser._hasBeforeUnload(t) ? hbuTabs.push(t) : gBrowser.removeTab(t, param); for(t of hbuTabs) gBrowser.removeTab(t, param); } }) => ["mouseup", "click"].forEach(type => addEventListener(type, lst, true, trg)))( gBrowser.tabs[0].boxObject.parentBox, {animate: false} ); drage2 пишет
this._handleClick = FileUtils.File("C:\\Windows\\notepad.exe").launch; |
sonyas75 > 20-05-2018 09:27:13 |
скрытый текст Dumby пишет
угу. это я понял, когда копипастил этот код в свой пост. вот так, из-за одной маленькой ошибки рядового пользователя ФФ мир может быть захвачен какой-то там кнопкой. Dumby спасибо, работает ![]() |
drage2 > 20-05-2018 11:03:47 |
Dumby Круто.....Не постоје речи! скрытый текст Выделить код Код:// По клику подробно показать потребление памяти в вкладке, автор кода 'Dumby' ......................... memoryDisplay.onclick = function(e) { e.target.setAttribute("context", "event.stopPropagation()"); if ( e.button == 2) { // очистить кэш .... try { Services.cache.evictEntries(Ci.nsICache.STORE_IN_MEMORY); Services.cache.evictEntries(Ci.nsICache.STORE_ON_DISK); } catch(e) { Services.cache2.clear() } // Удалить Flash кукиси .... var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); if ( dir.exists() ) dir.remove(true); if ( !dir.exists() ) dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); Вопрос снят...Справился. Эта 60-запарила....PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId); -не срабатыват |
Dumby > 21-05-2018 08:15:00 |
drage2 пишет
скрытый текст Выделить код Код:(self.bookmarkCurrentPage || (self.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook)))(gBrowser.selectedBrowser, true); |
drage2 > 21-05-2018 10:44:37 |
Dumby Последний вопрос: простое в About:config , типа: как проще? не охота вторую иконку прописывать .... скрытый текст Выделить код Код:// Дополнительные возможности для значка идентификации сайта в строке адреса ..... (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { e.stopPropagation(); e.target.setAttribute("context", "event.stopPropagation()"); switch (e.button) { case 2: // ПКМ без запроса открывает информацию о странице в вкладке 'Мультимедиа' .... identBox.onclick = function() { return false; } let doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 0: // ЛКМ Добавит закладку .... if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } break; } else { identBox.oncontextmenu = function() { return false; } }; (self.bookmarkCurrentPage || (self.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook)))(gBrowser.selectedBrowser, true); // значок идентификации сайта мигает identBox.setAttribute("style", "background:red;"); setTimeout(function() { identBox.removeAttribute("style") }, 300); } } , true, identBox ); })(); Как ? Сюда Вставить это identity.icon.tooltiptext = |
sonyas75 > 22-05-2018 01:55:37 |
drage2 |
Ultima2m > 22-05-2018 07:30:05 |
sonyas75 пишет
Иконки мигают, но адрес не копирует и одновременно всплывает окно управления закладками. |
drage2 > 22-05-2018 07:50:05 |
Ultima2m Причем,закладку новую только в меню закладок....не в другие. И клик этот работает и в мультирежиме , а CopyClipboard - нет... 22-05-2018 08:00:49 скрытый текст |
sonyas75 > 22-05-2018 09:29:00 |
drage2 пишет
ок. скачал, туториал прочел. время будет - запущу, погоняю. |
drage2 > 22-05-2018 16:36:25 |
Коды из браузера скрытый текст Выделить код Код:// Дополнительные возможности для значка идентификации сайта в строке адреса ..... (function copyAddrIdentIco() { const identBox = document.getElementById("identity-box"); addEventListener("click", e => { e.stopPropagation(); e.target.setAttribute("context", "event.stopPropagation()"); switch (e.button) { case 2: // ПКМ без запроса открывает информацию о странице в вкладке 'Мультимедиа' .... identBox.onclick = function() { return false; } let doc = content.document; BrowserPageInfo( doc, ( (doc.location.protocol).slice(0,4) == "http") ? "mediaTab" : "generalTab" ); break; // generalTab, mediaTab, feedTab, permTab, securityTab case 0: // ЛКМ Добавит закладку .... if ( e.ctrlKey || e.shiftKey ) { identBox.oncontextmenu = function() { return true; } break; } else { identBox.oncontextmenu = function() { return false; } }; (self.bookmarkCurrentPage || (self.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook)))(gBrowser.selectedBrowser, true); // значок идентификации сайта мигает identBox.setAttribute("style", "background:red;"); setTimeout(function() { identBox.removeAttribute("style") }, 300); } } , true, identBox ); })(); |
Dumby > 22-05-2018 18:23:33 |
drage2 пишет
_identityIcon так _identityIcon скрытый текст Выделить код Код:(identBox => { var tip = "Some tooltip text"; var icon = gIdentityHandler._identityIcon; addEventListener("mouseenter", () => icon.setAttribute("tooltiptext", tip), false, icon || 1); addDestructor(() => icon.setAttribute("tooltiptext", gNavigatorBundle.getString("identity.icon.tooltip")) ); var listener = { handleEvent(e) { e.ctrlKey || e.shiftKey || e.detail > 1 || this[e.type](e); }, click(e) { if (e.button || !identBox.contains(e.target)) return; e.stopPropagation(); this.bookmarkCurrentPage(gBrowser.selectedBrowser, true); identBox.setAttribute("style", "background:red;"); setTimeout(() => identBox.removeAttribute("style"), 300); }, contextmenu(e) { e.preventDefault(); var url = gBrowser.currentURI.spec; BrowserPageInfo(url, url.startsWith("http") ? "mediaTab" : "generalTab"); }, get bookmarkCurrentPage() { delete this.bookmarkCurrentPage; return this.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook); } }; addEventListener("click", listener, true, identBox.parentNode); addEventListener("contextmenu", listener, false, identBox); })(document.getElementById("identity-box") || 1); |
drage2 > 22-05-2018 18:46:19 |
Dumby А, это для 57.... скрытый текст Выделить код Код:// Дополнительные возможности для значка идентификации сайта в строке адреса ..... (identBox => { var tip = "Л: Добавить закладку\nП: Мультимедиа"; var icon = gIdentityHandler._identityIcon; addEventListener("mouseenter", () => icon.setAttribute("tooltiptext", tip), false, icon || 1); addDestructor(() => icon.setAttribute("tooltiptext", gNavigatorBundle.getString("identity.icon.tooltip")) ); var listener = { handleEvent(e) { e.ctrlKey || e.shiftKey || e.detail > 1 || this[e.type](e); }, click(e) { if (e.button || !identBox.contains(e.target)) return; e.stopPropagation(); PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId); identBox.setAttribute("style", "background:red;"); setTimeout(() => identBox.removeAttribute("style"), 300); }, contextmenu(e) { e.preventDefault(); var url = gBrowser.currentURI.spec; BrowserPageInfo(url, url.startsWith("http") ? "mediaTab" : "generalTab"); }, get bookmarkCurrentPage() { delete this.bookmarkCurrentPage; return this.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook); } }; addEventListener("click", listener, true, identBox.parentNode); addEventListener("contextmenu", listener, false, identBox); })(document.getElementById("identity-box") || 1); Заманало...Copy Url в мультережиме сдохло... |
momo2000 > 23-05-2018 10:09:54 |
Dumby
А может кто поправить самую простецкую Autocopy? Выделить код Код:({ PREF_ROOT: "autocopy", init: function() { cbu.isPref(this.PREF_ROOT, true); gPrefService.addObserver(this.PREF_ROOT, this, false); addDestructor(()=> gPrefService.removeObserver(this.PREF_ROOT, this)); if (!gPrefService.getBoolPref(this.PREF_ROOT)) return; this.setAutocopy(true); }, observe: function(subj, topic, data) { if (data == this.PREF_ROOT) this.setAutocopy(gPrefService.getBoolPref(data)); }, setAutocopy: function(set) { var method = set ? addEventListener : removeEventListener; for(var type of ["mousedown", "mouseup"]) method(type, this, false, gBrowser); }, handleEvent: function(e) { if (e.button || e.target instanceof Ci.nsIDOMNSEditableElement) return; var win = e.target.ownerDocument.defaultView; if (win.top != content) return; var sel = win.getSelection().toString(); if (e.type == "mousedown") {this.sel = sel; return;} if (!sel || sel == this.sel) return; goDoCommand("cmd_copy"); } }).init(); |
sonyas75 > 23-05-2018 11:44:34 |
momo2000 |
momo2000 > 23-05-2018 15:00:44 |
sonyas75 |
drage2 > 01-06-2018 12:46:17 |
Код для Seamonkey, но tooltiptext не могу вставить скрытый текст Выделить код Код:// Дополнительные возможности для значка идентификации сайта в строке адреса ............... addEventListener("click", e=> { if ( e.button == 1 || !/page-proxy-favicon|page-proxy-button/.test(e.target.id) || !cbu.getPrefs("CB.Autocopy.addToAddressBar") ) return; e.preventDefault(); e.stopPropagation(); e.target.setAttribute("context", "event.stopPropagation()"); // ПКМ без запроса открывает информацию о странице.... if ( e.button == 2 ) BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "generalTab" : "generalTab")); // ЛКМ копирует текущий адрес .... if ( e.button !== 0 ) return; gClipboard.write( content.location ); alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); alertsService.showAlertNotification("chrome://global/skin/icons/cpd_OK.png", "Clipboard", "Адрес в буфере"); setTimeout(()=> alertsService.closeAlert(), 1000); // значок идентификации сайта мигает красным .... var id = (Services.appinfo.name == "SeaMonkey") ? "page-proxy-deck" : "identity-box"; document.getElementById(id).style.background = "red"; setTimeout(()=> document.getElementById(id).style.background = "", 300); }, true, gURLBar); А это код в XUL файле Seamonkey скрытый текст Выделить код Код:deck id="page-proxy-deck" class="urlbar-icons" ondragstart="proxyIconDNDObserver.onDragStart(event);" onclick="handlePageProxyClick(event);"> <image id="page-proxy-button" tooltiptext="&proxyIcon.tooltip;"/> <image id="page-proxy-favicon" validate="never" onload="this.parentNode.selectedIndex = 1; event.stopPropagation();" onerror="gBrowser.addToMissedIconCache(this.src);" tooltiptext="&proxyIcon.tooltip;"/> |
yacornei > 06-06-2018 13:42:25 |
Подскажите люди добры |
func4ptch4 > 06-06-2018 14:12:51 |
yacornei пишет
https://forum.mozilla-russia.org/viewtopic.php?pid=758360#p758360 |
Coroner > 06-06-2018 23:43:43 |
Приветствую, форумчане. скрытый текст Выделить код Код:// Настройка функций кликов мыши для кнопки ..................................... this.onclick = function(e) { if ( e.button == 0 ) { if ( getSelect() ) { var text = getSelect(); } else { var value = custombuttons.promptBox('Поиск по сайту в Google', 'Bведите текст ....'); var text = value[0] ? value[1] : false; if ( text == false ) return; } searchInWebsite( text ); } if ( e.button == 1 ) searchInWebsite( gClipboard.read() ); }; /* Запускает поиск по сайту в Google текста который передан как аргумент при вызове функции ...............................................*/ function searchInWebsite( text ) { /* var text = escape( convertFromUnicode("UTF-8", text) ); */ /* удалено для 57+ */ var url = content.document.domain; var url = encodeURIComponent( url ); var url = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url; gBrowser.selectedTab = gBrowser.addTab( url ); }; /* Функция отдаст выделенный текст из страницы или текстового поля, если текст не выделен отдаст 'false' ...........................................*/ function getSelect() { // выделенный текст из страницы .... var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); // выделенный текст из текстового поля .... if ( selection == '' ) { var theBox = document.commandDispatcher.focusedElement; if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selection = theBox.value.substring(startPos, endPos); } }; // убираем пробелы с обоих концов текста .... if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,""); return ( selection == '')? false: selection; }; // Подсказка для кнопки ............................................................. this.tooltipText = "Поиск по сайту \nЛ: Поиск выделенного или введённого текста \nС: Поиск текста из буфера обмена \nП: CB меню"; var cssURI = makeURI("data:text/css," + encodeURIComponent(self.Help)); var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); sss.loadAndRegisterSheet(cssURI, sss.AGENT_SHEET); которая прекрасно работала до того момента, когда вздумалось мне включить штатную стартовую страницу. После чего эта кнопка перестала работать на любой странице, кроме страницы дополнения Quick Dial. Которое ранее было установлено и как домашняя страница. Если отключить Quick Dial, то кнопка, понятное дело, вообще не работает (окно ввода текста появляется, но новая вкладка с поиском не открывается). Разумеется что столь сильное колдунство воспроизводить вряд-ли кто-то захочет (да и вряд-ли сможет без конкретно моего профиля), но может быть есть какие-то идеи или проблема известна в узких кругах опытных людей? |
unter_officer > 07-06-2018 00:35:34 |
Coroner |
Dumby > 07-06-2018 06:02:18 |
Coroner пишет
Что при этом пишет Консоль браузера (Ctrl+Shift+J) ? На странице about:support Каково значение настройки extensions.webextensions.remote ? |
Coroner > 13-06-2018 11:36:36 |
Dumby пишет
Прошу прощения за долгий ответ. Нечаянно весь профиль удалился (он сам, я ничего не трогал ©). Вся папка на "Д", вместе с профилями TheBat и Sylpheed. В общем выяснил что extensions.webextensions.remote был в false, layers.gpu-process.enabled, browser.tabs.remote.autostart, browser.tabs.remote.autostart.2 — тоже false, dom.ipc.processCount =1. Так же не работала кнопка перевода выделенного текста по ПКМ. Эти кнопки работали лишь на новой вкладке дополнения Quick Dial. На любой другой новая вкладка не открывалась (в случае поиска по сайту после ввода текста в окошко), или не появлялось окошко с переводом текста (в случае кнопки google-translate). При воссоздании профиля с нуля выяснилось, что часть настроек из user.js не применяются совсем. Очистил настройки. Кнопки заработали при сбросе по умолчанию extensions.e10sBlocksEnabling , browser.tabs.remote.force-enable и extensions.e10sBlockedByAddons=false. Так что сам себе проблем насоздавал, хотя почему так произошло — теперь уже не знаю. Благодарю за помощь. И, если не трудно, напомните пожалуйста за что эти настройки отвечают. Поиск по форуму выводит лишь результаты о включении/выключении этих параметров. А они в user.js давно уже были. Уже из башки выветрилось зачем они нужны. скрытый текст Dumby, а чем вы кавычки-ёлочки ставите? Кнопками вроде «Insert special symbol» или может дополнением, вроде Clippings? И то и другое, конечно, здорово, но на некоторых сайтах часто их ставить приходится и проще бывает через Ctrl-C Ctrl-V размножать, но и это надоедает... |
muxtair > 20-06-2018 09:22:28 |
Подскажите ПЛЗ. |
unter_officer > 20-06-2018 13:07:44 |
muxtair > 20-06-2018 14:16:57 |
Я не специалист, что и куда это того. Вы не подскажите что и куда вставлять(код) на который дали ссылку. |
Три рубля > 05-09-2018 10:52:02 |
В браузере Basilisk (основан на Firefox 52) не могу установить кнопочку Cookies Permissions )-: По клику на кнопку выпадает только менюшка самого Custom Buttons: https://www.radikal.kz/Lhh.jpg Не подскажете, люди добрые, как починить? |
Garalf > 05-09-2018 13:36:36 |
Три рубля |
Три рубля > 05-09-2018 16:38:54 |
Garalf пишет
Как раз Куки Экстерминатор у меня замечательно встал и работает |
Kiril__777 > 09-09-2018 17:02:57 |
Перестало на Fx61 вот это работать И вот это И вот это В общем как будто отвалилось то, что создавало меню с помощью кнопки. |
Dobrov > 12-09-2018 10:21:51 |
Сделал Три кнопки, выполняют множество функций, прошу оценить: «3акладки» - кнопка-комбайн, более 30 функций: http://victor-dobrov.narod.ru/Share/Fir … ttons.html (т.к. код слишком объёмный, разместил отдельно) скрытый текст Если имя профиля содержит "admin" или "root", кнопка переключается в экспертный режим. GreaseMonkey: UserScriptLoader.uc.js GESTURES жесты мыши; CB drag and go перетаскивание Context Search, zoomButton, RSS feed-button URL-панель кнопок в панели адреса, Подчеркивание домена Выпадающий URL-список по ширине строки адреса Контекстное меню к выпадающему URL-списку Выделение вкладки, добавленой в закладки Расширение downloads-button, PanelUI, bookmarks-menu, urlbar-button… Обработка кликов, горячих клавиш, долгих нажатий Подсказки к ссылкам, Остановить загрузку всех вкладок Открыть закладку средним кликом, не закрывая меню Адрес закладки в подсказке вкладки Восстановить иконки закладок в меню папок закладок Закладки в контекстном меню страницы Закладки: контекстное меню на клавише/клике мыши Save snapshot to html Поиск похожих изображений в Google Скрыть Findbar после клика мыши Редактировать сохранённые логины и пароли Раскрыть пароли в полях ввода *** Полоса загрузки в адресной строке Добавить закладку двойным кликом на папке закладок Автоскрытие панели вкладок Стили некоторых кнопок, tooltip и scrollbar …и многое другое Reader mode - переключение в режим чтения, поиск из буфера, замена стиля страниц, запрет загрузки графики, подсветка ссылок… Выделить код Код: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%3EReader%20mode%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsSAAALEgHS3X78AAAAFnpUWHRBdXRob3IAAAiZS8lPKsovAwAIuwKNGwWQuAAABEBJREFUSMfdVm1MW1UYPufefn9DoS0tg96ChAURxgB/GL4CsYyEQLLFuBhHokyDKSHMZAY/lxh/GeN+6A9jJsSP6I8p2yjwS7eIIh/bCLhBtmQhRmb2g7SglLK29xzf97Zdurpm6s/d5Kbn3PM8z/tx3vecEvLIPb29va6ioqIZk8kke73eM2NjY5pc2JmZGaG4uPjDwsLCmNvtvtjT0+N6qAGn03kGfji+lFLu8/lGcmElSRpCTBoPjo0+zPsinU4XFkVxt7S09BskGwyGze7ubnc21u/3F+r1+tsoDJGOq1SqqFarDaNGJk7InKyurj69t7dnM5vNS+vr631Wq3WWc27f3t62ZhsQBKEAHHAD5urExMRRSOnlWCxmW1tb8+eMoKCgIJjy6CTO29rafC0tLf6NjQ2ajV1eXqaNjY2d7e3t+1PpehW5drt98oHisEH7IMQ/1Wr1Xpr0Xx5wpgK5oPEXaJX8A1BeXt6PHthstkv/twKB+z1qlJWVvXTfHkCeSSgUOoJjKLsf+vr6KgcGBlz/VjgQCLiQA9yLOA+Hw0dQM7MiJEwP2jIaDCG9TnfXaDRsejyes7BWmUu4q6sLRc8ajcZN5EDFhVAD09TZ2em7B4SQApn1rFKr742hom43NzfXZYu3trbWwdrGgzioBZseIKn00Pz8fAyNu6QyduLTz9lHCyvsnW8nWdVTTSy1L/PQ0eaamppGeJ8cHR214DdcQwxikTMMXJfkUzh5eXmXUJt0dHRUqlWqiDnfzk/PLrFglLPx7QS/EOHsy982mVRdw6BGmcPhWIZmYvByGP8KIrBWq2AQixzkogZqAW4XIt8vQnMc2traeqbt2ef5of7jJLoTpUyWiRxPUJPNQiBcsjAdpJFIxElxAs/Ozo4Dfuhzb54ijzc1kbu7UcqBE48lqLN0H7lz6xa5eXVRDdpXBNjEV5D02IGDhMnJ/KIOvom4TKUnDhBBFNGjWFVV1YvV1dX9KlGM4zeIQMEodpO2FY3yuoPpo+eEClpehZNEPAagjF1UyoxCJHHCGaM2u31uZWXlM1yCbj0GZd0sJ+JcISE2ZQCnciKhDGVZjgrT09OncXJ99idFH73BGkZ5tVYgNxbnKM6h9JbStmF8Gb/dWJyniOGpXkpGntTCZ2pq6gMBSvRHjUazNRc8T+eDF4jepONavZ7ozXr++9pNPvnJx3iw4Tl1Pm0AjuWgKAoE1xCDWA1ygLswGSS/TIxT6ItwbW1t0pLHU/wuOmEwW/jh4dfYG19/x154733m9EosdYCNw4kpZl40cMmcwzXEIPZ14BwePskMFosSUElJyVuZra4Fwlc01Si4V+mmgXqfbWhocGY3Wn19vQPWfiZZHNSAS+uLkZER9X0EyKEIVfIyHHrXoeW55PXegfSdGhwctOY6KoaGhiyAfxtuvT+gq3lFRcU10DiOWo/On4i/AftH0ze2wWtnAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041F%u0440%u0435%u043E%u0431%u0440%u0430%u0437%u043E%u0432%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0438%0Afunction%20runLinkification%28%29%20%7B%0Avar%20domains%20%3D%20%5B%20%22ac%22%2C%20%22ad%22%2C%20%22ae%22%2C%20%22aero%22%2C%20%22af%22%2C%20%22ag%22%2C%20%22ai%22%2C%20%22al%22%2C%20%22am%22%2C%20%22an%22%2C%20%22ao%22%2C%20%22aq%22%2C%20%22ar%22%2C%20%22arpa%22%2C%20%22as%22%2C%20%22asia%22%2C%20%22at%22%2C%20%22au%22%2C%20%22aw%22%2C%20%22ax%22%2C%20%22az%22%2C%20%22ba%22%2C%20%22bb%22%2C%20%22bd%22%2C%20%22be%22%2C%20%22bf%22%2C%20%22bg%22%2C%20%22bh%22%2C%20%22bi%22%2C%20%22biz%22%2C%20%22bj%22%2C%20%22bm%22%2C%20%22bn%22%2C%20%22bo%22%2C%20%22br%22%2C%20%22bs%22%2C%20%22bt%22%2C%20%22bv%22%2C%20%22bw%22%2C%20%22by%22%2C%20%22bz%22%2C%20%22ca%22%2C%20%22cat%22%2C%20%22cc%22%2C%20%22cd%22%2C%20%22cf%22%2C%20%22cg%22%2C%20%22ch%22%2C%20%22ci%22%2C%20%22ck%22%2C%20%22cl%22%2C%20%22cm%22%2C%20%22cn%22%2C%20%22co%22%2C%20%22com%22%2C%20%22coop%22%2C%20%22cr%22%2C%20%22cu%22%2C%20%22cv%22%2C%20%22cx%22%2C%20%22cy%22%2C%20%22cz%22%2C%20%22de%22%2C%20%22dj%22%2C%20%22dk%22%2C%20%22dm%22%2C%20%22do%22%2C%20%22dz%22%2C%20%22ec%22%2C%20%22edu%22%2C%20%22ee%22%2C%20%22eg%22%2C%20%22er%22%2C%20%22es%22%2C%20%22et%22%2C%20%22eu%22%2C%20%22fi%22%2C%20%22fj%22%2C%20%22fk%22%2C%20%22fm%22%2C%20%22fo%22%2C%20%22fr%22%2C%20%22ga%22%2C%20%22gb%22%2C%20%22gd%22%2C%20%22ge%22%2C%20%22gf%22%2C%20%22gg%22%2C%20%22gh%22%2C%20%22gi%22%2C%20%22gl%22%2C%20%22gm%22%2C%20%22gn%22%2C%20%22gov%22%2C%20%22gp%22%2C%20%22gq%22%2C%20%22gr%22%2C%20%22gs%22%2C%20%22gt%22%2C%20%22gu%22%2C%20%22gw%22%2C%20%22gy%22%2C%20%22hk%22%2C%20%22hm%22%2C%20%22hn%22%2C%20%22hr%22%2C%20%22ht%22%2C%20%22hu%22%2C%20%22id%22%2C%20%22ie%22%2C%20%22il%22%2C%20%22im%22%2C%20%22in%22%2C%20%22info%22%2C%20%22int%22%2C%20%22io%22%2C%20%22iq%22%2C%20%22ir%22%2C%20%22is%22%2C%20%22it%22%2C%20%22je%22%2C%20%22jm%22%2C%20%22jo%22%2C%20%22jobs%22%2C%20%22jp%22%2C%20%22ke%22%2C%20%22kg%22%2C%20%22kh%22%2C%20%22ki%22%2C%20%22km%22%2C%20%22kn%22%2C%20%22kp%22%2C%20%22kr%22%2C%20%22kw%22%2C%20%22ky%22%2C%20%22kz%22%2C%20%22la%22%2C%20%22lb%22%2C%20%22lc%22%2C%20%22li%22%2C%20%22lk%22%2C%20%22lr%22%2C%20%22ls%22%2C%20%22lt%22%2C%20%22lu%22%2C%20%22lv%22%2C%20%22ly%22%2C%20%22ma%22%2C%20%22mc%22%2C%20%22md%22%2C%20%22me%22%2C%20%22mg%22%2C%20%22mh%22%2C%20%22mil%22%2C%20%22mk%22%2C%20%22ml%22%2C%20%22mm%22%2C%20%22mn%22%2C%20%22mo%22%2C%20%22mobi%22%2C%20%22mp%22%2C%20%22mq%22%2C%20%22mr%22%2C%20%22ms%22%2C%20%22mt%22%2C%20%22mu%22%2C%20%22museum%22%2C%20%22mv%22%2C%20%22mw%22%2C%20%22mx%22%2C%20%22my%22%2C%20%22mz%22%2C%20%22na%22%2C%20%22name%22%2C%20%22nc%22%2C%20%22ne%22%2C%20%22net%22%2C%20%22nf%22%2C%20%22ng%22%2C%20%22ni%22%2C%20%22nl%22%2C%20%22no%22%2C%20%22np%22%2C%20%22nr%22%2C%20%22nu%22%2C%20%22nz%22%2C%20%22om%22%2C%20%22org%22%2C%20%22pa%22%2C%20%22pe%22%2C%20%22pf%22%2C%20%22pg%22%2C%20%22ph%22%2C%20%22pk%22%2C%20%22pl%22%2C%20%22pm%22%2C%20%22pn%22%2C%20%22pr%22%2C%20%22pro%22%2C%20%22ps%22%2C%20%22pt%22%2C%20%22pw%22%2C%20%22py%22%2C%20%22qa%22%2C%20%22re%22%2C%20%22ro%22%2C%20%22rs%22%2C%20%22ru%22%2C%20%22rw%22%2C%20%22sa%22%2C%20%22sb%22%2C%20%22sc%22%2C%20%22sd%22%2C%20%22se%22%2C%20%22sg%22%2C%20%22sh%22%2C%20%22si%22%2C%20%22sj%22%2C%20%22sk%22%2C%20%22sl%22%2C%20%22sm%22%2C%20%22sn%22%2C%20%22so%22%2C%20%22sr%22%2C%20%22st%22%2C%20%22su%22%2C%20%22sv%22%2C%20%22sy%22%2C%20%22sz%22%2C%20%22tc%22%2C%20%22td%22%2C%20%22tel%22%2C%20%22tf%22%2C%20%22tg%22%2C%20%22th%22%2C%20%22tj%22%2C%20%22tk%22%2C%20%22tl%22%2C%20%22tm%22%2C%20%22tn%22%2C%20%22to%22%2C%20%22tp%22%2C%20%22tr%22%2C%20%22travel%22%2C%20%22tt%22%2C%20%22tv%22%2C%20%22tw%22%2C%20%22tz%22%2C%20%22ua%22%2C%20%22ug%22%2C%20%22uk%22%2C%20%22us%22%2C%20%22uy%22%2C%20%22uz%22%2C%20%22va%22%2C%20%22vc%22%2C%20%22ve%22%2C%20%22vg%22%2C%20%22vi%22%2C%20%22vn%22%2C%20%22vu%22%2C%20%22wf%22%2C%20%22ws%22%2C%20%22ye%22%2C%20%22yt%22%2C%20%22yu%22%2C%20%22za%22%2C%20%22zm%22%2C%20%22zw%22%20%5D%3B%0A%0A//%20%28c%29%20http%3A//yellow5.us/firefox/linkification/%0Avar%20tagsForSkip%20%3D%20%5B%20%22a%22%2C%20%22applet%22%2C%20%22area%22%2C%20%22embed%22%2C%20%22frame%22%2C%20%22frameset%22%2C%20%22head%22%2C%20%22iframe%22%2C%20%22img%22%2C%20%22map%22%2C%20%22meta%22%2C%20%22noscript%22%2C%20%22object%22%2C%20%22option%22%2C%20%22param%22%2C%20%22script%22%2C%20%22select%22%2C%20%22style%22%2C%20%22textarea%22%2C%20%22title%22%20%5D%3B%0A%0Avar%20inArray%20%3D%20function%28value%2C%20items%29%20%7B%0A%09for%20%28var%20i%20%3D%200%3B%20items%5Bi%5D%20%26%26%20value%20%21%3D%20items%5Bi%5D%3B%20i++%29%3B%0A%09return%20value%20%3D%3D%20items%5Bi%5D%3B%0A%7D%0A%0Avar%20urlsRegExp%20%3D%20/%28%5E%7C%5B%5Cs%28%29%5C%5B%5C%5D_%3A%7E+@*%22%27%3E%5D%29%28%28%3F%3Ahttps%3F%7Cftp%7Circ%29%3A%5C/%5C/%29%3F%28%5B-a-z%5Cd%3B%3A%26%3D+%24%2C%25_.%21%7E*%27%28%29%5D+@%29%3F%28%28%3F%3A%28%3F%3A25%5B0-5%5D%7C2%5B0-4%5D%5Cd%7C%5B01%5D%3F%5Cd%5Cd%3F%29%5C.%29%7B3%7D%28%3F%3A25%5B0-5%5D%7C2%5B0-4%5D%5Cd%7C%5B01%5D%3F%5Cd%5Cd%3F%29%7C%28%3F%3A%28www%7Circ%7Cftp%29%5C.%29%3F%28%3F%3A%28%3F%3A%5Ba-z%5Cd%5D%7C%5Ba-z%5Cd%5D%5Ba-z%5Cd-%5D*%5Ba-z%5Cd%5D%29%5C.%29+%28%5Ba-z%5D%7B2%2C6%7D%29%29%28%3A%5Cd+%29%3F%28%5C/%28%3F%3A%5B-%5Cw.%21%7E*%27%28%29%25%3A@%26%3D+%24%2C%3B%5C/%5D*%5B%5Cw%7E*%25@%26%3D+%24%5C/%5D%29%3F%28%3F%3A%5C%3F%28%3F%3A%5B-%5Cw%3B%5C/%3F%3A@%26%3D+%24%2C.%21%7E*%27%28%29%25%5C%5B%5C%5D%7C%5D*%5B%5Cw%5C/@%26%3D+%24%7E*%25%5D%29%3F%29%3F%28%3F%3A%23%28%3F%3A%5B-%5Cw%3B%5C/%3F%3A@%26%3D+%24%2C.%21%7E*%27%28%29%25%5D*%5B%5Cw%5C/@%26%3D+%24%7E*%25%5D%29%3F%29%3F%7C%5Cb%29/i%0A%0Avar%20linksCounter%20%3D%200%3B%0Avar%20current%20%3D%20content.document.body%3B%0Awhile%20%28current%29%20%7B%0A%09if%20%28current.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20%28match%20%3D%20current.nodeValue.match%28urlsRegExp%29%29%20%26%26%20inArray%28match%5B6%5D%2C%20domains%29%29%20%7B%0A%09%09var%20url%3B%0A%09%09if%20%28match%5B3%5D%20%26%26%20%21%20match%5B2%5D%20%26%26%20%21%20match%5B5%5D%20%26%26%20%21%20match%5B8%5D%20%26%26%20%28match%5B3%5D.indexOf%28%22%3A%22%29%20%3D%3D%20-1%20%7C%7C%20match%5B3%5D.indexOf%28%22mailto%3A%22%29%20%3D%3D%200%29%29%20%7B%0A%09%09url%20%3D%20%28match%5B3%5D.indexOf%28%22mailto%3A%22%29%20%3D%3D%20-1%20%3F%20%22mailto%3A%22%20%3A%20%22%22%29%0A%09%09%09+%20match%5B3%5D%0A%09%09%09+%20match%5B4%5D%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09url%20%3D%20%28match%5B2%5D%20%3F%20match%5B2%5D%20%3A%20%28%21%20match%5B5%5D%20%7C%7C%20match%5B5%5D%20%3D%3D%20%22www%22%20%3F%20%22http%22%20%3A%20match%5B5%5D%29%20+%20%22%3A//%22%29%0A%09%09%09+%20%28match%5B3%5D%20%3F%20match%5B3%5D%20%3A%20%22%22%29%0A%09%09%09+%20match%5B4%5D%0A%09%09%09+%20%28match%5B7%5D%20%3F%20match%5B7%5D%20%3A%20%22%22%29%0A%09%09%09+%20%28match%5B8%5D%20%3F%20match%5B8%5D%20%3A%20%22%22%29%3B%0A%09%09%7D%0A%09%09if%20%28url%29%20%7B%0A%09%09var%20range%20%3D%20content.document.createRange%28%29%3B%0A%09%09range.setStart%28current%2C%20match.index%20+%20match%5B1%5D.length%29%3B%0A%09%09range.setEnd%28current%2C%20match.index%20+%20match%5B0%5D.length%29%3B%0A%09%09var%20a%20%3D%20content.document.createElement%28%22a%22%29%3B%0A%09%09a.setAttribute%28%22href%22%2C%20url%29%3B%0A%09%09a.setAttribute%28%22target%22%2C%20%22_blank%22%29%3B%0A%09%09a.setAttribute%28%22class%22%2C%20%22linkified%22%29%3B%0A%09%09a.appendChild%28range.extractContents%28%29%29%3B%0A%09%09range.insertNode%28a%29%3B%0A%09%09range.detach%28%29%3B%0A%09%09linksCounter++%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28current.tagName%20%26%26%20%21inArray%28current.tagName.toLowerCase%28%29%2C%20tagsForSkip%29%20%26%26%20current.firstChild%29%20%7B%0A%09%09current%20%3D%20current.firstChild%3B%0A%09%7D%0A%09else%20if%20%28current.nextSibling%29%20%7B%0A%09%09current%20%3D%20current.nextSibling%3B%0A%09%7D%0A%09else%20%7B%0A%09%09do%20%7B%0A%09%09current%20%3D%20current.parentNode%3B%0A%09%09%7D%20while%20%28%21current.nextSibling%20%26%26%20current.parentNode%29%3B%0A%09%09current%20%3D%20current.nextSibling%3B%0A%09%7D%0A%7D%7D%3B%0A%0A%0A%0A%0A//%20%u041A%u043D%u043E%u043F%u043A%u0430%3A%20%u0440%u0435%u0436%u0438%u043C%20%u0447%u0442%u0435%u043D%u0438%u044F%0A%0Avar%20tooltipSimple%20%3D%0A%27%20%u0412%u0438%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%uD83D%uDD0D%20%22%u0414%u043B%u044F%20%u0447%u0442%u0435%u043D%u0438%u044F%22%5Cn%27%20+%0A%27%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%u043C%u0438%20%uD83D%uDDB9%5Cn%27%20+%0A%27%20%u0443%u0431%u0438%u0440%u0430%u0435%u0442%u0441%u044F%20%u0440%u0435%u043A%u043B%u0430%u043C%u0430%2C%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0438%5Cn%5Cn%27%20+%0A%0A%27%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%3A%20%u0437%u0435%u043B%u0451%u043D%u044B%u0439%20%u0441%u0442%u0438%u043B%u044C%20%5Cn%27%20+%0A%27%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%u043E%u0442%u043A%u043B%20%7C%20%u0432%u043A%u043B%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0438%27%3B%0A%0Avar%20tooltipExpert%20%3D%0A%27%20%u0412%u0438%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%uD83D%uDD0D%20%22%u0414%u043B%u044F%20%u0447%u0442%u0435%u043D%u0438%u044F%22%5Cn%27%20+%0A%27%20%20%u2026%20+%u205FCtrl%3A%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%5Cn%5Cn%27%20+%0A%27%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%3A%20%u0437%u0435%u043B%u0451%u043D%u044B%u0439%20%u0441%u0442%u0438%u043B%u044C%20%5Cn%27%20+%0A%27%20%20%u2026%20+%u205FCtrl%3A%20%u043E%u0442%u043A%u043B%20%7C%20%u0432%u043A%u043B%20%u0441%u0442%u0438%u043B%u044C%5Cn%27%20+%0A%27%20%20%u2026%20+%u200AShift%3A%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%5Cn%27%20+%0A%27%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%u043E%u0442%u043A%u043B%20%7C%20%u0432%u043A%u043B%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0438%5Cn%27%20+%0A%27%20%20+%20Ctrl%3A%20%u043F%u043E%u0438%u0441%u043A%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%uD83D%uDCCB%5Cn%27%20+%0A%27%20%20+%20Shift%3A%20%u043F%u043E%u0438%u0441%u043A%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043E%u0433%u043E%u205F%uD83D%uDDB0%27%3B%0A%0A//%20%u0440%u0435%u0436%u0438%u043C%20%u0440%u0430%u0431%u043E%u0442%u044B%20%u043A%u043D%u043E%u043F%u043A%u0438%20-%20%u041F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0438%u043B%u0438%20%u042D%u043A%u0441%u043F%u0435%u0440%u0442%0Avar%20catprofile%20%3D%20Services.dirsvc.get%28%27ProfD%27%2C%20Ci.nsIFile%29.path.replace%28/.*%5C//%2C%20%22%22%29%3B%20//%20%u0438%u043C%u044F%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%0Aif%20%28%20/dobrov%7Cvictor%7Cadmin/.test%28catprofile%29%20%29%20SIMPLE%20%3D%200%3B%20else%20SIMPLE%20%3D%201%3B%09//%20%u043F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0440%u0435%u0436%u0438%u043C%0A%0Avar%20HINT%3B%20if%20%28%20SIMPLE%20%29%20HINT%20%3D%20tooltipSimple%3B%20else%20HINT%20%3D%20tooltipExpert%3B%0A%0Aconst%20CUT%20%3D%2025%3B%20const%20IN_NEW_TAB%20%3D%20true%3B%20const%20IN_BACKGROUND%20%3D%20false%3B%0Avar%20clipboard%3B%20var%20xclip%3B%0A%0Athis.onmouseover%20%3D%20function%28e%29%20%7B%0A%09setTimeout%28%28%29%3D%3E%20%7B%0A%09%09xclip%20%3D%20readFromClipboard%28%29.replace%28/%5Cs+/g%2C%27%20%27%29%3B%09//%20%u0443%u0431%u0440%u0430%u0442%u044C%20%u0441%u043B%u0443%u0436.%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B.%20%u0411%u0443%u0444%u0435%u0440%20%u043C%u044B%u0448%u0438%0A%09%09clipboard%20%3D%20custombuttons.cbService.readFromClipboard%28%29.replace%28/%5Cs+/g%2C%27%20%27%29%3B%09//%20%u0411%u0443%u0444%u0435%u0440%u044B%20%uD83D%uDCCB%u200AClipboard%2C%20%uD83D%uDDB0%u200APrimary%0A%09%09this.tooltipText%20%3D%20HINT%3B%0A%09%09if%20%28%20SIMPLE%20%29%20return%3B%0A%09%09this.tooltipText%20%3D%20clipboard%20%3F%20HINT%20+%20%22%5Cn%5Cn%uD83D%uDCCB%u200A%u200A%22%20+%20clipboard.substr%280%2C%20CUT%29%20+%20%22%5Cn%u200A%u200A%u200A%uD83D%uDDB0%20%22%20+%20xclip.substr%280%2C%20CUT%29%20%3A%20HINT%3B%20//%20%u043E%u0433%u0440%u0430%u043D%u0438%u0447%u0438%u0442%u044C%20%u0434%u043B%u0438%u043D%u0443%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%09%7D%2C%20300%29%3B%0A%7D%3B%0A%0Afunction%20searchclip%28text%29%20%7B%09//%20%u043F%u043E%u0438%u0441%u043A%20%u0444%u0440%u0430%u0437%u044B%20%u043F%u043E%u0438%u0441%u043A%u043E%u0432%u044B%u043C%20%u0434%u0432%u0438%u0436%u043A%u043E%u043C%20%u043F%u043E-%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%0A%09var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%09var%20submission%20%3D%20ss.currentEngine.getSubmission%28text%2C%20null%29%3B%0A%09getBrowser%28%29.selectedTab%20%3D%20getBrowser%28%29.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%0A%7D%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20if%28e.button%20%3D%3D%200%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%0A%09%09if%28e.ctrlKey%29%20%7B%20//%20+%20Ctrl%0A%09%09var%20currentURI%20%3D%20window.gBrowser.selectedBrowser.contentWindow.location%3B%0A%09%09getBrowser%28%29.selectedTab%20%3D%20getBrowser%28%29.addTab%28%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%20currentURI%20+%20%22%26hl%3Dru%22%29%3B%0A%09%09%7D%20else%20%7B%20//%20%u043A%u043B%u0438%u043A%0A%09%09%09this.setAttribute%28%27oncommand%27%2C%20%27getBrowser%28%29.mCurrentTab%28ReaderParent.toggleReaderMode%28event%29%29%27%29%3B%0A%09%09%09icon_change%28%20iconbutton%2C%20self.image%2C%203%2C%20%27%27%20%29%3B%0A%09%09//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0438%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%0A%09%09%09var%20but%20%3D%20document.getElementById%28%27reader-mode-button%27%29%3B%0A%09%09%09if%20%28but%29%20but.style.display%20%3D%20%22none%22%3B%0A%09%09%7D%0A%09%7D%20//%20%u041F%u041A%u041C%20%u043A%u043B%u0438%u043A%20%28%u0431%u0435%u0437%20Alt%2C%20Win%29%0A%20%20%20%20else%20if%28e.button%20%3D%3D%202%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%0A%09%09if%28e.shiftKey%29%20%7B%20//%20+%20Shift%0A%09%09%09runLinkification%28%29%3B%0A%09%09%7D%20else%20if%28e.ctrlKey%29%20%7B%20%09//%20+%20Ctrl%0A%09%09%09getMarkupDocumentViewer%28%29.authorStyleDisabled%20%3F%20gPageStyleMenu.switchStyleSheet%28%27%27%29%20%3A%20gPageStyleMenu.disableStyle%28%29%3B%0A%09%09%7D%20else%20%7B%20//%20%u043A%u043B%u0438%u043A%0A//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0441%u0442%u0438%u043B%u044C%20%u0438%u0437%20%u0441%u043F%u0440%u0430%u0432%u043A%u0438%0A%09%09%09setStyleForPages%28%29%3B%0A%09%09%7D%0A%09%7D%09else%20if%28e.button%20%3D%3D%201%29%20%7B%20//%20%u0421%u041A%u041C%20%u043A%u043B%u0438%u043A%0A%09%09if%28e.shiftKey%29%0A%09%09%09searchclip%28xclip%29%0A%09%09else%20if%28e.ctrlKey%29%09//%20+%20Ctrl%0A%09%09%09searchclip%28clipboard%29%0A%09%09else%20%7B%20//%20%u043A%u043B%u0438%u043A%0A//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043F%u043E%u043A%u0430%u0437%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%0A%09%09show_tooltip%28self.image%2C%20%27%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0430%20%u043A%u0430%u0440%u0442%u0438%u043D%u043E%u043A%3A%27%2C%20%27%u0432%u043A%u043B%u044E%u0447%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%22%u041E%u0447%u043A%u0438%22%20%u0446%u0432%u0435%u0442%u043D%u044B%u0435%27%2C%207000%29%3B%0A%09%09BrowserReload%28%20custombuttons.setPrefs%28s%2C%20custombuttons.getPrefs%28s%29%20%3D%3D%201%20%3F%202%20%3A%201%29%20%29%3B%0A%09%09%7D%0A%20%20%20%20%7D%0A%7D%3B%0A%0A//%20%u0411%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%2C%20+Ctrl%2C%20+Shift%0Athis.oncontextmenu%20%3D%20function%28e%29%20%7B%20if%28e.button%20%3D%3D%202%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%20%7D%20%7D%3B%0A%0Avar%20iconbutton%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Aconst%20greenbg%20%3D%20%22background-image%3A%20-moz-linear-gradient%28%23cfdbca%2C%20%23cfdbca%2C%20%23cfdbca%29%3B%22%0Aicon_change%28%20iconbutton%2C%20self.image%2C%201%2C%20%27%27%20%29%3B%0A%0Afunction%20icon_change%28%20icon%2C%20image%2C%20num%2C%20bg%20%29%20%7B%0A%09icon.src%20%3D%20image%3B%09//%20%u0437%u0435%u043B%u0451%u043D%u0430%u044F%20%u0438%u043A%u043E%u043D%u043A%u0430%0A%09if%20%28num%20%3D%3D%200%29%20%7B%0A%09%09icon.style.cssText%20%3D%20%22filter%3A%20grayscale%28100%25%29%20invert%2840%25%29%20contrast%28300%25%29%20%3B%22%3B%0A%09%7D%20else%20if%20%28num%20%3D%3D%201%29%20%7B%09//%20%u043A%u0440%u0430%u0441%u043D%u044B%u0439%0A%09%09icon.style.cssText%20%3D%20%22background-image%3A%20none%3B%20filter%3A%20unset%3B%22%3B%0A%09%09icon.style.cssText%20%3D%20%22filter%3A%20hue-rotate%2890deg%29%3B%22%20+%20bg%3B%0A%09%09iconbutton.setAttribute%28%27color%27%2C%20num%29%3B%0A%09%7D%20else%20if%20%28num%20%3D%3D%202%29%09%7B%20//%20%u0437%u0435%u043B%u0451%u043D%u044B%u0439%0A%09%09icon.style.cssText%20%3D%20%22background-image%3A%20none%3B%20filter%3A%20unset%3B%22%20+%20bg%3B%0A%09%09iconbutton.setAttribute%28%27color%27%2C%20num%29%3B%0A%09%7D%20else%20if%20%28num%20%3D%3D%203%29%20%7B%09//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0446%u0432%u0435%u0442%0A%09%09if%20%28%20iconbutton.getAttribute%28%27color%27%29%20%3D%3D%202%20%29%0A%09%09%09icon_change%28%20iconbutton%2C%20self.image%2C%201%2C%20bg%20%29%09%09//%20return%3B%0A%09%09else%0A%09%09%09icon_change%28%20iconbutton%2C%20self.image%2C%202%2C%20bg%20%29%3B%09//%20return%3B%0A%09%7D%20else%0A%09%09icon.style.cssText%20%3D%20%22background-image%3A%20none%3B%20filter%3A%20unset%3B%22%3B%0A%7D%3B%0A%0Avar%20s%20%3D%20%27permissions.default.image%27%3B%0Afunction%20toggleImage%28%29%20%7B%0A%09if%20%28%20custombuttons.getPrefs%28s%29%20%3D%3D%201%29%20%7B%0A%09%09icon_change%28%20iconbutton%2C%20self.image%2C%201%2C%20%27%27%20%29%3B%0A%09%7D%20else%20%7B%0A%09%09icon_change%28%20iconbutton%2C%20self.image%2C%200%2C%20%27%27%20%29%3B%0A%09%7D%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A//%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0435%20css-%u0441%u0442%u0438%u043B%u044F%20%u0432%u0441%u0435%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%u043D%u0430%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%u0439%20%u0432%20%u0421%u043F%u0440%u0430%u0432%u043A%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%0Aif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Avar%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%0Afunction%20setStyleForPages%28%20reason%20%29%20%7B%0A%09var%20style%20%3D%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%3B%0Aif%20%28%20style%20%29%20%7B%0A%09sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%09icon_change%28%20iconbutton%2C%20self.image%2C%201%2C%20%27%27%20%29%3B%0A%09%7D%0Aif%20%28%20%28%21style%20%26%26%20reason%20%21%3D%3D%20%27update%27%29%20%7C%7C%20%28style%20%26%26%20reason%20%3D%3D%20%27update%27%29%20%29%20%7B%0A%09sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%09icon_change%28%20iconbutton%2C%20self.image%2C%202%2C%20greenbg%20%29%3B%0A%09%7D%0A%7D%3B%0AaddDestructor%28function%28reason%29%20%7B%20if%20%28/update%7Cdelete/.test%28%20reason%20%29%20%29%20setStyleForPages%28reason%29%20%7D%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20if%28%21event.target%20%26%26%20%21this.disabled%29%20//%20Button%27s%20hotkey%20pressed%0A//%09this.open%20%3D%20true%3B%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/*AGENT_SHEET*/%0A%0A@-moz-document%20url-prefix%28%22http%22%29%2C%20url-prefix%28%22https%22%29%2C%20url-prefix%28%22ftp%22%29%2C%20url-prefix%28%22file%22%29%20%7B%0Ahtml%20*%2C%20html%20%7B%0Abackground%3A%20%23cfdbca%20%21important%3B%20text-shadow%3A%20none%20%21important%3B%0Acolor%3A%20%23000000%20%21important%3B%0A-moz-border-top-colors%3A%20%238FBC8F%20%21important%3B%20-moz-border-bottom-colors%3A%20%238FBC8F%21important%3B%20-moz-border-left-colors%3A%20%238FBC8F%20%21important%3B%20-moz-border-right-colors%3A%20%238FBC8F%20%21important%3B%0A%7D%0Acode%2C%20pre%2C%20input%2C%20samp%2C%20kbd%2C%20var%2C%20dfn%2C.postright%20%7B%0A-moz-appearance%3A%20none%20%21important%3B%0Abackground-color%3A%20%23BADBAD%20%21important%3B%0A%7D%0Ainput%2C%20select%2C%20textarea%2C%20button%20%7B%0A-moz-appearance%3A%20none%20%21important%3B%0Aborder%3A%201px%20solid%20%23BADBAD%20%21important%3B%0Abackground-color%3A%20%23BADBAD%20%21important%3B%0A%7D%0A.codebox%2C%20BLOCKQUOTE%2C%20TEXTAREA%2C%20.spoiler%20%7B%20-moz-border-top-colors%3A%20%23444%20%20%21important%3B%20-moz-border-bottom-colors%3A%20%23444%20%21important%3B%0A-moz-border-left-colors%3A%20%23444%20%21important%3B%20-moz-border-right-colors%3A%20%23444%20%21important%3B%20%7D%0Aa%3Alink%20%7B%20color%3A%20%23300090%20%21important%3B%0A%7D%0Aa%3Avisited%20%7B%20color%3A%20%23489412%20%21important%3B%20%7D%0Aa%3Aactive%20%7B%20color%3A%20%23d81e1e%20%21important%3B%20%7D%0Aa%3Ahover%20%7B%20color%3A%20%23d81e1e%20%21important%3B%20%7D%0A%7D%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E Compact Menu - обычное меню + PanelUI… Выделить код Код: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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Compact%20Menu%20mod%0Avar%20tooltipText%20%3D%0A%22%20%u043D%u0430%u0436%u0430%u0442%u044C%3A%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u0430%5Cn%22%20+%0A%22%20%u043D%u0430%u0436%u0430%u0442%u044C%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%20%28%u0418%u0441%u0442%u043E%u0440%u0438%u044F%29%5Cn%5Cn%22%20+%0A%22%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%3A%20%u2630%20%u0411%u044B%u0441%u0442%u0440%u043E%u0435%20%u043C%u0435%u043D%u044E%5Cn%22%20+%0A%22%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%u2026%20%u043D%u0430%u0436%u0430%u0442%u044C%2C%20%u0441%u0434%u0435%u043B%u0430%u0442%u044C%20%u0436%u0435%u0441%u0442%2C%20%u043E%u0442%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%5Cn%22%20+%0A%22%5Cn%22+%0A%22%20%u2022%20%u041B%u0435%u0432%u043E%3A%20%u043F%u0435%u0440%u0435%u0445%u043E%u0434%20%u041D%u0430%u0437%u0430%u0434%20%28%3D%3E%3A%20%u0412%u043F%u0435%u0440%u0451%u0434%29%20%5Cn%22%20+%0A%22%20%u2022%20R+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%20%28+-%29%5Cn%22%20+%0A%22%20%u2022%20M+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u21C4%5Cn%22%20+%0A%22%20%u2022%20L%3ER%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%28U%3A%20%u0421%u0442%u043E%u043F%29%5Cn%22%20+%0A%22%20%u2022%20UDU%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%5Cn%22%20+%0A%22%20%u2022%20DR%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u044D%u0448%5Cn%22%20+%0A%22%5Cn%22%20+%0A%0A%22%20%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u043E%u0431%u044A%u0435%u043A%u0442%u043E%u0432%20%u043C%u044B%u0448%u044C%u044E%3A%5Cn%22%20+%0A%22%20%u2026%20%u0432%u0437%u044F%u0442%u044C%20%u0438%20%u0442%u0430%u0449%u0438%u0442%u044C%20%28%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0443%29%22%20+%0A%22%5Cn%22%3B%0A%0Avar%20tooltipSimple%20%3D%0A%22%20%u041C%u0435%u043D%u044E%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20Firefox%5Cn%5Cn%22%20+%0A%0A%22%20%u0427%u0442%u043E%u0431%u044B%20%u0438%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%2C%20%u0432%u0440%u0430%u0449%u0430%u0439%u0442%u0435%5Cn%22%20+%0A%22%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%20%u043C%u044B%u0448%u0438%2C%20%u0437%u0430%u0436%u0430%u0432%20%u043F%u0440%u0430%u0432%u0443%u044E%20%u043A%u043D%u043E%u043F%u043A%u0443%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043C%u044B%u0448%u0438%3A%20%u043F%u0435%u0440%u0435%u0442%u0430%u0449%u0438%u0442%u044C%20%u0438%20%u0431%u0440%u043E%u0441%u0438%u0442%u044C%5Cn%22%20+%0A%22%20%u2026%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0438%20%28L%20%u043B%u0435%u0432%u043E%2C%20U%20%u0432%u0432%u0435%u0440%u0445%u2026%29%22%3B%0A%0A//%20%u0440%u0435%u0436%u0438%u043C%20%u0440%u0430%u0431%u043E%u0442%u044B%20%u043A%u043D%u043E%u043F%u043A%u0438%20-%20%u041F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0438%u043B%u0438%20%u042D%u043A%u0441%u043F%u0435%u0440%u0442%0Aconst%20SIMPLE%20%3D%20false%3B%0A%0Aif%20%28%20SIMPLE%20%29%0A%09tooltipText%20%3D%20tooltipSimple%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%20this.tooltipText%20%3D%20tooltipText%20%7D%3B%0A%0Athis.style.cssText%20%3D%20%22margin-left%3A%20-2px%3B%22%3B%0A%0Avar%20CreateMenu%20%3D%20event%20%3D%3E%20%7B%09//%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%09var%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0A%09mmb.collapsed%20%3D%20true%3B%0A%09%09addDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%0A%09if%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0A%09if%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%09%7D%09var%20ids%20%3D%20%5B%0A%09%09%22history-menu%22%2C%0A%09%09%22bookmarksMenu%22%2C%0A%09%09%22file-menu%22%2C%0A%09%09%22edit-menu%22%2C%0A%09%09%22view-menu%22%2C%0A%09%09%22tools-menu%22%2C%0A%09%09%22helpMenu%22%20%5D%3B%0A%09var%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29.filter%28id%3D%3E%20%7Breturn%20%28id%20%21%3D%3D%20null%29%7D%29%3B%0A%09var%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0A%09var%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%09function%20appendMenus%28parent%29%20%7B%0A%09%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09%7D%0A%09var%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09popup.position%20%3D%20%22after_start%22%3B%0A%09popup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0A%09popup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0A%09popup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%09popup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09%09appendMenus%28menubar%29%3B%0A%09%7D%2C%20false%29%3B%0A%09appendMenus%28popup%29%3B%0A%09popup.openPopup%28this%29%3B%0A%7D%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%09if%28event.button%20%3D%3D%200%29%20%7B%20//%20%u041B%u041A%u041C%0A%09%09if%28event.shiftKey%29%20//%20+Shift%0A%09%09%090%0A%09%09else%20if%28event.ctrlKey%29%20//%20+Ctrl%0A%09%09%09SidebarUI.toggle%28%22viewHistorySidebar%22%29%0A%09%09else%20//%20%u043A%u043B%u0438%u043A%0A%09%09%09CreateMenu%28event%29%09//%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%09%7D%20else%20if%28event.button%20%3D%3D%201%29%20//%20%u0421%u041A%u041C%20%u043A%u043B%u0438%u043A%0A%20%09%09document.getElementById%28%27History%3AUndoCloseTab%27%29.doCommand%28%29%09%09//%20%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u0440%u044B%u0442%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%0A%7D%3B%0A%0A//%20%u041F%u041A%u041C-%u043A%u043B%u0438%u043A%2C%20+%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0AaddEventListener%28%22contextmenu%22%2C%20event%20%3D%3E%20%7B%0A%09if%28%20%21event.metaKey%20%26%26%20%21event.altKey%20%29%20%7B%0A%09%09event.tooltipText%20%3D%20%27%27%3B%0A%09%09PanelUI.show%28event%29%3B%0A%09%09event.preventDefault%28%29%3B%0A%09%7D%0A%7D%2C%20false%2C%20this%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 Проверял работу на Firefox 56, Basilisk 52.9. |
dreamkz > 02-10-2018 10:35:47 |
Dumby пишет
Нашёл такое объяснение:
Это возможность запуска дополнений в отдельном процессе. |
broker > 04-11-2018 21:46:44 |
Dobrov |
usalex > 15-11-2018 05:56:14 |
Кнопка Save snapshot to html, которая вот здесь: |
usalex > 15-11-2018 17:43:27 |
Кнопка "Изменить масштаб" тоже не работает в 63. |
rubel > 24-11-2018 17:02:45 |
Нужна кнопка для перезапуска файлов userChrome.css и userContent.css для Firefox 55. |
Mishania > 14-12-2018 15:31:11 |
Есть кнопка Google translate Выделить код Код: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%3EGoogle%20translate%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg%3D%3D%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*/%0A%0Avar%20btn%20%3D%20this%3B%0A%0Abtn.lastClick%20%3D%20%7B%0A%20%20%20%20X%3A%200%2C%0A%20%20%20%20Y%3A%200%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e%20%26%26%20e.button%20%3D%3D%200%20%26%26%20e.view.top%20%3D%3D%20content%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lc%20%3D%20btn.lastClick%3B%0A%20%20%20%20%20%20%20%20lc.X%20%3D%20e.clientX%3B%0A%20%20%20%20%20%20%20%20lc.Y%20%3D%20e.clientY%3B%0A%20%20%20%20%7D%0A%7D%2C%20false%29%3B%0A%0Avar%20createWindow%20%3D%20function%28text%2C%20status%2C%20title%2C%20id%2C%20pos%2C%20size%29%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow.top%20%3D%3D%20content%20%3F%20document.commandDispatcher.focusedWindow%20%3A%20content%3B%0A%20%20%20%20var%20doc%20%3D%20win.document%2C%20wId%20%3D%20%27ujs_window%27+%28id%20%7C%7C%20%27%27%29%2C%20w%20%3D%20doc.getElementById%28wId%29%3B%0A%20%20%20%20var%20keyDown%20%3D%20function%28e%29%7Bif%28%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%26%26%20e.keyCode%20%3D%3D%2027%29doc.getElementById%28wId%29.closeWin%28%29%7D%3B%0A%20%20%20%20if%28w%29w.closeWin%28%29%3B%0A%20%20%20%20w%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20w.setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bwidth%3Aauto%3Bheight%3Aauto%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bmargin%3A0%3Bz-index%3A99999%3Boverflow%3Ahidden%3Bcursor%3Amove%3B%27+%28typeof%20w.style.borderRadius%20%3D%3D%3D%20%27string%27%20%3F%20%27background-color%3A%23f3f5f7%3Bpadding-top%3A4px%3Bborder-radius%3A4px%3Bbox-shadow%3A0%200%2012px%20rgba%280%2C0%2C0%2C.4%29%3B%27%20%3A%20%27background%3A-o-skin%28%22Window%20Skin%22%29%3B%27%29%29%3B%0A%20%20%20%20w.id%20%3D%20wId%3B%0A%20%20%20%20w.closeWin%20%3D%20function%28%29%7B%0A%20%20%20%20%20%20%20%20doc.removeEventListener%28%27keydown%27%2C%20keyDown%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.parentNode.removeChild%28this%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20w.addEle%20%3D%20function%28str%2C%20style%29%7B%0A%20%20%20%20%20%20%20%20var%20ele%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20%20%20%20%20ele.setAttribute%28%27style%27%2C%20style%29%3B%0A%20%20%20%20%20%20%20%20if%28str%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ele.innerHTML%20%3D%20str%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%28var%20el%2C%20all%20%3D%20ele.getElementsByTagName%28%27*%27%29%2C%20i%20%3D%20all.length%3B%20i--%3B%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%20%3D%20all%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28/%5E%28script%7Cframe%7Ciframe%7Capplet%7Cembed%7Cobject%29%24/i.test%28el.nodeName%29%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20el.parentNode.removeChild%28el%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7Delse%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%28var%20att%20%3D%20el.attributes%2C%20j%20%3D%20att.length%3B%20j--%3B%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28/%5Eon%5Ba-z%5D+%24/i.test%28att%5Bj%5D.name%29%29att%5Bj%5D.value%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%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%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20return%20this.appendChild%28ele%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20img%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20img.setAttribute%28%27style%27%2C%20%27display%3Ablock%3Bfloat%3Aright%3Bwidth%3A18px%3Bheight%3A18px%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3Bbackground-image%3Aurl%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII%3D%22%29%3Bbackground%3A-o-skin%28%22Caption%20Close%20Button%20Skin%22%29%3B%27%29%3B%0A%20%20%20%20img.title%20%3D%20%28win.navigator.language.indexOf%28%27ru%27%29%20%3D%3D%200%29%20%3F%20%27%5Cu0417%5Cu0430%5Cu043A%5Cu0440%5Cu044B%5Cu0442%5Cu044C%27%20%3A%20%27Close%27%3B%0A%20%20%20%20img.addEventListener%28%27click%27%2C%20function%28%29%7Bthis.parentNode.closeWin%28%29%7D%2C%20false%29%3B%0A%20%20%20%20w.appendChild%28img%29%3B%0A%20%20%20%20w.addEle%28title%2C%20%27display%3Atable%3Bcolor%3A%23000%3Bfont%3A16px%20Times%20New%20Roman%3Bwidth%3Aauto%3Bheight%3Aauto%3Bpadding%3A0%3Bmargin%3A0%202px%3Bcursor%3Atext%3B%27%29%3B%0A%20%20%20%20var%20cnt%20%3D%20w.addEle%28text%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaa%3Bmargin%3A2px%200%201px%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bcolor%3A%23000%3Bfont%3A14px%20Times%20New%20Roman%3Bwidth%3A240px%3Bheight%3A120px%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%20%20%20%20w.addEle%28status%2C%20%27display%3Atable%3Bcolor%3A%23555%3Bfont%3A10px%20Times%20New%20Roman%3Bwidth%3Aauto%3Bheight%3Aauto%3Bpadding%3A0%3Bmargin%3A0%202px%3Bcursor%3Atext%3B%27%29%3B%0A%20%20%20%20w.addEventListener%28%27mousedown%27%2C%20function%28e%29%7B%0A%20%20%20%20%20%20%20%20if%28e.target%20%3D%3D%20w%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20grabX%20%3D%20e.clientX%2C%20grabY%20%3D%20e.clientY%2C%20origX%20%3D%20parseInt%28w.style.left%29%2C%20origY%20%3D%20parseInt%28w.style.top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20mouseMove%20%3D%20function%28ev%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20w.style.left%20%3D%20origX+ev.clientX-grabX+%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20w.style.top%20%3D%20origY+ev.clientY-grabY+%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20doc.addEventListener%28%27mousemove%27%2C%20mouseMove%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20doc.addEventListener%28%27mouseup%27%2C%20function%28%29%7Bdoc.removeEventListener%28%27mousemove%27%2C%20mouseMove%2C%20false%29%7D%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%20%20doc.documentElement.appendChild%28w%29%3B%0A%0A%20%20%20%20if%28size%29%7B%0A%20%20%20%20%20%20%20%20cnt.style.height%20%3D%20size.height%3B%0A%20%20%20%20%20%20%20%20cnt.style.width%20%3D%20size.width%3B%0A%20%20%20%20%7Delse%7B%0A%20%20%20%20%20%20%20%20for%28var%20i%20%3D%203%3B%20i%20%3C%2010%3B%20i++%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%28cnt.scrollHeight%20%3E%20cnt.offsetHeight%20%7C%7C%20cnt.scrollWidth%20%3E%20cnt.offsetWidth%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cnt.style.height%20%3D%2050*i+%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cnt.style.width%20%3D%20100*i+%27px%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7Delse%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20docEle%20%3D%20doc.compatMode%20%3D%3D%20%27CSS1Compat%27%20%3F%20doc.documentElement%20%3A%20doc.body%3B%0A%20%20%20%20var%20mX%20%3D%20docEle.clientWidth-w.offsetWidth%2C%20mY%20%3D%20docEle.clientHeight-w.offsetHeight%3B%0A%20%20%20%20if%28mX%20%3C%200%29%7Bcnt.style.width%20%3D%20parseInt%28cnt.style.width%29+mX+%27px%27%3B%20mX%20%3D%200%7D%3B%0A%20%20%20%20if%28mY%20%3C%200%29%7Bcnt.style.height%20%3D%20parseInt%28cnt.style.height%29+mY+%27px%27%3B%20mY%20%3D0%7D%3B%0A%20%20%20%20var%20hW%20%3D%20parseInt%28w.offsetWidth/2%29%3B%0A%20%20%20%20w.style.left%20%3D%20%28pos%20%26%26%20pos.X%20%3C%20mX+hW%20%3F%20%28pos.X%20%3E%20hW%20%3F%20pos.X-hW%20%3A%200%29%20%3A%20mX%29+%27px%27%3B%0A%20%20%20%20w.style.top%20%3D%20%28pos%20%26%26%20pos.Y+10%20%3C%20mY%20%3F%20pos.Y+10%20%3A%20mY%29+%27px%27%3B%0A%20%20%20%20w.style.visibility%20%3D%20%27visible%27%3B%0A%20%20%20%20doc.addEventListener%28%27keydown%27%2C%20keyDown%2C%20false%29%3B%0A%7D%3B%0A%0Avar%20getSel%20%3D%20function%20%28w%29%20%7B%0A%20%20%20%20var%20s%2C%20d%20%3D%20w.document%3B%0A%20%20%20%20if%20%28d.selection%29%20%7B%0A%20%20%20%20%20%20%20%20var%20r%20%3D%20d.selection.createRange%28%29%3B%0A%20%20%20%20%20%20%20%20s%20%3D%20r%20%3F%20r.text%20%3A%20%27%27%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20s%20%3D%20d.getSelection%28%29.toString%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21s%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20e%2C%20t%20%3D%20d.getElementsByTagName%28%27textarea%27%29%2C%20u%20%3D%20d.getElementsByTagName%28%27input%27%29%2C%20i%20%3D%20t.length%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20while%28e%20%3D%20%28i%20%3E%200%29%20%3F%20t%5B--i%5D%20%3A%20u%5B-i--%5D%29try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.offsetHeight%20%3E%200%20%26%26%20%28s%20%3D%20e.value.substring%28e.selectionStart%2C%20e.selectionEnd%29%29%29%20break%0A%20%20%20%20%20%20%20%20%20%20%20%20%7Dcatch%28x%29%7B%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20if%20%28%21s%29%20for%20%28var%20j%20%3D%200%2C%20f%3B%20f%20%3D%20w.frames%5Bj%5D%3B%20j++%29%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28s%20%3D%20getSel%28f%29%29%20break%0A%20%20%20%20%20%20%20%20%7D%20catch%28x%29%20%7B%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20s%0A%7D%3B%0A%0Avar%20getHash%20%3D%20function%20%28txt%29%20%7B%0A%20%20%20%20TKK%3Deval%28%27%28%28function%28%29%7Bvar%20a%5Cx3d817046147%3Bvar%20b%5Cx3d-335196159%3Breturn%20410049+%5Cx27.%5Cx27+%28a+b%29%7D%29%28%29%29%27%29%3B%0A%20%20%20%20function%20sM%28a%29%20%7B%0A%20%20%20%20%20%20%20%20var%20b%3B%0A%20%20%20%20%20%20%20%20if%20%28null%20%21%3D%3D%20yr%29%0A%20%20%20%20%20%20%20%20%20%20%20%20b%20%3D%20yr%3B%0A%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20b%20%3D%20wr%28String.fromCharCode%2884%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20c%20%3D%20wr%28String.fromCharCode%2875%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20b%20%3D%20%5Bb%28%29%2C%20b%28%29%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20b%5B1%5D%20%3D%20c%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20b%20%3D%20%28yr%20%3D%20window%5Bb.join%28c%28%29%29%5D%20%7C%7C%20%22%22%29%20%7C%7C%20%22%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20d%20%3D%20wr%28String.fromCharCode%28116%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2C%20c%20%3D%20wr%28String.fromCharCode%28107%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2C%20d%20%3D%20%5Bd%28%29%2C%20d%28%29%5D%3B%0A%20%20%20%20%20%20%20%20d%5B1%5D%20%3D%20c%28%29%3B%0A%20%20%20%20%20%20%20%20c%20%3D%20%22%26%22%20+%20d.join%28%22%22%29%20+%20%22%3D%22%3B%0A%20%20%20%20%20%20%20%20d%20%3D%20b.split%28%22.%22%29%3B%0A%20%20%20%20%20%20%20%20b%20%3D%20Number%28d%5B0%5D%29%20%7C%7C%200%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20e%20%3D%20%5B%5D%2C%20f%20%3D%200%2C%20g%20%3D%200%3B%20g%20%3C%20a.length%3B%20g++%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20l%20%3D%20a.charCodeAt%28g%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20128%20%3E%20l%20%3F%20e%5Bf++%5D%20%3D%20l%20%3A%20%282048%20%3E%20l%20%3F%20e%5Bf++%5D%20%3D%20l%20%3E%3E%206%20%7C%20192%20%3A%20%2855296%20%3D%3D%20%28l%20%26%2064512%29%20%26%26%20g%20+%201%20%3C%20a.length%20%26%26%2056320%20%3D%3D%20%28a.charCodeAt%28g%20+%201%29%20%26%2064512%29%20%3F%20%28l%20%3D%2065536%20+%20%28%28l%20%26%201023%29%20%3C%3C%2010%29%20+%20%28a.charCodeAt%28++g%29%20%26%201023%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e%5Bf++%5D%20%3D%20l%20%3E%3E%2018%20%7C%20240%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e%5Bf++%5D%20%3D%20l%20%3E%3E%2012%20%26%2063%20%7C%20128%29%20%3A%20e%5Bf++%5D%20%3D%20l%20%3E%3E%2012%20%7C%20224%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e%5Bf++%5D%20%3D%20l%20%3E%3E%206%20%26%2063%20%7C%20128%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e%5Bf++%5D%20%3D%20l%20%26%2063%20%7C%20128%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20a%20%3D%20b%3B%0A%20%20%20%20%20%20%20%20for%20%28f%20%3D%200%3B%20f%20%3C%20e.length%3B%20f++%29%0A%20%20%20%20%20%20%20%20%20%20%20%20a%20+%3D%20e%5Bf%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a%20%3D%20xr%28a%2C%20%22+-a%5E+6%22%29%3B%0A%20%20%20%20%20%20%20%20a%20%3D%20xr%28a%2C%20%22+-3%5E+b+-f%22%29%3B%0A%20%20%20%20%20%20%20%20a%20%5E%3D%20Number%28d%5B1%5D%29%20%7C%7C%200%3B%0A%20%20%20%20%20%20%20%200%20%3E%20a%20%26%26%20%28a%20%3D%20%28a%20%26%202147483647%29%20+%202147483648%29%3B%0A%20%20%20%20%20%20%20%20a%20%25%3D%201E6%3B%0A%20%20%20%20%20%20%20%20return%20c%20+%20%28a.toString%28%29%20+%20%22.%22%20+%20%28a%20%5E%20b%29%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20yr%20%3D%20null%3B%0A%20%20%20%20var%20wr%20%3D%20function%28a%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2C%20xr%20%3D%20function%28a%2C%20b%29%20%7B%0A%20%20%20%20%20%20%20%20for%20%28var%20c%20%3D%200%3B%20c%20%3C%20b.length%20-%202%3B%20c%20+%3D%203%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20d%20%3D%20b.charAt%28c%20+%202%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2C%20d%20%3D%20%22a%22%20%3C%3D%20d%20%3F%20d.charCodeAt%280%29%20-%2087%20%3A%20Number%28d%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2C%20d%20%3D%20%22+%22%20%3D%3D%20b.charAt%28c%20+%201%29%20%3F%20a%20%3E%3E%3E%20d%20%3A%20a%20%3C%3C%20d%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20a%20%3D%20%22+%22%20%3D%3D%20b.charAt%28c%29%20%3F%20a%20+%20d%20%26%204294967295%20%3A%20a%20%5E%20d%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20a%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20sM%28txt%29%3B%0A%7D%3B%0A%0Avar%20ujs_google_translate%20%3D%20function%20%28dir%29%7B%0A%20%20%20%20var%20win%20%3D%20content%2C%20lng%20%3D%20win.navigator.language.slice%280%2C%202%29%2C%20txt%20%3D%20getSel%28win%29%2C%20l%20%3D%20dir.split%28%27%7C%27%29%3B%0A%20%20%20%20if%20%28txt%29%20%7B%0A%20%20%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20%27https%3A//translate.google.com/translate_a/single%3Fclient%3Dt%26sl%3D%27%20+%20l%5B0%5D%20+%20%27%26tl%3D%27%20+%20l%5B1%5D%20+%20%27%26hl%3D%27%20+%20lng%20+%20%27%26eotf%3D0%26dt%3Dat%26dt%3Dbd%26dt%3Dex%26dt%3Dld%26dt%3Dmd%26dt%3Dqca%26dt%3Drw%26dt%3Drm%26dt%3Dss%26dt%3Dt%27%20+%20getHash%28txt%29%3B%0A%0A%20%20%20%20%20%20%20%20xhr.open%28%27POST%27%2C%20url%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20xhr.setRequestHeader%28%27Content-Type%27%2C%20%27application/x-www-form-urlencoded%3Bcharset%3Dutf-8%27%29%3B%0A%20%20%20%20%20%20%20%20xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28xhr.readyState%20%3D%3D%204%20%26%26%20xhr.status%20%3D%3D%20200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20%27%27%2C%20status%20%3D%20%27%27%2C%20tmp%20%3D%20JSON.parse%28xhr.responseText.replace%28/%5C%5B%28%3F%3D%2C%29/g%2C%20%27%5B0%27%29.replace%28/%2C%28%3F%3D%2C%7C%5C%5D%29/g%2C%20%27%2C0%27%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%28var%20i%20%3D%200%2C%20n%3B%20n%20%3D%20tmp%5B0%5D%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28n%5B0%5D%29result%20+%3D%20n%5B0%5D.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result%20%3D%20%27%3Cspan%20style%3D%22background-color%3Ainherit%3Bcolor%3Ainherit%3Bfont-size%3Ainherit%3Bfont-family%3ATimes%2Cserif%3B%22%3E%27%20+%20result%20+%20%27%3C/span%3E%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20status%20%3D%20tmp%5B8%5D%5B0%5D%5B0%5D.toUpperCase%28%29%20+%20%27%20-%5Cu203A%20%27%20+%20l%5B1%5D.toUpperCase%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createWindow%28result%2C%20status%2C%20%27%3Ca%20href%3D%22%27+url.replace%28/%26/g%2C%27%26amp%3B%27%29+%27%22%20target%3D%22_blank%22%20style%3D%22display%3Ainline%3Bpadding%3A0%3Bmargin%3A0%3Btext-decoration%3Anone%3Bborder%3Anone%3Bcolor%3A%23009%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%20%27_gt%27%2C%20btn.lastClick%29%3B%0A%20%20%20%20%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%20%7D%20catch%20%28x%29%7BLOG%28x%29%7D%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20xhr.send%28%27q%3D%27%20+%20encodeURIComponent%28txt%29%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.open%28%27http%3A//translate.google.com/translate%3Fu%3D%27+escape%28win.location.href%29+%27%26hl%3D%27+lng+%27%26langpair%3D%27+dir+%27%26tbb%3D1%27%29%3B%0A%20%20%20%20%7D%3B%0A%7D%3B%0A%0A%0Abtn.onclick%20%3D%20function%28e%29%7Bif%28e.button%20%3D%3D%200%29ujs_google_translate%28%27auto%7Cru%27%29%7D%3B%0A%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0Avar%20nextEleMenu%20%3D%20document.getElementById%28%22context-inspect%22%29%3B%0A%0Avar%20menuId%20%3D%20%22context-ext-google-translate%22%3B%0Avar%20menuItem%20%3D%20document.getElementById%28menuId%29%3B%0Aif%20%28menuItem%29%20%7B%0A%20%20%20%20contextMenu.removeChild%28menuItem.nextElementSibling%29%3B%0A%20%20%20%20contextMenu.removeChild%28menuItem.nextElementSibling%29%3B%0A%20%20%20%20contextMenu.removeChild%28menuItem%29%3B%0A%7D%3B%0A%0AmenuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0AmenuItem.setAttribute%28%22id%22%2C%20menuId%29%3B%0AmenuItem.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u043D%u0430%20%u0440%u0443%u0441%u0441%u043A%u0438%u0439%22%29%3B%0AmenuItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0AmenuItem.setAttribute%28%22image%22%2C%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABBUlEQVR4Ac2RMU4DMRREB2MqihQpAkUaqnAduuQw4Sx03CGcJYIiDYqQ0lCsZ77535ZFcgAkRuPvV7zd/dLiz3N1PFb8hmRckrfELZrF9ONQ1B6Yz0MyM7S0O6zGkVprh/3+Kw/JzkHSpRpJKZkpr9fYbOx0cjVsCbWG31oHBM9mtt0q73ZcrdLhAMlYQKkUI22aqsNo8HKZAMQhvVaKSHWj2Q2aPU3mJQFY7nuHyvYFduP83WF3AJRfcPNYnr/Lp1G1uK4m9sno1LaUbnX/htf8BNzoneUD5NhjvLCMhURQSQ93QCZwXYjFwg3I0NZKrvoknQPMIHkt/jRAQKMeG2yX89/mB4EJbKbZxIhFAAAAAElFTkSuQmCC%22%29%3B%0AmenuItem.addEventListener%28%22command%22%2C%20function%28%29%7Bujs_google_translate%28%27auto%7Cru%27%29%7D%2C%20false%29%3B%0AcontextMenu.insertBefore%28menuItem%2C%20nextEleMenu%29%3B%0A%0AmenuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0AmenuItem.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u043D%u0430%20%u0430%u043D%u0433%u043B%u0438%u0439%u0441%u043A%u0438%u0439%22%29%3B%0AmenuItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0AmenuItem.setAttribute%28%22image%22%2C%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAB5UlEQVR4AWOgPZg0c9+Oq2+qpx9LaQaiw4mNB27efbs2uXFNQh2Q4Zm9zSNth23MhqjGnXMC86vnHmUS4udxv7OvOd2yPE7PTlfCTk9GVVEoyJA7WI8dyPA0k3U1l+jJMV7CeThpTZeoKDdDUsvBPSff/V+6/P/Bvf///2+bdvU/EKRm/k9IBNIlfZe+LFrzvbsbyJ636pKkyQyQhoUb7tZNvPpw3/0/TfX/ISAm5n94BIiRm/n/xYsLd946ei4vajoiqDuRAejQf//+o4PQ0P9+fmhiQGVnrr1kXJNYG2zEzXDxDsPv3wy/fkFJoOTPn39+/fr/69e/37//AUX+/mXRkO458wWHDba2f8wswCyQ3N+/f//8/fP7z5+TV18w2Mdt6plzPiptx5Wr7/+/ffMzOR6kysjkt74hWMPfp06O+2dulZCeFZKwnkE4m8E8bN3i9aCQ+dxY96GrK6bkGJD9R1v3l6Y20NVW9kt+/v//ZdbcFwkxTVPPMQimM8XEqkb7a/zoqLxkH9v4zVyI5+///wyMmtKMmhJAnbLqQjHxaw5r2orOmZN5uj470Zahat6BKS7JzpmLBHXm8GhM5lCdcP7ai1ZpixZxk9NXXjKIFzOIFjAI54oY1vXuue5qmscw+AAAW0tKxtPoicEAAAAASUVORK5CYII%3D%22%29%3B%0AmenuItem.addEventListener%28%22command%22%2C%20function%28%29%7Bujs_google_translate%28%27auto%7Cen%27%29%7D%2C%20false%29%3B%0AcontextMenu.insertBefore%28menuItem%2C%20nextEleMenu%29%3B%0A%0AcontextMenu.insertBefore%28document.createElement%28%22menuseparator%22%29%2C%20nextEleMenu%29%3B%0A%0AaddEventListener%28%27keydown%27%2C%20function%20%28e%29%7B%0A%20if%28e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20e.altKey%20%26%26%20e.keyCode%20%3D%3D%2084%29ujs_google_translate%28%27auto%7Cru%27%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 Можно научить работать с ESR 60? |
ALEX_45_ORP > 25-12-2018 10:04:16 |
добавил кнопку (Открыть папки и файлы Firefox)по инструкции, но она не работает в FF64 - в чем причина не подскажете? |
Andrey_Krropotkin > 25-12-2018 10:49:35 |
ALEX_45_ORP замени в первой строчке menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); |
ALEX_45_ORP > 25-12-2018 11:15:33 |
Andrey_Krropotkin всё заработало |
ALEX_45_ORP > 26-12-2018 05:28:14 |
подскажите плз, какая кнопка (плагин, либо что-то еще) дает такое меню, один раз выскочило, а больше повторить не могу в данной сборке? |
kokoss > 27-12-2018 13:58:21 |
rubel пишет
Не знал что их нужно обновлять? |
kokoss > 14-01-2019 17:54:25 |
Подскажите пожалуйста, код кнопки Google Translate для перевода вэб страниц. |
Rag > 14-01-2019 18:20:55 |
kokoss kokoss пишет
|
kokoss > 14-01-2019 20:07:21 |
Rag |
vitalii201 > 14-01-2019 20:14:54 |
kokoss, букмарклет Выделить код Код:javascript:document.location = 'http://translate.google.ru/translate?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=auto&tl=ru&u=' + top.location.href + '&act=url' |
kokoss > 14-01-2019 20:45:05 |
Посмотрите пожалуйста, что не так в этом коде кнопки Google Translate. А то у меня в Код Выделить код Код:/*Initialization Code*/ var btn = this; btn.lastClick = { X: 0, Y: 0 }; addEventListener("mouseup", function(e) { if (e && e.button == 0 && e.view.top == content) { var lc = btn.lastClick; lc.X = e.clientX; lc.Y = e.clientY; } }, false); var createWindow = function(text, status, title, id, pos, size){ var win = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content; var doc = win.document, wId = 'ujs_window'+(id || ''), w = doc.getElementById(wId); var keyDown = function(e){if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin()}; if(w)w.closeWin(); w = doc.createElement('div'); w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:3px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#f3f5f7;padding-top:4px;border-radius:4px;box-shadow:0 0 15px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");')); w.id = wId; w.closeWin = function(){ doc.removeEventListener('keydown', keyDown, false); this.parentNode.removeChild(this); }; w.addEle = function(str, style){ var ele = doc.createElement('div'); ele.setAttribute('style', style); if(str){ ele.innerHTML = str; for(var el, all = ele.getElementsByTagName('*'), i = all.length; i--;){ el = all[i]; if(/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)){ el.parentNode.removeChild(el); }else{ for(var att = el.attributes, j = att.length; j--;){ if(/^on[a-z]+$/i.test(att[j].name))att[j].value = ''; } } } }; return this.appendChild(ele); }; var img = doc.createElement('div'); img.setAttribute('style', 'display:block;float:right;width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin("Caption Close Button Skin");'); img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close'; img.addEventListener('click', function(){this.parentNode.closeWin()}, false); w.appendChild(img); w.addEle(title, 'display:table;color:#000;font:17px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;'); var cnt = w.addEle(text, 'display:block;border:1px solid #aaa;margin:2px 0 1px 0;padding:4px;background-color:#fafcfe;color:#000;font:17px Times New Roman;width:320px;height:160px;overflow:auto;cursor:text;'); w.addEle(status, 'display:table;color:#555;font:13px Times New Roman;width:auto;height:auto;padding:0;margin:0 3px;cursor:text;'); w.addEventListener('mousedown', function(e){ if(e.target == w){ e.preventDefault(); var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top); var mouseMove = function(ev){ w.style.left = origX+ev.clientX-grabX+'px'; w.style.top = origY+ev.clientY-grabY+'px'; }; doc.addEventListener('mousemove', mouseMove, false); doc.addEventListener('mouseup', function(){doc.removeEventListener('mousemove', mouseMove, false)}, false); } }, false); doc.documentElement.appendChild(w); if(size){ cnt.style.height = size.height; cnt.style.width = size.width; }else{ for(var i = 3; i < 10; i++){ if(cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth){ cnt.style.height = 80*i+'px'; cnt.style.width = 180*i+'px'; }else break; } }; var docEle = doc.compatMode == 'CSS1Compat' ? doc.documentElement : doc.body; var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight; if(mX < 0){cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0}; if(mY < 0){cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0}; var hW = parseInt(w.offsetWidth/2); w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px'; w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px'; w.style.visibility = 'visible'; doc.addEventListener('keydown', keyDown, false); }; var getSel = function (w) { var s, d = w.document; if (d.selection) { var r = d.selection.createRange(); s = r ? r.text : '' } else { s = d.getSelection().toString(); if (!s) { var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length; while(e = (i > 0) ? t[--i] : u[-i--])try{ if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break }catch(x){} } }; if (!s) for (var j = 0, f; f = w.frames[j]; j++) { try { if (s = getSel(f)) break } catch(x) {} }; return s }; var getHash = function (txt) { TKK=eval('((function(){var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())'); function sM(a) { var b; if (null !== yr) b = yr; else { b = wr(String.fromCharCode(84)); var c = wr(String.fromCharCode(75)); b = [b(), b()]; b[1] = c(); b = (yr = window[b.join(c())] || "") || "" } var d = wr(String.fromCharCode(116)) , c = wr(String.fromCharCode(107)) , d = [d(), d()]; d[1] = c(); c = "&" + d.join("") + "="; d = b.split("."); b = Number(d[0]) || 0; for (var e = [], f = 0, g = 0; g < a.length; g++) { var l = a.charCodeAt(g); 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = l >> 18 | 240, e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224, e[f++] = l >> 6 & 63 | 128), e[f++] = l & 63 | 128) } a = b; for (f = 0; f < e.length; f++) a += e[f], a = xr(a, "+-a^+6"); a = xr(a, "+-3^+b+-f"); a ^= Number(d[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return c + (a.toString() + "." + (a ^ b)) } var yr = null; var wr = function(a) { return function() { return a } } , xr = function(a, b) { for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2) , d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d) , d = "+" == b.charAt(c + 1) ? a >>> d : a << d; a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d } return a }; return sM(txt); }; var ujs_google_translate = function (dir){ var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win), l = dir.split('|'); if (txt) { var xhr = new XMLHttpRequest(); var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8'); xhr.onreadystatechange = function() { try{ if (xhr.readyState == 4 && xhr.status == 200) { var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0')); for(var i = 0, n; n = tmp[0][i]; i++){ if(n[0])result += n[0].toString(); }; result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>'; status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase(); createWindow(result, status, '<a href="'+url.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:17px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick); } } catch (x){LOG(x)}; }; xhr.send('q=' + encodeURIComponent(txt)); } else { win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1'); }; }; btn.onclick = function(e){if(e.button == 0)ujs_google_translate('auto|ru')}; var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = document.getElementById("context-inspect"); var menuId = "context-ext-google-translate"; var menuItem = document.getElementById(menuId); if (menuItem) { contextMenu.removeChild(menuItem.nextElementSibling); contextMenu.removeChild(menuItem.nextElementSibling); contextMenu.removeChild(menuItem); }; menuItem = document.createElement("menuitem"); menuItem.setAttribute("id", menuId); menuItem.setAttribute("label", "Перевести на русский"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABBUlEQVR4Ac2RMU4DMRREB2MqihQpAkUaqnAduuQw4Sx03CGcJYIiDYqQ0lCsZ77535ZFcgAkRuPvV7zd/dLiz3N1PFb8hmRckrfELZrF9ONQ1B6Yz0MyM7S0O6zGkVprh/3+Kw/JzkHSpRpJKZkpr9fYbOx0cjVsCbWG31oHBM9mtt0q73ZcrdLhAMlYQKkUI22aqsNo8HKZAMQhvVaKSHWj2Q2aPU3mJQFY7nuHyvYFduP83WF3AJRfcPNYnr/Lp1G1uK4m9sno1LaUbnX/htf8BNzoneUD5NhjvLCMhURQSQ93QCZwXYjFwg3I0NZKrvoknQPMIHkt/jRAQKMeG2yX89/mB4EJbKbZxIhFAAAAAElFTkSuQmCC"); menuItem.addEventListener("command", function(){ujs_google_translate('auto|ru')}, false); contextMenu.insertBefore(menuItem, nextEleMenu); menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", "Перевести на английский"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAB5UlEQVR4AWOgPZg0c9+Oq2+qpx9LaQaiw4mNB27efbs2uXFNQh2Q4Zm9zSNth23MhqjGnXMC86vnHmUS4udxv7OvOd2yPE7PTlfCTk9GVVEoyJA7WI8dyPA0k3U1l+jJMV7CeThpTZeoKDdDUsvBPSff/V+6/P/Bvf///2+bdvU/EKRm/k9IBNIlfZe+LFrzvbsbyJ636pKkyQyQhoUb7tZNvPpw3/0/TfX/ISAm5n94BIiRm/n/xYsLd946ei4vajoiqDuRAejQf//+o4PQ0P9+fmhiQGVnrr1kXJNYG2zEzXDxDsPv3wy/fkFJoOTPn39+/fr/69e/37//AUX+/mXRkO458wWHDba2f8wswCyQ3N+/f//8/fP7z5+TV18w2Mdt6plzPiptx5Wr7/+/ffMzOR6kysjkt74hWMPfp06O+2dulZCeFZKwnkE4m8E8bN3i9aCQ+dxY96GrK6bkGJD9R1v3l6Y20NVW9kt+/v//ZdbcFwkxTVPPMQimM8XEqkb7a/zoqLxkH9v4zVyI5+///wyMmtKMmhJAnbLqQjHxaw5r2orOmZN5uj470Zahat6BKS7JzpmLBHXm8GhM5lCdcP7ai1ZpixZxk9NXXjKIFzOIFjAI54oY1vXuue5qmscw+AAAW0tKxtPoicEAAAAASUVORK5CYII="); menuItem.addEventListener("command", function(){ujs_google_translate('auto|en')}, false); contextMenu.insertBefore(menuItem, nextEleMenu); contextMenu.insertBefore(document.createElement("menuseparator"), nextEleMenu); addEventListener('keydown', function (e){ if(e.shiftKey && !e.ctrlKey && e.altKey && e.keyCode == 84)ujs_google_translate('auto|ru'); }, false); 14-01-2019 21:03:43 При чём окно разворачивается во весь экран. |
vitalii201 > 14-01-2019 21:39:45 |
kokoss, это не кнопка, это закладка ![]() ![]() Если вам не принципиально: "только кнопка", конечно. У меня лучше(удобней) всего работает перевод из Flagfox(ни разу не отказал) или S3.Translator(не на всех сайтах срабатывает). |
kokoss > 14-01-2019 22:14:15 |
vitalii201 пишет
Самому приходится пользоваться расширением Country Flags & IP WHOIS в основном из за Google Translate. Просто с кнопкой было бы удобнее. Что касается S3 Переводчика, то у него к сожалению в |
Andrey_Krropotkin > 16-01-2019 23:48:47 |
Dumby Вы не могли бы мне подсказать, раньше у меня работал вот такой код для перевода текста (заменял на странице выделенный текст с другого языка на русский. Выдает ошибку - TypeError: tempResz[1] is undefined и ссылается на строку - var kimenet = tempResz[1].split('</span></div>'); ) скрытый текст Выделить код Код://----------Заменить текст переводом------------ function ujs_TexReplace_translate() { var win = content, txt = getSel(win); if (txt) { var httpRequest = null; //var baseUrl = "http://translate.google.com/translate_t"; var urlParams = "text=" + encodeURIComponent(txt) + "&hl==ru&langpair=auto|ru&tbb=1"; var baseUrl="http://translate.google.com/translate_t?"+ urlParams; function removeHTMLTags(mitkell) { var strTagStrippedText = mitkell.replace(/this.style.backgroundColor='#fff'/ig, "").replace(/this.style.backgroundColor='#ebeff9'/ig, ""); return strTagStrippedText; } function infoReceived() { var output = httpRequest.responseText; if (txt[0] == " ") { var kezdospace = " "; } else { var kezdospace = ""; } if (txt[txt.length - 1] == " ") { var vegespace = " "; } else { var vegespace = ""; } if (output.length) { output = output.replace(/"/gi,'"'); output = output.replace(/</gi,'<'); output = output.replace(/>/gi,'>'); output = output.replace(/&/gi,'&'); output = output.replace(/'/gi,"'"); var fieldArray = output.split('</head>'); if (fieldArray[1].search('class="short_text"')!=-1) { var tempResz = fieldArray[1].split('<span id=result_box class="short_text">'); } else if (fieldArray[1].search('class="medium_text"')!=-1) { var tempResz = fieldArray[1].split('<span id=result_box class="medium_text">'); } else { var tempResz = fieldArray[1].split('<span id=result_box class="long_text">'); } var kimenet = tempResz[1].split('</span></div>'); var range = content.getSelection().getRangeAt(0); range.deleteContents(); range.insertNode(range. createContextualFragment(kezdospace + removeHTMLTags(kimenet[0])+ vegespace)); } } httpRequest = new XMLHttpRequest(); httpRequest.open("GET", baseUrl, true); httpRequest.onload = infoReceived; httpRequest.send(null); } }; |
Andrey_Krropotkin > 17-01-2019 00:53:40 |
Насчет перевода |
rubel > 17-01-2019 08:57:49 |
Andrey_Krropotkin пишет
Кнопка работает прекрасно, а нельзя ли к ней приделать функцию перевода из буфера обмена, довольно часто это нужно. |
kokoss > 17-01-2019 09:25:19 |
Andrey_Krropotkin пишет
В Andrey_Krropotkin пишет
В |
Andrey_Krropotkin > 17-01-2019 10:21:36 |
rubel это можно, но куда впихнуть не знаю, вот пример: скрытый текст Выделить код Код:/*Initialization Code*/ //Варианты выбора языка переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать. //Google, var langFrom_google_text = "auto";//авто var langTo_google_text = "ru"; var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg=="; function readFromClipboard() { var string; try { var clipboard = Cc["@mozilla.org/widget/clipboard;1"]. getService(Ci.nsIClipboard); var trans = Cc["@mozilla.org/widget/transferable;1"]. createInstance(Ci.nsITransferable); trans.addDataFlavor("text/unicode"); if (clipboard.supportsSelectionClipboard()) { clipboard.getData(trans, clipboard.kSelectionClipboard); } else { clipboard.getData(trans, clipboard.kGlobalClipboard); } var data = {}; var dataLen = {}; trans.getTransferData("text/unicode", data, dataLen); if (data) { data = data.value.QueryInterface(Ci.nsISupportsString); string = data.data.substring(0, dataLen.value / 2); } } catch (ex) { } return string; } //--------Перевести текст в Google в новой вкладке-------------- function ujs_GoogleTextPageNewa_translate() { //var win = content, txt = getSel(win); txt = readFromClipboard(); var encTxt = encodeURIComponent(txt); var ctabpos = gBrowser.selectedTab._tPos +1; var url="http://translate.google.com/translate_t?text="+encTxt+"&sl=auto&tl=ru&hl=ru&eotf=0&ujs=gtt"; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //Контекстное меню для перевода текста------------------------------------------- (function () { if ( document.getElementById("TranslateBufer") ) return; var contextMenu = document.getElementById("contentAreaContextMenu"); var Item = document.createElement("menuitem"); Item.setAttribute("Id", "TranslateBufer"); Item.setAttribute("label", "Перевод из буфера"); Item.setAttribute("class", "menuitem-iconic"); Item.setAttribute("image", mainicon); Item.addEventListener("command", function(){ujs_GoogleTextPageNewa_translate()}, false); contextMenu.insertBefore(Item, document.getElementById("context-viewpartialsource-selection") ); })(); 17-01-2019 10:24:20 kokoss Скачайте заново, перезалил. |
rubel > 17-01-2019 14:28:45 |
Andrey_Krropotkin пишет
Вставил этот код в ваш основной после кода первой строки. Переводит из буфера в новой вкладке, а хочется чтоб было в окне Google. |
Andrey_Krropotkin > 18-01-2019 08:29:40 |
rubel скрытый текст Выделить код Код:/*Initialization Code*/ //--------------------------------Перевод---------------------------------------- //Варианты выбора языка переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать. //Google, var langFrom_google_text = "auto";//авто var langTo_google_text = "ru"; //Microsoft var langFrom_Microsoft_text = "";//авто var langTo_Microsoft_text = "ru"; //Promt var langFrom_PROMT_text = "a";//авто var langTo_PROMT_text = "r"; //Яндекс var langFrom_yandex_text = ""; //авто //var langFrom_yandex_text = "en-"; //английский и так же другие языки, тире обязательно var langTo_yandex_text = "ru"; var safeHTMLParser = function(code) { var gUnescapeHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML); var doc = document.implementation.createDocument(xhtmlns, "html", null); var body = document.createElementNS(xhtmlns, "body"); doc.documentElement.appendChild(body); body.appendChild(gUnescapeHTML.parseFragment(code, false, null, body)); return doc; }; //Назначаем иконки var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg=="; var gticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC"; var promticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg=="; var yndicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8UlEQVQ4jY2TTWgcZQCGv1OLgkX0UlChaC8iEUo1kNJV0UiTNl1SFasYk2pELeohVkOgWkILDSTR2tWGjRILhigVoxIbf1oaWkJtIokmYWOa3253t2T/Z2dnZmfnm5nv8RZIhdIXnst7eE7vK+oH5JvPfSe5HfZ963SImxPsL9E45PD6r/KWvDYsCfaXnN2nzYp1gt2nDZqGbJqGbJrP2ixrPpZU+AoMR5GxFCNRj6Yhmxe/t6j9uji6TvDsV3kaBk1az5XQy4q0pbia8WgYNMmVFA2DJhdWXCypaPrJJPhNgere/ME1wZM9aQ78oOMrGItJlIJIyiVf8rFdxWLW4+UzBfSyImv5vDCg8URPKlf1afw+IYQQO07eIGv5jMcc+v+2OPhjnqThkbV89g9kee9njZzlM5Fw+GXOpueKwa4vU1R9dmNACCHEY91RMqbH5Ws2ZVcR01ySRY/OCwXq+5LU9yWJaS5ayeeV/hQ5y6e+L8nOkzG2dy3vEYETK8Q0l7pwgpThURdOUBdOkLc89vYmiGkug9MGe3sTRHMSWyrqwgme+fw6FccXF0XFsTl026cmFGUx7VATilITihK+lKfsKjr/yKx1CymHklTUhKIEupd4uH32H/HQRzMYZZ94XlJ2FasFyWpBcmneIFN0CYZWqO5e4vlT15CeQrM8qruXeKQ9woOHp3aKB1onieccaj9ZIKW7PNVxdY1dXfOkiy77Ty2TNVzmV21az8R59MgM93842SuEEGJzyxjVx/9Fs1xe+mKB85ECgaMRAkcj1HbOYTk+17Nl9nTNkdIljx+ZZnPLldym5j/vEUIIce+7o1R9PEWwaxbD9nA9RVqXzMRMpqImTx+bwSx7pHVJoH2aLe+Pcfc7o6+uDWnT2yNUtk1Q2TbBjsOTXJzVsKVPseRxcVYjrUtOnI1T2TbB1pbL3PXWyPop3/nGebYdGmf7B3/dkm2Hxrmj+Zyzsfn3resEGxqHOzYc+I3bonH4f3f+Dz63ssfSaOz4AAAAAElFTkSuQmCC"; var bingicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABMUlEQVQ4jY2SsU7DMBCG/TJYYqpEPDojcbq0NGM7sXdnggnigYFOyVDqLLBAkRJLTIwJSwdYw8gj8AQ/Q0kaO6HNSZbPp/P332+ZkJ7hSo2uvNdFV2rwMEOVGw28UVjl5bZZaqi8hA3aqzB/KOBKDVWUrcZ6ir/dgLlSY/HxAx5mmD++d15u7jzMjDNxpcbZyzeE+mz563o4bteaY9nj2bktwP97F7upS72yUgdLfNDIA428g9SD/6APZG84SoDGwoDQeFurly3CEh+OEmBKIFgPcWwBCCHkKPJwt7nA+dvIFBg/C9wUV3VhsbnF4L4NmKYT0Fjg9HVoApgSSL/WBuBkZQKm6QQ08jDLgraF8ZPAdX6JJnCw3AFo5IHGArMs2NVsi44SYIkPlviozraFrvgFK3TyTsPvtF8AAAAASUVORK5CYII="; function readFromClipboard() { var string; try { var clipboard = Cc["@mozilla.org/widget/clipboard;1"]. getService(Ci.nsIClipboard); var trans = Cc["@mozilla.org/widget/transferable;1"]. createInstance(Ci.nsITransferable); trans.addDataFlavor("text/unicode"); if (clipboard.supportsSelectionClipboard()) { clipboard.getData(trans, clipboard.kSelectionClipboard); } else { clipboard.getData(trans, clipboard.kGlobalClipboard); } var data = {}; var dataLen = {}; trans.getTransferData("text/unicode", data, dataLen); if (data) { data = data.value.QueryInterface(Ci.nsISupportsString); string = data.data.substring(0, dataLen.value / 2); } } catch (ex) { } return string; }; function GetXmlHttpObject(){ if (window.XMLHttpRequest){ return new XMLHttpRequest();} if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP");} return null; }; var btn = this; btn.lastClick = { X: 0, Y: 0 }; addEventListener("mouseup", function(e) { if (e && e.button == 0 && e.view.top == content) { var lc = btn.lastClick; lc.X = e.clientX; lc.Y = e.clientY; } }, false); var createWindow = function(text, status, title, id, pos, size){ var win = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content; var doc = win.document, wId = 'ujs_window'+(id || ''), w = doc.getElementById(wId); var keyDown = function(e){if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin()}; if(w)w.closeWin(); w = doc.createElement('div'); w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:3px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#f3f5f7;padding-top:4px;border-radius:4px;box-shadow:0 0 12px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");')); w.id = wId; w.closeWin = function(){ doc.removeEventListener('keydown', keyDown, false); this.parentNode.removeChild(this); }; w.addEle = function(str, style){ var ele = doc.createElement('div'); ele.setAttribute('style', style); if(str){ ele.innerHTML = str; for(var el, all = ele.getElementsByTagName('*'), i = all.length; i--;){ el = all[i]; if(/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)){ el.parentNode.removeChild(el); }else{ for(var att = el.attributes, j = att.length; j--;){ if(/^on[a-z]+$/i.test(att[j].name))att[j].value = ''; } } } }; return this.appendChild(ele); }; var img = doc.createElement('div'); img.setAttribute('style', 'display:block;float:right;width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin("Caption Close Button Skin");'); img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close'; img.addEventListener('click', function(){this.parentNode.closeWin()}, false); w.appendChild(img); w.addEle(title, 'display:table;color:#000;font:16px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;'); var cnt = w.addEle(text, 'display:block;border:1px solid #aaa;margin:2px 0 1px 0;padding:4px;background-color:#fafcfe;color:#000;font:14px Times New Roman;width:240px;height:120px;overflow:auto;cursor:text;'); w.addEle(status, 'display:table;color:#555;font:10px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;'); w.addEventListener('mousedown', function(e){ if(e.target == w){ e.preventDefault(); var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top); var mouseMove = function(ev){ w.style.left = origX+ev.clientX-grabX+'px'; w.style.top = origY+ev.clientY-grabY+'px'; }; doc.addEventListener('mousemove', mouseMove, false); doc.addEventListener('mouseup', function(){doc.removeEventListener('mousemove', mouseMove, false)}, false); } }, false); doc.documentElement.appendChild(w); if(size){ cnt.style.height = size.height; cnt.style.width = size.width; }else{ for(var i = 3; i < 10; i++){ if(cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth){ cnt.style.height = 50*i+'px'; cnt.style.width = 100*i+'px'; }else break; } }; var docEle = doc.compatMode == 'CSS1Compat' ? doc.documentElement : doc.body; var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight; if(mX < 0){cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0}; if(mY < 0){cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0}; var hW = parseInt(w.offsetWidth/2); w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px'; w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px'; w.style.visibility = 'visible'; doc.addEventListener('keydown', keyDown, false); }; var getSel = function (w) { var s, d = w.document; if (d.selection) { var r = d.selection.createRange(); s = r ? r.text : '' } else { s = d.getSelection().toString(); if (!s) { var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length; while(e = (i > 0) ? t[--i] : u[-i--])try{ if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break }catch(x){} } }; if (!s) for (var j = 0, f; f = w.frames[j]; j++) { try { if (s = getSel(f)) break } catch(x) {} }; return s }; var getHash = function (txt) { TKK=eval('((function(){var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())'); function sM(a) { var b; if (null !== yr) b = yr; else { b = wr(String.fromCharCode(84)); var c = wr(String.fromCharCode(75)); b = [b(), b()]; b[1] = c(); b = (yr = window[b.join(c())] || "") || "" } var d = wr(String.fromCharCode(116)) , c = wr(String.fromCharCode(107)) , d = [d(), d()]; d[1] = c(); c = "&" + d.join("") + "="; d = b.split("."); b = Number(d[0]) || 0; for (var e = [], f = 0, g = 0; g < a.length; g++) { var l = a.charCodeAt(g); 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = l >> 18 | 240, e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224, e[f++] = l >> 6 & 63 | 128), e[f++] = l & 63 | 128) } a = b; for (f = 0; f < e.length; f++) a += e[f], a = xr(a, "+-a^+6"); a = xr(a, "+-3^+b+-f"); a ^= Number(d[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return c + (a.toString() + "." + (a ^ b)) } var yr = null; var wr = function(a) { return function() { return a } } , xr = function(a, b) { for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2) , d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d) , d = "+" == b.charAt(c + 1) ? a >>> d : a << d; a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d } return a }; return sM(txt); }; //----------Перевести текст из буфера в окне Google------------ var ujs_google_translat = function (dir){ var win = content, lng = win.navigator.language.slice(0, 2), txt = readFromClipboard(), l = dir.split('|'); if (txt) { var xhr = new XMLHttpRequest(); var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8'); xhr.onreadystatechange = function() { try{ if (xhr.readyState == 4 && xhr.status == 200) { var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0')); for(var i = 0, n; n = tmp[0][i]; i++){ if(n[0])result += n[0].toString(); }; result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>'; status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase(); createWindow(result, status, '<a href="'+url.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick); } } catch (x){LOG(x)}; }; xhr.send('q=' + encodeURIComponent(txt)); } else { win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1'); }; }; //----------Перевести выделенный текст в окне Google------------ var ujs_google_translate = function (dir){ var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win), l = dir.split('|'); if (txt) { var xhr = new XMLHttpRequest(); var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8'); xhr.onreadystatechange = function() { try{ if (xhr.readyState == 4 && xhr.status == 200) { var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0')); for(var i = 0, n; n = tmp[0][i]; i++){ if(n[0])result += n[0].toString(); }; result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>'; status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase(); createWindow(result, status, '<a href="'+url.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick); } } catch (x){LOG(x)}; }; xhr.send('q=' + encodeURIComponent(txt)); } else { win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1'); }; }; //----------Перевести выделенный текст в окне Microsoft------------ function ujs_Microsoft_translate (){ var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); if (txt) { var xhr = new XMLHttpRequest(); var encTxt = encodeURIComponent(txt), post = encTxt.length > 1024; var urlt = 'http://www.bing.com/translator/?from='+langFrom_Microsoft_text+'&to='+langTo_Microsoft_text+'&SourceText=' + encTxt; var keyus = "366EA718B7846D2CBD6E0129E55F518D31E741BE"; var uridetect = "http://api.microsofttranslator.com/V2/Ajax.svc/Detect?appId="+keyus+"&text="+ encTxt; var url="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+keyus+"&from="+langFrom_Microsoft_text+"&to="+langTo_Microsoft_text+"&text="+ encTxt; if (txt && location. hostname != 'http://api.microsofttranslator.com/') { var result="Подождите идет перевод", status=""; createWindow(result, status,'<a href="'+url.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick); } function gettransdata(){ xmlhttp=GetXmlHttpObject(); xmlhttp.onreadystatechange=stateChanged; xmlhttp.open(post ? 'POST' : 'GET', url, true); if(post)xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(post ? encTxt : null); xmlhttp1=GetXmlHttpObject(); xmlhttp1.onreadystatechange=stateChanged; xmlhttp1.open('GET', uridetect, true); xmlhttp1.send(null); } function stateChanged(){ if (xmlhttp.readyState==4 && xmlhttp1.readyState==4) { var tryain=xmlhttp.responseText; tryain=tryain.replace(/\"/g, '').replace(/\\u000d/g, " ").replace(/\\u000a/g, "<br />").replace(/\//g, ''); var tryain1=xmlhttp1.responseText; tryain1=tryain1.replace(/\"/g, ''); var result = tryain; var status =(tryain1 +' -\u203A '+ "ru").toUpperCase(); createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick); } } gettransdata(); } }; //----------Перевести текст в окне Яндекс------------ function ujs_yandex_translate() { var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); if (txt) { var xhr = new XMLHttpRequest(); var encTxt = encodeURIComponent(txt); var keyuser = "региструемся на сайте яндекс и беспалатно получаем ключ и вставляем вместо этого соощения"; var url ="https://translate.yandex.net/api/v1.5/tr.json/translate?key="+keyuser+"&lang="+langFrom_yandex_text+langTo_yandex_text+"&text=" + encTxt; function gettransdata(){ xmlhttp=GetXmlHttpObject(); xmlhttp.onreadystatechange=stateChanged; xmlhttp.open('GET', url, true); xmlhttp.send(null); } function stateChanged(){ if (xmlhttp.readyState==4) { var tryain=xmlhttp.responseText; tryain=tryain.replace(/\\n/g, "<br />"); var data = JSON.parse( tryain ); var result,status; if (data.code == "401") {result = "Неправильный ключ API"; status = "";} if (data.code == "402") {result = "Ключ API заблокирован"; status = "";} if (data.code == "403") {result = "Превышено суточное ограничение на количество запросов"; status = "";} if (data.code == "404") {result = "Превышено суточное ограничение на объем переведенного текста"; status = "";} if (data.code == "413") {result = "Превышен максимально допустимый размер текста"; status = "";} if (data.code == "422") {result = "Текст не может быть переведен"; status = "";} if (data.code == "501") {result = "Заданное направление перевода не поддерживается"; status = "";} if (data.code == "200") {result = data.text; var status1 = data.lang; status =(status1.replace(/\-/g, "-\u203A")).toUpperCase();} var urlt = 'http://translate.yandex.ru/?text=' + encTxt + '&lang=' + status1; createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Яндекс</a>', '_gt', btn.lastClick); } } gettransdata(); } }; //--------Перевести страницу с Google-------------- function ujs_googlePage_translate() { var urlt = content.document.location.href; var url = "http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u="+ encodeURIComponent(urlt) + "&sandbox=1"; //loadURI(url); getBrowser (). loadURI(url, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); }; //---------Перевести страницу с Promt--------------- function ujs_PromtPage_translate() { var urlt = content.document.location.href; var url = "http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL="+encodeURIComponent(urlt); //loadURI(url); getBrowser (). loadURI(url, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); }; //---------Перевести страницу с Microsoft--------------- function ujs_MicrosoftPage_translate() { var urlt = content.document.location.href; var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+encodeURIComponent(urlt); //loadURI(url); getBrowser (). loadURI(url, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); }; //---------Перевести страницу с Microsoft в новой вкладке --------------- function ujs_MicrosoftPageNew_translate() { var urlt = content.document.location.href; var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+encodeURIComponent(urlt); var ctabpos = gBrowser.selectedTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //---------Перевести страницу с Promt в новой вкладке --------------- function ujs_PromtPageNew_translate() { var urlt = content.document.location.href; var url = "http://www.translate.ru/site/General/au-ru/?url="+ encodeURIComponent(urlt) + ""; var ctabpos = gBrowser.selectedTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //--------Перевести страницу с Google в новой вкладке -------------- function ujs_GooglePageNew_translate() { var urlt = content.document.location.href; var url = "http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u="+ encodeURIComponent(urlt) + "&sandbox=1"; var ctabpos = gBrowser.selectedTab._tPos +1; var css = '@-moz-document domain("translate.google.com") {\ #gb, #gt-c:not([class="g-section"]) { display: none !important; }\ #contentframe { top: 0 !important; }\ }'; var uri = makeURI("data:text/css," + encodeURIComponent(css)); var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService); try { sss.unregisterSheet(uri, sss.AGENT_SHEET) } catch(e) { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) } gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //--------Перевести текст в Google в новой вкладке-------------- function ujs_GoogleTextPageNew_translate() { var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); var ctabpos = gBrowser.selectedTab._tPos +1; var url="http://translate.google.com/translate_t?text="+encTxt+"&sl=auto&tl=ru&hl=ru&eotf=0&ujs=gtt"; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //--------Перевести текст в Яндексе в новой вкладке-------------- function ujs_yandexTextPageNew_translate() { var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); var ctabpos = gBrowser.selectedTab._tPos +1; var urlt="http://translate.yandex.ru/?text=" + encTxt + "&lang=" + "-ru"; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(urlt), ctabpos); }; //---------Перевести текст в PROMT в новой вкладке--------------- function ujs_PROMTTextPageNew_translate(){ var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); var ctabpos = gBrowser.selectedTab._tPos +1; var url="http://www.translate.ru/?External=IE8Accelerator&formEncoding=utf-8&direction=ar&prmtlang=ru&status=translate&template=General&source="+encTxt; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //---------Перевести текст в Microsoft в новой вкладке--------------- function ujs_MicrosoftTextPageNew_translate(){ var ctabpos = gBrowser.selectedTab._tPos +1; var win = content, txt = getSel(win); var encTxt = encodeURIComponent(txt); var url="http://www.bing.com/translator/?to=ru&Text="+encTxt; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; //Контекстное меню для перевода из буфера------------------------------------------- (function () { if ( document.getElementById("TranslateBufer") ) return; var contextMenu = document.getElementById("contentAreaContextMenu"); var Item = document.createElement("menuitem"); Item.setAttribute("Id", "TranslateBufer"); Item.setAttribute("label", "Перевод из буфера"); Item.setAttribute("class", "menuitem-iconic"); Item.setAttribute("image", mainicon); Item.addEventListener("command", function(){ujs_google_translat('auto|ru')}, false); contextMenu.insertBefore(Item, document.getElementById("context-viewpartialsource-selection") ); })(); //Контекстное меню для перевода страниц------------------------------------------- (function () { if ( document.getElementById("TranslatePage") ) return; var menu = document.createElement("menu"); var menuPopup = document.createElement("menupopup"); var contextMenu = document.getElementById("contentAreaContextMenu"); menu.id = "TranslatePage"; menu.setAttribute("label", "Перевести страницу"); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", mainicon); contextMenu.insertBefore(menu, document.getElementById("context-viewsource") ); menu.appendChild( menuPopup ); addDestructor(function() { contextMenu.removeChild( menu ) }); var array = [ {label:"Google", func: ujs_googlePage_translate, image:gticon}, {label:"Promt ", func: ujs_PromtPageNew_translate, image:promticon}, {label:"Microsoft", func: ujs_MicrosoftPage_translate, image:bingicon}, { separator: '' }, {label:"Google в новой вкладке", func: ujs_GooglePageNew_translate, image:gticon}, {label:"Promt в новой вкладке", func: ujs_PromtPageNew_translate, image:promticon}, {label:"Microsoft в новой вкладке", func: ujs_MicrosoftPageNew_translate, image:bingicon} ]; array.forEach(function( m ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image); mItem.addEventListener("command", m.func, false); menuPopup.appendChild( mItem ); }); addEventListener("popupshowing", function() { menu.hidden = gContextMenu.isTextSelected || gContextMenu.onImage || gContextMenu.onTextInput ; }, true, contextMenu ); })(); //Контекстное меню для перевода текста------------------------------------------- (function () { if ( document.getElementById("TranslateSelected") ) return; var menu = document.createElement("menu"); var menuPopup = document.createElement("menupopup"); var contextMenu = document.getElementById("contentAreaContextMenu"); menu.id = "TranslateSelected"; menu.setAttribute("label", "Перевести выделенный текст"); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", mainicon); contextMenu.insertBefore(menu, document.getElementById("context-viewpartialsource-selection") ); menu.appendChild( menuPopup ); addDestructor(function() { contextMenu.removeChild( menu ) }); var Item = document.createElement("menuitem"); Item.setAttribute("label", "В окне Google"); Item.setAttribute("class", "menuitem-iconic"); Item.setAttribute("image", gticon); Item.addEventListener("command", function(){ujs_google_translate('auto|ru')}, false); menuPopup.appendChild( Item ); var array = [ {label:"В окне Яндекс", func: ujs_yandex_translate, image:yndicon}, {label:"В окне Microsoft", func: ujs_Microsoft_translate, image:bingicon}, { separator: ''}, {label:"В Google в новой вкладке", func: ujs_GoogleTextPageNew_translate, image:gticon}, {label:"В Яндексе в новой вкладке", func: ujs_yandexTextPageNew_translate, image:yndicon}, {label:"В PROMT в новой вкладке", func: ujs_PROMTTextPageNew_translate, image:promticon}, {label:"В Microsoft в новой вкладке", func: ujs_MicrosoftTextPageNew_translate, image:bingicon} ]; array.forEach(function( m ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", m.image); mItem.addEventListener("command", m.func, false); menuPopup.appendChild( mItem ); }); addEventListener("popupshowing", function() { menu.hidden = !gContextMenu.isTextSelected; }, false, contextMenu ); })(); |
rubel > 18-01-2019 09:02:42 |
Andrey_Krropotkin скрытый текст ![]() |
Andrey_Krropotkin > 18-01-2019 09:14:40 |
rubel там же в коде написано var keyuser = "региструемся на сайте яндекс и беспалатно получаем ключ и вставляем вместо этого сообщения"; |
rubel > 18-01-2019 09:20:54 |
Andrey_Krropotkin пишет
Спасибо, понял. |
nbuh > 18-01-2019 16:13:29 |
Есть кнопка https://forum.mozilla-russia.org/viewto … 60#p458560. Это кнопка № 23- Autocopy. Работает хорошо. Нельзя ли сделать, чтобы значок (иконка) кнопки мигала при выделении текста, а не сам текст. |
nbuh > 23-01-2019 15:15:25 |
Что то никто не отвечает! Наверно задача не выполнимая..... |
func4ptch4 > 23-01-2019 21:55:15 |
nbuh |
momo2000 > 24-01-2019 08:37:45 |
nbuh |
nbuh > 24-01-2019 11:37:35 |
momo2000, Спасибо!
Да! Мне об этом уже сказал, в личку, один хороший человек! И это работает! Это в несколько раз лучше, чем переустанавливать Сustom Buttons. Может есть спецы, которые могут сделать такую фичу, чтобы при закрытии этого портабла, файл extensions.json, удалялся...Может скрипт, или батник, или ещё что.....?! |
nbuh > 25-01-2019 21:40:03 |
func4ptch4 Спасибо за ответ! |
nbuh > 27-01-2019 09:45:11 |
func4ptch4, Привет! Спасибо! |
nbuh > 31-01-2019 13:54:55 |
func4ptch4, Привет!
Какие, конкретно, не весь же профиль?
Да, там "китайская грамота", для меня! Что, в выложенном (рекомендованном вами) батнике, это не прописано? |
func4ptch4 > 01-02-2019 11:15:52 |
nbuh Код CB в /*Initialization Code*/ Выделить код Код://======================================================================================= //[+?] AutoDelSql+trash try{document.getElementById("context-viewimage").setAttribute("onclick","gBrowser.selectedTab=gBrowser.addTab(checkForMiddleClick(this,event))");} catch(e){};var closer={observe:function(subject,topic,data){if(data=="shutdown"){ var file=Services.dirsvc.get("ProfD",Ci.nsIFile); //file.append("g.vbs"); file.append("SQL.vbs");if(file.exists())file.launch();}}}; Services.obs.addObserver(closer,"quit-application",false); /**/ //= = = = = = = = = = = = /* //Drage - forum.ru-board.com/topic.cgi?forum=2&topic=4283&start=2100#21 var closer={observe:function(subject,topic,data){if(data=="shutdown"){ var profile=Services.dirsvc.get('ProfD',Ci.nsIFile); var file=Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); file.initWithPath(profile.path+"\\..\\nir\\m.vbs");file.launch(); file.initWithPath(profile.path+"\\sqlite.vbs");file.launch();}}}; Services.obs.addObserver(closer,"quit-application",false); */ //= = = /* //Vitaliy V. работает на всех плат.Windows+Lin... var closer={observe: function(subject,topic,data){if(data=="shutdown"){ var profile=Services.dirsvc.get('ProfD',Ci.nsIFile); var dirs=profile.parent; dirs.append("memreduct");dirs.append("h.vbs");if(dirs.exists())dirs.launch(); profile.append("SQLite.vbs");if(profile.exists())profile.launch();}}}; Services.obs.addObserver(closer,"quit-application",false); */ //= = = /* //Dumby - forum.mozilla-russia.org/viewtopic.php?pid=765700#p765700||765705#p765705 var closer={observe:function(subject,topic,data){if(data=="shutdown"){ var file=Services.dirsvc.get('ProfD',Ci.nsIFile); ["custombuttons","backup","buttonsoverlay.xul.bak"].forEach(file.append);file.reveal(); file.initWithPath(profile.path+"\\SQLite.vbs");file.launch();}}}; Services.obs.addObserver(closer,"quit-application",false); */ |
nbuh > 04-02-2019 22:48:43 |
func4ptch4, спасибо за желание помочь!
Да установил. Есть, батнике строка под №137. Там надо менять пути?
Зачем нужна эта кнопка? |
func4ptch4 > 05-02-2019 17:25:13 |
nbuh |
kokoss > 22-04-2019 19:57:28 |
Есть кнопка_Add-on's, вроде работает в |
func4ptch4 > 22-04-2019 21:54:26 |
kokoss попробуй спросить тута, там Dumby чаще появляется https://forum.mozilla-russia.org/viewto … 10#p768810 |
firepox > 07-05-2019 22:48:30 |
Приветствую, скрытый текст Выделить код Код:// Настройка функций кликов мыши для кнопки ............. this.onclick =e=> { if ( e.button == 0 ) { // ЛКМ deleteCookiesFromHost(); reloadAllTabsFromHost(); } if ( e.button == 1 ) { // СКМ deleteCookiesFromHost(); //BrowserReload(); } if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); try { Services.wm.getMostRecentWindow("Browser:Cookies").close() } catch(e) {}; var win = openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null); addEventListener("load", ()=> { var host = content.location.host, arr = host.split('.'); if ( arr.length > 2 ) host = arr[1] + "." + arr[2]; var filter = win.document.getElementById("filter"); filter.value = host; setTimeout(()=> filter.doCommand(), 0); }, false, win); } }; // Удалить куки базового домена ............. function deleteCookiesFromHost() { var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); // удалить обычные куки домена for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) { var cookie = en.getNext().QueryInterface(Ci.nsICookie); ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); } // удалить куки домена из истории var reversedDomain = host.split("").reverse().join("") + "."; Cu.import("resource://gre/modules/FileUtils.jsm"); var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file); dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\""); dbConn.close(); // удалить все Flash куки var dir = Services.dirsvc.get('Home', Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true); dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); }; // Перезагрузить все вкладки текущего сайта ............. function reloadAllTabsFromHost() { var host = content.document.domain; for( var tab of gBrowser.tabs ) { var tabHost = tab.linkedBrowser.contentDocument.location.host; if ( host == tabHost ) gBrowser.reloadTab(tab); } }; this.tooltipText = "Л: Удалить куки текущего сайта\ \nС: Удалить куки текущего сайта + обновить все вкладки текущего сайта\ \nП: Управление куками для текущего сайта\ \nCtrl+П: CB Меню"; В папке storage\temporary и storage\default есть папки https+++domen.ru Спасибо! |
ascerdfg > 22-01-2022 16:20:56 |
Ultima2m пишет
А потом вы пересели на супер-пупер браузер без белых вспышек? 22-01-2022 16:22:57 firepox пишет
Это утверждение? |
Duche > 24-10-2022 17:56:54 |
Добрый день . Исправите пожалуйста кнопку Autocopy+31 для FF105 скрытый текст Выделить код Код:/*Initialization Code*/ /*Initialization Code*/ this.closest("toolbarpaletteitem") || (script => { var id = `CB${_id.slice(20)}:Autocopy`, pid = id + "Parent"; var nsvoStr = `Components.utils.import("resource://gre/modules/Services.jsm", {})`; var nsvo = eval(nsvoStr), {Services} = nsvo, parent = nsvo[pid]; if (!parent) { var cid = id + "Child", u = code => "data:," + encodeURIComponent(code); var pref = "CB.Autocopy.settings", topic = "quit-application-granted"; var PREF_ENABLED = 1, PREF_BLINK = 2, PREF_RESET = 4; (parent = nsvo[pid] = { init() { this.readSettings(); if (!this[PREF_ENABLED]) return; this.initChild(); if (this[PREF_RESET]) this.setObserver(true); }, destroy(reason) { var ud = reason[5] == "e"; if (ud || !this.obsAdded) this.saveSettings(); delete nsvo[pid]; if (reason == "delete") Services.prefs.clearUserPref(pref); if (!this[PREF_ENABLED]) return; this.destroyChild(); if (ud && this[PREF_RESET]) this.setObserver(false); }, get processURL() { delete this.processURL; this.frameURL = u(`${nsvoStr}["${cid}"].init(this);`); return this.processURL = u(script.replace(/%ID%/g, cid) .replace("%NSVO%", nsvoStr) .replace("%PREF%", pref) .replace("%PREF_BLINK%", PREF_BLINK) ); }, get frameURLDestroy() { delete this.frameURLDestroy; this.processURLDestroy = u(`${nsvoStr}["${cid}"].forget();`); return this.frameURLDestroy = u(`${nsvoStr}["${cid}"].destroy(this);`); }, initChild() { Services.ppmm.loadProcessScript(this.processURL, true); Services.mm.loadFrameScript(this.frameURL, true); }, destroyChild() { Services.mm.removeDelayedFrameScript(this.frameURL); Services.mm.loadFrameScript(this.frameURLDestroy, false); Services.ppmm.removeDelayedProcessScript(this.processURL); Services.ppmm.loadProcessScript(this.processURLDestroy, false); }, readSettings() { var val = Services.prefs.getIntPref(pref, 3); for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET]) this[setting] = Boolean(val & setting); }, saveSettings() { var settings = 0; for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET]) if (this[setting]) settings += setting; Services.prefs.setIntPref(pref, settings); }, btns: new Set(), register(btn) { this.btns.add(btn); btn._handleClick = this.click; btn.oncontextmenu = this.context; this.setImg(btn, this[PREF_ENABLED]); }, unregister(btn, reason) { this.btns.delete(btn); if (!this.btns.size) this.destroy(reason); }, setImg(btn, state) { (btn.icon || btn.ownerDocument.getAnonymousElementByAttribute( btn, "class", "toolbarbutton-icon" )).src = state ? "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH1gUCFysoMPbyDwAABE5JREFUOI2NlV1sFFUUx39z73S/6C67s6UsQisWAgZBKRTUhBhDJAhEoyQ2QqMlhjcSP158MMYHoo+YGF5MjNCHqkmJKJpgaYAEFYhalWio2EWXpZgIS3G3uzu783Hn+tAPW2zRk5zcySTnd//nf+fMNfr6+qK1Wq1Fa50BWoCMlLJNSrkUWBIEwUKlVFJKWRZCDPu+3+O67sd79+69xR3C6Onp0alUyrYsSyeTSdHY2BiKxWIyEokQCoVoaGhgdHSUQqGAEALXdf1sNuvX6/WD4XB4f2dnZ2VWcG9vb6mrqyvheR5aa4IgmFonn33fx/O8qfR9H9u2g6Ghoeu2ba+eTb1pGEZJKZWwbRut9axtpVIpgiCY2sBxHJLJpIhGo5nBwcGXgTdurxGGYYz6vo9hGHP6FQQBUkrK5TK5XI5qtUosFiOdThuGYSyfrcYECq7r3hHsOA6u6zI2NkZLSwsAWmtM06Rx9MLKi7sj+UCqpBf1ztg+XZsOURZa6/8Eu64LgGVZU++01ri/n+NRZbWveun71tVbjiWWRNq3zWvgHQAhhFBBEMwJnSuql04j3RrRrdsN74lXKR88QqRpp6k8dgEIpZQ316HNFfalUxh/ZZm/PIrHm1x/aw038yPYbhEhGAUQeoJ6JytmKB0aQJav0LR+FfLas0Sv96GXVTBe6OBG8aijFPsmwbbv+/8LWvn5OGZ1hKZ1K5HXdkFxDOoWSQlF2e84tdyeDYc5BmBKKRuFEHN+wzB+UJWfPiPs3yK9fiXyaheUxsBJ44a2MXL881pQyO/ZcIi+yRpTax2fC6y1Hode+JQIZdLty5FXd0OpDE4TrrmVX0+cw72Z7+44xJHptUJKmbjd3+mjXfnxCFEqpNe2IfO7oVgGZwGu+TiXT33Dbwu2qY73Z0IBBDBPSjmlbnqODX5EVDhYa5eOQ0sV8Jpxza1kT54ntX0/lYUP1WezTwRBkJi0YvrPZ+zbXuaFNNYDrdOgC8ehA2eJbH6N2OrtBEHgAPJ2sAlEDcNAKfVP+4MfMj+VInnvAkTuGShVwc3gNGwhe+IrQptfRy99hGKxiO/79QmOBqYmTWito4ZhzLDAufgJ1sZORHwVXvg58BbhmI+R/eJL3I2vUEyuoVqtUq/XUUrVJiwV/1IshCAUCqGUwisXiLdtBKOOU7xJPbaTsKwx3H+a0v37MJrXIZVCa02tVgMoTKidMQym7/tWf3+/a1mWE4/HzUhuILJi01OGcmoEQRhcn+H+M5TbX0S0PsykiHg8ju/7BEEwCqQBeyIdALO7u1scOHCgNZ/PrwiFQm0dv7y9/4e7Hmy+r3SeP08e5sbwd2Sbn/ak16wW1+sik8mEEokEsViMfD5PoVAoAhngyiQUxm8QDeSBq4A8+7zxbum9Jy8fvVX74MRlBr6uLCns2KEXtYiRxcVisSWXyy0Lh8MrDMO4Wyl1j23bfwCXgOp0K/4GqDBYgeGFbWEAAAAASUVORK5CYII=" : "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAEj0lEQVR42n2Vf0xbVRTHv49HSwsFSvmxmtLBmMOZ6TYYcyNbYoQAMUAIRFEoyJxEidOYLP6jC8ZgImpCTGb8wwiMAS0bxD8WI4FGDIOamYBi9odaysY6wIGlBVqgfa+/PO+5kraAN7npu/f2fu4533Puuczg4KDc7XZrg8GgGoCWuppl2Rzq2fSdGQgEDvj9fiWNXTExMbM+n6+H5/nvmpubHfifxvT09ARTUlK2VSpVUKlUxigUCml8fDwrk8kglUohkUhgt9ths9lAYBDUZ7FYfB6P56u4uLi22trazT3B/f39G7qGhqTQhMftBlkPslTswjdZCa/Xu9OF8ZHcXPH/XZ2dqXtZz+j1+of1Op02NLG+trbr9OTkZPGQ0AGKxMSdNYNe/4lOp/toF9hgMMzU1NScjCPX94MnEog0xurqKtLS03fm7TQ2Go0D9dT2AhsrKipKEpOSotd2DhC0Jm2hTEmJWN9YX8dE36e/Hb5zNS3A+pVeuff2tg+6891wCVLoy8rK6ikQES5GWx4NdTmd8MyZIJu4G0wsrGRgtsI2fcW3xM305X2Di8zAwEBvcXFxo1wuFzWMhgjw6LEYZMttSAN+JCUfQfD5D+DJygAqczD7oNVT0A25kBVdJSUlFynF9gTv5cH2X2NgnfNIO3UMvK0HdlMOvFemEf/mCfy93LGU34lMpq+vr7O0tPSNhIQEMeL7uR6Cbv1hROzWAtLynwa7WEcLTiwE3oHfqIBr8ybHbc2/cvoabjG9vb1XSYp3hZQKgfezeHFCD4nnEUGfIqhOhMKjgktej3tGE+db/v3C6S7cCOVxd1FR0et040Qp9oOGmt/+PdiHBN0gKJcKXvIi5kYn3R6b9cKpbgzupBtpPEQavyQELzrl1hwO8eapUlMj6ePUuTTwsWUwG++AX71fW9CFoYg8pqwYJSlK0zMyIvY6qD4IbXNmiELMIb34vYh1fqwBc2O/YFZV5q9+/+vYXReEwKZX6+rORUMFS12/3kCCxA/ViWywVnI/P7LePDIZMDbv32psbFTsApPGd6lWPBuaEK6pCJ3SQyFnoTqeSdAG0nQL8B4ASlciAL3XrzuampoEd/3RYAuBnxQGq1QaBejmtAHJFETl0XTEzL/8H5RXg5OUwDI6iWc+fxBpHSAUGiGlAuHBW6ysrNQIqRYqk47eWhy9PAIEV+A1fwbJ0i1wbDEsI5Pgz16GL/MsnjtzJhwc/xjsCwfbq6qqVAKQXgp4XTbwU99CU/0huLV78DgdiLuvx+zIT9g4fglM9jmx0glZdDIvLwSW048nwgvhBaFbx9MLwlF5jJXNG2W5519gYlWHwG/awTsWYO18G668S8DBQvEVEaodvTZi3o+Pj//Q0tLyFrG2H3dOBJOlTEdHx0H6zqUNOQV/ftyG+psZx1KdWP7xGv6ZnYIlo9rLZhX6NRpNjFqtliZRvgu1xWq1Ynh4WN/a2vol7ReEt4fJEy4V2J9fY7wbkM2tONz60TkYTZuZtvLy8ie0Wq2GPNIS8DCV2FyGYbJIukNms/mL9vb2Ntq7FS7Fv/ChKzVwIHr3AAAAAElFTkSuQmCC"; }, click() { var newState = parent[PREF_ENABLED] = !parent[PREF_ENABLED]; for(var btn of parent.btns) parent.setImg(btn, newState); newState ? parent.initChild() : parent.destroyChild(); if (parent[PREF_RESET]) parent.setObserver(newState); }, context(e) { if (e.ctrlKey || e.shiftKey) return; var btn = e.target; if (btn.btnPopup && e.detail > 1) return btn.btnPopup.hidePopup(); e.preventDefault(); (btn.btnPopup || parent.getPopup(btn)).openPopup(btn, "after_start"); }, getPopup(btn) { var win = btn.ownerGlobal, doc = win.document; var popup = doc.createElementNS(xulns, "menupopup"); popup.setAttribute("onclick", "event.stopPropagation();"); popup.setAttribute("oncommand", "handleCommand(event.target);"); popup.setAttribute("onpopupshowing", "handlePopupshowing();"); popup.menuitems = []; for(var [lab, pref] of win.Object.entries({ "Выделенный текст мигает при автокопировании": PREF_BLINK, "Выключать автокопирование при выходе из браузера": PREF_RESET })) { var menuitem = popup.appendChild(doc.createElementNS(xulns, "menuitem")); menuitem.setAttribute("label", lab); menuitem.setAttribute("type", "checkbox"); menuitem.pref = pref; popup.menuitems.push(menuitem); } popup.handleCommand = menuitem => { var newState = this[menuitem.pref] = menuitem.hasAttribute("checked"); if (!this[PREF_ENABLED]) return; if (menuitem.pref == PREF_BLINK) this.saveSettings(), Services.ppmm.broadcastAsyncMessage(cid + ":FromParent", {blink: newState}); else if (menuitem.pref == PREF_RESET) this.setObserver(newState); } popup.handlePopupshowing = () => { for(var menuitem of popup.menuitems) this[menuitem.pref] ? menuitem.setAttribute("checked", true) : menuitem.removeAttribute("checked"); } return btn.appendChild(btn.btnPopup = popup); }, obsAdded: false, setObserver(set) {this.obsAdded = set ? Services.obs.addObserver(this, topic, false) : Services.obs.removeObserver(this, topic); }, observe() { Services.obs.removeObserver(this, topic); this[PREF_ENABLED] = false; this.saveSettings(); } }).init(); } parent.register(this); addDestructor(reason => parent.unregister(this, reason), parent); })(`(nsvo => (nsvo["%ID%"] = { x: -1, y: -1, down: false, handleEvent(e) {e.button || this[e.type](e);}, mousedown(e) {this.x = e.screenX; this.y = e.screenY, this.down = true;}, mouseup(e) { var {down} = this; this.down = false; if (!down) return; if (e.screenX == this.x && e.screenY == this.y && (e.detail == 1 || e.target.matches( "textarea[disabled],input[disabled],button,select,summary" ))) return; var name = e.originalTarget.nodeName; if (/^(?:(?:xul:)?(?:slider|scrollbarbutton)|resizer)$/.test(name)) return; this.x = this.y = -1; var win = this.getFocusedWin(e.target.ownerGlobal); var sel = win.getSelection(); if (sel.toString()) { (win.docShell || win.document.docShell).doCommand("cmd_copy", null, win); this.blinkEnabled && this.blink(win, e.detail > 1); } }, blinkEnabled: Boolean( Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService) .getIntPref("%PREF%", 3) & %PREF_BLINK% ), blink(win, pause) { if (pause) return win.setTimeout(() => this.blink(win), 100); var sc = (win.docShell || win.document.docShell) .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsISelectionDisplay) .QueryInterface(Components.interfaces.nsISelectionController); sc.setDisplaySelection(sc.SELECTION_OFF); sc.repaintSelection(sc.SELECTION_NORMAL); win.setTimeout(() => { sc.setDisplaySelection(sc.SELECTION_ON); sc.repaintSelection(sc.SELECTION_NORMAL); }, 150); }, getFocusedWin(win) { var focusedWin = {}; var elm = this.fm.getFocusedElementForWindow(win.top, true, focusedWin); return focusedWin.value; }, get fm() { delete this.fm; return this.fm = Components.classes["@mozilla.org/focus-manager;1"] .getService(Components.interfaces.nsIFocusManager); }, count: 0, init(cfmm) { this.count += 1; cfmm.addEventListener("mousedown", this); cfmm.addEventListener("mouseup", this); cfmm.addEventListener("unload", this); if (this.count == 1) this.cpmm.addMessageListener("%ID%:FromParent", this); }, destroy(cfmm) { this.count -= 1; cfmm.removeEventListener("mousedown", this); cfmm.removeEventListener("mouseup", this); cfmm.removeEventListener("unload", this); if (!this.count) this.cpmm.removeMessageListener("%ID%:FromParent", this); }, receiveMessage(msg) { if ("blink" in msg.data) this.blinkEnabled = msg.data.blink; }, unload(e) {this.destroy(e.target);}, forget: () => delete nsvo["%ID%"] }).cpmm = this)(%NSVO%);`); |
foxboy > 16-10-2023 16:17:55 |
Некоторые кнопки не работают в многопроцессорном режиме, можно их сделать работоспособными? |
vv07 > 03-06-2024 15:56:16 |
Просьба к умельцам. Поправьте пожалуйста кнопку Autocopy для последней версии 126.0.1 Очень полезная кнопочка скрытый текст Выделить код Код:this.closest("toolbarpaletteitem") || (script => { var id = `CB${_id.slice(20)}:Autocopy`, pid = id + "Parent"; var nsvoStr = `Components.utils.import("resource://gre/modules/Services.jsm", {})`; var nsvo = eval(nsvoStr), {Services} = nsvo, parent = nsvo[pid]; if (!parent) { var cid = id + "Child", u = code => "data:," + encodeURIComponent(code); var pref = "CB.Autocopy.settings", topic = "quit-application-granted"; var PREF_ENABLED = 1, PREF_BLINK = 2, PREF_RESET = 4; (parent = nsvo[pid] = { init() { this.readSettings(); if (!this[PREF_ENABLED]) return; this.initChild(); if (this[PREF_RESET]) this.setObserver(true); }, destroy(reason) { var ud = reason[5] == "e"; if (ud || !this.obsAdded) this.saveSettings(); delete nsvo[pid]; if (reason == "delete") Services.prefs.clearUserPref(pref); if (!this[PREF_ENABLED]) return; this.destroyChild(); if (ud && this[PREF_RESET]) this.setObserver(false); }, get processURL() { delete this.processURL; this.frameURL = u(`${nsvoStr}["${cid}"].init(this);`); return this.processURL = u(script.replace(/%ID%/g, cid) .replace("%NSVO%", nsvoStr) .replace("%PREF%", pref) .replace("%PREF_BLINK%", PREF_BLINK) ); }, get frameURLDestroy() { delete this.frameURLDestroy; this.processURLDestroy = u(`${nsvoStr}["${cid}"].forget();`); return this.frameURLDestroy = u(`${nsvoStr}["${cid}"].destroy(this);`); }, initChild() { Services.ppmm.loadProcessScript(this.processURL, true); Services.mm.loadFrameScript(this.frameURL, true); }, destroyChild() { Services.mm.removeDelayedFrameScript(this.frameURL); Services.mm.loadFrameScript(this.frameURLDestroy, false); Services.ppmm.removeDelayedProcessScript(this.processURL); Services.ppmm.loadProcessScript(this.processURLDestroy, false); }, readSettings() { var val = Services.prefs.getIntPref(pref, 3); for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET]) this[setting] = Boolean(val & setting); }, saveSettings() { var settings = 0; for(var setting of [PREF_ENABLED, PREF_BLINK, PREF_RESET]) if (this[setting]) settings += setting; Services.prefs.setIntPref(pref, settings); }, btns: new Set(), register(btn) { this.btns.add(btn); btn._handleClick = this.click; btn.oncontextmenu = this.context; this.setImg(btn, this[PREF_ENABLED]); }, unregister(btn, reason) { this.btns.delete(btn); if (!this.btns.size) this.destroy(reason); }, setImg(btn, state) { (btn.icon || btn.ownerDocument.getAnonymousElementByAttribute( btn, "class", "toolbarbutton-icon" )).src = state ? "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" : "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }, click() { var newState = parent[PREF_ENABLED] = !parent[PREF_ENABLED]; for(var btn of parent.btns) parent.setImg(btn, newState); newState ? parent.initChild() : parent.destroyChild(); if (parent[PREF_RESET]) parent.setObserver(newState); }, context(e) { if (e.ctrlKey || e.shiftKey) return; var btn = e.target; if (btn.btnPopup && e.detail > 1) return btn.btnPopup.hidePopup(); e.preventDefault(); (btn.btnPopup || parent.getPopup(btn)).openPopup(btn, "after_start"); }, getPopup(btn) { var win = btn.ownerGlobal, doc = win.document; var popup = doc.createElementNS(xulns, "menupopup"); popup.setAttribute("onclick", "event.stopPropagation();"); popup.setAttribute("oncommand", "handleCommand(event.target);"); popup.setAttribute("onpopupshowing", "handlePopupshowing();"); popup.menuitems = []; for(var [lab, pref] of win.Object.entries({ "Выделенный текст мигает при автокопировании": PREF_BLINK, "Выключать автокопирование при выходе из браузера": PREF_RESET })) { var menuitem = popup.appendChild(doc.createElementNS(xulns, "menuitem")); menuitem.setAttribute("label", lab); menuitem.setAttribute("type", "checkbox"); menuitem.pref = pref; popup.menuitems.push(menuitem); } popup.handleCommand = menuitem => { var newState = this[menuitem.pref] = menuitem.hasAttribute("checked"); if (!this[PREF_ENABLED]) return; if (menuitem.pref == PREF_BLINK) this.saveSettings(), Services.ppmm.broadcastAsyncMessage(cid + ":FromParent", {blink: newState}); else if (menuitem.pref == PREF_RESET) this.setObserver(newState); } popup.handlePopupshowing = () => { for(var menuitem of popup.menuitems) this[menuitem.pref] ? menuitem.setAttribute("checked", true) : menuitem.removeAttribute("checked"); } return btn.appendChild(btn.btnPopup = popup); }, obsAdded: false, setObserver(set) {this.obsAdded = set ? Services.obs.addObserver(this, topic, false) : Services.obs.removeObserver(this, topic); }, observe() { Services.obs.removeObserver(this, topic); this[PREF_ENABLED] = false; this.saveSettings(); } }).init(); } parent.register(this); addDestructor(reason => parent.unregister(this, reason), parent); })(`(nsvo => (nsvo["%ID%"] = { x: -1, y: -1, down: false, handleEvent(e) {e.button || this[e.type](e);}, mousedown(e) {this.x = e.screenX; this.y = e.screenY, this.down = true;}, mouseup(e) { var {down} = this; this.down = false; if (!down) return; if (e.screenX == this.x && e.screenY == this.y && (e.detail == 1 || e.target.matches( "textarea[disabled],input[disabled],button,select,summary" ))) return; var name = e.originalTarget.nodeName; if (/^(?:(?:xul:)?(?:slider|scrollbarbutton)|resizer)$/.test(name)) return; this.x = this.y = -1; var win = this.getFocusedWin(e.target.ownerGlobal); var sel = win.getSelection(); if (sel.toString()) { (win.docShell || win.document.docShell).doCommand("cmd_copy", null, win); this.blinkEnabled && this.blink(win, e.detail > 1); } }, blinkEnabled: Boolean( Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService) .getIntPref("%PREF%", 3) & %PREF_BLINK% ), blink(win, pause) { if (pause) return win.setTimeout(() => this.blink(win), 100); var sc = (win.docShell || win.document.docShell) .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsISelectionDisplay) .QueryInterface(Components.interfaces.nsISelectionController); sc.setDisplaySelection(sc.SELECTION_OFF); sc.repaintSelection(sc.SELECTION_NORMAL); win.setTimeout(() => { sc.setDisplaySelection(sc.SELECTION_ON); sc.repaintSelection(sc.SELECTION_NORMAL); }, 150); }, getFocusedWin(win) { var focusedWin = {}; var elm = this.fm.getFocusedElementForWindow(win.top, true, focusedWin); return focusedWin.value; }, get fm() { delete this.fm; return this.fm = Components.classes["@mozilla.org/focus-manager;1"] .getService(Components.interfaces.nsIFocusManager); }, count: 0, init(cfmm) { this.count += 1; cfmm.addEventListener("mousedown", this); cfmm.addEventListener("mouseup", this); cfmm.addEventListener("unload", this); if (this.count == 1) this.cpmm.addMessageListener("%ID%:FromParent", this); }, destroy(cfmm) { this.count -= 1; cfmm.removeEventListener("mousedown", this); cfmm.removeEventListener("mouseup", this); cfmm.removeEventListener("unload", this); if (!this.count) this.cpmm.removeMessageListener("%ID%:FromParent", this); }, receiveMessage(msg) { if ("blink" in msg.data) this.blinkEnabled = msg.data.blink; }, unload(e) {this.destroy(e.target);}, forget: () => delete nsvo["%ID%"] }).cpmm = this)(%NSVO%);`); (()=> { var code = ` function handleEvent(e) { if (e.button != 1) return; e.preventDefault(); e.stopPropagation(); sendSyncMessage("response",{},{}); } addEventListener('click', handleEvent, false); function removeListener() { removeMessageListener("destroy", removeListener); removeEventListener("click", handleEvent, false); } addMessageListener("destroy", removeListener); `; var url = "data:," + encodeURIComponent(code); var mm = window.getGroupMessageManager("browsers"); mm.loadFrameScript(url, true); function run(message) { insertText(gClipboard.read()); Services.console.logStringMessage(message.name); } mm.addMessageListener("response", run); addDestructor(() => { mm.removeDelayedFrameScript(url); mm.broadcastAsyncMessage("destroy"); mm.removeMessageListener("response", run); }); })(); // Ставить текст в текстовое поле ............. function insertText(text) { var docShell = "docShell" in document && document.docShell instanceof Ci.nsIDocShell ? document.docShell : window.docShell; function insert(text) { var params = "createCommandParams" in Components.utils ? Cu.createCommandParams() : Components.classes["@mozilla.org/embedcomp/command-params;1"].createInstance(Components.interfaces.nsICommandParams); params.setStringValue("state_data", text); docShell.doCommandWithParams("cmd_insertText", params); }; var br = document.activeElement; !br || br.localName != "browser" || !br.isRemoteBrowser ? insert(text) : br.messageManager.loadFrameScript(`data:,(${insert})(`+encodeURIComponent(text.toSource())+`)`, false, true); }; |
Dumby > 04-06-2024 22:01:44 |
vv07 пишет
Да брось ты. Лучше поищи для этого Но если прям хочется чего-то странного, скрытый текст Выделить код Код:/* var nsvoStr = `Components.utils.import("resource://gre/modules/Services.jsm", {})`; */ var nsvoStr = "Cu.getGlobalForObject(Cu)"; |
vv07 > 05-06-2024 00:53:09 |
Dumby |
Ultima2m > 05-06-2024 05:35:12 |
vv07 пишет
about:config |