Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№122-11-2009 13:29:00

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.5

Re: Готовые кнопки для Custom Buttons

Постим сюда только готовые и оформленные кнопки!
                                           
- все вопросы, замечания, обсуждения тут:
https://forum.mozilla-russia.org/viewto … 591&p=last



Как добавить кнопку(помощь для новичка)

1.1449045699.gif

1 Устанавливаем расширение Custom Buttons.
2 Выделяем всё что есть в секции Kод кнопки.
3 Копируем в адресную строку и жмём перейти.
4 Откроется окно диалога добавления кнопки.
5 Добавив кнопку жмём правой кнопкой мыши по свободному месту на панели и выбираем настроить.
6 Перетаскиваем кнопку в нужное место на панели.
этот способ устанавливает кнопку с иконкой.

второй способ:
ПКМ на любой панели и в открывшемся меню нажимаем пункт Добавить новую кнопку, откроется окно редактирования новой кнопки куда копируем коды из секций Код и Инициализация. Потом в окне редактирования кнопки нажимаем Ok, открываем настройку панелей инструментов (Customize) и вытаскиваем новую кнопку на нужную панель. иконку кнопки в этом случае придётся нарисовать самим или выбрать готовую(картинка 16х16 пикселей подойдёт к большинству тем), не забывайте конвертировать её в base64 иначе при перемещении файла иконки изображение с кнопки пропадёт.


Как удалить кнопку(помощь для новичка)

ПКМ на кнопке и нажать пункт Удалить в контекстном меню кнопки или открыть Управление дополнениями и там открыть вкладку Custom Buttons найти нужную кнопку и нажать Удалить.

Шаблон добавления готовой кнопки

Выделить код

Код:

[b][color=#FF4F00]Название кнопки[/color][/b](Firefox + версия), от какого числа кнопка.
Описание что кнопка делает, указать если для работы кнопки нужны расширения и программы.

[b]Клики на кнопке:[/b]
[color=#006600]ЛКМ[/color] => описание,
[color=#006600]СКМ[/color] => описание,
[color=#006600]ПКМ[/color] => описание.
Другие клики(если они есть)

[spoiler=Код кнопки, вкладки код и инициализации:]

[b]Код кнопки:[/b]
тут код получаемый по ПКМ - Копировать код в буфер

[b]Код:[/b]
тут код из вкладки Код(если он есть)

[b]Инициализация:[/b]
тут код из вкладки Инициализация(если он есть)

[/spoiler]
Автор кнопки(если он известен): [b]указать автора без ссылки на его профиль[/b] + ссылка на страницу кнопки если такая есть.


Важно!
Расширение Custom Buttons (bootstrap) можно взять тут 11-04-2023 12:33:42, но перед установкой нужно сделать это Как отключить проверку цифровых подписей в дополнениях Firefox.

Отредактировано bunda1 (27-12-2013 14:29:59)

Отсутствует

 

№7730-09-2011 01:35:16

ignorecheats
Забанен
 
Группа: Members
Зарегистрирован: 01-09-2011
Сообщений: 104
UA: Firefox 2.0

Re: Готовые кнопки для Custom Buttons

Bookmarks | Manager | Add (Firefox)

ЛКМ=> открыть закладки в боковой панели
СКМ=> Менеджер закладок
ПКМ=> добавить текущую страницу в закладки (диалоговое окно)
Shift + ЛКМ=> добавить все вкладки в закладки

скрытый текст
Код кнопки

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EBookmarks%20%7C%20Bookmarks%20Manager%20%7C%20Add%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEL62XsAAP8AQvrZAEL62QBC+tkAQvrZAEL62QBC+tkAQvrZAEL62QBC+tkAQvrZAEL62QBC+tkAAAAAAEz72XsAAP97AAD/MbP9/zGz/f8xs/3/MbP9/zGz/f8xs/3/MbP9/zGz/f8xs/3/MbP9/zGz/f8xtP3/AEz72XsAAP97AAD/ewAA/3sAAP97AAD/ewAA/3sAAP97AAD/ewAA/3sAAP97AAD/ewAA/3sAAP97AAD/Lbj9/wBW+9kAYPvZewAA/3sAAP8qfvv/UZb8/1GW/P8qfvv/Kn77/yp++/8qfvv/UZb8/1GW/P8qfvv/Kn77/yq7/f8AYPvZAGv82Sa//v97AAD/JoX8/0GU/P/x9///d7L9/yaF/P8mhfz/d7L9//H3//9BlPz/JoX8/yaF/P8mv/7/AGv82QB1/Nkjw/7/I438/yON/P8jjfz/1ur+//////+62/7/utv+///////W6v7/I438/yON/P8jjfz/I8P+/wB1/NkAf/zZH8j+/x+V/P8flfz/H5X8/4HD/f//////////////////////gcP9/x+V/P8flfz/H5X8/x/I/v8Af/zZAIn92RzL/v8cnP3/HJz9/xyc/f+b1P7//////////////////////5vU/v8cnP3/HJz9/xyc/f8cy/7/AIn92QCT/dkY0P7/GKT9/yap/f/F6P7/////////////////////////////////xej+/yap/f8YpP3/GND+/wCT/dkAnf3ZFdP+/zK2/f+35f7/xer//8Xq///T7//////////////T7///xer//8Xq//+35f7/Mrb9/xXT/v8Anf3ZAKf92RHX/v8Rs/3/EbP9/xGz/f8Rs/3/L739////////////L739/xGz/f8Rs/3/EbP9/xGz/f8R1/7/AKf92QCx/tkO2///Drv+/w67/v8Ou/7/Drv+/w67/v/S8v//0vL//w67/v8Ou/7/Drv+/w67/v8Ou/7/Dtv//wCx/tkAu/7ZCuD//wrD/v8Kw/7/CsP+/wrD/v8Kw/7/dd3+/3Xd/v8Kw/7/CsP+/wrD/v8Kw/7/CsP+/wrg//8Au/7ZAMX+2Qfj//8Hyv7/B8r+/wfK/v8Hyv7/B8r+/ybR/v8l0P7/B8r+/wfK/v8Hyv7/B8r+/wfK/v8H4///AMX+2QDQ/9kD6P//A+f//wPn//8D5///A+f//wPn//8D5///A+f//wPn//8D5///A+f//wPn//8D5///A+j//wDQ/9kAAAAAANn/2QDZ/9kA2f/ZANn/2QDZ/9kA2f/ZANn/2QDZ/9kA2f/ZANn/2QDZ/9kA2f/ZANn/2QDZ/9kAAAAAgAGsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBgAGsQQ%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.setAttribute%28%22style%22%2C%20%22padding-left%3A%202px%20%21important%3B%20padding-right%3A%202px%20%21important%3B%20padding-top%3A%200px%20%21important%3B%20padding-bottom%3A%200px%20%21important%3B%20%20margin-top%3A%204px%20%21important%3B%20margin-bottom%3A%204px%20%21important%3B%22%29%3B%0Athis.tooltipText%20%3D%20%22L%3DBookmarks%20%7C%20M%3DB.Manager%20%7C%20R%3DAdd%20Bookmark%20As%20%7C%20Sh+L%3DAll%20Tabs%20to%20Bookmarks%22%3B%0A%0A%0Athis.%20onclick%20%3D%20function%20%28event%29%0A%7B%20%20%20if%20%28event.%20button%20%3D%3D%200%20%26%26%20%21event.shiftKey%29%20toggleSidebar%28%27viewBookmarksSidebar%27%29%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%201%29%20toOpenWindowByType%28%27bookmarks%3Amanager%27%2C%20%27chrome%3A//browser/content/bookmarks/bookmarksManager.xul%27%29%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%0A%20%20%20%20%7B%20%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20addBookmarkAs%28document.getElementById%28%27content%27%29%2C%20false%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%200%20%26%26%20event.shiftKey%29%20addBookmarkAs%28document.getElementById%28%27content%27%29%2C%20true%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%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код Инициализации

Выделить код

Код:

this.setAttribute("style", "padding-left: 2px !important; padding-right: 2px !important; padding-top: 0px !important; padding-bottom: 0px !important;  margin-top: 4px !important; margin-bottom: 4px !important;");
this.tooltipText = "L=Bookmarks | M=B.Manager | R=Add Bookmark As | Sh+L=All Tabs to Bookmarks";


this. onclick = function (event)
{   if (event. button == 0 && !event.shiftKey) toggleSidebar('viewBookmarksSidebar');
    if (event. button == 1) toOpenWindowByType('bookmarks:manager', 'chrome://browser/content/bookmarks/bookmarksManager.xul');
    if (event. button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
    {  event.preventDefault(); event.stopPropagation();
      addBookmarkAs(document.getElementById('content'), false);
    };
    if (event. button == 0 && event.shiftKey) addBookmarkAs(document.getElementById('content'), true);
};

Кнопка "по заказу" отсюда.
Работает в Firefox 2.0.0.20, должна работать и в других версиях, не проверял...

Отредактировано ignorecheats (01-10-2011 06:39:09)

Отсутствует

 

№7803-10-2011 09:53:08

ignorecheats
Забанен
 
Группа: Members
Зарегистрирован: 01-09-2011
Сообщений: 104
UA: Firefox 2.0

Re: Готовые кнопки для Custom Buttons

Новые версии  Go plus! и Go plus focus.
Отличия - добавлены функции поиска текста по текущему сайту и поиска страниц в кеше Google и в  Archive.org, "причесан" код.

Go plus!²
(Firefox)
Добавленные сочетания клавиш:
Alt+ЛКМ = искать URL из адресной строки в Google CACHE и Archive.org (результаты -  в 2 новых вкладках)
Alt+СКМ = искать URL ("текстовый" выделенный на странице / из буфера обмена) в Google CACHE и Archive.org (результаты -  в 2 новых вкладках)
Shift+ПКМ = искать текст (набранный в адресной строке / выделенный на странице / из буфера обмена) на текущем сайте с помощью Google
Ctrl + ПКМ  = CB меню.

скрытый текст
Код кнопки

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EGo%20plus%21%B2%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAACcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAACcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/ANdx/wAAAP8AAAD/AAAAAAAAAAAAnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8A13H/ANdx/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AP+A/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wD/gP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AAAAAAAAAAAAAAAAAAAAAACcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wCcAP8AnAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAACcAP8AnAD/AJwA/wCcAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/P/OsQQ/zrEEDwKxBAMCsQQAzrEEAA6xBAAOsQQAArEEAAKxBAAOsQQAPrEEAOKxBAPusQQP9rEEP+qxBP/ysQQ%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%22GO/RELOAD/OPEN/SEARCH%20%7C%20Ctrl+MouseRightClick%20for%20Button%20HELP%22%3B%0Athis.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%22%29%3B%0Aconst%20IN_NEW_TAB%20%3D%20true%3B%20%20const%20IN_BACKGROUND%20%3D%20false%3B%20%20var%20br%20%3D%20getBrowser%28%29%3B%20%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%20%20var%20str%20%3D%20gURLBar.value%3B%20var%20loc%20%3D%20%28str%20%3D%3D%20content.location%29%3B%0A%20%20%20this.prDef%20%3D%20function%28%29%20%7B%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20%7D%3B%0A%20%20%20this.nonfocus%20%3D%20function%28%29%20%7BgoDoCommand%28%22cmd_copy%22%29%3B%20str%3DreadFromClipboard%28%29%3B%20%7D%3B%0A%20%20%20%0A%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20loc%20%26%26%20%21event.altKey%29%20%7B%20if%20%28event.shiftKey%29%20%7B%20BrowserReloadSkipCache%28%29%3B%7D%20else%20BrowserReload%28%29%3B%20%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20%21loc%20%26%26%20%21event.altKey%29%20br.loadURI%28str%29%3B%20%20%20//%20for%20edited%20url%20%26%20for%20mouse%20without%20middle%20button...%0A%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.altKey%29%20this.AltWeb%28str%29%3B%20%20%20%20%20%20//%20for%20current/edited%20url%20%26%20for%20mouse%20without%20middle%20button...%0A%0A%20%20%20if%28event.button%20%3D%3D%201%20%26%26%20%21event.altKey%29%20%7B%20this.nonfocus%28%29%3B%20if%20%28%21str%29%20return%3B%0A%20%20%20%20%20if%20%28IN_NEW_TAB%29%20br.selectedTab%3Dbr.addTab%28str%2C%20null%2C%20null%2C%20null%2C%20IN_BACKGROUND%2C%20false%29%3B%20%20else%20br.loadURI%28str%29%3B%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%201%20%26%26%20event.altKey%29%20%7B%20this.nonfocus%28%29%3B%20if%20%28%21str%29%20return%3B%20this.AltWeb%28str%29%3B%20%7D%3B%20%0A%0A%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%20this.prDef%28%29%3B%20if%28loc%29%20this.nonfocus%28%29%3B%20%0A%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20br.selectedTab%3Dbr.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20event.shiftKey%29%20%7B%20this.prDef%28%29%3B%20if%28loc%29%20this.nonfocus%28%29%3B%20this.SearchInWebsite%28str%29%3B%20%7D%3B%0A%7D%3B%0A%0Athis.AltWeb%20%3D%20function%28addr%29%20%7B%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/search%3Fq%3Dcache%3A%22%20+%20addr%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%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//liveweb.archive.org/%22%20+%20addr%29%3B%20%7D%3B%0Athis.SearchInWebsite%20%3D%20function%28text%29%0A%7B%20%20%20%20%20%20%20var%20doc%20%3D%20br.contentDocument%3B%0A%20%20%20%20%20%20%20%20try%20%7B%20var%20url%20%3D%20doc.%20location.%20hostname%3B%20%7D%20%20catch%28e%29%20%7B%20var%20url%20%3D%20%22%22%3B%20%7D%20%20%0A%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%0A%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0A%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com/search%3Fas_q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20url%3B%20%20%0A//%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com.ua/search%3Fnum%3D100%26hl%3Duk%26safe%3Doff%26q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20url%3B%0A//%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.ru/search%3Fq%3D%22%20+%20text%20+%20%22%20site%3A%22%20+%20url%20+%20%22%26tbo%3D1%26prmdo%3D1%26sa%3DX%22%3B%0A%20%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28searchUrl%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%5B______________________________________________________________________________________________________%0A%0A%20%20%20%20%20%20%20%20%20%20Left%20%20%3D%20GO/RELOAD%0A%20Shift+Left%20%20%3D%20Hard%20RELOAD%0A%20%20%20Alt+Left%20%20%3D%20SEARCH%20location%20bar%20URL%20in%20Google%20CACHE%20%26%20Archive.org%20%28in%202%20NEW%20Tabs%29%0A%0A%20%20%20%20%20Medium%20%3D%20OPEN%20URL%20%28selected%20on%20page%20%22text%22%20url%20OR%20from%20clipboard%29%20%28in%20NEW%20Tab%29%0AAlt+Medium%3D%20SEARCH%20URL%20%28selected%20/%20from%20clipboard%29%20in%20Google%20CACHE%20%26%20Archive.org%20%28in%202%20NEW%20Tabs%29%0A%20%20%0A%20%20%20%20%20%20%20%20%20Right%20%3D%20SEARCH%20the%20text%20%28typed%20in%20location%20bar%20OR%20selected/from%20clipboard%29%20by%20selected%20Search%20Engine%20%28in%20NEW%20Tab%29%0AShift+Right%20%3D%20SEARCH%20the%20text%20%28typed%20in%20location%20bar%20OR%20selected/from%20clipboard%29%20in%20current%20Website%20by%20Google%20%28in%20NEW%20Tab%29%0A%0A%20Ctrl+Right%20%3D%20CB%20menu%0A______________________________________________________________________________________________________%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код Инициализации

Выделить код

Код:

this.tooltipText = "GO/RELOAD/OPEN/SEARCH | Ctrl+MouseRightClick for Button HELP";
this.setAttribute("style", "padding-left: 0px !important;");
const IN_NEW_TAB = true;  const IN_BACKGROUND = false;  var br = getBrowser(); 

this.onclick = function(event) {  var str = gURLBar.value; var loc = (str == content.location);
   this.prDef = function() { event.preventDefault(); event.stopPropagation(); };
   this.nonfocus = function() {goDoCommand("cmd_copy"); str=readFromClipboard(); };
   
   if(event.button == 0 && loc && !event.altKey) { if (event.shiftKey) { BrowserReloadSkipCache();} else BrowserReload();  };
   if(event.button == 0 && !loc && !event.altKey) br.loadURI(str);   // for edited url & for mouse without middle button...
   if(event.button == 0 && event.altKey) this.AltWeb(str);      // for current/edited url & for mouse without middle button...

   if(event.button == 1 && !event.altKey) { this.nonfocus(); if (!str) return;
     if (IN_NEW_TAB) br.selectedTab=br.addTab(str, null, null, null, IN_BACKGROUND, false);  else br.loadURI(str); };
   if(event.button == 1 && event.altKey) { this.nonfocus(); if (!str) return; this.AltWeb(str); }; 

   if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { this.prDef(); if(loc) this.nonfocus(); 
     var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
     var submission = ss.currentEngine.getSubmission(str, null);
     br.selectedTab=br.addTab(submission.uri.spec, null, null, submission.postData, IN_BACKGROUND, false); };
   if(event.button == 2 && event.shiftKey) { this.prDef(); if(loc) this.nonfocus(); this.SearchInWebsite(str); };
};

this.AltWeb = function(addr) { br.selectedTab = br.addTab("http://www.google.com/search?q=cache:" + addr);
                               br.selectedTab = br.addTab("http://liveweb.archive.org/" + addr); };
this.SearchInWebsite = function(text)
{       var doc = br.contentDocument;
        try { var url = doc. location. hostname; }  catch(e) { var url = ""; }  
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;  
//        var searchUrl = "http://www.google.com.ua/search?num=100&hl=uk&safe=off&q=" + text + "&as_sitesearch=" + url;
//        var searchUrl = "http://www.google.ru/search?q=" + text + " site:" + url + "&tbo=1&prmdo=1&sa=X";
        br.selectedTab = br.addTab(searchUrl);
};

Go plus² focus(Firefox)
Добавленные сочетания клавиш:
Alt+СКМ = искать URL (из адресной строки / "текстовый" выделенный на странице / из буфера обмена) в Google CACHE и Archive.org (если в фокусе - адресная строка, ищет URL из адресной строки, если в фокусе - страница - остальные варианты)
Shift+ПКМ = искать текст (набранный в адресной строке / выделенный на странице / из буфера обмена) на текущем сайте с помощью Google (то же самое - в зависимости от того, что находится в фокусе).
Ctrl+ ПКМ  = CB меню

скрытый текст
Код кнопки

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EGo%20plus%B2%20focus%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAACcAP8AnAD/AJwA/wCbAP8AmgD/AJgA/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AnAD/AJwA/wCQAP8AkAD/AJAA/wCZAP8AmAD/AJUA/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AJwA/wCcAP8AgwD//////wBqAP8AdwD/AIMA/wCNAP8AnAD/ALcA/wAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAACcAP8AkAD/AHcA//////////////////////8AdwD/AIMA/wCPAP8AmwD/AP/Q/wAAAP8AAAD/AAAAAAAAAAAAnAD/AIMA//////8AXgD/AF4A/wBeAP8AXgD///////////8AkAD/AJUA/wChAP8A/8b/AP/M/wAAAAAAAAAAAJwA/wB3AP//////AF4A////////////AF4A//////8AagD/AJAA/wCcAP8AlQD/AI0A/wCNAP8AfAD/AP+3/wCQAP8AagD//////wBeAP///////////wBeAP//////AHcA/wCcAP8AnAD/AJwA/wCcAP8AmgD/AH4A/wD/tf8AkAD///////////8AXgD/AF4A/wBeAP8AXgD//////wCDAP8AnAD/AJwA/wCdAP8AoAD/AKQA/wAAAAAAAAAAAJAA/wCDAP8AdwD//////////////////////wB3AP8AkAD/AJsA/wCcAP8ApgD/AAAAAAAAAAAAAAAAAAAAAACcAP8AnAD/AJAA/wCDAP8AdwD/AGoA//////8AgQD/AJgA/wCYAP8AAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AnAD/AJwA/wCcAP8AnAD/AJwA/wCMAP8AigD/AIUA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAJwA/wCcAP8AnAD/AJwA/wCaAP8AmAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAACcAP8AnAD/AJwA/wCcAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAP8AnAD/AJwA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/P/OsQQ/zrEEDwKxBAMCsQQAzrEEAA6xBAAOsQQAArEEAAKxBAAOsQQAPrEEAOKxBAPusQQP9rEEP+qxBP/ysQQ%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%22GO/RELOAD/OPEN/SEARCH%20%7C%20Ctrl+MouseRightClick%20for%20Button%20HELP%22%3B%0Athis.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%22%29%3B%0Aconst%20IN_NEW_TAB%20%3D%20true%3B%20%20const%20IN_BACKGROUND%20%3D%20false%3B%20%20var%20br%20%3D%20getBrowser%28%29%3B%20%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%20%20var%20str%20%3D%20gURLBar.value%3B%20var%20loc%20%3D%20%28str%20%3D%3D%20content.location%29%3B%0A%20%20%20this.prDef%20%3D%20function%28%29%20%7B%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20%7D%3B%0A%20%20%20this.nonfocus%20%3D%20function%28%29%20%7BgoDoCommand%28%22cmd_copy%22%29%3B%20str%3DreadFromClipboard%28%29%3B%20%7D%3B%0A%20%20%20%0A%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20loc%29%20%7B%20%20if%20%28event.shiftKey%29%20%7B%20BrowserReloadSkipCache%28%29%3B%7D%20else%20BrowserReload%28%29%3B%20%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20%21loc%29%20br.loadURI%28str%29%3B%20%20%20//%20for%20edited%20url%20%26%20for%20mouse%20without%20middle%20button...%0A%0A%20%20%20if%28event.button%20%3D%3D%201%20%26%26%20%21event.altKey%29%20%7B%20this.nonfocus%28%29%3B%20if%20%28%21str%29%20return%3B%0A%20%20%20%20%20if%20%28IN_NEW_TAB%29%20br.selectedTab%3Dbr.addTab%28str%2C%20null%2C%20null%2C%20null%2C%20IN_BACKGROUND%2C%20false%29%3B%20%20else%20br.loadURI%28str%29%3B%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%201%20%26%26%20event.altKey%29%20%0A%20%20%20%7B%20if%28%21gURLBar.focused%29%20%7B%20this.nonfocus%28%29%3B%20if%20%28%21str%29%20return%3B%20this.AltWeb%28str%29%3B%20%7D%20%20else%20this.AltWeb%28str%29%3B%20%7D%3B%20%0A%0A%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%20this.prDef%28%29%3B%0A%20%20%20%20%20if%28%21gURLBar.focused%29%20this.nonfocus%28%29%3B%20%0A%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20br.selectedTab%3Dbr.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%20%7D%3B%0A%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20event.shiftKey%29%20%7B%20this.prDef%28%29%3B%20if%28%21gURLBar.focused%29%20this.nonfocus%28%29%3B%20this.SearchInWebsite%28str%29%3B%20%7D%3B%0A%7D%3B%0A%0Athis.AltWeb%20%3D%20function%28addr%29%20%7B%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/search%3Fq%3Dcache%3A%22%20+%20addr%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%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//liveweb.archive.org/%22%20+%20addr%29%3B%20%7D%3B%0Athis.SearchInWebsite%20%3D%20function%28text%29%0A%7B%20%20%20%20%20%20%20var%20doc%20%3D%20br.contentDocument%3B%0A%20%20%20%20%20%20%20%20try%20%7B%20var%20url%20%3D%20doc.%20location.%20hostname%3B%20%7D%20%20catch%28e%29%20%7B%20var%20url%20%3D%20%22%22%3B%20%7D%20%20%0A%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%0A%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0A%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com/search%3Fas_q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20url%3B%20%20%0A//%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com.ua/search%3Fnum%3D100%26hl%3Duk%26safe%3Doff%26q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20url%3B%0A//%20%20%20%20%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.ru/search%3Fq%3D%22%20+%20text%20+%20%22%20site%3A%22%20+%20url%20+%20%22%26tbo%3D1%26prmdo%3D1%26sa%3DX%22%3B%0A%20%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28searchUrl%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%5B_________________________________________________________________________________________________________%0A%0A%20%20%20%20%20%20%20%20%20%20Left%20%20%3D%20GO/RELOAD%0A%20Shift+Left%20%20%3D%20Hard%20RELOAD%0A%0A%20%20%20%20%20Medium%20%3D%20OPEN%20URL%20%28selected%20on%20page%20%22text%22%20url%20OR%20from%20clipboard%29%20%28NEW%20Tab%29%0AAlt+Medium%3DSEARCH%20URL%28from%20location%20bar%28if%20focused%29%20OR%20selected/from%20clipboard%29%20in%20Google%20CACHE%20%26%20Archive.org%20%282%20NEW%20Tabs%29%0A%0A%20%20%20%20%20%20%20%20%20Right%20%3D%20SEARCH%20the%20text%20%28typed%20in%20location%20bar%28if%20focused%29%20OR%20selected/from%20clipboard%29%20by%20selected%20Search%20Engine%0AShift+Right%20%3D%20SEARCH%20the%20text%20%28typed%20in%20location%20bar%28if%20focused%29%20OR%20selected/from%20clipboard%29%20in%20current%20Website%20by%20Google%0A%0A%20Ctrl+Right%20%3D%20CB%20menu%0A_________________________________________________________________________________________________________%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код Инициализации

Выделить код

Код:

this.tooltipText = "GO/RELOAD/OPEN/SEARCH | Ctrl+MouseRightClick for Button HELP";
this.setAttribute("style", "padding-left: 0px !important;");
const IN_NEW_TAB = true;  const IN_BACKGROUND = false;  var br = getBrowser(); 

this.onclick = function(event) {  var str = gURLBar.value; var loc = (str == content.location);
   this.prDef = function() { event.preventDefault(); event.stopPropagation(); };
   this.nonfocus = function() {goDoCommand("cmd_copy"); str=readFromClipboard(); };
   
   if(event.button == 0 && loc) {  if (event.shiftKey) { BrowserReloadSkipCache();} else BrowserReload();  };
   if(event.button == 0 && !loc) br.loadURI(str);   // for edited url & for mouse without middle button...

   if(event.button == 1 && !event.altKey) { this.nonfocus(); if (!str) return;
     if (IN_NEW_TAB) br.selectedTab=br.addTab(str, null, null, null, IN_BACKGROUND, false);  else br.loadURI(str); };
   if(event.button == 1 && event.altKey) 
   { if(!gURLBar.focused) { this.nonfocus(); if (!str) return; this.AltWeb(str); }  else this.AltWeb(str); }; 

   if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { this.prDef();
     if(!gURLBar.focused) this.nonfocus(); 
     var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
     var submission = ss.currentEngine.getSubmission(str, null);
     br.selectedTab=br.addTab(submission.uri.spec, null, null, submission.postData, IN_BACKGROUND, false); };
   if(event.button == 2 && event.shiftKey) { this.prDef(); if(!gURLBar.focused) this.nonfocus(); this.SearchInWebsite(str); };
};

this.AltWeb = function(addr) { br.selectedTab = br.addTab("http://www.google.com/search?q=cache:" + addr);
                               br.selectedTab = br.addTab("http://liveweb.archive.org/" + addr); };
this.SearchInWebsite = function(text)
{       var doc = br.contentDocument;
        try { var url = doc. location. hostname; }  catch(e) { var url = ""; }  
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;  
//        var searchUrl = "http://www.google.com.ua/search?num=100&hl=uk&safe=off&q=" + text + "&as_sitesearch=" + url;
//        var searchUrl = "http://www.google.ru/search?q=" + text + " site:" + url + "&tbo=1&prmdo=1&sa=X";
        br.selectedTab = br.addTab(searchUrl);
};

Все остальные функции и управление обеими кнопок - полностью совпадают с кнопками  Go plus! и Go plus focus. Описание, примечания, интерфейс - см. эти кнопки.

Примечание

скрытый текст
Есть возможность в коде кнопки выбрать поисковую строку Google для поиска по сайту, путем раскомментирования нужной строки - 1 из 3 вариантов по порядку:
        var searchUrl = ... - стандартный поиск google.com
//        var searchUrl = ... - поиск google.com.ua с выключенными фильтрами, без "живого поиска" и с сотней результатов на страницу
//        var searchUrl = ... - поиск google.ru с выключенными фильтрами, без "живого поиска"  и с сотней результатов на страницу
Использован код из кнопки Search in Website+, за который большое спасибо bunda1.

Update. Добавил поиск в кеше Google и в Archive.org, "причесал" код и описание. Новые иконки. ) 04.10.2011

Отредактировано ignorecheats (04-10-2011 19:00:51)

Отсутствует

 

№7906-10-2011 18:50:26

ignorecheats
Забанен
 
Группа: Members
Зарегистрирован: 01-09-2011
Сообщений: 104
UA: Firefox 2.0

Re: Готовые кнопки для Custom Buttons

togglelogin (Firefox)

Выйти с сайта и снова вернуться на ту же страницу сайта с другим логином.
Кнопка будет особенно полезна при медленном интернет-соединении для некоторых "тормознутых" сайтов, на которых имеется несколько аккаунтов, например, почтовых ящиков, экономит время и нервы.
Настройка кнопки - в секции Код :
- logout - вставить нужное значение, скопировав URL кнопки "Выйти" соотв. сайта, вместо "https://mail.google.com/mail/?logout" (строка для Gmail)
- t - время задержки на выполнение "выхода" в миллисекундах (подобрать, в зависимости от скорости интернет-соединения и "тормознутости сайта", по умолчанию - 2 сек.)

скрытый текст
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3Etogglelogin%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQx/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQx/wCEMf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQx/wCEMf8AhDH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wCEMf8AhDH/AIQx/wAAAAAAAAAAAIQx/wCEMf8AhDH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhDH/AIQx/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEMf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITH//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEx//8hMf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMf//ITH//yEx//8AAAAAAAAAACEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//ITH//yEx//8hMf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMf//ITH//yEx//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITH//yEx//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEx//8AAAAAAAAAAAAAAAAAAAAA9/+sQef/rEHH/6xBAACsQQAArEHH/6xB5/+sQff/rEH/76xB/+esQf/jrEEAAKxBAACsQf/jrEH/56xB/++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%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20logout%20%3D%20%22https%3A//mail.google.com/mail/%3Flogout%22%3B%20%0Avar%20t%20%3D%202000%3B%0A%0Avar%20str%20%3D%20gURLBar.value%3B%20getBrowser%28%29.loadURI%28logout%29%3B%0Awindow.setTimeout%28function%28%29%20%7B%20getBrowser%28%29.loadURI%28str%29%3B%20%7D%2C%20t%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

Код:

Выделить код

Код:

var logout = "https://mail.google.com/mail/?logout"; 
var t = 2000;

var str = gURLBar.value; getBrowser().loadURI(logout);
window.setTimeout(function() { getBrowser().loadURI(str); }, t);

Отредактировано ignorecheats (06-10-2011 18:53:00)

Отсутствует

 

№8007-10-2011 14:14:01

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 1.5

Re: Готовые кнопки для Custom Buttons

Go plus!³ [Selected] (Firefox)
Объединенная и оптимизированная версия двух кнопок Go plus!² и Go plus² focus, без ихних не всегда и не всем удобных особенностей («жесткости» первой и «невидимости» второй (невидимости фокуса)). Теперь переход по адресу и поиск осуществляется гибко и с хорошо видимым «аргументом» - выделенной частью  содержимого адресной строки или выделенным фрагментом текста на странице (при отсутствии выделенного - с содержимым буфера обмена). Более логичные сочетания клавиш и иконка с анимированной «подсказкой». Добавлены несколько поисков и Переводчик Google с  автоматическим определением языка локали и возможностью открытия сразу перевода страницы без предварительной загрузки страницы-оригинала. Одновременная индикация подсказки кнопки и содержимого буфера обмена при наведении указателя мыши на кнопку.

ЛКМ = Перейти по адресу {...} [«Paste and Go»] (.+.)
СКМ = Перевод страницы {...} с помощью Google (автовыбор языка исх. текста, перевод на язык локали) (.+.)
ПКМ = Искать текст {...}  с помощью выбранного «текущего» поисковика (.+.)

Дополнительные функции, сочетания модификаторов и клавиш мыши
____________________________________________________________________

   Shift+ЛКМ  = Обновить страницу из сети (Hard RELOAD)
      Ctrl+ЛКМ = Обновить страницу (RELOAD)
       Alt+ЛКМ  = Искать URL {...} в кеше Google (.+.)
Ctrl+Alt+ЛКМ = Искать КОД [текст {...}] в Google code search (.+.)
____________________________________________________________________

    Shift+СКМ = Искать Карту Google для текста {...} (.+.)
      Ctrl+СКМ = Перевод текста {...} с помощью Google (автовыбор языка исх. текста, перевод на язык локали) (.+.)
        Alt+СКМ = Искать длинное Видео к тексту {...} в Google (.+.)
Ctrl+Alt+СКМ = Искать длинное Видео к тексту {...} в Youtube (.+.)
____________________________________________________________________

    Shift+ПКМ = Искать текст {...} с помощью Google [.-.] (.+.)
      Ctrl+ПКМ = Искать текст {...} на текущем сайте с помощью Google [.-.] (.+.)
        Alt+ПКМ = Искать [что-либо] {...} в Archive.org (.+.)
Ctrl+Alt+ПКМ = Помощь кнопки (этот текст)
____________________________________________________________________

     {...} = {ВЫДЕЛЕННОЕ в адресной строке ИЛИ выделенное на странице ИЛИ из буфера обмена при отсутствии выделенного}
      [.-.] = [с выключенными фильтрами, без «живого поиска», 100 результатов на страницу (кроме некириллических локалей)  ]
     (.+.) = (в новой вкладке)
____________________________________________________________________

Примечания

1. При оперировании «аргументом» из адресной строки (url или текст) выделение является также обязательным.
    Для быстрого выделения всего содержимого адресной строки одним кликом параметр browser.urlbar.clickSelectsAll
    в about:config должен быть установлен в значение true

2. Если включен и установлен через about:config (параметром keyword.URL) дефолтный поисковый запрос
   для адресной строки, то для поиска текста, набранного и/или выделенного в адресной строке, имеем одновременно 3 возможности:
     а) нажимаем правой кнопкой мыши кнопку Go plus!³ = ищем поисковиком, выбранным кнопкой Select Search Engine,
     б) нажимаем Shift + правой кнопкой мыши кнопку Go plus!³ = ищем сразу поисковиком Google с предустановленными параметрами поиска,
     в) нажимаем кнопку ENTER = ищем дефолтным для адресной строки, например, для кнопки ENTER можно установить
         дефолтный переводчик или словарь или поиск по eBay... все, что угодно.

    Для поиска выделенного на странице текста или текста из буфера обмена - 2 возможности одновременно: а) и б).

3. При поиске набранного в адресной строке и выделенного на странице текста используется буфер обмена.
    Если потеря содержимого буфера обмена нежелательна, сохраняйте его перед поиском.

    После установки Select Search Engine и Go plus!³ стандартную
    панель(строку) поиска и кнопку "Обновить" можно  "удалить"
    (скрыть путем перемещения их в окно настроек панелей инструментов), так как кнопка Go plus!³ полностью
    заменяет их функции. Стандартную кнопку Go скрыть можно путем редактирования файла userChrome.css.

4. Настройки в "шапке" кода:
   IN_NEW_TAB = true / false - открывать в новой / в текущей вкладке,
   IN_BACKGROUND = false / true - открывать в активной вкладке / в фоне.

   Закомментировав строчку « || !(this.label == "Go plus!³") » получаем по сочетанию (Ctrl+Alt+Right) вызов Button HELP для всех установленных кнопок.

   Индикация содержимого буфера обмена при наведении указателя мыши на кнопку работает только в Firefox 3.6 ++

Код
Код кнопки:

Выделить код

Код:

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%20plus%21%B3%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%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%5Bthis.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%22%29%3B%0Avar%20br%20%3D%20getBrowser%28%29%3B%20var%20lang%20%3D%20custombuttons.getPref%28%22general.useragent.locale%22%29%3B%0Avar%20substr2%20%3D%20lang.substring%282%2C3%29%3B%20var%20substr3%20%3D%20lang.substring%283%2C4%29%3B%0Aif%20%28substr2%20%3D%3D%20%22-%22%29%20lang%3Dlang.substring%280%2C2%29%3B%20if%20%28substr3%20%3D%3D%20%22-%22%29%20lang%3Dlang.substring%280%2C3%29%3B%0Aconst%20IN_NEW_TAB%20%3D%20true%3B%20%20%0Aconst%20IN_BACKGROUND%20%3D%20false%3B%20%20%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%20var%20sel%3D%22%22%3B%20%0A%20%20this.ret%20%3D%20function%28%29%20%7B%20goDoCommand%28%22cmd_copy%22%29%3B%20sel%3DreadFromClipboard%28%29%3B%20if%20%28%21sel%29%20return%3B%20%7D%3B%0A%20%20this.evprevret%20%3D%20function%28%29%20%7B%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20this.ret%28%29%3B%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.shiftKey%29%20BrowserReloadSkipCache%28%29%3B%0A%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.ctrlKey%20%26%26%20%21event.altKey%20%26%26%20%21event.shiftKey%29%20BrowserReload%28%29%3B%0A%20%20if%28event.button%20%3D%3D%200%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.altKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.metaKey%29%20%7B%20this.ret%28%29%3B%20%0A%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28sel%2C%20null%2C%20null%2C%20null%2C%20IN_BACKGROUND%2C%20false%29%3B%20%7D%3B%0A%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.altKey%20%26%26%20%21event.ctrlKey%29%20%7B%20this.ret%28%29%3B%20%0A%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/search%3Fq%3Dcache%3A%22%20+%20sel%29%3B%20%7D%3B%0A%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.altKey%20%26%26%20event.ctrlKey%29%20%7B%20this.ret%28%29%3B%20sel%3DencodeURIComponent%28sel%29%3B%0A%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/codesearch%23search/%26q%3D%22+sel+%22%26type%3Dcs%22%29%3B%20%7D%3B%0A%20%0A%20%20if%28event.button%20%3D%3D%201%29%20%7B%20this.ret%28%29%3B%20sel%3DencodeURIComponent%28sel%29%3B%0A%20%20%20%20if%28%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//translate.google.com/translate%3Fu%3D%22+sel+%22%26hl%3D%22+lang+%22%26ie%3DUTF-8%26sl%3Dauto%26tl%3D%22+lang%29%3B%0A%20%20%20%20if%28event.shiftKey%29%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//maps.google.com/maps%3Fhl%3D%22+lang+%22%26biw%3D1280%26bih%3D555%26q%3D%22+sel%29%3B%0A%20%20%20%20if%28event.ctrlKey%20%26%26%20%21event.altKey%29%20%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//translate.google.com.ua/translate_t%3Fhl%3D%22+lang+%22%23auto%7C%22+lang+%22%7C%22+sel%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20if%28event.altKey%20%26%26%20event.ctrlKey%29%20%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.youtube.com/results%3Fsearch_type%3Dvideos%26suggested_categories%3D10%26uni%3D3%26search_duration%3Dlong%26search_query%3D%22+sel%29%3B%0A%20%20%7D%3B%20%0A%20%20if%28%28event.button%20%3D%3D%201%29%20%26%26%20event.altKey%20%26%26%20%21event.ctrlKey%29%20%7B%20this.ret%28%29%3B%20%0A%20%20%20%20%20if%28%21%28lang%20%3D%3D%20%22uk%22%29%20%26%26%20%21%28lang%20%3D%3D%20%22ru%22%29%20%26%26%20%21%28lang%20%3D%3D%20%22be%22%29%29%20sel%3DencodeURIComponent%28sel%29%3B%0A%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/%22+%22search%3Fq%3D%22+sel+%22%26tbm%3Dvid%26source%3Dlnt%26tbs%3Ddur%3Al%26sa%3DX%26ei%3D%22%29%3B%20%7D%3B%0A%20%20%20%0A%20%20%20%20if%28event.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20if%28%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%20%20this.evprevret%28%29%3B%0A%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28sel%2C%20null%29%3B%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%20%0A%20%20%20%20%7D%3B%20%0A%20%20%20%20if%28event.shiftKey%29%20%7B%20%20this.evprevret%28%29%3B%20if%28%21%28lang%20%3D%3D%20%22uk%22%29%20%26%26%20%21%28lang%20%3D%3D%20%22ru%22%29%20%26%26%20%21%28lang%20%3D%3D%20%22be%22%29%29%20%7B%20sel%3DencodeURIComponent%28sel%29%3B%20%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com/search%3Fq%3D%22+sel%29%3B%20%7D%20else%20%0A%20%20%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.google.com.ua/search%3Fnum%3D100%26hl%3D%22+lang+%22%26safe%3Doff%26q%3D%22+sel+%22%26btnG%3D%u041F%u043E%u0448%u0443%u043A%22%29%3B%20%7D%3B%0A%20%20%20%20if%28event.ctrlKey%20%26%26%20%21event.altKey%29%20%7B%20%20this.evprevret%28%29%3B%20this.SearchInWebsite%28sel%29%3B%20%7D%3B%0A%20%20%20%20if%28event.altKey%20%26%26%20%21event.ctrlKey%29%20%7B%20%20this.evprevret%28%29%3B%20sel%3DencodeURIComponent%28sel%29%3B%20%0A%20%20%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28%22http%3A//www.archive.org/search.php%3Fquery%3D%22%20+%20sel%29%3B%20%7D%3B%0A%20%20%7D%3B%0A%7D%3B%0A%0Athis.SearchInWebsite%20%3D%20function%28text%29%20%7B%20var%20doc%20%3D%20br.contentDocument%3B%20try%20%7B%20var%20url%3Ddoc.location.hostname%3B%20%7D%20catch%28e%29%20%7B%20var%20url%3D%22%22%3B%20%7D%20%20%0A%20%20%20%20%20text%3Descape%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%20url%3DencodeURIComponent%28url%29%3B%20%0A%20%20%20%20%20var%20searchUrl%3D%22http%3A//www.google.com.ua/search%3Fnum%3D100%26hl%3D%22+lang+%22%26safe%3Doff%26q%3D%22+text+%22%26as_sitesearch%3D%22+url%3B%0A%20%20%20%20%20br.selectedTab%20%3D%20br.addTab%28searchUrl%29%3B%0A%7D%3B%0A%0AaddEventListener%28%22contextmenu%22%2C%0A%20%20%20function%28event%29%20%7B%20var%20btn%3Devent.target%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21%28event.ctrlKey%20%26%26%20event.altKey%29%20%7C%7C%20btn.id.substr%280%2C%2020%29%20%21%3D%20%22custombuttons-button%22%20%7C%7C%20%21btn.hasAttribute%28%22Help%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%7C%7C%20%21%28this.label%20%3D%3D%20%22Go%20plus%21%B3%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%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20custombuttons.uChelpButton%28btn%29%3B%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%7D%2C%20%0A%20%20%20true%29%3B%0A%0Avar%20go3tip%20%3D%20%22GO/RELOAD/SEARCH/TRANSLATE%20%7C%20Ctrl+Alt+Right%3DButton%20HELP%22%3B%0Avar%20ios%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIIOService%29%3B%0Avar%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIStyleSheetService%29%3B%0Avar%20css%20%3D%20%27@namespace%20url%28%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%29%3B%27%3B%0Acss%20+%3D%20%27tooltip%5Blabel%5E%3D%22%27%20+%20go3tip%20+%20%27%5C%5C000a%5C%5C000a%22%5D%20%7B%27%3B%0Acss%20+%3D%20%22max-width%3A%20none%20%21important%3B%22%3B%0Acss%20+%3D%20%22-moz-appearance%3A%20none%20%21important%3B%22%3B%0Acss%20+%3D%20%22color%3A%20%23009%20%21important%3B%22%3B%0Acss%20+%3D%20%22background%3A%20%23eee%20%21important%3B%22%3B%0Acss%20+%3D%20%22font-family%3A%20monospace%20%21important%3B%22%3B%0Acss%20+%3D%20%22border%3A%201px%20solid%20%23777%20%21important%3B%22%3B%0Acss%20+%3D%20%22%7D%22%3B%0Avar%20uss%20%3D%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%2C%20null%2C%20null%29%3B%0A//%20comment%20out%20the%20next%20line%20to%20disable%20style%0Aif%20%28%21sss.sheetRegistered%28uss%2C%20sss.AGENT_SHEET%29%29%20sss.loadAndRegisterSheet%28uss%2C%20sss.AGENT_SHEET%29%3B%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%20%20if%20%28reason%20%3D%3D%20%22update%22%29%20%7B%0A%20%20%20%20var%20uss%20%3D%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%2C%20null%2C%20null%29%3B%0A%20%20%20%20if%20%28sss.sheetRegistered%28uss%2C%20sss.AGENT_SHEET%29%29%20sss.unregisterSheet%28uss%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%7D%0A%20%20if%20%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%20%20%20%20var%20uss%20%3D%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%2C%20null%2C%20null%29%3B%0A%20%20%20%20if%20%28sss.sheetRegistered%28uss%2C%20sss.AGENT_SHEET%29%29%20sss.unregisterSheet%28uss%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20alert%28%22style%20sheet%20unregistered%22%29%3B%0A%20%20%7D%0A%7D%0Athis.showClipboard%20%3D%20function%28%29%20%7B%0A%20%20var%20text%20%3D%20custombuttons.cbService.readFromClipboard%28%29%3B%0A%20%20this.tooltipText%20%3D%20text%20%3F%20go3tip%20+%20%22%5Cn%5Cn%22%20+%20text%20%3A%20go3tip%3B%0A%7D%0Athis.setAttribute%28%22onmouseover%22%2C%20%22this.showClipboard%28%29%22%29%3B%0A%0Athis.setAttribute%28%27author%27%2C%27slbgz%27%29%3B%20%20%20//Many%20thanks%20to%20bunda1%2C%20infocatcher%20and%20morat%20for%20some%20strings%20of%20code.%0Athis.setAttribute%28%27version%27%2C%2720111015.3.3%27%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons.mozdev.org/drupal/content/go-plus-3%27%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%5BThis%20button%20together%20with%20the%20button%20%ABSelect%20Search%20Engine%BB%20and%20with%20the%20Location%20bar%20are%20the%20full%20replacement%20of%20the%20buttons%20Go%2C%20Reload%20and%20Search%20bar%20which%20can%20be%20hidden...%20for%20Firefox%20in%20Your%20subnotebook%20or%20netbook.%0APlease%2C%20place%20this%20button%20next%20to%20Location%20bar...%20or%20wheresoever.%0A___________________________________________________________________________________________%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Left%20%3D%20GO%20to%20%7B...%7D%20URL%20%5B%ABPaste%20and%20Go%BB%5D%20%28.+.%29%0A%20%20%20%20%20%20%20%20Medium%20%3D%20Google%20TRANSLATE%20the%20%7B...%7D%20page%20%28.+.%29%0A%20%20%20%20%20%20%20%20%20%20%20%20Right%20%3D%20SEARCH%20the%20text%20%7B...%7D%20with%20selected%20Search%20Engine%20%28.+.%29%0Aonmouseover%20%3D%20Button%20tip%20+%20Clipboard%20content%0A___________________________________________________________________________________________%0A%0A%20%20%20%20Shift+Left%20%3D%20Hard%20RELOAD%20page%0A%20%20%20%20%20%20Ctrl+Left%20%3D%20RELOAD%20page%0A%20%20%20%20%20%20%20Alt+Left%20%3D%20SEARCH%20URL%20%7B...%7D%20in%20Google%20CACHE%20%28.+.%29%0ACtrl+Alt+Left%20%3D%20SEARCH%20the%20CODE%20%7B...%7D%20with%20Google%20codesearch%20%28.+.%29%0A___________________________________________________________________________________________%0A%20%20%20%20%20%0A%20%20%20%20Shift+Medium%20%3D%20SEARCH%20the%20Google%20MAPs%20for%20text%20%7B...%7D%20%28.+.%29%0A%20%20%20%20%20%20Ctrl+Medium%20%3D%20Google%20TRANSLATE%20the%20text%20%7B...%7D%20%28.+.%29%0A%20%20%20%20%20%20%20Alt+Medium%20%3D%20SEARCH%20the%20long%20VIDEO%20for%20text%20%7B...%7D%20with%20GOOGLE%20%28.+.%29%0ACtrl+Alt+Medium%20%3D%20SEARCH%20the%20long%20VIDEO%20for%20text%20%7B...%7D%20in%20YOUTUBE%20%28.+.%29%0A___________________________________________________________________________________________%0A%0A%20%20%20%20Shift+Right%20%3D%20SEARCH%20the%20text%20%7B...%7D%20with%20Google%20%5B.-.%5D%20%28.+.%29%0A%20%20%20%20%20%20Ctrl+Right%20%3D%20SEARCH%20the%20text%20%7B...%7D%20in%20current%20Website%20with%20Google%20%5B.-.%5D%20%28.+.%29%0A%20%20%20%20%20%20%20Alt+Right%20%3D%20SEARCH%20%5Bany%5D%20%7B...%7D%20in%20Archive.org%20%28.+.%29%0ACtrl+Alt+Right%20%3D%20Button%20Help%20%28this%20window%29%0A___________________________________________________________________________________________%0A*%29%20%20%20%20%20%7B...%7D%20%3D%20%7B%20%3CSELECTED%20in%20URLbar%3E%20OR%20%3Cselected%20on%20page%20content%3E%20ELSE%20%3Cfrom%20clipboard%3E%20%7D%0A%20%20%20%20%20%20%20%20%5B.-.%5D%20%3D%20%5B%20with%20filters%20off%2C%20no%20livesearch%2C%20100%20results%20per%20page%2C%20except%20non%20Cyrillic%20locales%20%5D%20%0A%20%20%20%20%20%20%20%20%28.+.%29%20%3D%20%28in%20NEW%20Tab%29%0A___________________________________________________________________________________________%0A**%29%20%20Please%2C%20use%20the%20%ABMaster%20edit%20button%BB%20or%20%ABEdit%20a%20button%BB%20buttons%20for%20edit%20this%20button.%0A***%29%20Comments%20the%20string%3A%20%AB%20%7C%7C%20%21%28this.label%20%3D%3D%20%22Go%20plus%21%B3%22%29%20%BB%20will%20made%20%28Ctrl+Alt+Right%3DButton%20HELP%29%20for%20all%20Your%20buttons.%0A****%29%20Button%20was%20tested%20for%20EN%2C%20UA%2C%20RU%20%26%20BY%20locales%2C%20and%20was%20not%20tested%20for%20another%20language.%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

this.setAttribute("style", "padding-left: 0px !important;");
var br = getBrowser(); var lang = custombuttons.getPref("general.useragent.locale");
var substr2 = lang.substring(2,3); var substr3 = lang.substring(3,4);
if (substr2 == "-") lang=lang.substring(0,2); if (substr3 == "-") lang=lang.substring(0,3);
const IN_NEW_TAB = true;  
const IN_BACKGROUND = false;  

this.onclick = function(event) { var sel=""; 
  this.ret = function() { goDoCommand("cmd_copy"); sel=readFromClipboard(); if (!sel) return; };
  this.evprevret = function() { event.preventDefault(); event.stopPropagation(); this.ret(); };
      
  if(event.button == 0 && event.shiftKey) BrowserReloadSkipCache();
  if(event.button == 0 && event.ctrlKey && !event.altKey && !event.shiftKey) BrowserReload();
  if(event.button == 0 && !event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) { this.ret(); 
     br.selectedTab = br.addTab(sel, null, null, null, IN_BACKGROUND, false); };
  if(event.button == 0 && event.altKey && !event.ctrlKey) { this.ret(); 
     br.selectedTab = br.addTab("http://www.google.com/search?q=cache:" + sel); };
  if(event.button == 0 && event.altKey && event.ctrlKey) { this.ret(); sel=encodeURIComponent(sel);
     br.selectedTab = br.addTab("http://www.google.com/codesearch#search/&q="+sel+"&type=cs"); };
 
  if(event.button == 1) { this.ret(); sel=encodeURIComponent(sel);
    if(!event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) 
       br.selectedTab = br.addTab("http://translate.google.com/translate?u="+sel+"&hl="+lang+"&ie=UTF-8&sl=auto&tl="+lang);
    if(event.shiftKey) br.selectedTab = br.addTab("http://maps.google.com/maps?hl="+lang+"&biw=1280&bih=555&q="+sel);
    if(event.ctrlKey && !event.altKey) 
       br.selectedTab = br.addTab("http://translate.google.com.ua/translate_t?hl="+lang+"#auto|"+lang+"|"+sel);        
    if(event.altKey && event.ctrlKey) 
       br.selectedTab = br.addTab("http://www.youtube.com/results?search_type=videos&suggested_categories=10&uni=3&search_duration=long&search_query="+sel);
  }; 
  if((event.button == 1) && event.altKey && !event.ctrlKey) { this.ret(); 
     if(!(lang == "uk") && !(lang == "ru") && !(lang == "be")) sel=encodeURIComponent(sel);
     br.selectedTab = br.addTab("http://www.google.com/"+"search?q="+sel+"&tbm=vid&source=lnt&tbs=dur:l&sa=X&ei="); };
   
    if(event.button == 2) {
    if(!event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {  this.evprevret();
       var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
       var submission = ss.currentEngine.getSubmission(sel, null);
       br.selectedTab = br.addTab(submission.uri.spec, null, null, submission.postData, IN_BACKGROUND, false); 
    }; 
    if(event.shiftKey) {  this.evprevret(); if(!(lang == "uk") && !(lang == "ru") && !(lang == "be")) { sel=encodeURIComponent(sel); 
       br.selectedTab = br.addTab("http://www.google.com/search?q="+sel); } else 
         br.selectedTab = br.addTab("http://www.google.com.ua/search?num=100&hl="+lang+"&safe=off&q="+sel+"&btnG=Пошук"); };
    if(event.ctrlKey && !event.altKey) {  this.evprevret(); this.SearchInWebsite(sel); };
    if(event.altKey && !event.ctrlKey) {  this.evprevret(); sel=encodeURIComponent(sel); 
       br.selectedTab = br.addTab("http://www.archive.org/search.php?query=" + sel); };
  };
};

this.SearchInWebsite = function(text) { var doc = br.contentDocument; try { var url=doc.location.hostname; } catch(e) { var url=""; }  
     text=escape(convertFromUnicode ("UTF-8", text)); url=encodeURIComponent(url); 
     var searchUrl="http://www.google.com.ua/search?num=100&hl="+lang+"&safe=off&q="+text+"&as_sitesearch="+url;
     br.selectedTab = br.addTab(searchUrl);
};

addEventListener("contextmenu",
   function(event) { var btn=event.target;
                     if(!(event.ctrlKey && event.altKey) || btn.id.substr(0, 20) != "custombuttons-button" || !btn.hasAttribute("Help")
//                        || !(this.label == "Go plus!³")
                       ) return;
                     event.preventDefault(); event.stopPropagation();
                     custombuttons.uChelpButton(btn);            
                   }, 
   true);

var go3tip = "GO/RELOAD/SEARCH/TRANSLATE | Ctrl+Alt+Right=Button HELP";
var ios = Components.classes["@mozilla.org/network/io-service;1"].
  getService(Components.interfaces.nsIIOService);
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].
  getService(Components.interfaces.nsIStyleSheetService);
var css = '@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");';
css += 'tooltip[label^="' + go3tip + '\\000a\\000a"] {';
css += "max-width: none !important;";
css += "-moz-appearance: none !important;";
css += "color: #009 !important;";
css += "background: #eee !important;";
css += "font-family: monospace !important;";
css += "border: 1px solid #777 !important;";
css += "}";
var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
// comment out the next line to disable style
if (!sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.loadAndRegisterSheet(uss, sss.AGENT_SHEET);
this.onDestroy = function(reason) {
  if (reason == "update") {
    var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
    if (sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.unregisterSheet(uss, sss.AGENT_SHEET);
  }
  if (reason == "delete") {
    var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null);
    if (sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.unregisterSheet(uss, sss.AGENT_SHEET);
    alert("style sheet unregistered");
  }
}
this.showClipboard = function() {
  var text = custombuttons.cbService.readFromClipboard();
  this.tooltipText = text ? go3tip + "\n\n" + text : go3tip;
}
this.setAttribute("onmouseover", "this.showClipboard()");

this.setAttribute('author','slbgz');   //Many thanks to bunda1, infocatcher and morat for some strings of code.
this.setAttribute('version','20111015.3.3');
this.setAttribute('homepage', 'http://custombuttons.mozdev.org/drupal/content/go-plus-3');


10.10.2011. Добавлены несколько поисков и Переводчик Google.
15.10.2011. Добавлена возможность открытия сразу перевода страницы без предварительной загрузки страницы-оригинала.
Поменяны местами функции по ЛКМ и Ctrl+ЛКМ. Исправлена работа в английской локали, описание и примечания.
16.10.2011. Добавлена индикация содержимого буфера обмена при наведении на кнопку указателя мыши (FF 3.6 ++)

Отредактировано slbgz (18-10-2011 00:25:28)

Отсутствует

 

№8116-10-2011 03:41:10

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 6.0

Re: Готовые кнопки для Custom Buttons

Find 2(Firefox <3.6)
Аналог кнопки Find для версий ниже 3.6. Поиск по странице без панели поиска.
Ищет текст, выделенный на странице или в адресной строке, при отсуствии выделенного ищет текст из буфера обмена.

ЛКМ = Найти следующее
СКМ = CB меню
ПКМ = Найти предыдущее

Код
Код кнопки:

Выделить код

Код:

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%202%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAUezAAFHvfABR73wAUezD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAUezAAFHvvMj6r/ztItv8AFHvvABR7MP///wD///8A////AP///wD///8A////AP///wD///8A////AAAUezAAFHvvOEOw/2du4/+Ml/H/ZHLC/wAUe7////8A////AP///wD///8A////AP///wD///8A////AAAUeyAAFHvvOEOw/2lw4/+Ml/H/tb/5/09dq/8AFHuv////AP///wD///8A////AP///wD///8A////AP///wAAFHtAESKL/2lw4/+Ml/H/tb/5/09dq/8AFHvvABR7MP///wD///8ATU1NME1NTa9NTU3/TU1N/01NTf9NTU2/VlhgzxgpfP81Raf/tb/5/09dq/8AFHvvABR7MP///wD///8ATU1NYE1NTf+ceXL/5K6g///Qw//01cz/vK2o/1hXVv92eH7/EyN3/wAUe/8AFHvfABR7MP///wD///8ATU1NME1NTf/Agnj/7KeZ//3Cs///2M7//+zn///29P/ezcj/WFZW/1tbW68AFHtA////AP///wD///8A////AE1NTZ+NZF7/2YyA/+ynmf/9wrP//9jN///r5v//9PL//+jh/7yknf9NTU3P////AP///wD///8A////AP///wBNTU3vvXVr/9WGev/noJL/+Lqq///Owf//3NL//+DY///az///y73/TU1N/01NTRD///8A////AP///wD///8ATU1N/9CCd//owLr/4ZuP/+6qm//6vKz//si5///Lvf/+x7j/+Lmp/2FZV/9NTU1A////AP///wD///8A////AE1NTd/ElY7/+e/t/+i8tf/lpJn/6qWW//Cun//ysaH/8K2e/+iilP9NTU3/////AP///wD///8A////AP///wBNTU2fhW5q/9aMgv////////////DQyv/ek4b/35WI/92Shf+ldW3/TU1Nz////wD///8A////AP///wD///8ATU1NIE1NTe+riIH/6sG7////////////2p2U/899cv+2c2r/VVBP/01NTUD///8A////AP///wD///8A////AP///wBNTU1gTU1N74dyb//KoZr/5rWu/8aKgf+OZmH/VVBP/01NTWD///8A////AP///wD///8A////AP///wD///8A////AE1NTSBNTU2fTU1N301NTf9NTU3vTU1Nr01NTUD///8A////AP///wD///8A////AP///wD///8A/+EAAP/AAAD/gAAA/wAAAP8AAADAAQAAgAMAAAAPAAAAHwAAAA8AAAAPAAAAHwAAAB8AAAAfAACAPwAAwH8AAA%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%22L%3DFIND%20NEXT%20%7C%20M%3DCB%20menu%20%7C%20R%3DFIND%20PREVIOUS%22%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%20%0A%20%20%20var%20t%3D%22%22%3B%20goDoCommand%28%22cmd_copy%22%29%3B%20t%20%3D%20readFromClipboard%28%29%3B%20if%20%28%21t%29%20return%3B%0A%20%20%20%20%0A%20%20%20gFindBar.find%28t%29%3B%20%0A%20%20%20%0A%20%20%20if%28event.button%20%3D%3D%200%29%20gFindBar.onFindAgainCmd%28%29%3B%20%20%09%0A%0A%20%20%20if%28event.button%20%3D%3D%201%29%20%7B%20this.showPopup%28this%29%3B%20return%3B%20%7D%3B%0A%0A%20%20%20if%28event.button%20%3D%3D%202%29%20%7B%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20gFindBar.onFindPreviousCmd%28%29%3B%20%7D%3B%0A%7D%3B%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%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 = "L=FIND NEXT | M=CB menu | R=FIND PREVIOUS";

this.onclick = function(event) { 
   var t=""; goDoCommand("cmd_copy"); t = readFromClipboard(); if (!t) return;
    
   gFindBar.find(t); 
   
   if(event.button == 0) gFindBar.onFindAgainCmd();      

   if(event.button == 1) { this.showPopup(this); return; };

   if(event.button == 2) { event.preventDefault(); event.stopPropagation(); gFindBar.onFindPreviousCmd(); };
};

this.showPopup = function(node) {
  var popup = document.getElementById("custombuttons-contextpopup");
  var x = node.boxObject.x;
  var y = node.boxObject.y + node.boxObject.height;
  document.popupNode = node;
  popup.showPopup(node, x, y, "popup", null, null);
};

Отредактировано slbgz (16-10-2011 15:05:29)

Отсутствует

 

№8216-10-2011 15:57:39

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 6.0

Re: Готовые кнопки для Custom Buttons

Рано или поздно это случится - вы заблокируете одну из кнопок и потеряете к ней доступ.
Следующие кнопки помогут в такой ситуации без необходимости отключения инициализации и двойного рестарта:

Master Edit Button(Firefox)

Выбрать кнопку из меню и отредактировать ее.
Автор: morat

Код
Код кнопки:

Выделить код

Код:

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%3EMaster%20Edit%20Button%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAv9PT0//JGib/yt1s/86irmtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAL/XJvU/6XP9f+oz+z/R4rA/yt1s/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPABH/HWyS/8vj+f9gqez/P5fo/xRmwf8VX6n/K3Wz/88AEf/PABH/zwAR/88AEf/PABH/zwAR/88AEf/PABH/zwAR/x1skv/I4fL/0ef6/zN8tP8wmML/bMPc/0mbz/8zgsf//5Rn//+UZ///lGf//5Rn//+UZ///lGf/zwAR/88AEf//lGf/JYi4/6/L4f9mqMj/X9z1/0PW9P+N7vr/XLPm/zqO2f//lGf//5Rn//+UZ///lGf//5Rn/88AEf/PABH//5Rn//+UZ/8liLj/veby/7L0/P9f3PX/Q9b0/43u+v9cs+b/Oo7Z//+UZ///lGf//5Rn//+UZ//PABH/zwAR//+UZ///lGf//5Rn/yaPvv/C7fj/svT8/1/c9f9D1vT/je76/1yz5v86jtn//5Rn//+UZ///lGf/zwAR/88AEf//lGf//5Rn//+UZ///lGf/Lrnk/8Lt+P+y9Pz/X9z1/0PW9P+N7vr/XLPm/zqO2f//lGf//5Rn/88AEf/PABH//5Rn//+UZ///lGf//5Rn//+UZ/8uueT/wu34/7L0/P9f3PX/Q9b0/43u+v9cs+b/trOz8f+UZ//PABH/zwAR//+UZ///lGf//5Rn//+UZ///lGf//5Rn/y655P/C7fj/svT8/2fZ9f9uz/P/trOz/Kc1/+O2s7PxzwAR/88AEf//lGf//5Rn//+UZ///lGf//5Rn//+UZ///lGf/Lrnk/8Lt+P+n4vj/trOz+Kc1/8SnNf/EpzX/hKc1/+PPABH//5Rn//+UZ///lGf//5Rn//+UZ///lGf//5Rn//+UZ/8uueT/trOz8ac1/4SnNf+EpzX/hKc1/4SnNf/xzwAR/88AEf/PABH/zwAR/88AEf/PABH/zwAR/88AEf/PABH/zwAR/7azs/GnNf/xpzX/hKc1/4SnNf/xpzX/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuueQJtrOzv6c1//GnNf//pzX/4zSj3hkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQYP/rEGB/6xBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEH/wKxB//+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%5B/*Initialization%20Code*/%0Avar%20data%20%3D%20%3Cwindow%0A%20%20title%3D%7Bthis.label%7D%0A%20%20onload%3D%7B%22opener.document.getElementById%28%5C%22%22%20+%20this.id%20+%20%22%5C%22%29.load%28%29%22%7D%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3E%0A%20%20%20%20%3Ckeyset%3E%0A%20%20%20%20%20%20%3Ckey%20keycode%3D%22VK_ESCAPE%22%20oncommand%3D%22close%28%29%22/%3E%0A%20%20%20%20%3C/keyset%3E%0A%20%20%20%20%3Cvbox%20flex%3D%221%22%3E%0A%20%20%20%20%20%20%3Clistbox%20id%3D%22listbox%22%20flex%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%3Clisthead%3E%0A%20%20%20%20%20%20%20%20%20%20%3Clistheader%20label%3D%22Id%22%20width%3D%22200%22/%3E%0A%20%20%20%20%20%20%20%20%20%20%3Clistheader%20label%3D%22Label%22/%3E%0A%20%20%20%20%20%20%20%20%3C/listhead%3E%0A%20%20%20%20%20%20%20%20%3Clistcols%3E%0A%20%20%20%20%20%20%20%20%20%20%3Clistcol/%3E%0A%20%20%20%20%20%20%20%20%20%20%3Clistcol%20flex%3D%221%22/%3E%0A%20%20%20%20%20%20%20%20%3C/listcols%3E%0A%20%20%20%20%20%20%3C/listbox%3E%0A%20%20%20%20%20%20%3Chbox%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22Edit%22%20oncommand%3D%7B%22opener.document.getElementById%28%5C%22%22%20+%20this.id%20+%20%22%5C%22%29.edit%28%29%22%7D/%3E%0A%20%20%20%20%20%20%3C/hbox%3E%0A%20%20%20%20%3C/vbox%3E%0A%3C/window%3E%3B%0Avar%20bool%20%3D%20XML.prettyPrinting%3B%0AXML.prettyPrinting%20%3D%20false%3B%0Adata%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%27%20+%20data.toXMLString%28%29%3B%0AXML.prettyPrinting%20%3D%20bool%3B%0Avar%20dialog%3B%0Athis.leftclick%20%3D%20function%28event%29%20%7B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20data%3B%0A%20%20var%20feature%20%3D%20%22chrome%2Ccenterscreen%2Cwidth%3D500%2Cheight%3D600%2Cdialog%3Dno%22%3B%0A%20%20dialog%20%3D%20window.openDialog%28url%2C%20%22%22%2C%20feature%29%3B%0A%7D%0Athis.midclick%20%3D%20function%28event%29%20%7B%0A%20%20var%20os%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D.%0A%20%20%20%20getService%28Components.interfaces.nsIObserverService%29%3B%0A%20%20var%20cancelQuit%20%3D%20Components.classes%5B%22@mozilla.org/supports-PRBool%3B1%22%5D.%0A%20%20%20%20createInstance%28Components.interfaces.nsISupportsPRBool%29%3B%0A%20%20os.notifyObservers%28cancelQuit%2C%20%22quit-application-requested%22%2C%20%22restart%22%29%3B%0A%20%20if%20%28cancelQuit.data%29%20%7B%0A%20%20%20%20alert%28%22Abort%20Restart%20Process%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20appStartup%20%3D%20Components.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D.%0A%20%20%20%20%20%20getService%28Components.interfaces.nsIAppStartup%29%3B%0A%20%20%20%20appStartup.quit%28appStartup.eAttemptQuit%20%7C%20appStartup.eRestart%29%3B%0A%20%20%7D%0A%7D%0Athis.load%20%3D%20function%28%29%20%7B%0A%20%20var%20nodeList%20%3D%20document.getElementsByTagName%28%22toolbarbutton%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20nodeList.length%3B%20i++%29%20%7B%0A%20%20%20%20if%20%28nodeList%5Bi%5D.id.search%28%22custombuttons-button%22%29%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20document.createElement%28%22listitem%22%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22listcell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20nodeList%5Bi%5D.id%29%3B%0A%20%20%20%20%20%20item.appendChild%28cell%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22listcell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20nodeList%5Bi%5D.label%29%3B%0A%20%20%20%20%20%20item.appendChild%28cell%29%3B%0A%20%20%20%20%20%20dialog.document.getElementById%28%22listbox%22%29.appendChild%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20dialog.document.getElementById%28%22listbox%22%29.focus%28%29%3B%0A%20%20dialog.document.getElementById%28%22listbox%22%29.selectAll%28%29%3B%0A%7D%0Athis.edit%20%3D%20function%28%29%20%7B%0A%20%20var%20label%20%3D%20dialog.document.getElementById%28%22listbox%22%29.selectedItem.firstChild.getAttribute%28%22label%22%29%3B%0A%20%20dialog.close%28%29%3B%0A%20%20custombuttons.editButton%28document.getElementById%28label%29%29%3B%0A%7D%0Athis.setAttribute%28%22onclick%22%2C%20%22custombuttons.gQuot.mHandler%28event%2C%20this%29%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%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 data = <window
  title={this.label}
  onload={"opener.document.getElementById(\"" + this.id + "\").load()"}
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <keyset>
      <key keycode="VK_ESCAPE" oncommand="close()"/>
    </keyset>
    <vbox flex="1">
      <listbox id="listbox" flex="1">
        <listhead>
          <listheader label="Id" width="200"/>
          <listheader label="Label"/>
        </listhead>
        <listcols>
          <listcol/>
          <listcol flex="1"/>
        </listcols>
      </listbox>
      <hbox>
        <button label="Edit" oncommand={"opener.document.getElementById(\"" + this.id + "\").edit()"}/>
      </hbox>
    </vbox>
</window>;
var bool = XML.prettyPrinting;
XML.prettyPrinting = false;
data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>' + data.toXMLString();
XML.prettyPrinting = bool;
var dialog;
this.leftclick = function(event) {
  var url = "data:application/vnd.mozilla.xul+xml;text/plain," + data;
  var feature = "chrome,centerscreen,width=500,height=600,dialog=no";
  dialog = window.openDialog(url, "", feature);
}
this.midclick = function(event) {
  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");
  if (cancelQuit.data) {
    alert("Abort Restart Process");
  } else {
    var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"].
      getService(Components.interfaces.nsIAppStartup);
    appStartup.quit(appStartup.eAttemptQuit | appStartup.eRestart);
  }
}
this.load = function() {
  var nodeList = document.getElementsByTagName("toolbarbutton");
  for (var i = 0; i < nodeList.length; i++) {
    if (nodeList[i].id.search("custombuttons-button") == 0) {
      var item = document.createElement("listitem");
      var cell = document.createElement("listcell");
      cell.setAttribute("label", nodeList[i].id);
      item.appendChild(cell);
      var cell = document.createElement("listcell");
      cell.setAttribute("label", nodeList[i].label);
      item.appendChild(cell);
      dialog.document.getElementById("listbox").appendChild(item);
    }
  }
  dialog.document.getElementById("listbox").focus();
  dialog.document.getElementById("listbox").selectAll();
}
this.edit = function() {
  var label = dialog.document.getElementById("listbox").selectedItem.firstChild.getAttribute("label");
  dialog.close();
  custombuttons.editButton(document.getElementById(label));
}
this.setAttribute("onclick", "custombuttons.gQuot.mHandler(event, this)");


Edit a button(Firefox)

Ввести id номер кнопки в диалоговом окне и отредактировать кнопку
Автор: mrbunnylamakins

Код
Код кнопки:

Выделить код

Код:

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%3EEdit%20a%20button%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAADG0lEQVR42gEQA+/8AP///////////////////////////////////////////////////////////////wD////q6uqOjougoKC4uLjKysrZ2dnm5ub29vb////////ejYasHxi1S0v16ur///8A////oKC2mpqxenqAZGRmZmZodnZ5dnZ1eXl4s7S179XQ5E8q9GxDuCUWtElJ////AP///5eXyra3woF+gWxlaWFibYCAkHd3iHh3jVxuV8bL1POSefJiOMc2H6MdHf///wD///+YmMjd2+Lj5OLWs6iztLOjoqGkoqatrqxWwCWZv4rS1N/Bd2q0JRfmurn///8A////mZjD3er94vr/7ruw3/j/4PL/3+//cc1LhvNVkP5daaFbZm1tvsLD////////AP///5mZwefq+/T///W6qun4/+70/4bPZHnnSpX7Y2zTSSSOFYrCiP///////////wD///+cnMHd4/nv/f/1t6j1+/+k2Zls3DuW/mR02k0vlh53t3T///////////////8A////n5/Cz9j14Pb/6q6k4PT/crtOlv9ie+FSM5weX6dc/f39////////////////AP///6amxdDS7+n6/+uso930/6ieZkKpJCuaEzJ9Ns7N5P///////////////////wD///+trcrExub0/v/9saDi5/BTS0JqcXiNsrbK2f6/vdn///////////////////8A////tLTNsrre3fb/6KWd0OP4xsnW8/f/3ev/zeD/r6/O////////////////////AP///7y80a2x1+D3/+ijmdjx/87h+d3s//H1/+fm+qCgxP///////////////////wD////FxdinqdD/////qZjU2PCzsdOamb2amsKurszf3+3///////////////////8A////09PhfHysl5i+n6HEwsLX4uLr+/v9////////////////////////////////AP///////////////////////////////////////////////////////////////zU5bGjjW0b7AAAAAElFTkSuQmCC%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%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0Avar%20Cb%20%3D%20custombuttons%3B%0Avar%20bnum%20%3D%20prompt%28%27Enter%20Button%20%23%27%29%3B%0Avar%20bid%20%3D%20%27custombuttons-button%27%20+%20String%28bnum%29%3B%0Athis.oBtn%20%3D%20document.getElementById%28bid%29%3B%0A%0ACb.alertSlide%28%22Edit%20%22%20+%20this.oBtn.label%2C%20%22ID%20%22%20+this.oBtn.id%29%3B%0Aif%20%28%20this.oBtn%20%29%20%7B%0A%09Cb.editButton%20%28%20this.oBtn%20%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

Код:

Выделить код

Код:

var Cb = custombuttons;
var bnum = prompt('Enter Button #');
var bid = 'custombuttons-button' + String(bnum);
this.oBtn = document.getElementById(bid);

Cb.alertSlide("Edit " + this.oBtn.label, "ID " +this.oBtn.id);
if ( this.oBtn ) {
    Cb.editButton ( this.oBtn );
}


Troubleshoot Custom Buttons [tree](Firefox)
В окне со списком кнопок возможны несколько действий с каждой кнопкой... и сортировка списка кнопок.
Автор: morat
Код
Код кнопки:

Выделить код

Код:

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%3ETroubleshoot%20Custom%20Buttons%20%5Btree%5D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAhpJREFUOMvN0UtI1FEUx/HvnfufV874n0lHfJQjlWTS6EKIxCFqE0S0yxaBLoooCIxoUbaIQCxykT1oE0Utgh6Q0M4kCiE3qYuIFmG+KPMx5gzTjP7Hmfu/LSIz0B606awu9xw+91x+8I8lVmsMXmfzghF+hMMXZO7tkWgrT/9KfnPb35uc6tbz0090363qT6NX8a0051jpcuQujYHqQztQM+SscTZs31cykqL1j4DhHjwJwh0F4RrG+zsZHrhBQTCBWR45+eoCFb8FrBFOldYdrshOP6D2wBi7jhrEPj5jY7TKm9SOS78EPjyk1C6sO+MJrMUpv5DvC1BU4CftVLi8s4S2rG980U50VeBznIvFkf2+XGYSb5FJTZXENN1URhRKzVC50yFiyMt6WXry++HdTbYZ6/Zcyy8OC61iCKlJZd4TDBWyu8Eia8cx3HG8edmy7pAe7XrJ6+UbiFQu70rJ1r0OlY2DSLOYs2hqLub4MReZxQTSGUfINJX1NqZJe9dZ8paA520cDESa67VKg7AQIoMhU/Q/HmKodwCnN4l0LeJ0f3utoYmyqQlOLwHaX36uaFMUpdJAFhxZvMzRcS/I+Tt1yDUC6f7x4WAZhGs5AWAAGJ6QaRgC2+UCIUEIMp58enomUa4JwEIaP8e3kGR+CZgcGmzpu9/WKQ3h1/Y8WufQ2gIy2HpWaTRag7axlUanZoklpmjhv6ivwhPCjfsi85IAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20data%20%3D%20%3Cwindow%20title%3D%7Bthis.label%7D%20onload%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.load%28%29%27%7D%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3E%0A%20%20%20%20%3Ckeyset%3E%0A%20%20%20%20%20%20%3Ckey%20keycode%3D%22VK_ESCAPE%22%20oncommand%3D%22close%28%29%22/%3E%0A%20%20%20%20%3C/keyset%3E%0A%20%20%20%20%3Cvbox%20flex%3D%221%22%3E%0A%20%20%20%20%20%20%3Ctree%20id%3D%22tree%22%20hidecolumnpicker%3D%22true%22%20seltype%3D%22single%22%20flex%3D%221%22%3E%0A%20%20%20%20%20%20%20%20%3Ctreecols%3E%0A%20%20%20%20%20%20%20%20%20%20%3Ctreecol%20id%3D%22firstColumn%22%20label%3D%22Id%22%20width%3D%22200%22%20sortDirection%3D%22ascending%22%0A%20%20%20%20%20%20%20%20%20%20%20%20onclick%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.reorder%28this%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%3Ctreecol%20id%3D%22secondColumn%22%20label%3D%22Image%20%26amp%3B%20Label%22%20flex%3D%221%22%20sortDirection%3D%22ascending%22%0A%20%20%20%20%20%20%20%20%20%20%20%20onclick%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.reorder%28this%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3C/treecols%3E%0A%20%20%20%20%20%20%20%20%3Ctreechildren%20id%3D%22treechildren%22/%3E%0A%20%20%20%20%20%20%3C/tree%3E%0A%20%20%20%20%20%20%3Cseparator%20class%3D%22thin%22/%3E%0A%20%20%20%20%20%20%3Chbox%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22Edit%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.edit%28%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22Delete%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.remove%28%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22Attributes%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.attr%28%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22Properties%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.prop%28%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22URI%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.link%28%29%27%7D/%3E%0A%20%20%20%20%20%20%20%20%3Cbutton%20label%3D%22DOMi%22%20oncommand%3D%7B%27opener.document.getElementById%28%22%27%20+%20this.id%20+%20%27%22%29.inspect%28%29%27%7D/%3E%0A%20%20%20%20%20%20%3C/hbox%3E%0A%20%20%20%20%3C/vbox%3E%0A%3C/window%3E%3B%0Avar%20bool%20%3D%20XML.prettyPrinting%3B%0AXML.prettyPrinting%20%3D%20false%3B%0Adata%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%27%20+%20data.toXMLString%28%29%3B%0AXML.prettyPrinting%20%3D%20bool%3B%0Avar%20dialog%3B%0Afunction%20getImage%28s%29%20%7B%0A%20%20if%20%28s%20%3D%3D%20%22custombuttons-stdicon-1%22%29%20return%20%22chrome%3A//custombuttons/skin/button.png%22%3B%0A%20%20if%20%28s%20%3D%3D%20%22custombuttons-stdicon-2%22%29%20return%20%22chrome%3A//custombuttons/skin/stdicons/rbutton.png%22%3B%0A%20%20if%20%28s%20%3D%3D%20%22custombuttons-stdicon-3%22%29%20return%20%22chrome%3A//custombuttons/skin/stdicons/gbutton.png%22%3B%0A%20%20if%20%28s%20%3D%3D%20%22custombuttons-stdicon-4%22%29%20return%20%22chrome%3A//custombuttons/skin/stdicons/bbutton.png%22%3B%0A%20%20return%20%22http%3A//forum.mozilla-russia.org/uploaded/custombuttons_button.png%22%3B%0A%7D%0Afunction%20openTab%28arr%29%20%7B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20arr.length%3B%20i++%29%20%7B%0A%20%20%20%20var%20converter%20%3D%20Components.classes%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%0A%20%20%20%20%20%20createInstance%28Components.interfaces.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20converter.charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20converter.ConvertFromUnicode%28arr%5Bi%5D%29%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20arr%5Bi%5D.replace%28/%26/g%2C%20%22%26amp%3B%22%29%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20arr%5Bi%5D.replace%28/%3E/g%2C%20%22%26gt%3B%22%29%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20arr%5Bi%5D.replace%28/%3C/g%2C%20%22%26lt%3B%22%29%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20arr%5Bi%5D.replace%28/%22/g%2C%20%22%26quot%3B%22%29%3B%0A%20%20%20%20arr%5Bi%5D%20%3D%20arr%5Bi%5D.replace%28/%27/g%2C%20%22%26apos%3B%22%29%3B%0A%20%20%7D%0A%20%20var%20data%20%3D%20%27%3C%21DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.01//EN%22%3E%27%3B%0A%20%20data%20+%3D%20%22%3Chtml%3E%3Chead%3E%3Ctitle%3E%22%20+%20arr%5B1%5D%20+%20%22%3C/title%3E%22%3B%0A%20%20data%20+%3D%20%27%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3DUTF-8%22%3E%27%3B%0A%20%20data%20+%3D%20%22%3C/head%3E%3Cbody%3E%3Cpre%3E%22%20+%20arr.join%28%22%5Cn%5Cn%22%29%20+%20%22%3C/pre%3E%3C/body%3E%3C/html%3E%22%3B%0A%20%20var%20info%20%3D%20Components.classes%5B%22@mozilla.org/xre/app-info%3B1%22%5D.%0A%20%20%20%20getService%28Components.interfaces.nsIXULAppInfo%29%3B%0A%20%20if%20%28info.name%20%3D%3D%20%22Firefox%22%20%7C%7C%20info.name%20%3D%3D%20%22SeaMonkey%22%29%20%7B%0A%20%20%20%20gBrowser.addTab%28%22data%3Atext/html%3Bcharset%3Dutf-8%3Bbase64%2C%22%20+%20btoa%28data%29%29%3B%0A%20%20%7D%0A%20%20if%20%28info.name%20%3D%3D%20%22Thunderbird%22%29%20%7B%0A%20%20%20%20openContentTab%28%22data%3Atext/html%3Bcharset%3Dutf-8%3Bbase64%2C%22%20+%20btoa%28data%29%29%3B%0A%20%20%7D%0A%7D%0Athis.leftclick%20%3D%20function%28event%29%20%7B%0A%20%20var%20url%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%3Btext/plain%2C%22%20+%20data%3B%0A%20%20var%20feature%20%3D%20%22chrome%2Ccenterscreen%2Cwidth%3D600%2Cheight%3D200%2Cdialog%3Dno%22%3B%0A%20%20dialog%20%3D%20window.openDialog%28url%2C%20%22%22%2C%20feature%29%3B%0A%7D%0Athis.load%20%3D%20function%28%29%20%7B%0A%20%20var%20nodeList%20%3D%20document.getElementsByTagName%28%22toolbarbutton%22%29%3B%0A%20%20var%20children%20%3D%20dialog.document.getElementById%28%22treechildren%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20nodeList.length%3B%20i++%29%20%7B%0A%20%20%20%20if%20%28nodeList%5Bi%5D.id.search%28%22custombuttons-button%22%29%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20document.createElement%28%22treeitem%22%29%3B%0A%20%20%20%20%20%20var%20row%20%3D%20document.createElement%28%22treerow%22%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22treecell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20nodeList%5Bi%5D.id%29%3B%0A%20%20%20%20%20%20row.appendChild%28cell%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22treecell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22src%22%2C%20nodeList%5Bi%5D.image%20%7C%7C%20getImage%28nodeList%5Bi%5D.cbStdIcon%29%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20String.fromCharCode%2832%2C%2032%29%20+%20nodeList%5Bi%5D.label%29%3B%0A%20%20%20%20%20%20row.appendChild%28cell%29%3B%0A%20%20%20%20%20%20item.appendChild%28row%29%3B%0A%20%20%20%20%20%20children.appendChild%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20dialog.document.getElementById%28%22tree%22%29.focus%28%29%3B%0A%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.select%280%29%3B%0A%7D%0Athis.reorder%20%3D%20function%28node%29%20%7B%0A%20%20var%20nodeList%20%3D%20document.getElementsByTagName%28%22toolbarbutton%22%29%3B%0A%20%20var%20orderArr%20%3D%20new%20Array%28%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20nodeList.length%3B%20i++%29%20%7B%0A%20%20%20%20if%20%28nodeList%5Bi%5D.id.search%28%22custombuttons-button%22%29%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20document.createElement%28%22treeitem%22%29%3B%0A%20%20%20%20%20%20var%20row%20%3D%20document.createElement%28%22treerow%22%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22treecell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20nodeList%5Bi%5D.id%29%3B%0A%20%20%20%20%20%20row.appendChild%28cell%29%3B%0A%20%20%20%20%20%20var%20cell%20%3D%20document.createElement%28%22treecell%22%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22src%22%2C%20nodeList%5Bi%5D.image%20%7C%7C%20getImage%28nodeList%5Bi%5D.cbStdIcon%29%29%3B%0A%20%20%20%20%20%20cell.setAttribute%28%22label%22%2C%20String.fromCharCode%2832%2C%2032%29%20+%20nodeList%5Bi%5D.label%29%3B%0A%20%20%20%20%20%20row.appendChild%28cell%29%3B%0A%20%20%20%20%20%20item.appendChild%28row%29%3B%0A%20%20%20%20%20%20orderArr.push%28%5BnodeList%5Bi%5D.id.substring%2820%29%2C%20nodeList%5Bi%5D.label%2C%20item%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20var%20id%20%3D%20node.getAttribute%28%22id%22%29%3B%0A%20%20var%20sortDirection%20%3D%20node.getAttribute%28%22sortDirection%22%29%3B%0A%20%20if%20%28id%20%3D%3D%20%22firstColumn%22%20%26%26%20sortDirection%20%3D%3D%20%22ascending%22%29%20orderArr.sort%28function%28a%2C%20b%29%20%7B%20return%20a%5B0%5D%20-%20b%5B0%5D%20%7D%29%3B%0A%20%20if%20%28id%20%3D%3D%20%22firstColumn%22%20%26%26%20sortDirection%20%3D%3D%20%22descending%22%29%20orderArr.sort%28function%28a%2C%20b%29%20%7B%20return%20b%5B0%5D%20-%20a%5B0%5D%20%7D%29%3B%0A%20%20if%20%28id%20%3D%3D%20%22secondColumn%22%20%26%26%20sortDirection%20%3D%3D%20%22ascending%22%29%20orderArr.sort%28function%28a%2C%20b%29%20%7B%20return%20a%5B1%5D%20%3E%20b%5B1%5D%20%7D%29%3B%0A%20%20if%20%28id%20%3D%3D%20%22secondColumn%22%20%26%26%20sortDirection%20%3D%3D%20%22descending%22%29%20orderArr.sort%28function%28a%2C%20b%29%20%7B%20return%20a%5B1%5D%20%3C%20b%5B1%5D%20%7D%29%3B%0A%20%20node.setAttribute%28%22sortDirection%22%2C%20sortDirection%20%3D%3D%20%22descending%22%20%3F%20%22ascending%22%20%3A%20%22descending%22%29%3B%0A%20%20var%20children%20%3D%20dialog.document.getElementById%28%22treechildren%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20children.childNodes.length%3B%20i++%29%20%7B%0A%20%20%20%20children.appendChild%28orderArr%5Bi%5D%5B2%5D%29%3B%0A%20%20%20%20children.removeChild%28children.firstChild%29%3B%0A%20%20%7D%0A%20%20dialog.document.getElementById%28%22tree%22%29.focus%28%29%3B%0A%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.select%280%29%3B%0A%7D%0Athis.edit%20%3D%20function%28%29%20%7B%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20custombuttons.editButton%28document.getElementById%28id%29%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.remove%20%3D%20function%28%29%20%7B%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20custombuttons.removeButton%28document.getElementById%28id%29%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.attr%20%3D%20function%28%29%20%7B%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20var%20node%20%3D%20document.getElementById%28id%29%3B%0A%20%20var%20out%20%3D%20new%20Array%28%29%3B%0A%20%20out.push%28%27windowtype%3D%22%27%20+%20document.documentElement.getAttribute%28%22windowtype%22%29%20+%20%27%22%20id%3D%22%27%20+%20id%20+%20%27%22%27%29%3B%0A%20%20out.push%28%22Attributes%22%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20node.attributes.length%3B%20i++%29%20%7B%0A%20%20%20%20if%20%28node.attributes%5Bi%5D.nodeName%20%3D%3D%20%22cb-oncommand%22%20%7C%7C%0A%20%20%20%20%20%20%20%20node.attributes%5Bi%5D.nodeName%20%3D%3D%20%22cb-init%22%20%20%20%20%20%20%7C%7C%0A%20%20%20%20%20%20%20%20node.attributes%5Bi%5D.nodeName%20%3D%3D%20%22Help%22%29%20%7B%0A%20%20%20%20%20%20out.push%28node.attributes%5Bi%5D.nodeName%20+%20%22%20%22%20+%20typeof%20node.attributes%5Bi%5D.nodeValue%20+%20%22%5Cn%22%20+%20%22%5Bomitted%5D%22%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20out.push%28node.attributes%5Bi%5D.nodeName%20+%20%22%20%22%20+%20typeof%20node.attributes%5Bi%5D.nodeValue%20+%20%22%5Cn%22%20+%20node.attributes%5Bi%5D.nodeValue%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20openTab%28out%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.prop%20%3D%20function%28%29%20%7B%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20var%20node%20%3D%20document.getElementById%28id%29%3B%0A%20%20var%20out%20%3D%20new%20Array%28%29%3B%0A%20%20out.push%28%27windowtype%3D%22%27%20+%20document.documentElement.getAttribute%28%22windowtype%22%29%20+%20%27%22%20id%3D%22%27%20+%20id%20+%20%27%22%27%29%3B%0A%20%20out.push%28%22Properties%22%29%3B%0A%20%20for%20%28var%20i%20in%20node%29%20%7B%0A%20%20%20%20if%20%28i%20%3D%3D%20%22cbCommand%22%20%20%7C%7C%0A%20%20%20%20%20%20%20%20i%20%3D%3D%20%22cbInitCode%22%20%7C%7C%0A%20%20%20%20%20%20%20%20i%20%3D%3D%20%22Help%22%20%20%20%20%20%20%20%7C%7C%0A%20%20%20%20%20%20%20%20i%20%3D%3D%20%22URI%22%29%20%7B%0A%20%20%20%20%20%20out.push%28i%20+%20%22%20%22%20+%20typeof%20node%5Bi%5D%20+%20%22%5Cn%22%20+%20%22%5Bomitted%5D%22%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20out.push%28i%20+%20%22%20%22%20+%20typeof%20node%5Bi%5D%20+%20%22%5Cn%22%20+%20node%5Bi%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20openTab%28out%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.link%20%3D%20function%28%29%20%7B%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20var%20out%20%3D%20new%20Array%28%29%3B%0A%20%20out.push%28%27windowtype%3D%22%27%20+%20document.documentElement.getAttribute%28%22windowtype%22%29%20+%20%27%22%20id%3D%22%27%20+%20id%20+%20%27%22%27%29%3B%0A%20%20out.push%28%22URI%22%29%3B%0A%20%20out.push%28unescape%28document.getElementById%28id%29.URI%29%29%3B%0A%20%20openTab%28out%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.inspect%20%3D%20function%28%29%20%7B%0A%20%20if%20%28typeof%28inspectDOMDocument%29%20%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20custombuttons.alertBox%28this.label%2C%20%22DOM%20Inspector%20is%20not%20enabled%20or%20installed.%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%20%20var%20id%20%3D%20dialog.document.getElementById%28%22tree%22%29.view.getCellText%28%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.view.selection.currentIndex%2C%0A%20%20%20%20dialog.document.getElementById%28%22tree%22%29.columns.getColumnAt%280%29%29%3B%0A%20%20inspectDOMNode%28document.getElementById%28id%29%29%3B%0A%20%20dialog.close%28%29%3B%0A%7D%0Athis.setAttribute%28%22onclick%22%2C%20%22custombuttons.gQuot.mHandler%28event%2C%20this%29%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

Инициализация:

Выделить код

Код:

var data = <window title={this.label} onload={'opener.document.getElementById("' + this.id + '").load()'}
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <keyset>
      <key keycode="VK_ESCAPE" oncommand="close()"/>
    </keyset>
    <vbox flex="1">
      <tree id="tree" hidecolumnpicker="true" seltype="single" flex="1">
        <treecols>
          <treecol id="firstColumn" label="Id" width="200" sortDirection="ascending"
            onclick={'opener.document.getElementById("' + this.id + '").reorder(this)'}/>
          <treecol id="secondColumn" label="Image &amp; Label" flex="1" sortDirection="ascending"
            onclick={'opener.document.getElementById("' + this.id + '").reorder(this)'}/>
        </treecols>
        <treechildren id="treechildren"/>
      </tree>
      <separator class="thin"/>
      <hbox>
        <button label="Edit" oncommand={'opener.document.getElementById("' + this.id + '").edit()'}/>
        <button label="Delete" oncommand={'opener.document.getElementById("' + this.id + '").remove()'}/>
        <button label="Attributes" oncommand={'opener.document.getElementById("' + this.id + '").attr()'}/>
        <button label="Properties" oncommand={'opener.document.getElementById("' + this.id + '").prop()'}/>
        <button label="URI" oncommand={'opener.document.getElementById("' + this.id + '").link()'}/>
        <button label="DOMi" oncommand={'opener.document.getElementById("' + this.id + '").inspect()'}/>
      </hbox>
    </vbox>
</window>;
var bool = XML.prettyPrinting;
XML.prettyPrinting = false;
data = '<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?>' + data.toXMLString();
XML.prettyPrinting = bool;
var dialog;
function getImage(s) {
  if (s == "custombuttons-stdicon-1") return "chrome://custombuttons/skin/button.png";
  if (s == "custombuttons-stdicon-2") return "chrome://custombuttons/skin/stdicons/rbutton.png";
  if (s == "custombuttons-stdicon-3") return "chrome://custombuttons/skin/stdicons/gbutton.png";
  if (s == "custombuttons-stdicon-4") return "chrome://custombuttons/skin/stdicons/bbutton.png";
  return "http://forum.mozilla-russia.org/uploaded/custombuttons_button.png";
}
function openTab(arr) {
  for (var i = 0; i < arr.length; i++) {
    var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
      createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    converter.charset = "UTF-8";
    arr[i] = converter.ConvertFromUnicode(arr[i]);
    arr[i] = arr[i].replace(/&/g, "&amp;");
    arr[i] = arr[i].replace(/>/g, "&gt;");
    arr[i] = arr[i].replace(/</g, "&lt;");
    arr[i] = arr[i].replace(/"/g, "&quot;");
    arr[i] = arr[i].replace(/'/g, "&apos;");
  }
  var data = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">';
  data += "<html><head><title>" + arr[1] + "</title>";
  data += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
  data += "</head><body><pre>" + arr.join("\n\n") + "</pre></body></html>";
  var info = Components.classes["@mozilla.org/xre/app-info;1"].
    getService(Components.interfaces.nsIXULAppInfo);
  if (info.name == "Firefox" || info.name == "SeaMonkey") {
    gBrowser.addTab("data:text/html;charset=utf-8;base64," + btoa(data));
  }
  if (info.name == "Thunderbird") {
    openContentTab("data:text/html;charset=utf-8;base64," + btoa(data));
  }
}
this.leftclick = function(event) {
  var url = "data:application/vnd.mozilla.xul+xml;text/plain," + data;
  var feature = "chrome,centerscreen,width=600,height=200,dialog=no";
  dialog = window.openDialog(url, "", feature);
}
this.load = function() {
  var nodeList = document.getElementsByTagName("toolbarbutton");
  var children = dialog.document.getElementById("treechildren");
  for (var i = 0; i < nodeList.length; i++) {
    if (nodeList[i].id.search("custombuttons-button") == 0) {
      var item = document.createElement("treeitem");
      var row = document.createElement("treerow");
      var cell = document.createElement("treecell");
      cell.setAttribute("label", nodeList[i].id);
      row.appendChild(cell);
      var cell = document.createElement("treecell");
      cell.setAttribute("src", nodeList[i].image || getImage(nodeList[i].cbStdIcon));
      cell.setAttribute("label", String.fromCharCode(32, 32) + nodeList[i].label);
      row.appendChild(cell);
      item.appendChild(row);
      children.appendChild(item);
    }
  }
  dialog.document.getElementById("tree").focus();
  dialog.document.getElementById("tree").view.selection.select(0);
}
this.reorder = function(node) {
  var nodeList = document.getElementsByTagName("toolbarbutton");
  var orderArr = new Array();
  for (var i = 0; i < nodeList.length; i++) {
    if (nodeList[i].id.search("custombuttons-button") == 0) {
      var item = document.createElement("treeitem");
      var row = document.createElement("treerow");
      var cell = document.createElement("treecell");
      cell.setAttribute("label", nodeList[i].id);
      row.appendChild(cell);
      var cell = document.createElement("treecell");
      cell.setAttribute("src", nodeList[i].image || getImage(nodeList[i].cbStdIcon));
      cell.setAttribute("label", String.fromCharCode(32, 32) + nodeList[i].label);
      row.appendChild(cell);
      item.appendChild(row);
      orderArr.push([nodeList[i].id.substring(20), nodeList[i].label, item]);
    }
  }
  var id = node.getAttribute("id");
  var sortDirection = node.getAttribute("sortDirection");
  if (id == "firstColumn" && sortDirection == "ascending") orderArr.sort(function(a, b) { return a[0] - b[0] });
  if (id == "firstColumn" && sortDirection == "descending") orderArr.sort(function(a, b) { return b[0] - a[0] });
  if (id == "secondColumn" && sortDirection == "ascending") orderArr.sort(function(a, b) { return a[1] > b[1] });
  if (id == "secondColumn" && sortDirection == "descending") orderArr.sort(function(a, b) { return a[1] < b[1] });
  node.setAttribute("sortDirection", sortDirection == "descending" ? "ascending" : "descending");
  var children = dialog.document.getElementById("treechildren");
  for (var i = 0; i < children.childNodes.length; i++) {
    children.appendChild(orderArr[i][2]);
    children.removeChild(children.firstChild);
  }
  dialog.document.getElementById("tree").focus();
  dialog.document.getElementById("tree").view.selection.select(0);
}
this.edit = function() {
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  custombuttons.editButton(document.getElementById(id));
  dialog.close();
}
this.remove = function() {
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  custombuttons.removeButton(document.getElementById(id));
  dialog.close();
}
this.attr = function() {
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  var node = document.getElementById(id);
  var out = new Array();
  out.push('windowtype="' + document.documentElement.getAttribute("windowtype") + '" id="' + id + '"');
  out.push("Attributes");
  for (var i = 0; i < node.attributes.length; i++) {
    if (node.attributes[i].nodeName == "cb-oncommand" ||
        node.attributes[i].nodeName == "cb-init"      ||
        node.attributes[i].nodeName == "Help") {
      out.push(node.attributes[i].nodeName + " " + typeof node.attributes[i].nodeValue + "\n" + "[omitted]");
    } else {
      out.push(node.attributes[i].nodeName + " " + typeof node.attributes[i].nodeValue + "\n" + node.attributes[i].nodeValue);
    }
  }
  openTab(out);
  dialog.close();
}
this.prop = function() {
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  var node = document.getElementById(id);
  var out = new Array();
  out.push('windowtype="' + document.documentElement.getAttribute("windowtype") + '" id="' + id + '"');
  out.push("Properties");
  for (var i in node) {
    if (i == "cbCommand"  ||
        i == "cbInitCode" ||
        i == "Help"       ||
        i == "URI") {
      out.push(i + " " + typeof node[i] + "\n" + "[omitted]");
    } else {
      out.push(i + " " + typeof node[i] + "\n" + node[i]);
    }
  }
  openTab(out);
  dialog.close();
}
this.link = function() {
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  var out = new Array();
  out.push('windowtype="' + document.documentElement.getAttribute("windowtype") + '" id="' + id + '"');
  out.push("URI");
  out.push(unescape(document.getElementById(id).URI));
  openTab(out);
  dialog.close();
}
this.inspect = function() {
  if (typeof(inspectDOMDocument) == "undefined") {
    custombuttons.alertBox(this.label, "DOM Inspector is not enabled or installed.");
    return;
  }
  var id = dialog.document.getElementById("tree").view.getCellText(
    dialog.document.getElementById("tree").view.selection.currentIndex,
    dialog.document.getElementById("tree").columns.getColumnAt(0));
  inspectDOMNode(document.getElementById(id));
  dialog.close();
}
this.setAttribute("onclick", "custombuttons.gQuot.mHandler(event, this)");

Отредактировано slbgz (19-10-2011 22:00:57)

Отсутствует

 

№8316-10-2011 19:37:51

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 6.0

Re: Готовые кнопки для Custom Buttons

Button Archive TIDY test(Firefox)
Аналог кнопки ExpImpCB(Firefox) (экспорт-импорт кнопок)
Предназначение - архивация кнопок в файл html, бекап.
Отличия:
- кнопка работает во всех версиях браузера
- с помощью чек-боксов в окне предварительного просмотра списка кнопок, можно выбрать состав архива
- кнопки неактивные и кнопки-«дубли» не сохраняются («дубли» можно добавить, неактивные - нет)
- кнопка «инспектирует» на старте все кнопки и предлагает во всех тех кнопках, которые не имеют собственной иконки, поменять «стандартную» на уникальную, после этого(замены) кнопка меняет цвет с красной на зеленую и готова к архивации...

авторы: squeaky, SCClockDr
коррекция отображения кириллицы: LouCypher

Код кнопки

Код

Выделить код

Код:

// See the initialise tab for user options



/* Using the Button Archive List button
   ====================================

    Click on any item to toggle it from:-

    Show button (green background)
    
    to
    
    Don't show button (red background)
    
    Once done, click on the "See final list" button at the 
    bottom of the menu to check your list before posting.


    In the (final) check list popup you can return to the edit list or
    copy your final list to the clipboard using the buttons at
    the bottom of the list.
*/



  this.togglecheck(event);

Инициализация

Примечание. Подсказка об особенностях кнопки - здесь.

Отредактировано slbgz (17-10-2011 21:38:48)

Отсутствует

 

№8417-10-2011 10:17:06

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 6.0

Re: Готовые кнопки для Custom Buttons

Два аналога кнопки Bookmarks | Manager | Add для новых версий Фокса.

My Bookmarks(Firefox 3.6++)

ЛКМ = открыть Менеджер закладок
СКМ = открыть закладки в боковой панели
ПКМ = добавить все вкладки в закладки

Код
Код кнопки:

Выделить код

Код:

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%3EMy%20Bookmarks%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+rsA2fq7ANn6uwDZ+rsA2fq7ANn6uwDZ+rsA2fq7ANn6uwDZ+rsA2fq7ANn6uwDZ+rsA2fq7ANkAAAAA+rMA2fx7MP/8fjD//H4w//x+MP/8fjD//H4w//x+MP/8fjD//H4w//x+MP/8fjD//H4w//x+MP/8ezD/+rMA2fqnANn8di3/+rYt//q2Lf/6ti3/+rYt//q2Lf/6ti3/+rYt//q2Lf/6ti3/+rYt//q2Lf/6ti3//HYt//qnANn6ngDZ/HEr//qqKv/6qir//LtR//y7Uf/6qir/+qoq//qqKv/6qir//LtR//y7Uf/6qir/+qoq//xxK//6ngDZ/JcA2f9rJv/8nyb//J8m//yrQv//+vL//MV3//yfJv/8nyb//MV3///68v/8q0L//J8m//yfJv//ayb//JcA2fyLANn/YiT//Jcj//yXI//8lyP//+vW////////37r//9+6////////69b//Jcj//yXI//8lyP//2Ik//yLANn8ggDZ/1of//yKHv/8ih7//Ioe//y9gf///////////////////////L2B//yKHv/8ih7//Ioe//9aH//8ggDZ/HoA2f9VHP/8gRz//IEc//yBHP//x5z////////////////////////HnP/8gRz//IEc//yBHP//VRz//HoA2fxtANn/SRf//HMX//x8Jv//3cf//////////////////////////////////93H//x8Jv/8cxf//0kX//xtANn8ZQDZ/0MU//x9Mv//0rj//9vE///bxP//5NT/////////////5NT//9vE///bxP//0rj//H0y//9DFP/8ZQDZ/FgA2f89Ev/8YBL//GAS//xgEv/8YBL//HQw/////////////HQw//xgEv/8YBL//GAS//xgEv//PRL//FgA2f9RANn/NQ3//1cP//9XD///Vw///1cP//9XD///39H//9/R//9XD///Vw///1cP//9XD///Vw///zUN//9RANn/SADZ/y8K//9LCv//Swr//0sK//9LCv//Swr//5h1//+Ydf//Swr//0sK//9LCv//Swr//0sK//8vCv//SADZ/zwA2f8pCP//QQj//0EI//9BCP//QQj//0EI//9VJv//WSb//0EI//9BCP//QQj//0EI//9BCP//KQj//zwA2f8zANn/HAP//yAD//8gA///IAP//yAD//8gA///IAP//yAD//8gA///IAP//yAD//8gA///IAP//xwD//8zANkAAAAA/yoA2f8qANn/KgDZ/yoA2f8qANn/KgDZ/yoA2f8qANn/KgDZ/yoA2f8qANn/KgDZ/yoA2f8qANkAAAAAgAGsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBgAGsQQ%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%22L%3DBookmarks%20Manager%20%7C%20M%3DBookmarks%20%7C%20R%3DAll%20Tabs%20to%20Bookmarks%22%3B%0A%0Athis.%20onclick%20%3D%20function%20%28event%29%0A%7B%20%20%20if%20%28event.%20button%20%3D%3D%200%29%20PlacesCommandHook.showPlacesOrganizer%28%27AllBookmarks%27%29%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%201%29%20toggleSidebar%28%27viewBookmarksSidebar%27%29%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%20%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%20document.getElementById%28%22Browser%3ABookmarkAllTabs%22%29.doCommand%28%29%3B%20%7D%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

Инициализация:

Выделить код

Код:

this.tooltipText = "L=Bookmarks Manager | M=Bookmarks | R=All Tabs to Bookmarks";

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) { 
        event.preventDefault(); event.stopPropagation(); document.getElementById("Browser:BookmarkAllTabs").doCommand(); };
};

My Bookmarks menu(Firefox 3.6++)

Кнопка-меню с теми же функциями, что и кнопка выше.

Код
Код кнопки:

Выделить код

Код:

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%3EMy%20Bookmarks%20menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlWNA/5RiP/+UYT7/k2A9/5NfPP+SXzz/kl47/5FdOv+QXDn/kFw4/49bN/+PWjb/AAAAAAAAAAAAAAAAAAAAAJVjQf/au5v/2bmY/9i2lf/WtJL/1bKP/9SvjP/TrYn/0qqG/9Gog//QpoD/j1s3/wAAAAAAAAAAAAAAAAAAAACWZEH/272d/5x9W//Kn3P/yJxu/8eYav/FlWb/w5Jh/8KOXf/Ai1n/0KiD/5BbOP9RNiL/AAAAAAAAAAAAAAAAlmRC/9y/n/+ggmD/g262/8mfcv9yWLD/xphp/8WUZf/DkWH/wY5c/9Gqhf+QXDj/UDcj/wAAAAAAAAAAAAAAAJdlQ//dwaL/o4Vk/0ZC8/9bTNL/KSDs/8eabf/Gl2j/xJRk/8OQX//Sq4f/kFw5/1E3JP8AAAAAAAAAAAAAAACXZkT/3cOk/6aJaf9KRvT/bW31/ywk7f/JnXD/x5ps/8aWZ//Ek2P/062J/5FdOv9RNyT/AAAAAAAAAAAAAAAAmGZE/97Fpv+qjmz/TUr1/6Kp+v8wKO7/yqB0/8idb//HmWv/xZZn/9SvjP+RXjv/UTgk/wAAAAAAAAAAAAAAAJhnRf/fxqj/rZJx/1FP9v+lrPr/NC3v/8ujd//Kn3P/yJxu/8eYav/VsY7/kl47/1I4Jf8AAAAAAAAAAAAAAACZaEb/4Mir/7CWdf9VU/b/qK/6/zcx8P/Npnv/y6J2/8mfcv/Im27/1rOQ/5JfPP9SOSX/AAAAAAAAAAAAAAAAmWhG/+HKrf+0mnr/WFf3/6qy+v87NfH/zqh+/8ylev/LoXb/yZ5x/9e1kv+TYD3/Ujkl/wAAAAAAAAAAAAAAAJppR//izK//uJ9+/1xc+P+ttfv/Pzrx//Xt5P/17eT/9e3k/8qhdP/XtpX/k2A9/1M5Jv8AAAAAAAAAAAAAAACaaUj/486x/7ujg/9gYPn/sLn7/0I+8v/RroX/z6qB/82nfP/Mo3j/2LiX/5RhPv9TOib/AAAAAAAAAAAAAAAAm2pJ/+TQtP/ItZz/Y2T6/7O8+/9GQvP/3sSl/93Bov/cv5//2ryc/9m6mf+UYT//Uzom/wAAAAAAAAAAAAAAAJtrSf/l0bb/mmlI/2dp+/+2v/v/Skb0/5hmRP+XZUP/lmRC/5ZkQf+VY0D/lWJA/1Q6J/8AAAAAAAAAAAAAAACcbEr/m2pJ/7KOdP9rbfv/XFz4/01K9f/y7en/9O/r//Xw7f/28vD/9/Tx//j18/9UOyf/AAAAAAAAAAAAAAAAoWtR/5trSv+bakn/mmpI/5ppR/+ZaEb/mWdF/5hmRf+XZkT/l2VD/5ZkQv+WY0H/lGI//wAAAAAAAAAAgAesQYAHrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQQ%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%20menu%20%3D%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%0A%0A%20%20%20%20%20%3Cmenuitem%20label%3D%22Bookmarks%20Manager%22%0A%20%20%20%20%20%20%20class%3D%22menuitem-iconic%22%20%0A%20%20%20%20%20%20%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlWNA/5RiP/+UYT7/k2A9/5NfPP+SXzz/kl47/5FdOv+QXDn/kFw4/49bN/+PWjb/AAAAAAAAAAAAAAAAAAAAAJVjQf/au5v/2bmY/9i2lf/WtJL/1bKP/9SvjP/TrYn/0qqG/9Gog//QpoD/j1s3/wAAAAAAAAAAAAAAAAAAAACWZEH/272d/5x9W//Kn3P/yJxu/8eYav/FlWb/w5Jh/8KOXf/Ai1n/0KiD/5BbOP9RNiL/AAAAAAAAAAAAAAAAlmRC/9y/n/+ggmD/g262/8mfcv9yWLD/xphp/8WUZf/DkWH/wY5c/9Gqhf+QXDj/UDcj/wAAAAAAAAAAAAAAAJdlQ//dwaL/o4Vk/0ZC8/9bTNL/KSDs/8eabf/Gl2j/xJRk/8OQX//Sq4f/kFw5/1E3JP8AAAAAAAAAAAAAAACXZkT/3cOk/6aJaf9KRvT/bW31/ywk7f/JnXD/x5ps/8aWZ//Ek2P/062J/5FdOv9RNyT/AAAAAAAAAAAAAAAAmGZE/97Fpv+qjmz/TUr1/6Kp+v8wKO7/yqB0/8idb//HmWv/xZZn/9SvjP+RXjv/UTgk/wAAAAAAAAAAAAAAAJhnRf/fxqj/rZJx/1FP9v+lrPr/NC3v/8ujd//Kn3P/yJxu/8eYav/VsY7/kl47/1I4Jf8AAAAAAAAAAAAAAACZaEb/4Mir/7CWdf9VU/b/qK/6/zcx8P/Npnv/y6J2/8mfcv/Im27/1rOQ/5JfPP9SOSX/AAAAAAAAAAAAAAAAmWhG/+HKrf+0mnr/WFf3/6qy+v87NfH/zqh+/8ylev/LoXb/yZ5x/9e1kv+TYD3/Ujkl/wAAAAAAAAAAAAAAAJppR//izK//uJ9+/1xc+P+ttfv/Pzrx//Xt5P/17eT/9e3k/8qhdP/XtpX/k2A9/1M5Jv8AAAAAAAAAAAAAAACaaUj/486x/7ujg/9gYPn/sLn7/0I+8v/RroX/z6qB/82nfP/Mo3j/2LiX/5RhPv9TOib/AAAAAAAAAAAAAAAAm2pJ/+TQtP/ItZz/Y2T6/7O8+/9GQvP/3sSl/93Bov/cv5//2ryc/9m6mf+UYT//Uzom/wAAAAAAAAAAAAAAAJtrSf/l0bb/mmlI/2dp+/+2v/v/Skb0/5hmRP+XZUP/lmRC/5ZkQf+VY0D/lWJA/1Q6J/8AAAAAAAAAAAAAAACcbEr/m2pJ/7KOdP9rbfv/XFz4/01K9f/y7en/9O/r//Xw7f/28vD/9/Tx//j18/9UOyf/AAAAAAAAAAAAAAAAoWtR/5trSv+bakn/mmpI/5ppR/+ZaEb/mWdF/5hmRf+XZkT/l2VD/5ZkQv+WY0H/lGI//wAAAAAAAAAAgAesQYAHrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQQ%3D%3D%22%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.bookmarksManager%28event%29%22%7D/%3E%20%0A%0A%20%20%20%20%20%3Cmenuitem%20label%3D%22Open%20Bookmarks%20In%20Side%20Bar%22%0A%20%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8xMS8wNdiEE10AAAAldEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1YIDIwMDSHdqzPAAABq0lEQVQ4y8VTSy8DURS+RTcWaql2/gVha2svaVKCnYhEhEhpLSRdSFQqmnos/AASsWHjuakmhA190ZY2rWkZ7VSNIp97brWmiA2JSb7M5HyPc05yhgFgvwH7s4Beq3u6z+YO9NkW8DPcAdJWBPCnutviCkViMTwXcgKFJ6UIVcGTmoWqZgQuryIgLXm0ATXmsXm8POchy0mkpTBSUghKJoasfI2MHIV8G0b2PsZDZJCWPNoAvWnUidcXFZn7BI6DadylwtwY5sYLyKkgUjc+SIkzqI8ySEueioDOYQeMDoPAjieCnJKE58SDrYNdbO5v48C7J7hGR/33AUT2H/UIUTTq5534FLcBvoofknSORPwUZc2MgUy1wkv7EDGnWDEYN5WnaHDUVcDIO1OdNM7shAgRk1DxEOsYy3dh6nEAy7BjhcMHL06xh32sYg0uUSOONKQlD3lZR79dfGwU3Fh8sJUnoF0rwWuz9VjKTwotadrNI2L/JgIVLMdDxVTGmlkVa3lHG711etZC3PiHplXotGdZ6s6Jxs8ny+s6LV/SfL1tDfnt7X/i2b//jW8TQI5LK3NhrAAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.openBookmarksSideBar%28event%29%22%7D/%3E%20%20%20%20%20%20%20%20%20%0A%20%0A%20%20%20%20%20%3Cmenuitem%20label%3D%22Bookmark%20All%20Tabs%22%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMq0H/Ea1i/x2ztf8ds7X/HbO1/xm1tf8ZsLL/GYSt/xoco/8YHaP/Ghyi/zc/bP8wcSz/gX9d/3ROMtD/+v8BTduD/xitSv8wkXD/Z9vm/2bb4/9i2uP/WdXe/yaztf81bZn/Z2Hb/1VxgP8TlRL/D6gN/xOVEv+Rm27/VDsnxlTeif8YrUr/GnhJ/zfK3v8wytv/NdDe/2DY4P8ms7X/JG2E/3GUjP8hrCL/BtMF/wDbAP8G0wX/Iawi/4Sec/9X3o//HK1K/xpwOf8+yd7/O8nb/z3M2/9l1OD/KLi4/yR5ff8/aVv/Hr0f/wLnBP8A7wD/AucE/x69H/9RllP/Xd6T/x2tTf8acDn/SMrg/0DJ3v9DzN7/adXg/yy1uP8keX3/cJaL/y7CLv8f+R//DPsM/x/5H/8uwi7/n4Rk/2Tel/8drU3/GnA5/1PL4P9Lyt7/Tsje/3DV4P8stbj/JHl9/11M1P9XiXn/bvV7/0X5Rv9u9Xv/d8iD/1hALP9p4J//Ia1N/xpwOf9YzOD/U87g/1PL4P911+b/Lri4/yR5ff9kU9b/V4l5/271e/9F+Ub/bvV7/3fIg/9XPyv/bOCg/yGwUf8acDn/YtLj/1/P4/9f0eP/eNXj/y+4uv8keX3/a1zb/1eJef9u9Xv/RflG/271e/93yIP/Vj0p/3TjpP8jsFL/GnA5/2fH1v9lytv/aNHj/37Z5v8ytbj/JHl9/3Nk2f9yjoX/V3R+/1J2gf+525b/wLuN/1Y9Kf9/46r/JLJT/xpwOf/c8/f/2vH1/2zP4P+J3ej/Mri6/yR5ff95atn/kIfg/y4wq/8iH2n/1reV/5hoRv9WPSn/g+au/yeyVv8acDn/d8rZ/3LQ4P911eb/jt3o/zS4uv8keX3/gHLb/5OK4/8wMqv/Ih9p/9i6mv+YaUf/Vj0p/4rms/8pslf/GnA5/6Ti7f+i4Ov/mdvo/5Xd6P82uLr/JHl9/6OX5v+ZkOD/MzWr/yIfaf/avp//mWpJ/1Y9Kf8ktVT/HK1M/xpwOf9IvsL/SL7C/0jAwv8yuLr/KLW4/yR5ff9DRbX/LzGt/ycpqP8iH2n/m2pI/5VjQP9WPSn/4evk//Dw8P8acDn/0+fo/8/n6P/M5eb/4evq//Dw8P8keX3/ysrg/+Hi6//w8PD/Ih9p/+vn5f/v7+//Vj0p/yq1Vv8esE//G6FI/0y+wv9Lu7//SMDC/za6uv8tuLr/Kamr/0VHtf80OK3/KSur/yUnnP+cbEv/lmVC/4dbO/8hsFH/IKtP/ySfXP8yuLr/Mri6/y+4uv8vuLr/LbO1/y6OpP8sL6v/LC6o/yoso/86MYn/l2ZE/5JjQv+DXD3eAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%0A%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.bookmarkAllTabs%28event%29%22%7D/%3E%20%0A%0A%3C/menupopup%3E%3B%0A%0Avar%20bool%20%3D%20XML.prettyPrinting%3B%0AXML.prettyPrinting%20%3D%20false%3B%0Avar%20el%20%3D%20new%20DOMParser%28%29.parseFromString%28menu.toXMLString%28%29%2C%20%22application/xml%22%29.documentElement%3B%0AXML.prettyPrinting%20%3D%20bool%3B%0Athis.appendChild%28el%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%20%20%20%20%20%20%20%20%20%20%20%0A%0Athis.bookmarksManager%20%3D%20function%28event%29%20%7B%20PlacesCommandHook.showPlacesOrganizer%28%27AllBookmarks%27%29%3B%20%7D%3B%0Athis.openBookmarksSideBar%20%3D%20function%28event%29%20%7B%20toggleSidebar%28%27viewBookmarksSidebar%27%29%3B%20%7D%3B%0Athis.bookmarkAllTabs%20%3D%20function%28event%29%20%7B%20document.getElementById%28%22Browser%3ABookmarkAllTabs%22%29.doCommand%28%29%3B%20%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

Инициализация:

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
                      xmlns:cb="http://xsms.nm.ru/custombuttons/">


     <menuitem label="Bookmarks Manager"
       class="menuitem-iconic" 
       image="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlWNA/5RiP/+UYT7/k2A9/5NfPP+SXzz/kl47/5FdOv+QXDn/kFw4/49bN/+PWjb/AAAAAAAAAAAAAAAAAAAAAJVjQf/au5v/2bmY/9i2lf/WtJL/1bKP/9SvjP/TrYn/0qqG/9Gog//QpoD/j1s3/wAAAAAAAAAAAAAAAAAAAACWZEH/272d/5x9W//Kn3P/yJxu/8eYav/FlWb/w5Jh/8KOXf/Ai1n/0KiD/5BbOP9RNiL/AAAAAAAAAAAAAAAAlmRC/9y/n/+ggmD/g262/8mfcv9yWLD/xphp/8WUZf/DkWH/wY5c/9Gqhf+QXDj/UDcj/wAAAAAAAAAAAAAAAJdlQ//dwaL/o4Vk/0ZC8/9bTNL/KSDs/8eabf/Gl2j/xJRk/8OQX//Sq4f/kFw5/1E3JP8AAAAAAAAAAAAAAACXZkT/3cOk/6aJaf9KRvT/bW31/ywk7f/JnXD/x5ps/8aWZ//Ek2P/062J/5FdOv9RNyT/AAAAAAAAAAAAAAAAmGZE/97Fpv+qjmz/TUr1/6Kp+v8wKO7/yqB0/8idb//HmWv/xZZn/9SvjP+RXjv/UTgk/wAAAAAAAAAAAAAAAJhnRf/fxqj/rZJx/1FP9v+lrPr/NC3v/8ujd//Kn3P/yJxu/8eYav/VsY7/kl47/1I4Jf8AAAAAAAAAAAAAAACZaEb/4Mir/7CWdf9VU/b/qK/6/zcx8P/Npnv/y6J2/8mfcv/Im27/1rOQ/5JfPP9SOSX/AAAAAAAAAAAAAAAAmWhG/+HKrf+0mnr/WFf3/6qy+v87NfH/zqh+/8ylev/LoXb/yZ5x/9e1kv+TYD3/Ujkl/wAAAAAAAAAAAAAAAJppR//izK//uJ9+/1xc+P+ttfv/Pzrx//Xt5P/17eT/9e3k/8qhdP/XtpX/k2A9/1M5Jv8AAAAAAAAAAAAAAACaaUj/486x/7ujg/9gYPn/sLn7/0I+8v/RroX/z6qB/82nfP/Mo3j/2LiX/5RhPv9TOib/AAAAAAAAAAAAAAAAm2pJ/+TQtP/ItZz/Y2T6/7O8+/9GQvP/3sSl/93Bov/cv5//2ryc/9m6mf+UYT//Uzom/wAAAAAAAAAAAAAAAJtrSf/l0bb/mmlI/2dp+/+2v/v/Skb0/5hmRP+XZUP/lmRC/5ZkQf+VY0D/lWJA/1Q6J/8AAAAAAAAAAAAAAACcbEr/m2pJ/7KOdP9rbfv/XFz4/01K9f/y7en/9O/r//Xw7f/28vD/9/Tx//j18/9UOyf/AAAAAAAAAAAAAAAAoWtR/5trSv+bakn/mmpI/5ppR/+ZaEb/mWdF/5hmRf+XZkT/l2VD/5ZkQv+WY0H/lGI//wAAAAAAAAAAgAesQYAHrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQYADrEGAA6xBgAOsQQ=="
       onclick={"document.getElementById('" + this.id + "').bookmarksManager(event)"}/> 

     <menuitem label="Open Bookmarks In Side Bar"
       class="menuitem-iconic"
       image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8xMS8wNdiEE10AAAAldEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1YIDIwMDSHdqzPAAABq0lEQVQ4y8VTSy8DURS+RTcWaql2/gVha2svaVKCnYhEhEhpLSRdSFQqmnos/AASsWHjuakmhA190ZY2rWkZ7VSNIp97brWmiA2JSb7M5HyPc05yhgFgvwH7s4Beq3u6z+YO9NkW8DPcAdJWBPCnutviCkViMTwXcgKFJ6UIVcGTmoWqZgQuryIgLXm0ATXmsXm8POchy0mkpTBSUghKJoasfI2MHIV8G0b2PsZDZJCWPNoAvWnUidcXFZn7BI6DadylwtwY5sYLyKkgUjc+SIkzqI8ySEueioDOYQeMDoPAjieCnJKE58SDrYNdbO5v48C7J7hGR/33AUT2H/UIUTTq5534FLcBvoofknSORPwUZc2MgUy1wkv7EDGnWDEYN5WnaHDUVcDIO1OdNM7shAgRk1DxEOsYy3dh6nEAy7BjhcMHL06xh32sYg0uUSOONKQlD3lZR79dfGwU3Fh8sJUnoF0rwWuz9VjKTwotadrNI2L/JgIVLMdDxVTGmlkVa3lHG711etZC3PiHplXotGdZ6s6Jxs8ny+s6LV/SfL1tDfnt7X/i2b//jW8TQI5LK3NhrAAAAABJRU5ErkJggg=="
       onclick={"document.getElementById('" + this.id + "').openBookmarksSideBar(event)"}/>         
 
     <menuitem label="Bookmark All Tabs"
      class="menuitem-iconic"
      image="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMq0H/Ea1i/x2ztf8ds7X/HbO1/xm1tf8ZsLL/GYSt/xoco/8YHaP/Ghyi/zc/bP8wcSz/gX9d/3ROMtD/+v8BTduD/xitSv8wkXD/Z9vm/2bb4/9i2uP/WdXe/yaztf81bZn/Z2Hb/1VxgP8TlRL/D6gN/xOVEv+Rm27/VDsnxlTeif8YrUr/GnhJ/zfK3v8wytv/NdDe/2DY4P8ms7X/JG2E/3GUjP8hrCL/BtMF/wDbAP8G0wX/Iawi/4Sec/9X3o//HK1K/xpwOf8+yd7/O8nb/z3M2/9l1OD/KLi4/yR5ff8/aVv/Hr0f/wLnBP8A7wD/AucE/x69H/9RllP/Xd6T/x2tTf8acDn/SMrg/0DJ3v9DzN7/adXg/yy1uP8keX3/cJaL/y7CLv8f+R//DPsM/x/5H/8uwi7/n4Rk/2Tel/8drU3/GnA5/1PL4P9Lyt7/Tsje/3DV4P8stbj/JHl9/11M1P9XiXn/bvV7/0X5Rv9u9Xv/d8iD/1hALP9p4J//Ia1N/xpwOf9YzOD/U87g/1PL4P911+b/Lri4/yR5ff9kU9b/V4l5/271e/9F+Ub/bvV7/3fIg/9XPyv/bOCg/yGwUf8acDn/YtLj/1/P4/9f0eP/eNXj/y+4uv8keX3/a1zb/1eJef9u9Xv/RflG/271e/93yIP/Vj0p/3TjpP8jsFL/GnA5/2fH1v9lytv/aNHj/37Z5v8ytbj/JHl9/3Nk2f9yjoX/V3R+/1J2gf+525b/wLuN/1Y9Kf9/46r/JLJT/xpwOf/c8/f/2vH1/2zP4P+J3ej/Mri6/yR5ff95atn/kIfg/y4wq/8iH2n/1reV/5hoRv9WPSn/g+au/yeyVv8acDn/d8rZ/3LQ4P911eb/jt3o/zS4uv8keX3/gHLb/5OK4/8wMqv/Ih9p/9i6mv+YaUf/Vj0p/4rms/8pslf/GnA5/6Ti7f+i4Ov/mdvo/5Xd6P82uLr/JHl9/6OX5v+ZkOD/MzWr/yIfaf/avp//mWpJ/1Y9Kf8ktVT/HK1M/xpwOf9IvsL/SL7C/0jAwv8yuLr/KLW4/yR5ff9DRbX/LzGt/ycpqP8iH2n/m2pI/5VjQP9WPSn/4evk//Dw8P8acDn/0+fo/8/n6P/M5eb/4evq//Dw8P8keX3/ysrg/+Hi6//w8PD/Ih9p/+vn5f/v7+//Vj0p/yq1Vv8esE//G6FI/0y+wv9Lu7//SMDC/za6uv8tuLr/Kamr/0VHtf80OK3/KSur/yUnnP+cbEv/lmVC/4dbO/8hsFH/IKtP/ySfXP8yuLr/Mri6/y+4uv8vuLr/LbO1/y6OpP8sL6v/LC6o/yoso/86MYn/l2ZE/5JjQv+DXD3eAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="
      onclick={"document.getElementById('" + this.id + "').bookmarkAllTabs(event)"}/> 

</menupopup>;

var bool = XML.prettyPrinting;
XML.prettyPrinting = false;
var el = new DOMParser().parseFromString(menu.toXMLString(), "application/xml").documentElement;
XML.prettyPrinting = bool;
this.appendChild(el);
this.type = "menu";
this.orient = "horizontal";           

this.bookmarksManager = function(event) { PlacesCommandHook.showPlacesOrganizer('AllBookmarks'); };
this.openBookmarksSideBar = function(event) { toggleSidebar('viewBookmarksSidebar'); };
this.bookmarkAllTabs = function(event) { document.getElementById("Browser:BookmarkAllTabs").doCommand(); };


В кнопке использованы некоторые элементы кода и иконки из кнопки mrbunnylamakins.

Отредактировано slbgz (17-10-2011 10:25:55)

Отсутствует

 

№8519-10-2011 21:32:05

slbgz
Забанен
 
Группа: Members
Зарегистрирован: 27-06-2011
Сообщений: 246
UA: Firefox 2.0

Re: Готовые кнопки для Custom Buttons

Close this toolbar(Firefox) Скрыть панель (автонастраиваемая)

Аналог кнопки СкрытьПоказать панель
Кнопка не требует настройки, после установки кнопки нужно просто перетянуть ее на требуемую панель и панель будет всегда по умолчанию скрыта,
В кнопке отсутствует функция переключения «скрыть/показать», поэтому удобнее всего ее использовать на тех панелях, открытие которых будет нужно очень редко.
Показать панель можно будет или «галочкой» или другой кнопкой-переключателем, например,  - кнопкой переключения группы панелей ТoggleToolbars
Автор: squeaky

Код
Код кнопки:

Выделить код

Код:

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%3EClose%20this%20toolbar%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhDgAOAPcAAL0pAL0xEL05GL1CIcYpAMYxAMYxCMY5EMY5GMZjStY5ENZrUtZzWt4xAN5CGN5CId5KGN5KId5KKd5SId5SKd5SMec5AOc5COdCCOdCEOdKEOdKGOdKIedSGOdSIedSKedSMedaKedaMedaOedjMedjOedjQudjSudrSudrUudzUudzWud7Wu9CCO9SGO9SIe9aIe9aKe9zWu97Y++EY++Ea++Mc++Ue++chO+cjPetlPe1nPe1pfe9pfe9rffGtffGvffOvffOxvfWxvfWzv/Ovf/n3v/n5//v5//v7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAADgAOAAAIvwB12KixQkUKFChOmBhRQQKDGzpyDKzBgsWKFShMVBhQI8eNgQxWpDiBIgXDASxs3DjyI4UJjT6MnFxRowYQJUI0ClHCowKFASkqrtgJ5CaQCBF+nrho8KaSHxM4IB1gIoXBFEGUPP3QAUIEBCNOWN0Z5OaPDhsgHKhQ9QfOEiWy7uiQIUCEESqO+DBRgkQIHkY8YADgoMKIjCNKhAjhIQQGCwAURJDg0+eECBAwXGgAYIGAz6AFHDAQAACABAEBADs%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%0A%0Aconst%20toolbar%20%3D%20document.getElementById%28this.parentNode.id%29%3B%0A%0Atoolbar.collapsed%20%3D%20true%3B%0A%0Atoolbar.setAttribute%28%22persist%22%2C%20%22collapsed%22%29%3B%0A%0A%0A%0A//%20MANY%20thanks%20to%20nicholas%20for%20help%20with%20this%20attribute%0Athis.setAttribute%28%22style%22%2C%20%22padding-bottom%3A%200px%20%21important%3B%20padding-left%3A%202px%20%21important%3B%20padding-right%3A%202px%20%21important%3B%20padding-top%3A%200px%20%21important%3B%22%29%3B%0A%0A%0Athis.thisbar%20%3D%20document.getElementById%28this.parentNode.id%29%3B%0A%0Avar%20checkcb%20%3D%20this.thisbar.id%0A%0A%20//%20alert%28%22thisbar%20%3D%20%22%20+%20this.thisbar.id%29%3B%0A%0A%20var%20rExp%20%3D%20/__customToolbar_/%3B%0A%0A%20%20if%28rExp.test%28checkcb%29%29%0A%20%20%7B%0A%20%20%20%20checkcb%20%3D%20checkcb.substring%2816%2C%20checkcb.length%29%3B%0A%20%20%7D%0A%20%20%20%20%0Athis.tooltipText%20%3D%20%22Close%20%22%20+%20checkcb%20+%20%22%20toolbar%22%3B%0A%0A%0A%0A%0A%0A%0A/*----------------------%20Button%20Code%20Block%20End%20-----------------------*/%0A%20%20%20%20%0A%20%20%20%20%0A%0Athis.setAttribute%28%22author%22%2C%22squeaky%22%29%3B%0Athis.setAttribute%28%22version%22%2C%2220080308.1.2%22%29%3B%0Athis.setAttribute%28%22homepage%22%2C%22http%3A//custombuttons2.com/forum/viewtopic.php%3Ff%3D35%26t%3D728%22%29%3B%0Athis.setAttribute%28%22dependency%22%2C%22FF2.0*%2CCB2%202.0.5*%22%29%3B%0Athis.setAttribute%28%22status%22%2C%22Complete%22%29%3B%0Athis.setAttribute%28%22public%22%2Ctrue%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%0A%0A//%20If%20you%20would%20like%20your%20browser%20to%20always%20start%20with%0A//%20this%20toolbar%20collapsed%3A-%0A//%20un%20comment%20the%20code%20in%20the%20initialisation%20tab%0A//%0A//%20Thanks%20to%20ithinc%20for%20the%20%22persist%22%20line.%0A%0Aconst%20toolbar%20%3D%20document.getElementById%28this.parentNode.id%29%3B%0A%0A%20%20toolbar.collapsed%20%3D%20true%3B%0A%0A%20%20toolbar.setAttribute%28%22persist%22%2C%20%22collapsed%22%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%0A/*%20+++-----------------------%20help%20information%20for%20this%20button%20-----------------------+++%20*/%0A%0ANo%20help%20developed%20for%20%0A%3Clabel%3E%20button%0Acustombuttons-button%3Cid%3E.%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

/*Code*/

// If you would like your browser to always start with
// this toolbar collapsed:-
// un comment the code in the initialisation tab
//
// Thanks to ithinc for the "persist" line.

const toolbar = document.getElementById(this.parentNode.id);

  toolbar.collapsed = true;

  toolbar.setAttribute("persist", "collapsed");

Инициализация:

Выделить код

Код:

/*Initialization code*/


const toolbar = document.getElementById(this.parentNode.id);

toolbar.collapsed = true;

toolbar.setAttribute("persist", "collapsed");



// MANY thanks to nicholas for help with this attribute
this.setAttribute("style", "padding-bottom: 0px !important; padding-left: 2px !important; padding-right: 2px !important; padding-top: 0px !important;");


this.thisbar = document.getElementById(this.parentNode.id);

var checkcb = this.thisbar.id

 // alert("thisbar = " + this.thisbar.id);

 var rExp = /__customToolbar_/;

  if(rExp.test(checkcb))
  {
    checkcb = checkcb.substring(16, checkcb.length);
  }
    
this.tooltipText = "Close " + checkcb + " toolbar";






/*---------------------- Button Code Block End -----------------------*/
    
    

this.setAttribute("author","squeaky");
this.setAttribute("version","20080308.1.2");
this.setAttribute("homepage","http://custombuttons2.com/forum/viewtopic.php?f=35&t=728");
this.setAttribute("dependency","FF2.0*,CB2 2.0.5*");
this.setAttribute("status","Complete");
this.setAttribute("public",true);

Отредактировано slbgz (19-10-2011 21:36:00)

Отсутствует

 

№8627-10-2011 12:36:42

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 7.0

Re: Готовые кнопки для Custom Buttons

Popap-Toolbar!(Firefox) - Всплывающая панель
Небольшая переделка оригинальной кнопки Popap-toolbar (доступно только через web.archive.org).
Позволяет отображать скрытую панель с кнопками (созданную пользователем) в компактном виде.
Название по-умолчанию для пользовательской панели: MButtons. Его можно изменить в коде кнопки (смотри внутри комментарий).

ЛКМ  =>  Показать / Скрыть панель
ПКМ  =>  Меню кнопки

После нажатия ЛКМ по элементам (кнопкам) всплывающей панели через 2сек произойдет ее автозакрытие.

скрытый текст
Код кнопки:

Выделить код

Код:

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%3EPopap-Toolbar%21%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAAhdJREFUOE+tk01oE1EUhTN/eTN1pVgNQWJHKFm40apdmUmMXTQQEHGjkCyEoiuraE3sShCLIsUfsqzdKSqtVmgVqS5iKQQEuyiKNAu7KUImXcWYWuhwvHfMDKModuGFDx7vvXPueXeYUOg/lU0+zb/QEehh0XqVyBBKsHfzw4WTqOaPoJpL+RiKDLq0JXCxPP2q7Oi6vvbbfqjJ4uU+E8tHd/sYshQ0sCKRyLeb4zMIC533f0nR5M6uOB3zCRqc2qnXX5crGC5NIT80Ci2sz5CJ7qX7l4GVzWTW7j99i8K9KQzdmSQDsUHi45s1WJyde+cMl57j8t1nLpxC1cLffQMeGEcOQofeDL7S4LirD4n5jHGLPxVP+09s5tw1yREVokEsEAOEGvzWtN5D1IkuQgqe5foObG18mj7nrLy5hOpE3ske2r4uNOlMwGQHrVcHxwahCa1FazNoUlmaverYL47Bnkih9shCZbQHHUJepEsG4YutEQv9N/oR3RVtCSHYxK3Gl/nrsCdTsB8nUHuQwMdSL4yw7LTnUi+OFZEcSSJ+JY54MY50IQ1FUziJWwufX150ak+SqD1MYGX8MOau7WODpXaCLo5tnjXRXehG7HQMqqGCprDXMxjI9nauz9/aj/e3D7ribM82CFU6Txe09ltNSZVa0RNRyIL+kZ9i2TNQeWD8Zp1ic2cWK7L7fq946qakSBzbF/8A350C1KoJvKcAAAAASUVORK5CYII%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%20%0A//%20%u0412%u0432%u0435%u0441%u0442%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0442%u0443%u043B%u0431%u0430%u0440%u0430%0Avar%20popupToolbarName%20%3D%20%22MButtons%22%3B%0A%0Avar%20popupToolbarId%20%3D%20%22__customToolbar_%22%20+%20popupToolbarName.replace%28%22%20%22%2C%20%22_%22%29%3B%0Avar%20contextPopupId%20%3D%20%22popuptoolbar-contextpopup%22%3B%0A%20%0Athis.type%20%3D%20%22menu%22%3B%0Athis._init%20%3D%20function%28%29%20%7B%0A%20%20popupToolbarName%20%3D%20this.label%3B%0A%20%20popupId%20%3D%20popupToolbarName.replace%28%22%20%22%2C%20%22%22%29.toLowerCase%28%29%20+%20%22-%22%20+%20this.type%20+%20%22popup%22%3B%0A%20%20var%20popupToolbar%20%3D%20document.getElementById%28popupToolbarId%29%3B%0A%20%20if%20%28popupToolbar%29%20%7B%0A%20%20%20%20popupToolbar.setAttribute%28%22collapsed%22%2C%20%22true%22%29%3B%0A%20%20%20%20document.persist%28popupToolbarId%2C%20%22collapsed%22%29%3B%0A%20%20%7D%0A%20%0A%20%20var%20popup%20%3D%20document.getElementById%28popupId%29%3B%0A%20%20if%20%28popup%29%20%7B%0A%20%20%20%20popup.hidePopup%28%29%3B%0A%20%20%20%20popup.parentNode.removeChild%28popup%29%3B%0A%20%20%7D%0A%20%0A%20%20popup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20popup.setAttribute%28%22id%22%2C%20popupId%29%3B%0A%20%20popup.setAttribute%28%22position%22%2C%20%22after_start%22%29%3B%0A%20%0A%20%20if%20%28this.type%20%3D%3D%20%22menu%22%29%20%7B%0A%20%20%20%20while%20%28this.firstChild%20%26%26%20this.firstChild.localName%20%3D%3D%20%22menupopup%22%29%20%7B%0A%20%20%20%20%20%20this.firstChild.hidePopup%28%29%3B%0A%20%20%20%20%20%20this.removeChild%28this.firstChild%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20this.appendChild%28popup%29%3B%0A%20%20%20%20popup.setAttribute%28%22onpopupshowing%22%2C%20%27this.parentNode.setPopup%28event%29%3B%27%29%3B%0A%20%20%7D%0A%20%20else%20%7B%0A%20%20%20%20popup.setAttribute%28%22onpopupshowing%22%2C%20%27document.popupNode.setPopup%28event%29%3B%27%29%3B%0A%20%20%7D%0A%20%0A%20%20popup.setAttribute%28%22onpopupshown%22%2C%20%27%7B%5C%0A%20%20%20%20window.addEventListener%28%22popuphidden%22%2C%20function%28e%29%20%7B%5C%0A%20%20%20%20%20%20var%20popup%20%3D%20document.getElementById%28popupId%29%3B%5C%0A%20%20%20%20%20%20if%20%28e.target%20%3D%3D%20popup%29%20%7B%5C%0A%20%20%20%20%20%20%20%20window.removeEventListener%28%22popuphidden%22%2C%20arguments.callee%2C%20false%29%3B%5C%0A%20%20%20%20%20%20%20%20return%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20var%20popupNode%20%3D%20document.popupNode%3B%5C%0A%20%20%20%20%20%20while%20%28popupNode%20%26%26%20popupNode%20%21%3D%20popup%29%20popupNode%20%3D%20popupNode.parentNode%3B%5C%0A%20%20%20%20%20%20if%20%28popupNode%20%3D%3D%20popup%29%20popup.hidePopup%28%29%3B%5C%0A%20%20%20%20%7D%2C%20false%29%3B%5C%0A%20%20%7D%27.replace%28%22popupId%22%2C%20%27%22%27%20+%20popupId%20+%20%27%22%27%29%29%3B%0A%20%0A%20%20popup.setAttribute%28%22onpopuphidden%22%2C%20%27%7B%5C%0A%20%20%20%20var%20popup%20%3D%20event.target%3B%5C%0A%20%20%20%20if%20%28popup.firstChild%20%26%26%20popup.firstChild.localName%20%3D%3D%20%22toolbar%22%29%20%7B%5C%0A%20%20%20%20%20%20var%20popupToolbar%20%3D%20popup.firstChild%3B%5C%0A%20%20%20%20%20%20popupToolbar.removeAttribute%28%22style%22%29%3B%5C%0A%20%20%20%20%20%20popupToolbar.setAttribute%28%22collapsed%22%2C%20%22true%22%29%3B%5C%0A%20%20%20%20%20%20document.persist%28popupToolbar.id%2C%20%22collapsed%22%29%3B%5C%0A%20%20%20%20%20%20var%20navbox%20%3D%20document.getElementById%28%22navigator-toolbox%22%29%3B%5C%0A%20%20%20%20%20%20var%20nextElement%20%3D%20navbox.firstChild%3B%5C%0A%20%20%20%20%20%20while%20%28nextElement%20%26%26%20nextElement.localName%20%21%3D%20%22toolbarset%22%29%20%7B%5C%0A%20%20%20%20%20%20%20%20if%20%28Number%28nextElement.getAttribute%28%22customindex%22%29%29%20%3E%20Number%28popupToolbar.getAttribute%28%22customindex%22%29%29%29%5C%0A%20%20%20%20%20%20%20%20%20%20break%3B%5C%0A%20%20%20%20%20%20%20%20nextElement%20%3D%20nextElement.nextSibling%3B%5C%0A%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20navbox.insertBefore%28popupToolbar%2C%20nextElement%29%3B%5C%0A%20%20%20%20%20%20popupToolbar.firstPermanentChild%20%3D%20null%3B%5C%0A%20%20%20%20%20%20popupToolbar.lastPermanentChild%20%3D%20null%3B%5C%0A%20%20%20%20%20%20popupToolbar.currentSet%20%3D%20popupToolbar.getAttribute%28%22currentset%22%29%3B%5C%0A%20%20%20%20%7D%5C%0A%20%20%20%20while%20%28popup.lastChild%20%26%26%20popup.lastChild.localName%20%3D%3D%20%22menuitem%22%29%5C%0A%20%20%20%20%20%20popup.removeChild%28popup.lastChild%29%3B%5C%0A%20%20%7D%27%29%3B%0A%20%0A%20%20var%20contextPopup%20%3D%20document.getElementById%28contextPopupId%29%3B%0A%20%20if%20%28contextPopup%29%20%7B%0A%20%20%20%20contextPopup.hidePopup%28%29%3B%0A%20%20%20%20contextPopup.parentNode.removeChild%28contextPopup%29%3B%0A%20%20%7D%0A%20%0A%20%20contextPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20contextPopup.setAttribute%28%22id%22%2C%20contextPopupId%29%3B%0A%20%20contextPopup.setAttribute%28%22position%22%2C%20%22at_pointer%22%29%3B%0A%20%20contextPopup.setAttribute%28%22onpopupshowing%22%2C%20%27document.popupNode.setContextPopup%28event%29%3B%27%29%3B%0A%20%0A%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20%22Show%20Context%20Menu%20With%20Toolbar%22%29%3B%0A%20%20menuitem.setAttribute%28%22type%22%2C%20%22checkbox%22%29%3B%0A%20%20menuitem.setAttribute%28%22checked%22%2C%20this.getBoolPref%28%27showContextWithToolbar%27%29%29%3B%0A%20%20menuitem.setAttribute%28%22oncommand%22%2C%20%22document.popupNode.setBoolPref%28%27showContextWithToolbar%27%2C%20this.getAttribute%28%27checked%27%29%20%3D%3D%20%27true%27%29%3B%22%29%3B%0A%20%20contextPopup.appendChild%28menuitem%29%3B%0A%20%20contextPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%20%0A//%20%20this.tooltipText%20%3D%20this.label%3B%0A%20%20%20%20this.tooltipText%20%3D%20%22%22%3B%0A%7D%0A%20%0Athis.setBoolPref%20%3D%20function%28name%2C%20value%29%20%7B%0A%20%20var%20prefs%20%3D%20Cc%5B%22@mozilla.org/preferences-service%3B1%22%5D.getService%28Ci.nsIPrefBranch%29%3B%0A%20%20prefs.setBoolPref%28%22custombuttons.popuptoolbar.%22%20+%20name%2C%20value%29%3B%0A%7D%0A%20%0Athis.getBoolPref%20%3D%20function%28name%29%20%7B%0A%20%20var%20prefs%20%3D%20Cc%5B%22@mozilla.org/preferences-service%3B1%22%5D.getService%28Ci.nsIPrefBranch%29%3B%0A%20%20return%20prefs.getPrefType%28%22custombuttons.popuptoolbar.%22%20+%20name%29%0A%20%20%20%20%20%20%20%20%26%26%20prefs.getBoolPref%28%22custombuttons.popuptoolbar.%22%20+%20name%29%3B%0A%7D%0A%20%0Athis.setPopup%20%3D%20function%28event%29%20%7B%0A%20%20if%20%28this.getBoolPref%28%27showContextWithToolbar%27%29%29%20%7B%0A%20%20%20%20document.popupNode%20%3D%20this%3B%0A%20%20%20%20this.setContextPopup%28event%29%3B%0A%20%20%7D%0A%20%0A%20%20var%20popup%20%3D%20event.target%3B%0A%20%20var%20popupToolbar%20%3D%20document.getElementById%28popupToolbarId%29%3B%0A%20%20if%20%28popupToolbar%20%26%26%20popupToolbar.parentNode%20%21%3D%20popup%20%26%26%20this.parentNode%20%21%3D%20popupToolbar%29%20%7B%0A%20%20%20%20popup.insertBefore%28popupToolbar%2C%20popup.firstChild%29%3B%0A%20%20%20%20popupToolbar.setAttribute%28%22collapsed%22%2C%20%22false%22%29%3B%0A%20%20%20%20if%20%28%21this.getBoolPref%28%27showContextWithToolbar%27%29%29%0A%20%20%20%20%20%20popupToolbar.setAttribute%28%22style%22%2C%20%22border%3A%20none%20%21important%3B%22%29%3B%0A%20%20%7D%0A%20%0A%20%20if%20%28%21popup.firstChild%29%20%7B%0A%20%20%20%20document.popupNode%20%3D%20this%3B%0A%20%20%20%20this.setContextPopup%28event%29%3B%0A%20%20%7D%0A%7D%0A%20%0Athis.setContextPopup%20%3D%20function%28event%29%20%7B%0A%20%20var%20contextPopup%20%3D%20event.target%3B%0A%20%20while%20%28contextPopup.lastChild%20%26%26%20contextPopup.lastChild.localName%20%3D%3D%20%22menuitem%22%29%0A%20%20%20%20contextPopup.removeChild%28contextPopup.lastChild%29%3B%0A%20%0A%20%20var%20toolbars%20%3D%20document.getElementById%28%22navigator-toolbox%22%29.getElementsByTagName%28%22toolbar%22%29%3B%0A%20%20for%20%28var%20i%3D0%3B%20i%3Ctoolbars.length%3B%20i++%29%20%7B%0A%20%20%20%20var%20toolbarname%20%3D%20toolbars%5Bi%5D.getAttribute%28%22toolbarname%22%29%3B%0A%20%20%20%20var%20toolbarid%20%3D%20toolbars%5Bi%5D.getAttribute%28%22id%22%29%3B%0A%20%20%20%20var%20menuitem%20%3D%20contextPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22label%22%2C%20toolbarname%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22name%22%2C%20%22toolbars-radio%22%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22checked%22%2C%20%28this.label%20%3D%3D%20toolbarname%29%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22disabled%22%2C%20%28%22__customToolbar_%22%20+%20toolbarname.replace%28%22%20%22%2C%20%22_%22%29%20%21%3D%20toolbarid%29%20%7C%7C%20%28this.parentNode%20%3D%3D%20toolbars%5Bi%5D%29%29%3B%0A%20%20%20%20menuitem.setAttribute%28%22oncommand%22%2C%20%22document.popupNode.setToolbar%28this.label.toString%28%29%29%3B%22%29%3B%0A%20%20%7D%0A%7D%0A%20%0Athis.setToolbar%20%3D%20function%28toolbarname%29%20%7B%0A%20%20var%20toolbar%20%3D%20document.getElementById%28%22__customToolbar_%22%20+%20toolbarname.replace%28%22%20%22%2C%20%22_%22%29%29%3B%0A%20%20if%20%28toolbar%20%26%26%20toolbar%20%21%3D%20this.parentNode%29%20%7B%0A%20%20%20%20this.label%20%3D%20toolbarname%3B%0A%20%20%20%20if%20%28toolbar.firstChild%20%26%26%20toolbar.firstChild.image%29%0A//%20%20%20%20%20%20this.image%20%3D%20toolbar.firstChild.image%3B%0A%20%0A%20%20%20%20this._init%28%29%3B%0A%20%20%7D%0A%7D%0A%20%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%0A%20%0Athis.showPopup%20%3D%20function%28event%29%20%7B%0A%20%20document.popupNode%20%3D%20this%3B%0A%20%20document.getElementById%28popupId%29.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%0A%20%0Athis.showContextPopup%20%3D%20function%28event%29%20%7B%0A%20%20document.popupNode%20%3D%20this%3B%0A%20%20document.getElementById%28contextPopupId%29.showPopup%28this%2C%20event.screenX%2C%20event.screenY%2C%20%22context%22%2C%20%22none%22%2C%20%22none%22%29%3B%0A%7D%0A%20%0Athis.leftclick%20%3D%20this.showPopup%3B%0A//%20this.rightclick%20%3D%20this.showContextPopup%3B%0A%20%0Aif%20%28this.type%20%3D%3D%20%22menu%22%29%20%7B%0A%20%20this.leftclick%20%3D%20this.hideDropMarker%3B%0A%20%20this.hideDropMarker%28%29%3B%0A%7D%0A%20%0Athis._init%28%29%3B%0A%20%0Athis.setAttribute%28%27onclick%27%2C%20%27if%20%28event.target%20%3D%3D%20event.currentTarget%29%20gQuot%28event%2C%20this%29%3B%27%29%3B%0A%20%0A%0A%0A//%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043C%u0435%u043D%u044E%20%u043F%u043E%u0441%u043B%u0435%20%u043A%u043B%u0438%u043A%u0430%20%u041B%u041A%u041C%20%u043F%u043E%20%u0435%u0433%u043E%20%u044D%u043B%u0435%u043C%u0435%u043D%u0442%u0430%u043C%20%28%u043A%u043D%u043E%u043F%u043A%u0430%u043C%29%20/%20%u0438%u043D%u0442%u0435%u0440%u0432%u0430%u043B%202%u0441%u0435%u043A%0A%0Adocument.getElementById%28popupToolbarId%29.addEventListener%28%22click%22%2C%20openfalse%2C%20true%29%3B%0Afunction%20openfalse%28event%29%20%7B%0A%09%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A%0A%09%09setTimeout%28function%28%29%20%7B%0A%09%09var%20popup%20%3D%20document.getElementById%28popupId%29%3B%0A%09%09window.removeEventListener%28%22popuphidden%22%2C%20arguments.callee%2C%20false%29%3B%0A%09%09var%20popupNode%20%3D%20document.popupNode%3B%0A%09%09popup.hidePopup%28%29%3B%7D%2C%202000%29%3B%0A%09%09%0A%09%09%7D%3B%0A%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

Инициализация:

Выделить код

Код:

/*Initialization code*/
 
// Ввести название тулбара
var popupToolbarName = "MButtons";

var popupToolbarId = "__customToolbar_" + popupToolbarName.replace(" ", "_");
var contextPopupId = "popuptoolbar-contextpopup";
 
this.type = "menu";
this._init = function() {
  popupToolbarName = this.label;
  popupId = popupToolbarName.replace(" ", "").toLowerCase() + "-" + this.type + "popup";
  var popupToolbar = document.getElementById(popupToolbarId);
  if (popupToolbar) {
    popupToolbar.setAttribute("collapsed", "true");
    document.persist(popupToolbarId, "collapsed");
  }
 
  var popup = document.getElementById(popupId);
  if (popup) {
    popup.hidePopup();
    popup.parentNode.removeChild(popup);
  }
 
  popup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup"));
  popup.setAttribute("id", popupId);
  popup.setAttribute("position", "after_start");
 
  if (this.type == "menu") {
    while (this.firstChild && this.firstChild.localName == "menupopup") {
      this.firstChild.hidePopup();
      this.removeChild(this.firstChild);
    }
    this.appendChild(popup);
    popup.setAttribute("onpopupshowing", 'this.parentNode.setPopup(event);');
  }
  else {
    popup.setAttribute("onpopupshowing", 'document.popupNode.setPopup(event);');
  }
 
  popup.setAttribute("onpopupshown", '{\
    window.addEventListener("popuphidden", function(e) {\
      var popup = document.getElementById(popupId);\
      if (e.target == popup) {\
        window.removeEventListener("popuphidden", arguments.callee, false);\
        return;\
      }\
      var popupNode = document.popupNode;\
      while (popupNode && popupNode != popup) popupNode = popupNode.parentNode;\
      if (popupNode == popup) popup.hidePopup();\
    }, false);\
  }'.replace("popupId", '"' + popupId + '"'));
 
  popup.setAttribute("onpopuphidden", '{\
    var popup = event.target;\
    if (popup.firstChild && popup.firstChild.localName == "toolbar") {\
      var popupToolbar = popup.firstChild;\
      popupToolbar.removeAttribute("style");\
      popupToolbar.setAttribute("collapsed", "true");\
      document.persist(popupToolbar.id, "collapsed");\
      var navbox = document.getElementById("navigator-toolbox");\
      var nextElement = navbox.firstChild;\
      while (nextElement && nextElement.localName != "toolbarset") {\
        if (Number(nextElement.getAttribute("customindex")) > Number(popupToolbar.getAttribute("customindex")))\
          break;\
        nextElement = nextElement.nextSibling;\
      }\
      navbox.insertBefore(popupToolbar, nextElement);\
      popupToolbar.firstPermanentChild = null;\
      popupToolbar.lastPermanentChild = null;\
      popupToolbar.currentSet = popupToolbar.getAttribute("currentset");\
    }\
    while (popup.lastChild && popup.lastChild.localName == "menuitem")\
      popup.removeChild(popup.lastChild);\
  }');
 
  var contextPopup = document.getElementById(contextPopupId);
  if (contextPopup) {
    contextPopup.hidePopup();
    contextPopup.parentNode.removeChild(contextPopup);
  }
 
  contextPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup"));
  contextPopup.setAttribute("id", contextPopupId);
  contextPopup.setAttribute("position", "at_pointer");
  contextPopup.setAttribute("onpopupshowing", 'document.popupNode.setContextPopup(event);');
 
  var menuitem = document.createElement("menuitem");
  menuitem.setAttribute("label", "Show Context Menu With Toolbar");
  menuitem.setAttribute("type", "checkbox");
  menuitem.setAttribute("checked", this.getBoolPref('showContextWithToolbar'));
  menuitem.setAttribute("oncommand", "document.popupNode.setBoolPref('showContextWithToolbar', this.getAttribute('checked') == 'true');");
  contextPopup.appendChild(menuitem);
  contextPopup.appendChild(document.createElement("menuseparator"));
 
//  this.tooltipText = this.label;
    this.tooltipText = "";
}
 
this.setBoolPref = function(name, value) {
  var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
  prefs.setBoolPref("custombuttons.popuptoolbar." + name, value);
}
 
this.getBoolPref = function(name) {
  var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
  return prefs.getPrefType("custombuttons.popuptoolbar." + name)
        && prefs.getBoolPref("custombuttons.popuptoolbar." + name);
}
 
this.setPopup = function(event) {
  if (this.getBoolPref('showContextWithToolbar')) {
    document.popupNode = this;
    this.setContextPopup(event);
  }
 
  var popup = event.target;
  var popupToolbar = document.getElementById(popupToolbarId);
  if (popupToolbar && popupToolbar.parentNode != popup && this.parentNode != popupToolbar) {
    popup.insertBefore(popupToolbar, popup.firstChild);
    popupToolbar.setAttribute("collapsed", "false");
    if (!this.getBoolPref('showContextWithToolbar'))
      popupToolbar.setAttribute("style", "border: none !important;");
  }
 
  if (!popup.firstChild) {
    document.popupNode = this;
    this.setContextPopup(event);
  }
}
 
this.setContextPopup = function(event) {
  var contextPopup = event.target;
  while (contextPopup.lastChild && contextPopup.lastChild.localName == "menuitem")
    contextPopup.removeChild(contextPopup.lastChild);
 
  var toolbars = document.getElementById("navigator-toolbox").getElementsByTagName("toolbar");
  for (var i=0; i<toolbars.length; i++) {
    var toolbarname = toolbars[i].getAttribute("toolbarname");
    var toolbarid = toolbars[i].getAttribute("id");
    var menuitem = contextPopup.appendChild(document.createElement("menuitem"));
    menuitem.setAttribute("label", toolbarname);
    menuitem.setAttribute("type", "radio");
    menuitem.setAttribute("name", "toolbars-radio");
    menuitem.setAttribute("checked", (this.label == toolbarname));
    menuitem.setAttribute("disabled", ("__customToolbar_" + toolbarname.replace(" ", "_") != toolbarid) || (this.parentNode == toolbars[i]));
    menuitem.setAttribute("oncommand", "document.popupNode.setToolbar(this.label.toString());");
  }
}
 
this.setToolbar = function(toolbarname) {
  var toolbar = document.getElementById("__customToolbar_" + toolbarname.replace(" ", "_"));
  if (toolbar && toolbar != this.parentNode) {
    this.label = toolbarname;
    if (toolbar.firstChild && toolbar.firstChild.image)
//      this.image = toolbar.firstChild.image;
 
    this._init();
  }
}
 
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.showPopup = function(event) {
  document.popupNode = this;
  document.getElementById(popupId).showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
}
 
this.showContextPopup = function(event) {
  document.popupNode = this;
  document.getElementById(contextPopupId).showPopup(this, event.screenX, event.screenY, "context", "none", "none");
}
 
this.leftclick = this.showPopup;
// this.rightclick = this.showContextPopup;
 
if (this.type == "menu") {
  this.leftclick = this.hideDropMarker;
  this.hideDropMarker();
}
 
this._init();
 
this.setAttribute('onclick', 'if (event.target == event.currentTarget) gQuot(event, this);');
 


// автоматически закрывает меню после клика ЛКМ по его элементам (кнопкам) / интервал 2сек

document.getElementById(popupToolbarId).addEventListener("click", openfalse, true);
function openfalse(event) {
        if(event.button == 0) {

        setTimeout(function() {
        var popup = document.getElementById(popupId);
        window.removeEventListener("popuphidden", arguments.callee, false);
        var popupNode = document.popupNode;
        popup.hidePopup();}, 2000);
        
        };

};


За советы спасибо bunda1

Добавлено:
31.10.11 - Исправлен код автозакрытия панели после клика ЛКМ

Отредактировано Inko7 (31-10-2011 10:45:07)

Отсутствует

 

№8728-10-2011 21:46:20

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Многоцветное автовыделение( Firefox 24+ ) от 07.10.2016.
Выделяет разными цветами различные слова/тексты на страницах во всех открытых вкладках. При наведении курсором на кнопку в сплывающей подсказке отображался текст для автовыделение вместе с подсказкой по кнопке.
Для добавления слов или фраз их нужно выделить на странице и нажать СКМ либо ввести в поле ввода после нажатия СКМ на кнопке - можно в поле ввода за один раз ввести несколько слов/текстов раздельных через разделитель |. Также можно после нажатия Shift+ПКМ редактировать, добавлять, удалять сохранные слова/тексты для автовыделение в вкладке Справка кнопки, слова/тексты нужно размещать в столбике без пустых строк.
Можно менять цвета, очередность цветов и и добавлять цвета для автовыделение в коде инициализации в строке: var colors = ["#FFFF00", "#FF0000", "#66FFFF", "#66FF99", "#FFA500", "#FF00FF"];


ЛКМ =>  Bключить/выключить,
СКМ =>  Добавить текст для автовыделения, выделенный или из диалога ввода,
ПКМ =>  Забыть весь текст для автовыделения,
Shift+ПКМ => Редактировать текст для автовыделения,
Ctrl+ПКМ   => Меню кнопки.

Код кнопки:
Код кнопки:

Выделить код

Код:

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%u041C%u043D%u043E%u0433%u043E%u0446%u0432%u0435%u0442%u043D%u043E%u0435%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%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%20%7B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%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%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%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%20Ctrl%20+%20%u041F%u041A%u041C%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%20e.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%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%0A%20%20%20%20%20%20%20%20function%20observer%28subject%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20%28e%2C%20doc%20%3D%20e.target%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20doc.URL.startsWith%28%22chrome%3A//custombuttons%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%20Services.ww.unregisterNotification%28observer%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.getElementsByTagName%28%22tabs%22%29%5B0%5D.children%5B2%5D.click%28%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%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20Services.ww.registerNotification%28observer%29%3B%0A%0A%20%20%20%20%20%20%20%20custombuttons.editButton%28this%29%3B%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%0A%20%20%20%20%20%20%20%20%7D%20%0A%7D%3B%0A%0A%0A//%20%u0426%u0432%u0435%u0442%u0430%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%2C%20%u043C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20..........%0Avar%20colors%20%3D%20%5B%22%23FFFF00%22%2C%20%22%23FF0000%22%2C%20%22%2366FFFF%22%2C%20%22%2366FF99%22%2C%20%22%23FFA500%22%2C%20%22%23FF00FF%22%5D%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%20self.label%20+%20%22%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%5Cn%u041F%3A%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%5CnShift+%u041F%3A%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%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%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+%20array.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..........%0Avar%20s%20%3D%20%22CB.autoHighlight%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%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%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%u0432%u0441%u0435%20%u0438%u0441%u043A%u043E%u043C%u044B%u0435%20%u0442%u0435%u043A%u0441%u0442%u044B%20%u0440%u0430%u0437%u043D%u044B%u043C%u0438%20%u0446%u0432%u0435%u0442%u0430%u043C%u0438%20..........%0Afunction%20doHighlight%28node%20%3D%20content.document.body%29%20%7B%0A%20%20%20if%20%28%20%21cbu.getPrefs%28s%29%20%7C%7C%20%21node%29%20return%3B%0A%20%20%20%0A%20%20%20//%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u043D%u0435%20%u043F%u0443%u0441%u0442%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0439%20%u0443%u0437%u0435%u043B%0A%20%20%20if%20%28%20node.nodeName%20%3D%3D%20%22%23text%22%20%26%26%20node.data.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20data%20%3D%20node.data.toLowerCase%28%29%2C%20highlightText%20%3D%20getArray%28%29%3B%20%0A%20%20%20%20%20%20%20%20var%20arr%20%3D%20highlightText.filter%28str%3D%3E%20%7B%20return%20%7Edata.indexOf%28str%29%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20arr%20%21%3D%20%22%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20arr.reverse%28%29.forEach%28str%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20parentNode%20%3D%20node.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20color%20%3D%20colors%5BhighlightText.indexOf%28str%29%5D%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%20%20if%20%28%20parentNode.className%20%3D%3D%20_id%20%29%20%7B%20//%20%u0435%u0441%u043B%u0438%20%u043D%u0430%u0434%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u043C%20%u0443%u0437%u043B%u043E%u043C%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u0443%u0436%u0435%20%u0441%u043E%u0437%u0434%u0430%u043B%u0430%20span%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parentNode.style.backgroundColor%20%3D%20color%3B%0A%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%7D%0A%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%20var%20span%20%3D%20content.document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.style.backgroundColor%20%3D%20color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20_id%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20middle%20%3D%20node.splitText%28data.indexOf%28str%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20middle.splitText%28str.length%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20middle%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20span.appendChild%28middle%29%3B%0A%20%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%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%20node.nodeType%20%3D%3D%201%20%26%26%20node.firstChild%20%26%26%20%21/script%7Cstyle/.test%28node.localName%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...node.childNodes%5D.forEach%28node%3D%3E%20doHighlight%28node%29%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AdoHighlight%28%29%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%20doHighlight%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%20doHighlight%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%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%u0435%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20..........%0Afunction%20clearHighlight%28reason%20%3D%20false%29%20%7B%0A%20%20%20if%20%28%20reason%20%3D%3D%20%27destructor%27%20%29%20return%3B%0A%20%20%20%0A%20%20%20for%20%28%20var%20br%20of%20gBrowser.browsers%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%5B...br.contentDocument.querySelectorAll%28%27SPAN%5Bclass%3D%27%20+%20_id%20+%20%27%5D%27%29%5D%0A%20%20%20%20%20%20%20%20%20.forEach%28el%3D%3E%20el.style%20%3D%20%22%22%20%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%0AaddDestructor%28clearHighlight%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..........%0Afunction%20toggleHighlightValue%28arg%29%20%7B%20%0A%20%20if%20%28%20arg%20%3D%3D%20%27clear%27%20%29%0A%20%20%20%20%20%20%20var%20text%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%2C%20array%20%3D%20getArray%28%29%3B%20%0A%20%20%20%20%20%20%20var%20array%20%3D%20%28array%20%3D%3D%20%22%22%29%20%3F%20%22%22%20%3A%20array.join%28%22%5Cn%22%29%20+%20%22%5Cn%22%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20if%20%28%20sel%20%29%20%7B%20var%20text%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%20text%20%3D%20array%20+%20val.split%28%22%7C%22%29.join%28%22%5Cn%22%29%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%0A%20%20saveTextToHelp%28text.toLowerCase%28%29%29%3B%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%0A%20%20cbu.setPrefs%28s%2C%20%28arg%20%3D%3D%20%27add%27%29%29%3B%0A%20%20cbu.getPrefs%28s%29%20%3F%20doHighlight%28%29%20%3A%20clearHighlight%28%29%3B%0A%20%20%0A%20%20var%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20notification%29%3B%0A%20%20setTimeout%28%28%29%3D%3E%20alertsService.closeAlert%28%29%2C%201500%29%3B%0A%7D%3B%0A%0A%0A//%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%27%u0421%u043F%u0440%u0430%u0432%u043A%u0430%27%20..........%0Afunction%20saveTextToHelp%28text%29%20%7B%0A%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20dir.initWithPath%28dir.path%20+%20%22%5C%5Cextensions%5C%5Ccustombuttons@xsms.org%5C%5Ccomponents%5C%5CCustomButtonsService.js%22%29%3B%0A%20%20%20var%20url%20%3D%20Services.io.newFileURI%28dir%29.spec%2C%20cbs%20%3D%20%7B%7D%3B%0A%20%20%20Services.scriptloader.loadSubScript%28url%2C%20cbs%29%3B%0A%20%20%20var%20AO%20%3D%20new%20cbs.AppObject%28%29%2C%20btn%20%3D%20AO.getButton%28_id%29%3B%0A%0A%20%20%20self.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20btn.setAttribute%28%22Help%22%2C%20text%29%3B%0A%20%20%20AO.overlay.saveOverlayToProfile%28%29%3B%20%20%20%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%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%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%0A%20%20%20return%20%28custombutton.buttonGetHelp%28self%29%29.toLowerCase%28%29.split%28%22%5Cn%22%29.filter%28el%3D%3E%20/%5CS/.test%28el%29%29%3B%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%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/*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 (30-03-2013 20:12:49)

Отсутствует

 

№8802-02-2012 20:47:27

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Переключить джетпак( Firefox 7+ ) от 29.07.2013.
Кнопка даёт возможность быстро включить или выключить конкретное джетпак расширение - Jetpacks. Джетпак для переключения надо выбрать в меню с джетпаками которое можно открыть правым кликом на кнопке, после выбора иконка кнопки меняется на иконку джетпака. Всплывающая подсказка(tooltip) у кнопки показывает джетпак для переключения. Иконка кнопки отображает состояние джетпака для переключения.

Скриншоты меню с джетпаками и подсказки у кнопки
k3zw.jpg  1lir.jpg

ЛКМ => Включить / выключить джетпак.
СКМ => CB меню,
ПКМ => Открыть меню с джетпаками.

Код кнопки и код для инициализации:
Код кнопки:

Выделить код

Код:

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%u0434%u0436%u0435%u0442%u043F%u0430%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAADAwMAAQMEBgEDBQoBAwUIAQUHCwEDBQcAAAABAAAAAQEEBwkBBAYKAQMFCQEDBQgAAAECAAAAAgAAAAEAAAABAAAAAAwOEAUQdam9E5TV6BOPzt8Si8jfBBsnLwAAAAUAAAAABjFHUROT1OoTj87dEo3M4wMbJzQAAAAAAAECCQAAAAQAAAABAAQGCRGY1uAXvf//Fr3//xKc29AABAYAAAMFBAAAAAADGCIXFLH48RW6//8Vt///BCU1OwAAAAAAAwQEAAAAAAAAAAAABAUJDpTN2w+2/v8Osvj9Eanp6AIWHhcAAAAAAAAAAAUwQTkSt/3/ErP5+xK0+v8DJDI7AAAAAAACAgMAAQICAAAAAAADBQkPodbgINL//x/H/PwOwP//DJTIwwU9U0YGSGFVDaXf3A++//8Pufr8D7v+/wQuPj4CHCYoAh4oKQAAAAAAAAABAAYICwxqjJUUVGtdJ3aSiCzG+/oKxP//Dsj//w3I//8Nwv7+DL39/wy+/f8Mvv3/C6vk4A26+PsNv/7/BU9oZAAAAAAAAAAAAAAAAAACAwMAAAAAFm2JgBDN//8Jvff5CsD6/ArB/P0Kwv7/CsL+/wrC/v8IxP//CsD7+wnJ//8Io9XZAQMEBAAAAAAAAgIDAQkMDAEAAAACQFJGB9D//wfE+/0Hxv7/B8b+/wfG/v8Hxv7/B8b+/w7O//8EyP39DNX//x6nzM4AAAAAAAEBAQAEBQIAAQICAAAAAAV6mpEH1f//B8j8/AfK//8Hyv//B8r//wfK//8Fyv//H6XJwDK94+kxvuXoDj5LQwAAAAABBwgMEoOirhFxi34Ujq6lG9L//xrO//8azv//Gs7//xrO//8bzv//G87//RvP//8FKTM6BAUEBQMLDg4AAAAAAAAAAQEEBQklstXgLub//yzZ/f0r0P79MNH//zDR//8w0f//L9H//yvQ/v0r0P/7LND//worND0AAAAAAQMDBAACAgIAAAAAAQgKB0m31t1f4P//XNn9/Vvd//9H1//+Rdb//0TW//9K2P/+YN7+/2Dd//5b2v7/DioyOAAAAAABAwMDAAAAAAAAAAAAAQEAFCUqLRwwNj4aLDA6HTU9PFLF5t9b3f//XeH//0isycAZKS4wHC80PhotMzkDBwgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAgAAAAAYLTQybtv8/23b+/tv4P//YsTi6QcNDxAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgICBAUFAAAAABgnLSmV6Pr6i+r//5Hx//+Fzd7fBQkMDAAAAAEBAwMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAEhja2SUx9ngjsDR1TJFTEQAAAAAAQICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAMEBQYDAwQEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%u043E%u0442%2029.07.2013.%20................................%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.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20%20//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0435%u0442%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%u0439%20%u0432%20%27about%3Aconfig%27....%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21cbu.isPref%28%20jetName%20%29%20%29%20%7B%20%20%20//%20%u0435%u0441%u043B%u0438%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%20%u043D%u0435%20%u0443%u043A%u0430%u0437%u0430%u043D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%20button.image%2C%20button.label%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u0435%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%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%7D%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20button.toggle%20%3D%20false%2C%20jetpacksName%20%3D%20aPrefs.getValue%28%20jetName%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20AddonManager.getAddonsByTypes%28%5B%22extension%22%5D%2C%20function%28addons%29%20%7B%20%20//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20addons.forEach%28function%28addon%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20addons%5Bi%5D.name%20%3D%3D%20jetpacksName%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%20addons%5Bi%5D.userDisabled%20%3D%20%21addons%5Bi%5D.userDisabled%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%20cbu.setPrefs%28%20jet%2C%20%21addons%5Bi%5D.userDisabled%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%20button.toggle%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%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%20%20%7D%29%3B%0A%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%20if%20%28%20button.toggle%20%3D%3D%20false%20%29%20%7B%20%20//%20%u0435%u0441%u043B%u0438%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%22chrome%3A//global/skin/icons/error-16.png%22%2C%20button.label%2C%20%22%u0414%u0436%u0435%u0442%u043F%u0430%u043A%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%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%7D%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0421%u041A%u041C%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u0443%u044E%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u0443%u044E%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20gShowPopup%28this%29%20%7D%3B%20%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u041F%u041A%u041C%20%u0441%u043E%u0437%u0434%u0430%u0451%u0442%20%u0438%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043C%u0435%u043D%u044E%20%u0441%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%u0430%u043C%u0438%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%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%20%0A%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20node%20%29%20node.parentNode.removeChild%28%20node%20%29%3B%20//%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0441%u0442%u0430%u0440%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%0A%20%20%20%20%20%20%20%20%20%20var%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%20%20%20%20%20%20%20%20%20%20menuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%20%20%20%20%20%20%20%20%20%20AddonManager.getAddonsByTypes%28%5B%22extension%22%5D%2C%20function%28addons%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20addons.forEach%28function%28addon%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20addons%5Bi%5D.operationsRequiringRestart%20%3E%200%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20addons%5Bi%5D.name%20%29%3B%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%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%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%20mItem.setAttribute%28%22image%22%2C%20addons%5Bi%5D.iconURL%20%7C%7C%20addons%5Bi%5D.icon64URL%20%7C%7C%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20addons%5Bi%5D.name%20%3D%3D%20aPrefs.getValue%28%20jetName%2C%200%20%29%20%29%20mItem.setAttribute%28%27style%27%2C%20%27color%3A%20red%3B%20font-weight%3A%20bold%3B%27%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%20%20%20%20%20%20%20%20mItem.addEventListener%28%27click%27%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20%28e%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%20%20%20%20%20aPrefs.setValue%28%20jetName%2C%20addons%5Bi%5D.name%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%20cbu.setPrefs%28%20jet%2C%20addons%5Bi%5D.isActive%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%20setImage%28%20this.image%20%29%3B%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%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%20%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%20menuPopup.appendChild%28mItem%29%3B%0A%20%20%20%20%20%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%7D%29%3B%20%20%20%20%20%20%20%20%20%0A%20%20%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%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%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%20button%20%3D%20this%3B%0Avar%20aPrefs%20%3D%20Application.prefs%3B%0Avar%20alertsService%20%3D%20Components.classes%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Components.interfaces.nsIAlertsService%29%3B%0A%0Avar%20num%20%3D%20_id.replace%28/custombuttons-button/g%2C%20%22%22%29%3B%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0438%u043D%u0434%u0438%u0432%u0438%u0434%u0443%u0430%u043B%u044C%u043D%u044B%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0434%u043B%u044F%20%27about%3Aconfig%27%20%0Avar%20jet%20%3D%20%22CB%22%20+%20num%20+%20%22.toggleJetpacks%22%3B%20%0Avar%20jetName%20%3D%20%22CB%22%20+%20num%20+%20%22.toggleJetpacks.name%22%3B%20%0Aif%20%28%20%21cbu.isPref%28%20jet%20%29%20%29%20cbu.setPrefs%28%20jet%2C%20true%20%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%20function%28%29%20%7B%0A%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0438%20%u043E%u0431%u0440%u0435%u0437%u0430%u0442%u044C%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0443%20....%0A%20%20%20%20%20var%20val%20%3D%20aPrefs.getValue%28%20jetName%2C%200%29%3B%0A%20%20%20%20%20val%20%3D%20%28%20val%20%3D%3D%200%20%29%20%3F%20%22%u043D%u0435%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043E%22%20%3A%20val%3B%0A%20%20%20%20%20var%20jetpacks%20%3D%20val.substring%280%2C50%29%20+%20%28%20%28val.length%20%3E%2050%29%20%3F%20%27....%27%20%3A%20%22%22%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20this.tooltipText%20%3D%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%3A%20%22%20+%20jetpacks%20+%20%20%22%5Cn%u041B%3A%20B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20-%20%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%u0430%u043C%u0438%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u0417%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043D%u0430%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0430%u0435%u043C%u043E%u0433%u043E%20%u0434%u0436%u0435%u0442%u043F%u0430%u043A%u0430%20................................%0Afunction%20setImage%28%20image%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%20%29%3B%0A%20%20%20var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28%20link%20%29.wrappedJSObject%3B%0A%20%20%20param.image%20%3D%20image%3B%0A%20%20%20custombuttons.cbService.installButton%28%20param%20%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................................%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20%20cbu.getPrefs%28%20jet%20%29%20%0A%20%20%20%20%3F%20button.style.filter%20%3D%20%27%27%20%20%20%20%0A%20%20%20%20%3A%20button.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28%20jet%2C%20toggleImage%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20jet%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%0A%0A%0A//%20%u0418%u043A%u043E%u043D%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043D%u0435%20%u0431%u043E%u043B%u044C%u0448%u0435%2016px%20................................%0Avar%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Aicon.style.width%20%3D%20%2216px%22%3B%20icon.style.height%20%3D%20%2216px%22%3B%0Athis.onDestroy%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20%20var%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20%20%20icon.style.width%20%3D%20%2216px%22%3B%20icon.style.height%20%3D%20%2216px%22%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

Инициализация:

Выделить код

Код:

// Переключить джетпак от 29.07.2013. ................................


// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {

     // ЛКМ переключает джетпак указанный в 'about:config'....
     if ( e.button == 0 ) {

          if ( !cbu.isPref( jetName ) ) {   // если джетпак для переключения не указан
               alertsService.showAlertNotification( button.image, button.label, "Установите джетпак для переключения", false, "", null, "");
               return;
               }         
          
          button.toggle = false, jetpacksName = aPrefs.getValue( jetName, 0);
          AddonManager.getAddonsByTypes(["extension"], function(addons) {  // переключить джетпак
             addons.forEach(function(addon, i) {
                    if ( addons[i].name == jetpacksName ) {
                         addons[i].userDisabled = !addons[i].userDisabled;
                         cbu.setPrefs( jet, !addons[i].userDisabled );
                         button.toggle = true;
                         }                                        
                    });
                    
             if ( button.toggle == false ) {  // если джетпак для переключения не найден
                  alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", button.label, "Джетпак для переключения не найден", false, "", null, "");
                  }
          });    
          }
     
     // СКМ открывает стандартную контекстную меню кнопки ....      
     if ( e.button == 1 ) { gShowPopup(this) };      
     
     // ПКМ создаёт и открывает меню с джетпаками ....     
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();
          
          var node = document.getElementById(this.id + "-menuPopup");
          if ( node ) node.parentNode.removeChild( node ); // удалить старое меню

          var menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup")); // создать новое меню
          menuPopup.id = this.id + "-menuPopup";
          AddonManager.getAddonsByTypes(["extension"], function(addons) {
          addons.forEach(function(addon, i) {
                 if ( addons[i].operationsRequiringRestart > 0 ) return;
                 var mItem = document.createElement("menuitem");    
                 mItem.setAttribute("label", addons[i].name );          
                 mItem.setAttribute("class", "menuitem-iconic");               
                 mItem.setAttribute("image", addons[i].iconURL || addons[i].icon64URL || "chrome://mozapps/skin/extensions/extensionGeneric-16.png");    
                 if ( addons[i].name == aPrefs.getValue( jetName, 0 ) ) mItem.setAttribute('style', 'color: red; font-weight: bold;');
                 
                 mItem.addEventListener('click', 
                       function (e) { 
                          aPrefs.setValue( jetName, addons[i].name );
                          cbu.setPrefs( jet, addons[i].isActive );
                          setImage( this.image );  
                       } 
                 ); 
                  
                 menuPopup.appendChild(mItem);
                 });
          });         
          menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");          
          }    
};


// Объявляем переменные для этой вкладки ................................
var button = this;
var aPrefs = Application.prefs;
var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);

var num = _id.replace(/custombuttons-button/g, ""); // создать индивидуальные настройки для 'about:config' 
var jet = "CB" + num + ".toggleJetpacks"; 
var jetName = "CB" + num + ".toggleJetpacks.name"; 
if ( !cbu.isPref( jet ) ) cbu.setPrefs( jet, true );


// Подсказка для кнопки ................................
this.onmouseover = function() {
     // получить и обрезать подсказку ....
     var val = aPrefs.getValue( jetName, 0);
     val = ( val == 0 ) ? "не установлено" : val;
     var jetpacks = val.substring(0,50) + ( (val.length > 50) ? '....' : "" );              
     
     this.tooltipText = "Переключить: " + jetpacks +  "\nЛ: Bключить - выключить \nС: CB Меню \nП: Открыть меню с джетпаками";               
};


// Заменить иконку кнопки на иконку переключаемого джетпака ................................
function setImage( image ) {                    
   var link = custombuttons.makeButtonLink("edit", _id );
   var param = custombuttons.cbService.getButtonParameters( link ).wrappedJSObject;
   param.image = image;
   custombuttons.cbService.installButton( param );
};


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек ................................
function toggleImage() {
    cbu.getPrefs( jet ) 
    ? button.style.filter = ''    
    : button.style.filter = 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")';
};
toggleImage();
gPrefService.addObserver( jet, toggleImage, false );
addDestructor(function() { gPrefService.removeObserver( jet, toggleImage, false ) });


// Иконка кнопки не больше 16px ................................
var icon = document.getAnonymousElementByAttribute( this, "class", "toolbarbutton-icon");
icon.style.width = "16px"; icon.style.height = "16px";
this.onDestroy = function () {
     var icon = document.getAnonymousElementByAttribute( this, "class", "toolbarbutton-icon");
     icon.style.width = "16px"; icon.style.height = "16px";
};

Отредактировано bunda1 (29-07-2013 05:05:29)

Отсутствует

 

№8905-02-2012 17:58:53

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Red Links( Firefox24+ ) от 26.08.2016.
Кнопка дает возможность быстро менять цвет всех внутренних и внешних ссылок на всех страницах.

При наведении курсором на кнопку в сплывающей подсказке(тултипе) отражаются настройки кнопки:
23ae4e18ef062263c1ac34432b6a761f.png

Настройки кнопки в меню кнопки:
fd0f1abbd9a05ae9c1b0c5f27f27a555.png

ЛКМ => Включить - выключить,
ПКМ => Mеню кнопки,
Двойной ПКМ => CB меню
Код кнопки и инициализация:
Код кнопки:

Выделить код

Код:

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%3ERed%20links%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAASw8NZZYdGuubHhv/mh4b/poeG/+aHhv/mh4b/5oeG/+aHhv/mh4b/5oeG/+aHhv/mh4b/pseG/+WHRrrSw8NZQAAAABODw1oqSEd/58fG/6eHxv/nh8b/54fG/+eHxv/nh8b/54fG/+dHxv/nh8b/54fG/+eHxv/nh8b/54fG/+fHxv+qSEd/04PDWeeHhvjpB8c/6EfHP2iHxz/oh8c/6IfHP+iHxv/oh8b/6UgHf+lIB3/ox8c/6IfG/+iHxz/oh8c/6IfHP+hHxz9pB8c/54eG+OnIBz9ph8c/6cfHP+nHxz/px8c/6YfHP+pIB3/qSMg/50dGv+cHBn/pyIf/6ohHf+mHxz/px8c/6cfHP+nHxz/ph8c/6cgHP2rIBz+qyAc/6sgHP+rIBz/qiAc/68iHv+iHhr/cwMC/2sCAv9rAwP/bQEA/5obGP+vIh7/qiAc/6sgHP+rIBz/qyAc/6sgHP6vIBz/ryAc/68gHP+uIBz/syId/50bGP9pAAD/oGFg/+LMzP/kz8//p2xr/2gBAP+hHBn/tCMe/64gHP+vIBz/ryAc/68gHP+zIRz/syEc/7IhHP+1Ih3/qR8b/2cAAP+yfn3///////v8/P/7+/v//////7uMjP9rAAD/rB8a/7YjHf+yIRz/syEc/7MhHP+4IR3/uCEd/7chHf+/JiL/hwYE/51fX///////9fLy/6xPTf+iQ0L/7+np//////+2h4f/dwQD/7YiHv+3IR3/uCEd/7ghHf+8Ih3/vCId/7siHf/BJSD/hAkH/9jBwf//////mUlI/5MHA/9rAAD/iDc2/+/j4///////oWVk/6MPCv/IKiX/uiId/7wiHf/AIh3/wCId/78iHf/HJSD/lA4L/9XBwf//////kkRD/14AAP+8j47/3sXF/5xVVf/Ts7L/izc3/3kAAP+cEA3/xSQe/8AjHv/GIh3/xiId/8YiHf/JJiH/uBIO/6xkY///////+PHx/4w6Of/Ts7L//////+bT0/91Ghn/awsK/9nBwf+0ior/nAoG/84lIP/LIx3/yyMd/8sjHf/KIx3/0SYg/7IQC/+zfX3///////Pq6f+bVFP/38nJ///////p2dn/jTw7/+3e3v//////uomJ/6kMB//QIx3/0CMd/9AjHf/QIx3/zyMd/9gnIf+mCQX/q3l5///////QsLD/cQ4N/+LNzf//////487O/55XVv/y6Of//////8WVlP/VIx3+1SMd/9UjHf/VIx3/1SMd/9QkHf/bJh//qw4J/7xkYv+MNTT/bQYF/4o2Nv/dxMT//////658fP+CKir/+PLy//////7cIxz92iMc/9sjHP/bIxz/2yMc/9sjHP/ZIxz/5igg/8ETDv9gAAD/2r29//fy8f+aU1L/t3x8/7w7N/9mAAD/rHp6//////3aIhvj4SQc/98jHP3gIxz/4CMc/+AjHP/gIxz/3yMc/+EoIf+EBwX/rX5+///////u6un/njU0/4IAAP95ISD96tnZ//T39+NxEg5o9yce/+ckHP7kJBz/5SQc/+UkHP/lJBz/5CQc/+klHf/dIxz/cgAA/616ev//////8+3u/69/f//l09P+/////318fGcBAAAAcRINZeQjG+vsJBz/6iQc/uskHP/rJBz/6yQc/+kkHP/yJh7/0iEb/2cAAP+3hIT//////v/////39/fre3p6ZQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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%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%20addColorForLinks%28%20cbu.setPrefs%28%22CB.RedLinks%22%2C%20%21cbu.getPrefs%28%22CB.RedLinks%22%29%29%20%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%20menu.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%0A%7D%3B%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%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%28%22CB.RedLinks%22%2C%20false%29%3B%0Acbu.isPref%28%22CB.RedLinks.internalColor%22%2C%20%22red%22%29%3B%0Acbu.isPref%28%22CB.RedLinks.externalColor%22%2C%20%22green%22%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%20this.tooltipText%20%3D%20self.label%20+%20%22%5Cn%u041B%3A%20%20%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20-%20%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%5Cn%u041F%3A%20M%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%20%5Cn%u0414%u041F%3A%20CB%20%u043C%u0435%u043D%u044E%22%20+%20%22%5Cn%5Cn%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%22%u0426%u0432%u0435%u0442%20%u0432%u043D%u0435%u0448%u043D%u0438%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%3A%20%22%20+%20cbu.getPrefs%28%22CB.RedLinks.externalColor%22%29%20+%20%22%5Cn%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%22%u0426%u0432%u0435%u0442%20%u0432%u043D%u0443%u0442%u0440%u0435%u043D%u043D%u0438%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%3A%20%22%20+%20cbu.getPrefs%28%22CB.RedLinks.internalColor%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0Avar%20array%20%3D%20%5B%0A%20%20%20%7B%20label%3A%20%27%u0426%u0432%u0435%u0442%20%u0432%u043D%u0435%u0448%u043D%u0438%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%3A%20%27%2C%20value%3A%20%27CB.RedLinks.externalColor%27%2C%20default%3A%20%27red%27%7D%2C%0A%20%20%20%7B%20label%3A%20%27%u0426%u0432%u0435%u0442%20%u0432%u043D%u0443%u0442%u0440%u0435%u043D%u043D%u0438%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%3A%20%27%2C%20value%3A%20%27CB.RedLinks.internalColor%27%2C%20default%3A%20%27green%27%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0Avar%20menu%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%20+%20cbu.getPrefs%28m.value%29%29%3B%20%20%20%20%20%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20var%20color%20%3D%20custombuttons.promptBox%28mItem.label%2C%20%27%u041E%u0442%u043C%u0435%u043D%u0430%20%u0432%u0435%u0440%u043D%u0451%u0442%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043F%u043E%20%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%27%29%5B1%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20m.default%3B%0A%20%20%20%20%20%20cbu.setPrefs%28m.value%2C%20color%29%3B%0A%20%20%20%20%20%20mItem.label%20%3D%20m.label%20+%20color%3B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20addColorForLinks%28%29%3B%0A%20%20%20%7D%0A%20%20%20menu.appendChild%28mItem%29%3B%0A%7D%29%3B%0Amenu.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%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..............%0Avar%20s%20%3D%20%22CB.RedLinks%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%20%21cbu.getPrefs%28s%29%0A%20%20%20%3F%20self.image%20%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw1LZR0aluseG5v/Hhua/h4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/h4bm/8dGpbrDw1LZQAAAAAPDU5oIR2p/x8bn/4fG57/Hxue/x8bnv8fG57/Hxue/x8bnv8fG53/Hxue/x8bnv8fG57/Hxue/x8bnv8fG5/+IR2p/w8NTmceG57jHxyk/x8cof0fHKL/Hxyi/x8cov8fG6L/Hxui/yAdpf8gHaX/Hxyj/x8bov8fHKL/Hxyi/x8cov8fHKH9Hxyk/x4bnuMgHKf9Hxym/x8cp/8fHKf/Hxyn/x8cpv8gHan/IyCp/x0anf8cGZz/Ih+n/yEdqv8fHKb/Hxyn/x8cp/8fHKf/Hxym/yAcp/0gHKv+IByr/yAcq/8gHKv/IByq/yIer/8eGqL/AwJz/wICa/8DA2v/AQBt/xsYmv8iHq//IByq/yAcq/8gHKv/IByr/yAcq/4gHK//IByv/yAcr/8gHK7/Ih2z/xsYnf8AAGn/YWCg/8zM4v/Pz+T/bGun/wEAaP8cGaH/Ix60/yAcrv8gHK//IByv/yAcr/8hHLP/IRyz/yEcsv8iHbX/Hxup/wAAZ/9+fbL///////z8+//7+/v//////4yMu/8AAGv/Hxqs/yMdtv8hHLL/IRyz/yEcs/8hHbj/IR24/yEdt/8mIr//BgSH/19fnf//////8vL1/09NrP9DQqL/6env//////+Hh7b/BAN3/yIetv8hHbf/IR24/yEduP8iHbz/Ih28/yIdu/8lIMH/CQeE/8HB2P//////SUiZ/wcDk/8AAGv/NzaI/+Pj7///////ZWSh/w8Ko/8qJcj/Ih26/yIdvP8iHcD/Ih3A/yIdv/8lIMf/DguU/8HB1f//////REOS/wAAXv+Pjrz/xcXe/1VVnP+zstP/NzeL/wAAef8QDZz/JB7F/yMewP8iHcb/Ih3G/yIdxv8mIcn/Eg64/2RjrP//////8fH4/zo5jP+zstP//////9PT5v8aGXX/Cwpr/8HB2f+KirT/Cgac/yUgzv8jHcv/Ix3L/yMdy/8jHcr/JiDR/xALsv99fbP//////+rp8/9UU5v/ycnf///////Z2en/PDuN/97e7f//////iYm6/wwHqf8jHdD/Ix3Q/yMd0P8jHdD/Ix3P/ych2P8JBab/eXmr//////+wsND/Dg1x/83N4v//////zs7j/1dWnv/o5/L//////5WUxf8jHdX+Ix3V/yMd1f8jHdX/Ix3V/yQd1P8mH9v/Dgmr/2RivP81NIz/BgVt/zY2iv/ExN3//////3x8rv8qKoL/8vL4//////4jHNz9Ixza/yMc2/8jHNv/Ixzb/yMc2/8jHNn/KCDm/xMOwf8AAGD/vb3a//Lx9/9TUpr/fHy3/zs3vP8AAGb/enqs//////0iG9rjJBzh/yMc3/0jHOD/Ixzg/yMc4P8jHOD/Ixzf/ygh4f8HBYT/fn6t///////q6e7/NTSe/wAAgv8hIHn92dnq//f39OMSDnFoJx73/yQc5/4kHOT/JBzl/yQc5f8kHOX/JBzk/yUd6f8jHN3/AABy/3p6rf//////7e7z/39/r//T0+X+/////3x8fWcAAAEAEg1xZSMb5OskHOz/JBzq/iQc6/8kHOv/JBzr/yQc6f8mHvL/IRvS/wAAZ/+EhLf//////v/////39/frenp7ZQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%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%0A%0A%0A//%20%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u0446%u0432%u0435%u0442%20%u0432%u043D%u0443%u0442%u0440%u0435%u043D%u043D%u0438%u0445%20%u0438%20%u0432%u043D%u0435%u0448%u043D%u0438%u0445%20%u0441%u0441%u044B%u043B%u043E%u043A%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20..........%0Afunction%20addColorForLinks%28%29%20%7B%0A%20%20%20var%20currHost%20%3D%20gBrowser.currentURI.host%3B%0A%20%20%20var%20run%20%3D%20cbu.getPrefs%28%22CB.RedLinks%22%29%3B%0A%0A%20%20%20function%20colorizeLinks%28win%29%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20win.document%2C%20links%20%3D%20doc.links%3B%0A%20%20%20%20%20%20if%20%28%20%28run%20%7C%7C%20%22flag%22%20in%20doc%29%20%26%26%20links%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20run%20%3F%20doc.flag%20%3D%20true%20%3A%20delete%20doc.flag%3B%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%20Array.forEach%28links%2C%20function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%22previousColor%22%20in%20link%29%20link.style.color%20%3D%20link.previousColor%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.previousColor%20%3D%20link.style.color%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%20if%20%28%20run%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20link.style.color%20%3D%20%28link.host%20%3D%3D%20currHost%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20cbu.getPrefs%28%22CB.RedLinks.internalColor%22%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20cbu.getPrefs%28%22CB.RedLinks.externalColor%22%29%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%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%22previousColor%22%20in%20link%29%20delete%20link.previousColor%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20win.frames.length%3B%20i++%29%20colorizeLinks%28win.frames%5Bi%5D%29%3B%0A%20%20%20%7D%3B%0A%20%20%20colorizeLinks%28content%29%3B%20%20%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..............%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%20addColorForLinks%28%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%29%0A%20%20%20%20%20%20%20%20%20%20%20addColorForLinks%28%29%3B%0A%20%20%20%7D%20%20%20%20%20%20%20%0A%7D%3B%0AgBrowser.addProgressListener%28listener%29%3B%0AaddDestructor%28function%28%29%20gBrowser.removeProgressListener%28listener%29%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

Инициализация:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ..............
this.onclick =e=> {

   // действие при клике ЛКМ ....
   if ( e.button == 0 )
        addColorForLinks( cbu.setPrefs("CB.RedLinks", !cbu.getPrefs("CB.RedLinks")) );
     
   // действие при клике ПКМ ....    
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
        e.preventDefault();  
        menu.showPopup( this, -1, -1, "popup", "bottomleft", "topleft");
        }
};
this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };


// Создать настройки кнопки в about:config если они не существует ..............
cbu.isPref("CB.RedLinks", false);
cbu.isPref("CB.RedLinks.internalColor", "red");
cbu.isPref("CB.RedLinks.externalColor", "green");


// Подсказка для кнопки ..............
this.onmouseover =()=> {
   this.tooltipText = self.label + "\nЛ:  Включить - выключить \nП: Mеню кнопки \nДП: CB меню" + "\n\n" +
                      "Цвет внешних ссылок: " + cbu.getPrefs("CB.RedLinks.externalColor") + "\n" +
                      "Цвет внутренних ссылок: " + cbu.getPrefs("CB.RedLinks.internalColor");
};


// Создать меню с настройками для кнопки ..............
var array = [
   { label: 'Цвет внешних ссылок: ', value: 'CB.RedLinks.externalColor', default: 'red'},
   { label: 'Цвет внутренних ссылок: ', value: 'CB.RedLinks.internalColor', default: 'green'},
            ]
var menu = self.appendChild(document.createElement("menupopup"));
array.forEach(m=> {
   var mItem = document.createElement("menuitem");        
   mItem.setAttribute("label", m.label + cbu.getPrefs(m.value));     
   mItem.onclick =()=> {
      var color = custombuttons.promptBox(mItem.label, 'Отмена вернёт значение по умолчанию')[1]
                  || m.default;
      cbu.setPrefs(m.value, color);
      mItem.label = m.label + color;     
             
      addColorForLinks();
   }
   menu.appendChild(mItem);
});
menu.setAttribute("onclick", "event.stopPropagation()");


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек кнопки ..............
var s = "CB.RedLinks";
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
   src = !cbu.getPrefs(s)
   ? self.image 
   : "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw1LZR0aluseG5v/Hhua/h4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/h4bm/8dGpbrDw1LZQAAAAAPDU5oIR2p/x8bn/4fG57/Hxue/x8bnv8fG57/Hxue/x8bnv8fG53/Hxue/x8bnv8fG57/Hxue/x8bnv8fG5/+IR2p/w8NTmceG57jHxyk/x8cof0fHKL/Hxyi/x8cov8fG6L/Hxui/yAdpf8gHaX/Hxyj/x8bov8fHKL/Hxyi/x8cov8fHKH9Hxyk/x4bnuMgHKf9Hxym/x8cp/8fHKf/Hxyn/x8cpv8gHan/IyCp/x0anf8cGZz/Ih+n/yEdqv8fHKb/Hxyn/x8cp/8fHKf/Hxym/yAcp/0gHKv+IByr/yAcq/8gHKv/IByq/yIer/8eGqL/AwJz/wICa/8DA2v/AQBt/xsYmv8iHq//IByq/yAcq/8gHKv/IByr/yAcq/4gHK//IByv/yAcr/8gHK7/Ih2z/xsYnf8AAGn/YWCg/8zM4v/Pz+T/bGun/wEAaP8cGaH/Ix60/yAcrv8gHK//IByv/yAcr/8hHLP/IRyz/yEcsv8iHbX/Hxup/wAAZ/9+fbL///////z8+//7+/v//////4yMu/8AAGv/Hxqs/yMdtv8hHLL/IRyz/yEcs/8hHbj/IR24/yEdt/8mIr//BgSH/19fnf//////8vL1/09NrP9DQqL/6env//////+Hh7b/BAN3/yIetv8hHbf/IR24/yEduP8iHbz/Ih28/yIdu/8lIMH/CQeE/8HB2P//////SUiZ/wcDk/8AAGv/NzaI/+Pj7///////ZWSh/w8Ko/8qJcj/Ih26/yIdvP8iHcD/Ih3A/yIdv/8lIMf/DguU/8HB1f//////REOS/wAAXv+Pjrz/xcXe/1VVnP+zstP/NzeL/wAAef8QDZz/JB7F/yMewP8iHcb/Ih3G/yIdxv8mIcn/Eg64/2RjrP//////8fH4/zo5jP+zstP//////9PT5v8aGXX/Cwpr/8HB2f+KirT/Cgac/yUgzv8jHcv/Ix3L/yMdy/8jHcr/JiDR/xALsv99fbP//////+rp8/9UU5v/ycnf///////Z2en/PDuN/97e7f//////iYm6/wwHqf8jHdD/Ix3Q/yMd0P8jHdD/Ix3P/ych2P8JBab/eXmr//////+wsND/Dg1x/83N4v//////zs7j/1dWnv/o5/L//////5WUxf8jHdX+Ix3V/yMd1f8jHdX/Ix3V/yQd1P8mH9v/Dgmr/2RivP81NIz/BgVt/zY2iv/ExN3//////3x8rv8qKoL/8vL4//////4jHNz9Ixza/yMc2/8jHNv/Ixzb/yMc2/8jHNn/KCDm/xMOwf8AAGD/vb3a//Lx9/9TUpr/fHy3/zs3vP8AAGb/enqs//////0iG9rjJBzh/yMc3/0jHOD/Ixzg/yMc4P8jHOD/Ixzf/ygh4f8HBYT/fn6t///////q6e7/NTSe/wAAgv8hIHn92dnq//f39OMSDnFoJx73/yQc5/4kHOT/JBzl/yQc5f8kHOX/JBzk/yUd6f8jHN3/AABy/3p6rf//////7e7z/39/r//T0+X+/////3x8fWcAAAEAEg1xZSMb5OskHOz/JBzq/iQc6/8kHOv/JBzr/yQc6f8mHvL/IRvS/wAAZ/+EhLf//////v/////39/frenp7ZQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );


// Изменить цвет внутренних и внешних ссылок на текущей странице ..........
function addColorForLinks() {
   var currHost = gBrowser.currentURI.host;
   var run = cbu.getPrefs("CB.RedLinks");

   function colorizeLinks(win) {
      var doc = win.document, links = doc.links;
      if ( (run || "flag" in doc) && links ) {
            run ? doc.flag = true : delete doc.flag;
            
            Array.forEach(links, function(link) {
               if ("previousColor" in link) link.style.color = link.previousColor;
               link.previousColor = link.style.color;
               
               if ( run ) {
                    link.style.color = (link.host == currHost) 
                    ? cbu.getPrefs("CB.RedLinks.internalColor") 
                    : cbu.getPrefs("CB.RedLinks.externalColor");
                    }
               else 
                    if ("previousColor" in link) delete link.previousColor;
            })
           }
      for (var i = 0; i < win.frames.length; i++) colorizeLinks(win.frames[i]);
   };
   colorizeLinks(content);   
};


// Обработчик следит за загрузкой и переключением вкладки ..............
var listener = { 
   onStateChange: function(wpr, req, flag) {
      if ( gBrowser.currentURI.spec.startsWith("http") && flag & Ci.nsIWebProgressListener.STATE_STOP )
           addColorForLinks();
   },
      
   onLocationChange: function(wpr, req) {
      if ( gBrowser.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete")
           addColorForLinks();
   }       
};
gBrowser.addProgressListener(listener);
addDestructor(function() gBrowser.removeProgressListener(listener));

Отредактировано bunda1 (30-03-2013 16:49:32)

Отсутствует

 

№9002-04-2012 21:04:01

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Переключать проигрывания анимации(gif)( Firefox24+ ) от 08.06.2016.
Кнопка останавливает или запускает проигрывания gif-анимации на страницах. При включении gif-анимации обновляется текущая страница, чтобы изменения вступили в силу в других страницах нужно обновить эти страницы.

ЛКМ => Включить или выключить gif-анимацию.

Код кнопки и инициализации:
Код кнопки:

Выделить код

Код:

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%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0430%u043D%u0438%u043C%u0430%u0446%u0438%u044E%28gif%29%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUAAADT09PU1NTPz8+d3X45whyHh4fOzs6EhITR0dHS0tKDg4NB8Rs19AyC52s14RCBgYHS0tKCgoI1zRSAgIDS0tI62RkzuRd+fn7Q0NA5yhorsBB9fX061hkusxIkqQlWVlaWlpa/v786yhsrrxAjnwpjY2OMjIyNjY2SkpKTk5OTk5OTk5OTk5Nbo008nCghnQkhnQg2miJTm0WNjY2NjY02ow3o6OjMzMzHx8fJycnDw8NM+SXR0dEpoxDFxcXS0tLLy8vIyMjQ0NA5xRxN+yU4ux7CwsI72RnKyspSvR7BwcFI9iIqpBGG6HBJ+x+Y3Yk75RbAwMDNzc1d+TU5wx096hc/tRs+3BOGy3cyrRpB4h1HnjRc+zTT09MppBFw8VNj5EZPvBqd3X5myFQspxQ74hfGxsZPtR4jjwckkAfPz89S9iyd5IxU2DdR1zbExMRQ0jY62Rk4sh8smQqGhoY9+BJLtDRL+SYkkAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU2kAXAAABAHRSTlMA19fn/v0e5zfnrTf9UPKjN9I35jfn/eY35/ajN/bmUAE4/vnpfQMTZpKkrLa80ef4996ycif//////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8GAuXAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAOpJREFUGJU9zGdTAjEQgOGNir2iYu8KgoA95fodHUQ6KmIX7L3/e/fU8f2Q7D6TCQA09xFCGuwIaQdoSv53dmgMAtBLxliSneJJDaMNgVGM/Vyq+ge4vtov1NAIArVHds2uvmjophE/pb/t7L5nju9aAGvlvFDYLkfT6ehWtw0dCZNncy8PnEduO7sQnJKUOAnfm2bk4MjRg9ArLOu5JEmfRc1y9CMM6BciHBe4C+EaQhiWH/WnuFLU9LeP0TGE8VQstlfZ12S5OjE5BTA9M5vPp85rdUWZm19wA3gWvb4lfyC4vLK6tr6x+Q2vMzR/vIyeZQAAAABJRU5ErkJggg%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%20%7B%0A%20%20%20cbu.setPrefs%28s%2C%20cbu.getPrefs%28s%29%20%3D%3D%20%22normal%22%20%3F%20%22none%22%20%3A%20%22normal%22%29%3B%0A%20%20%20cbu.getPrefs%28s%29%20%3D%3D%20%22normal%22%20%3F%20BrowserReload%28%29%20%3A%20setTimeout%28%28%29%3D%3E%20BrowserStop%28%29%2C%2050%29%3B%0A%7D%3B%0A%0Avar%20s%20%3D%20%22image.animation_mode%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%20cbu.getPrefs%28s%29%20%3D%3D%20%22normal%22%20%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABblBMVEUAAADq6urr6+vm5ubnuaPgTC2enp7l5eWbm5vo6Ojp6emampr0Zkf2WjjupJPwUjCYmJjp6emZmZnpSSeXl5fp6enoVzjiPx2VlZXn5+fkTi7bNhSUlJTnVjfdORfVLgxtbW2tra3W1tbjUDHaNhTLLQ16enqjo6OkpKSpqamqqqqqqqqqqqqqqqq3dWjBSjLJKwzJKwvARCu1aVqkpKSkpKTORBH////j4+Pe3t7g4ODa2tr7cVLo6OjNNBXc3Nzp6eni4uLf39/n5+fhTi/8clPdSSvZ2dnoWDnh4eHdZi3Y2Nj4bU/ONRbvqJj8bk3ouK3sXT7X19fk5OT7gWLgTS/uYULdTiHtWTHYpJnVPiDoZEbAWEH8gWLq6urONBb1lH7qhW/gYiXnuaPUhnfQOBnrXD3d3d3bYSa7Lgq8Lwrm5ub4d1ntvbLgdV7fc13b29vbcVzoVznZRSfFOQ2dnZ36Yj/LYkv7cVO8MAsi43WXAAAANnRSTlMA19fn/v0e5zfnrTf9UPKjN9I35jfn/eY35/ajN/bmUAE4/vnpfQMTZpKkrLa80ef4996yciec+O5uAAAA5ElEQVR4Xj3M1XLDMBBA0VVTJ2nKzMzMIrPDjGVmZv77rt2Z3oeV9oxGAOBvJoRUuRESAqhO/Xd2aLUD0GvGWIqd4qSWVYPAKMa8Q9c98NZ394Ue7kag7pXdspsfGr7z4af0r63tz/zxQwCwIOflcm4zls3GMg0u1CZtXii+PXEeva+rR2iRMnkSebTt6MGR0ojQJBzndUPK74rhKK0IbeaViCQE7kJ0dCJ0qc/mS0KrGObHV08vQl86Ht/Z3TNUdb9/YBBgaHikVEqfX1xq2ujY+ATA5NT0zOzc/MLi0vLK6tr6L68zNH+FfEIKAAAAAElFTkSuQmCC%22%3B%20%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%20%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%0A%0A%20%20%20%20%20%20%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

Инициализация

Выделить код

Код:

this._handleClick =()=> {
   cbu.setPrefs(s, cbu.getPrefs(s) == "normal" ? "none" : "normal");
   cbu.getPrefs(s) == "normal" ? BrowserReload() : setTimeout(()=> BrowserStop(), 50);
};

var s = "image.animation_mode";
function toggleImage() {
   var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon");
   icon.src = cbu.getPrefs(s) == "normal" 
   ? self.image
   : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABblBMVEUAAADq6urr6+vm5ubnuaPgTC2enp7l5eWbm5vo6Ojp6emampr0Zkf2WjjupJPwUjCYmJjp6emZmZnpSSeXl5fp6enoVzjiPx2VlZXn5+fkTi7bNhSUlJTnVjfdORfVLgxtbW2tra3W1tbjUDHaNhTLLQ16enqjo6OkpKSpqamqqqqqqqqqqqqqqqq3dWjBSjLJKwzJKwvARCu1aVqkpKSkpKTORBH////j4+Pe3t7g4ODa2tr7cVLo6OjNNBXc3Nzp6eni4uLf39/n5+fhTi/8clPdSSvZ2dnoWDnh4eHdZi3Y2Nj4bU/ONRbvqJj8bk3ouK3sXT7X19fk5OT7gWLgTS/uYULdTiHtWTHYpJnVPiDoZEbAWEH8gWLq6urONBb1lH7qhW/gYiXnuaPUhnfQOBnrXD3d3d3bYSa7Lgq8Lwrm5ub4d1ntvbLgdV7fc13b29vbcVzoVznZRSfFOQ2dnZ36Yj/LYkv7cVO8MAsi43WXAAAANnRSTlMA19fn/v0e5zfnrTf9UPKjN9I35jfn/eY35/ajN/bmUAE4/vnpfQMTZpKkrLa80ef4996yciec+O5uAAAA5ElEQVR4Xj3M1XLDMBBA0VVTJ2nKzMzMIrPDjGVmZv77rt2Z3oeV9oxGAOBvJoRUuRESAqhO/Xd2aLUD0GvGWIqd4qSWVYPAKMa8Q9c98NZ394Ue7kag7pXdspsfGr7z4af0r63tz/zxQwCwIOflcm4zls3GMg0u1CZtXii+PXEeva+rR2iRMnkSebTt6MGR0ojQJBzndUPK74rhKK0IbeaViCQE7kJ0dCJ0qc/mS0KrGObHV08vQl86Ht/Z3TNUdb9/YBBgaHikVEqfX1xq2ujY+ATA5NT0zOzc/MLi0vLK6tr6L68zNH+FfEIKAAAAAElFTkSuQmCC";  
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );

Отредактировано bunda1 (16-09-2013 22:36:28)

Отсутствует

 

№9105-04-2012 23:16:51

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 11.0

Re: Готовые кнопки для Custom Buttons

Password(Firefox,Thunderbird)
ЛКМ - Вызывает диаловое окно «Сохранённые пароли»
Аналогично нажатию Инструменты-Настройки-Защита-Сохранёные пароли

Код кнопки

Выделить код

Код:

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%3EPassword%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/*Initialization%20Code*/%0Athis.tooltipText%20%3D%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043E%u043A%u043D%u043E%20%AB%u0421%u043E%u0445%u0440%u0430%u043D%u0451%u043D%u043D%u044B%u0435%20%u043F%u0430%u0440%u043E%u043B%u0438%BB%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0AopenWindow%28%22Toolkit%3APasswordManager%22%2C%20%22chrome%3A//passwordmgr/content/passwordManager.xul%22%2C%20%22%22%2C%20null%29%3B%0Areturn%3B%0A%0Afunction%20openWindow%28aWindowType%2C%20aURL%2C%20aFeatures%2C%20aParams%29%20%7B%0A%20%20%20%20%3Bvar%20wm%20%3D%20Components.classes%5B%27@mozilla.org/appshell/window-mediator%3B1%27%5D.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%20%20%20%20%3Bvar%20win%20%3D%20aWindowType%20%3F%20wm.getMostRecentWindow%28aWindowType%29%20%3A%20null%3B%0A%20%20%20%20win%20%3D%20window.openDialog%28aURL%2C%20%22_blank%22%2C%20features%2C%20aParams%29%3B%0A%20%20%20%20if%20%28win%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%22initWithParams%22%20in%20win%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20win.initWithParams%28aParams%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20var%20features%20%3D%20%22resizable%2Cdialog%3Dno%2Ccenterscreen%22%20+%20%28aFeatures%20%21%3D%20%22%22%20%3F%20%22%2C%22%20+%20aFeatures%20%3A%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20var%20parentWindow%20%3D%20this.instantApply%20%7C%7C%20%21window.opener%20%7C%7C%20window.opener.closed%20%3F%20window%20%3A%20window.opener%3B%0A%20%20%20%20%20%20%20%20win%20%3D%20parentWindow.openDialog%28aURL%2C%20%22_blank%22%2C%20features%2C%20aParams%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20win%3B%0A%7D%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

Код (секция Код)

Выделить код

Код:

/*CODE*/
openWindow("Toolkit:PasswordManager", "chrome://passwordmgr/content/passwordManager.xul", "", null);
return;

function openWindow(aWindowType, aURL, aFeatures, aParams) {
    ;var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
    ;var win = aWindowType ? wm.getMostRecentWindow(aWindowType) : null;
    win = window.openDialog(aURL, "_blank", features, aParams);
    if (win) {
        if ("initWithParams" in win) {
            win.initWithParams(aParams);
        }
        win.focus();
    } else {
        var features = "resizable,dialog=no,centerscreen" + (aFeatures != "" ? "," + aFeatures : "");
        var parentWindow = this.instantApply || !window.opener || window.opener.closed ? window : window.opener;
        win = parentWindow.openDialog(aURL, "_blank", features, aParams);
    }
    return win;
}

Код (секция Инициализация)

Выделить код

Код:

/*Initialization Code*/
this.tooltipText = "Открыть окно «Сохранённые пароли»";


За идею кода спасибо -Infocatcher


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№9205-04-2012 23:47:38

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 11.0

Re: Готовые кнопки для Custom Buttons

AntiMalware(Firefox)
ЛКМ - Запускает проверку сайта(текущего) на вирусы
Аналогично функциям FlagFox

Код кнопки

Выделить код

Код:

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%3EAntiMalware%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%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/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Aconst%20cTitle%20%3D%20%22%u041E%u0448%u0438%u0431%u043A%u0430%22%0Aconst%20cMsg%20%3D%20%22%u041D%u0435%u0432%u0435%u0440%u043D%u044B%u0439%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043B%u0438%20%u043E%u0448%u0438%u0431%u043A%u0430%20%u043F%u0435%u0440%u0435%u0434%u0430%u0447%u0438%22%0Avar%20domainName%20%3D%20%22%22%3B%0Atry%20%7B%0A%20%20%20%20domainName%20%3D%20content.location.hostname%3B%0A%20%20%20%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22http%3A//antivirus-alarm.ru/proverka/%3Furl%3D%22+domainName%29%3B%0A%7D%0Acatch%28e%29%20%7B%0A%20custombuttons.%20alertBox%20%28cTitle%2C%20cMsg%29%3B%20%0A%7D%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

Код (секция Код)

Выделить код

Код:

/*CODE*/
const cTitle = "Ошибка"
const cMsg = "Неверный адрес или ошибка передачи"
var domainName = "";
try {
    domainName = content.location.hostname;
    getBrowser (). selectedTab = getBrowser (). addTab ("http://antivirus-alarm.ru/proverka/?url="+domainName);
}
catch(e) {
 custombuttons. alertBox (cTitle, cMsg); 
};

Код (секция Инициализация)

Выделить код

Код:

/*Initialization Code*/


P.S. Для запуска в Thunderbird надо исправить открытие вкладки.


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№9306-04-2012 01:57:36

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 11.0

Re: Готовые кнопки для Custom Buttons

Open URLs(Thunderbird)
Выдаёт меню адресов с иконкой и названием для загрузки в новом табе

Код кнопки

Выделить код

Код:

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%20URLs%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%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*/%0A%0Afunction%20TabsUrl%28OpenUrl%29%7B%0Avar%20inBackground%20%3D%20false%3B%0Avar%20cnConf%20%3D%20OpenUrl%3B%0Avar%20tabmail%20%3D%20document.%20getElementById%20%28%22tabmail%22%29%3B%0Atabmail.%20openTab%0A%20%20%20%28%0A%20%20%20%20%20%20%22contentTab%22%2C%0A%09%7B%20background%3A%20inBackground%2C%0A%09%20%20contentPage%3A%20cnConf%0A%09%7D%0A%20%20%20%20%29%0A%7D%3B%0A%0A//var%20NumMenu%20%3D%201%20//%20%u0427%u0438%u0441%u043B%u043E%20%u043F%u0443%u043D%u043A%u0442%u043E%u0432%20%u0432%20%u043C%u0435%u043D%u044E%0Avar%20OpenMenu%20%3D%0A%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.openadres%28event%29%22%3E%0A%0A%20%20%20%20%3Cmenuitem%20%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20value%3D%22https%3A//www.google.com%22%20%0A%20%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY1MjI5QkVERDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY1MjI5QkVFRDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjUyMjlCRUJENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjUyMjlCRUNENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz65gakZAAAIYUlEQVR42rxY628U1x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%22%20%20%20%20%20%0A%20%20%20%20%20%20label%3D%22Google%22/%3E%0A%20%20%20%20%3Cmenuitem%20%20%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20value%3D%22http%3A//forum.mozilla-russia.org%22%20%0A%20%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%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%22%20%20%20%20%20%0A%20%20%20%20%20%20label%3D%22%u0424%u043E%u0440%u0443%u043C%20Mozilla%22/%3E%0A%3C/menupopup%3E%3B%0A%0AOpenMenu%20%3D%20custombuttonsUtils.%20makeXML%20%28OpenMenu%29%3B%0A//OpenMenu.%20childNodes%20%5B1%5D.%20setAttribute%20%28%22checked%22%2C%20%22true%22%29%3B%20//%u0443%u0431%u0440%u0430%u043B%20%u043F%u0440%u043E%u0432%u0435%u0440%u043A%u0443%20%u0442.%u043A.%20%u043E%u043D%u0430%20%u043E%u0448%u0438%u0431%u043E%u0447%u043D%u0430%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20appendChild%20%28OpenMenu%29%3B%0Athis.%20openadres%20%3D%20function%20%28MyEvets%29%0A%7B%0A%20%20%20%20var%20url%20%3D%20MyEvets.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20TabsUrl%28url%29%3B%0A%7D%3B%0A%0A//%20%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0441%u043F%u0438%u0441%u043E%u043A%20%u043A%u043E%u0433%u0434%u0430%20%u043A%u0443%u0440%u0441%u043E%u0440%20%u043C%u044B%u0448%u043A%u0438%20%u043D%u0430%u0434%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%0Athis.%20onmouseover%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20this.%20open%20%3D%20true%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

Код (секция Код)

Код (секция Инициализация)

Выделить код

Код:

/*Initialization Code*/

function TabsUrl(OpenUrl){
var inBackground = false;
var cnConf = OpenUrl;
var tabmail = document. getElementById ("tabmail");
tabmail. openTab
   (
      "contentTab",
    { background: inBackground,
      contentPage: cnConf
    }
    )
};

//var NumMenu = 1 // Число пунктов в меню
var OpenMenu =
<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       oncommand="this.parentNode.openadres(event)">

    <menuitem 
      class="menuitem-iconic"
      value="https://www.google.com" 
      image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY1MjI5QkVERDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY1MjI5QkVFRDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjUyMjlCRUJENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjUyMjlCRUNENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz65gakZAAAIYUlEQVR42rxY628U1xX/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"     
      label="Google"/>
    <menuitem  
      class="menuitem-iconic"
      value="http://forum.mozilla-russia.org" 
      image="data:image/png;base64,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"     
      label="Форум Mozilla"/>
</menupopup>;

OpenMenu = custombuttonsUtils. makeXML (OpenMenu);
//OpenMenu. childNodes [1]. setAttribute ("checked", "true"); //убрал проверку т.к. она ошибочна
this. orient = "horizontal";
this. type = "menu";
this. appendChild (OpenMenu);
this. openadres = function (MyEvets)
{
    var url = MyEvets. target. getAttribute ("value");
    TabsUrl(url);
};

// Открывает список когда курсор мышки над кнопкой
this. onmouseover = function (event)
{
    this. open = true;
};


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№9417-05-2012 17:20:41

humnmind
я съем твой мозг
 
Группа: Members
Зарегистрирован: 15-03-2011
Сообщений: 48
UA: Firefox 12.0

Re: Готовые кнопки для Custom Buttons

Linkification(Firefox)
Делает текстовые ссылки кликабельными
Кнопка взята оттуда. Еще куча кнопок от автора.
Альтернативная иконка, если кому не нравится исходная.

Пример для теста
http://www.foo.com/
https://foo.com/
foo.org
foo.net
foo.co.id
foo.it
mailto:foo@bar.com
mailto:foo@bar.co.id
foo@bar.net

скрытый текст
Код кнопки:

Выделить код

Код:

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/*%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

Код:

Выделить код

Код:

/*
    Linkification
    Original script by Misha Splurov
    http://userscripts.org/scripts/show/67744
*/

// (c) http://data.iana.org/TLD/tlds-alpha-by-domain.txt
var domains = [
  "ac", "ad", "ae", "aero", "af", "ag", "ai", "al", "am", "an", "ao", "aq",
  "ar", "arpa", "as", "asia", "at", "au", "aw", "ax", "az", "ba", "bb", "bd",
  "be", "bf", "bg", "bh", "bi", "biz", "bj", "bm", "bn", "bo", "br", "bs",
  "bt", "bv", "bw", "by", "bz", "ca", "cat", "cc", "cd", "cf", "cg", "ch",
  "ci", "ck", "cl", "cm", "cn", "co", "com", "coop", "cr", "cu", "cv", "cx",
  "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "edu", "ee", "eg",
  "er", "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb",
  "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gov", "gp", "gq",
  "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu",
  "id", "ie", "il", "im", "in", "info", "int", "io", "iq", "ir", "is", "it",
  "je", "jm", "jo", "jobs", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp",
  "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt",
  "lu", "lv", "ly", "ma", "mc", "md", "me", "mg", "mh", "mil", "mk", "ml",
  "mm", "mn", "mo", "mobi", "mp", "mq", "mr", "ms", "mt", "mu", "museum",
  "mv", "mw", "mx", "my", "mz", "na", "name", "nc", "ne", "net", "nf", "ng",
  "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "org", "pa", "pe", "pf",
  "pg", "ph", "pk", "pl", "pm", "pn", "pr", "pro", "ps", "pt", "pw", "py",
  "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg",
  "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st", "su", "sv",
  "sy", "sz", "tc", "td", "tel", "tf", "tg", "th", "tj", "tk", "tl", "tm",
  "tn", "to", "tp", "tr", "travel", "tt", "tv", "tw", "tz", "ua", "ug", "uk",
  "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws",
  "ye", "yt", "yu", "za", "zm", "zw"
];

// (c) http://yellow5.us/firefox/linkification/
var tagsForSkip = [
  "a", "applet", "area", "embed", "frame", "frameset", "head", "iframe",
  "img", "map", "meta", "noscript", "object", "option", "param", "script",
  "select", "style", "textarea", "title"
];

var inArray = function(value, items) {
  for (var i = 0; items[i] && value != items[i]; i++);
  return value == items[i];
}

var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i

var linksCounter = 0;

var current = content.document.body;
while (current) {
  if (current.nodeName == "#text" && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) {
    var url;
    if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(":") == -1 || match[3].indexOf("mailto:") == 0)) {
      url = (match[3].indexOf("mailto:") == -1 ? "mailto:" : "")
          + match[3]
          + match[4];
    }
    else {
      url = (match[2] ? match[2] : (! match[5] || match[5] == "www" ? "http" : match[5]) + "://")
          + (match[3] ? match[3] : "")
          + match[4]
          + (match[7] ? match[7] : "")
          + (match[8] ? match[8] : "");
    }
    if (url) {
      var range = content.document.createRange();
      range.setStart(current, match.index + match[1].length);
      range.setEnd(current, match.index + match[0].length);
      var a = content.document.createElement("a");
      a.setAttribute("href", url);
      a.setAttribute("target", "_blank");
      a.setAttribute("class", "linkified");
      a.appendChild(range.extractContents());
      range.insertNode(a);
      range.detach();
      linksCounter++;
    }
  }
  if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) {
    current = current.firstChild;
  }
  else if (current.nextSibling) {
    current = current.nextSibling;
  }
  else {
    do {
      current = current.parentNode;
    } while (!current.nextSibling && current.parentNode);
    current = current.nextSibling;
  }
}

/*
if (linksCounter > 0) {
  var style = content.document.createElement("style");
  style.type = "text/css";
  style.appendChild(content.document.createTextNode("a.linkified:before {content: "~"; color: #e00;}"));
  content.document.getElementsByTagName("head")[0].appendChild(style);
}
*/

Отредактировано humnmind (30-03-2013 16:12:35)

Отсутствует

 

№9503-06-2012 19:09:55

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Открыть страницу в другом браузере( Firefox ) от 20.05.2019.
Кнопка открывает меню с браузерами и даёт возможность открыть текущую страницу по левому клику в меню на нужном браузере, иконки пунктов меню будет как у запускаемых программ(.exe файлов). Можно легко добавить в меню кнопки новый браузер, разделитель или другую программу которая тоже может открыть страницу. Можно удалить все не нужные пункты меню или разделители, также можно передвигать пункты меню или разделители что бы упорядочить их в нужном порядке, также можно менять название пунктов меню.

Скриншот меню кнопки
0c5640e50a212167a3137ee9871f7e7b.jpg

Функции кликов мыши для кнопки:
ЛКМ => Открыть меню с браузерамы,
СКМ => Добавить в меню новый браузер,

Функции кликов мыши для меню кнопки:
Л: Открыть страницу,
С: Добавить разделитель,
П: Удалить пункт меню или разделитель.
Ctrl+П: Изменить название пункта меню.

Код кнопки и код для инициализации:
Код кнопки:

Выделить код

Код:

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%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%u0434%u0440%u0443%u0433%u043E%u043C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsSAAALEgHS3X78AAAEgUlEQVQ4jU2TW2yTZQCG3+/7v/79266HraN1G8cNVoERNhk42BBmghiQBF3IMJnghYcbxUPEREiYF0bgihBREyNRQ4wENCwkBjlsyIA5WclWOe3ANrq2W1u6reu5/f//+7xQI8/tmzx5bx4yMjKCgYEByLIMAYBTirymEUYpbIrimkslzKXOpwLrV3NNceTAhZERNVfFC1mnNifGjO6i8NB4grCOjg7s378foBSVNju+3b6D+NUC/d43oGeK7dXLFlfu9BhKr244XObntvuvkPDURszNGiSjkhKTaYAtPO7tT15iQggAAASHVZJIs8sFlDqx69l1O4Lh+EeVddXPidrZN2XeZcDvswrGqnhBXXXowK2rRxtXGF0vy4XWzvOhG4wQ8o+IUCIAkYcoYrr+pXlqdo+nwQXR6BUk1WP13qhE5pRZX2cDMRRpn9U/LK870/egrfkZ66WCqir/P4IQakGHIad/LUaDbWrLIs2w+TbFyB16J75PDNg3I9V8XbKdO4GaEiffXWpqmZ8tN01Oq20ffLwuTv+1SOACvM7S+hcLtknbyzR56z0p2T9If3nYjmtTtSQV9BF51RqML1yOlP8hiQUfqU00va33RGD3a69fEZRQQgDoJmaAceu8t+/tWwxsDxK9o5OcOduICxE3ykvSSBUvhR66D1W/heyyGDG/GJLwxgSWb4q8NXh3xkgBEABQi6WqxvUr6neVzwHXbtJQO8dgQEWJG4gqZfDM3URZVzuml21DyRYdhk0JwutzWN0CT2OttJY6HApxWICG5uqad6qZVRry8s8j88j9YAJJi4JR5kZvnxfV1w+id8EupBreA1m5CNSVJZxRYTYT04JyuoTt2bNGb939KQjXthUNX8DJqAU/Oi1IbnFiY0UFgots2Onx4BQ/iC6sRX0sCclTBuR8EIQAnEAiRGYyM4MZ3PV06trz/Y81nM4UwZXOYLhlIbKPFdTHIzjh8+G3+FLkC1nU1uiQ2AMUIAlGOclnZR6OIcI4MTGiJzfoY4OlP0zbM1mJmx2KhHSxBe6KOKKBIdyOOFBpIHjaY8SOJV8AGT9ALKCEIDDBogODWj8DrBpJB+smxjPdV84Xeua3LjjCZUmzaBbmjffAVNGPl6pWIJGVYNW9KFE7IJgZah6abDYbfvq18HNsjocoVD8QuOWyrWzqyT1Qj4b/CPsU2cSy+bSWt+YwU4ihO9mJ7vhlNCndsBiMSGaYbmFWg7fX4D92OnEEACjJ+iEyYatTqI9qXBJ8x3yt492ROxQyQ07S5QLTcxmb/oKS0TebVS2dtOpWUSz19Rn9be2xV2eTPEQJqHTow70Q8T/X0vjjpuaaeRdnptPR/gujPekEXyOZjfN1JhOH0Ogn9gi15BTyKKDQ785lR949Htk7EVV7KAHlApyok5ehDn9lZdnJ9yU9l6Ys03X4ZMR/4GzCqtjleqnCXu1xs+IGU56MRrX43bHcWGimcJsQhADkhYAOAESdvIj80Dcw5vMYGQ7i4KlBdN4tIJEVIBD4L+knoRSAAPgT49/cEBl9hsIr+QAAAABJRU5ErkJggg%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.onclick%20%3De%3D%3E%20%7B%0A%20%20%20e.button%20%3D%3D%200%20%26%26%20menu.openPopup%28this%2C%20%22after_start%22%29%3B%0A%20%20%20e.button%20%3D%3D%201%20%26%26%20getAppPath%28%29%3B%20%20%20%20%0A%7D%3B%0A%0A%0Avar%20menu%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AaddEventListener%28%22popuphidden%22%2C%20%28%29%3D%3E%20setTimeout%28%28%29%3D%3E%20addToHelp%28%29%2C%2050%29%2C%20true%2C%20menu%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%0Afunction%20setItemsToMenu%28newPath%20%3D%20false%29%20%7B%0A%20%20%20menu.textContent%20%3D%20%22%22%3B%0A%20%20%20%0A%20%20%20menu.onclick%20%3D%28e%2C%20el%20%3D%20e.target%2C%20but%20%3D%20e.button%29%3D%3E%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%20%20%0A%20%20%20%20%20%20but%20%3D%3D%200%20%26%26%20el.path%20%26%26%20openWith%28el.path%29%3B%0A%20%20%20%20%20%20but%20%3D%3D%201%20%26%26%20addToSeparator%28e%29%3B%0A%20%20%20%20%20%20%21e.ctrlKey%20%26%26%20but%20%3D%3D%202%20%26%26%20removeNode%28e%29%3B%0A%20%20%20%20%20%20e.ctrlKey%20%26%26%20but%20%3D%3D%202%20%26%26%20changeMenuitemLabel%28e%29%3B%0A%20%20%20%7D%0A%0A%20%20%20var%20array%20%3D%20newPath%20%3F%20%28getHelp%28%29%20+%20%27%2C%27%20+%20newPath%29.split%28%27%2C%27%29%20%3A%20getHelp%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20array.forEach%28path%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28path%20%3D%3D%20%22%22%29%20return%3B%0A%20%20%20%20%20%20if%20%28path%20%3D%3D%20%22separator%22%29%20%7B%20menu.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20mItem%20%3D%20menu.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20mItem.value%20%3D%20path%3B%0A%20%20%20%20%20%20mItem.path%20%3D%20path.split%28%22%3E%22%29.shift%28%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20name%20%3D%20path.split%28%22%5C%5C%22%29.pop%28%29.replace%28%22.exe%22%2C%20%22%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20name%20%3D%20%28/%3E/.test%28name%29%29%20%3F%20name.split%28%22%3E%22%29.pop%28%29%20%3A%20name%2C%0A%20%20%20%20%20%20%20%20%20%20name%20%3D%20name%5B0%5D.toUpperCase%28%29%20+%20name.slice%281%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20name%29%3B%0A%20%20%20%20%20%20mItem.setAttribute%28%22tooltiptext%22%2C%20mItem.path%29%3B%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%20%22moz-icon%3A//file%3A//%22%20+%20mItem.path%29%3B%0A%20%20%20%20%20%20mItem.onwheel%20%3De%3D%3E%20moveNode%28e%29%3B%0A%20%20%20%7D%29%0A%7D%3B%0AsetItemsToMenu%28%29%3B%0A%0A%0Afunction%20moveNode%28e%2C%20el%20%3D%20e.target%29%20%7B%0A%20%20%20menu.insertBefore%28el%2C%20e.deltaY%20%3E%200%20%3F%20el.nextSibling.nextSibling%20%3A%20%28el.previousSibling%20%7C%7C%20el%29%29%3B%0A%7D%3B%0A%0A%0Afunction%20addToSeparator%28e%2C%20el%20%3D%20e.target%29%20%7B%0A%20%20%20menu.insertBefore%28document.createElement%28%22menuseparator%22%29%2C%20el.nextSibling%29%3B%0A%7D%3B%0A%0A%0Afunction%20removeNode%28e%2C%20el%20%3D%20e.target%29%20%7B%0A%20%20%20el.remove%28%29%3B%0A%7D%3B%0A%0A%0Afunction%20changeMenuitemLabel%28e%2C%20el%20%3D%20e.target%29%20%7B%0A%20%20%20menu.hidePopup%28%29%3B%0A%20%20%20el.setAttribute%28%22context%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20%20%0A%20%20%20var%20label%20%3D%20custombuttons.promptBox%28%27%27%2C%20%27%u0412%u0435%u0434%u0438%u0442%u0435%20%u0434%u0440%u0443%u0433%u043E%u0435%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u0443%u043D%u043A%u0442%u0430%27%29%5B1%5D%3B%0A%20%20%20if%20%28label%20%21%3D%20%27%27%29%20%7B%0A%20%20%20%20%20%20%20el.value%20%3D%20el.value.split%28%22%3E%22%29.shift%28%29%20+%20%22%3E%22%20+%20label%3B%0A%20%20%20%20%20%20%20el.setAttribute%28%27label%27%2C%20label%29%3B%0A%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%20%0Afunction%20getAppPath%28%29%20%7B%0A%20%20%20var%20fp%20%3D%20window.makeFilePicker%28%29%3B%0A%20%20%20fp.init%28window%2C%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%22%2C%20fp.modeOpen%29%3B%0A%20%20%20fp.appendFilters%28fp.filterApps%29%3B%0A%20%20%20fp.init%28window%2C%20%22%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u043F%u0443%u0442%u044C%20%u043A%20%u043F%u0440%u043E%u0433%u0440%u0430%u043C%u043C%u0435%22%2C%20fp.modeOpen%29%3B%0A%20%20%20fp.open%28result%20%3D%3E%20result%20%3D%3D%20fp.returnOK%20%26%26%20setItemsToMenu%28fp.file.path%29%29%3B%0A%7D%3B%0A%0A%0Afunction%20getHelp%28%29%20%7B%20%0A%20%20%20return%20self.getAttribute%28%27Help%27%29.split%28%27%5Cn%27%29.filter%28%28path%29%3D%3E%20/%5CS/.test%28path%29%29%3B%20%0A%7D%3B%0A%0A%0Afunction%20addToHelp%28%29%20%7B%0A%20%20%20var%20paths%20%3D%20%5B...menu.children%5D.map%28%28el%29%3D%3E%20el.value%20%7C%7C%20%22separator%22%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20var%20link%20%3D%20custombuttons.makeButtonLink%28%22update%22%2C%20_id%29%3B%0A%20%20%20var%20params%20%3D%20custombuttons.cbService.getButtonParameters%28link%29.wrappedJSObject%3B%0A%20%20%20params.help%20%3D%20paths%3B%0A%20%20%20custombuttons.cbService.installButton%28params.wrappedJSObject%20%3D%20params%29%3B%0A%7D%3B%0A%0A%0Afunction%20openWith%28path%29%20%7B%0A%20%20%20var%20uri%20%3D%20gBrowser.currentURI.spec%3B%0A%20%20%20var%20uri%20%3D%20/.%u0440%u0444/.test%28uri%29%20%3F%20Services.io.newURI%28uri%2C%20null%2C%20null%29.asciiSpec%20%3A%20uri%3B%20%20%0A%0A%20%20%20var%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsIFile%29%3B%0A%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%21file.exists%28%29%20%26%26%20custombuttons.alertSlide%28self.label%2C%20%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%22%29%3B%0A%20%20%20var%20process%20%3D%20Cc%5B%22@mozilla.org/process/util%3B1%22%5D.createInstance%28Ci.nsIProcess%29%3B%0A%20%20%20process.init%28file%29%3B%0A%20%20%20process.run%28false%2C%20%5Buri%5D%2C%201%29%3B%0A%7D%3B%0A%0A%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%u043C%u044B%20%5Cn%u0421%3A%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%20%u043C%u0435%u043D%u044E%20%u043D%u043E%u0432%u044B%u0439%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%5Cn%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043C%u0435%u043D%u044E%3A%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%u0421%3A%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%u041F%3A%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%20%u043C%u0435%u043D%u044E%20%u0438%u043B%u0438%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20Ctrl+%u041F%3A%20%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u0443%u043D%u043A%u0442%u0430%20%u043C%u0435%u043D%u044E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043C%u043E%u0436%u043D%u043E%20%u043F%u0435%u0440%u0435%u0434%u0432%u0438%u0433%u0430%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043C%u0435%u043D%u044E%20%u0438%u043B%u0438%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u0438%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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%5BC%3A%5CProgram%20Files%20%28x86%29%5CInternet%20Explorer%5Ciexplore.exe%0AC%3A%5CProgram%20Files%20%28x86%29%5CGoogle%5CChrome%5CApplication%5Cchrome.exe%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

this.onclick =e=> {
   e.button == 0 && menu.openPopup(this, "after_start");
   e.button == 1 && getAppPath();    
};


var menu = self.appendChild(document.createElement("menupopup"));
addEventListener("popuphidden", ()=> setTimeout(()=> addToHelp(), 50), true, menu);

         
function setItemsToMenu(newPath = false) {
   menu.textContent = "";
   
   menu.onclick =(e, el = e.target, but = e.button)=> {
      e.preventDefault();
      e.stopPropagation();
      
      but == 0 && el.path && openWith(el.path);
      but == 1 && addToSeparator(e);
      !e.ctrlKey && but == 2 && removeNode(e);
      e.ctrlKey && but == 2 && changeMenuitemLabel(e);
   }

   var array = newPath ? (getHelp() + ',' + newPath).split(',') : getHelp();       
   array.forEach(path=> {
      if (path == "") return;
      if (path == "separator") { menu.appendChild(document.createElement("menuseparator")); return };
      
      var mItem = menu.appendChild(document.createElement("menuitem"));
      mItem.value = path;
      mItem.path = path.split(">").shift();
      
      var name = path.split("\\").pop().replace(".exe", ""),
          name = (/>/.test(name)) ? name.split(">").pop() : name,
          name = name[0].toUpperCase() + name.slice(1);
      
      mItem.setAttribute("label", name);
      mItem.setAttribute("tooltiptext", mItem.path);
      mItem.setAttribute("class", "menuitem-iconic");
      mItem.setAttribute("image", "moz-icon://file://" + mItem.path);
      mItem.onwheel =e=> moveNode(e);
   })
};
setItemsToMenu();


function moveNode(e, el = e.target) {
   menu.insertBefore(el, e.deltaY > 0 ? el.nextSibling.nextSibling : (el.previousSibling || el));
};


function addToSeparator(e, el = e.target) {
   menu.insertBefore(document.createElement("menuseparator"), el.nextSibling);
};


function removeNode(e, el = e.target) {
   el.remove();
};


function changeMenuitemLabel(e, el = e.target) {
   menu.hidePopup();
   el.setAttribute("context", "event.stopPropagation()");
   
   var label = custombuttons.promptBox('', 'Ведите другое название пункта')[1];
   if (label != '') {
       el.value = el.value.split(">").shift() + ">" + label;
       el.setAttribute('label', label);
       }
};

 
function getAppPath() {
   var fp = window.makeFilePicker();
   fp.init(window, "Открыть файл", fp.modeOpen);
   fp.appendFilters(fp.filterApps);
   fp.init(window, "Укажите путь к программе", fp.modeOpen);
   fp.open(result => result == fp.returnOK && setItemsToMenu(fp.file.path));
};


function getHelp() { 
   return self.getAttribute('Help').split('\n').filter((path)=> /\S/.test(path)); 
};


function addToHelp() {
   var paths = [...menu.children].map((el)=> el.value || "separator").join("\n");

   var link = custombuttons.makeButtonLink("update", _id);
   var params = custombuttons.cbService.getButtonParameters(link).wrappedJSObject;
   params.help = paths;
   custombuttons.cbService.installButton(params.wrappedJSObject = params);
};


function openWith(path) {
   var uri = gBrowser.currentURI.spec;
   var uri = /.рф/.test(uri) ? Services.io.newURI(uri, null, null).asciiSpec : uri;  

   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
   file.initWithPath(path);
   !file.exists() && custombuttons.alertSlide(self.label, "Файл не существует");
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   process.run(false, [uri], 1);
};


this.tooltipText = "Л: Открыть меню с браузерамы \nС: Добавить в меню новый браузер\
                   \n\nФункции кликов мыши для меню:\
                   \n  Л: Открыть страницу\
                   \n  С: Добавить разделитель\
                   \n  П: Удалить пункт меню или разделитель\
                   \n  Ctrl+П: Изменить название пункта меню\
                   \n  Колёсиком мыши можно передвигать пункты меню или разделители";

Отредактировано bunda1 (21-06-2014 16:25:38)

Отсутствует

 

№9604-08-2012 02:09:00

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

CB Profile Password( Firefox24+ ) от 09.11.2016.
Кнопка даёт возможность защитить свой браузер от обычных пользователей. Если кнопка включена  браузер при старте запросит пароль доступа и если ввести неправильный пароль браузер выключится.
Если вы забыли свой пароль доступа пишите мне в PM.

ЛКМ => Защитить запуск браузера,
СКМ => Изменить пароль,
ПКМ => CB меню.

Код кнопки и код для инициализации:
Код кнопки:

Выделить код

Код:

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%20Profile%20Password%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEACADYBQAAFgAAACgAAAASAAAAJAAAAAEACAAAAAAAsAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAICAgADAwMABAQEAAUFBQAGBgYABwcHAAgICAAJCQkACgoKAAsLCwAMDAwADQ0NAA4ODgAPDw8AEBAQABEREQASEhIAExMTABQUFAAVFRUAFhYWABcXFwAYGBgAGRkZABoaGgAbGxsAHBwcAB0dHQAeHh4AHx8fACAgIAAhISEAIiIiACMjIwAkJCQAJSUlACYmJgAnJycAKCgoACkpKQAqKioAKysrACwsLAAtLS0ALi4uAC8vLwAwMDAAMTExADIyMgAzMzMANDQ0ADU1NQA2NjYANzc3ADg4OAA5OTkAOjo6ADs7OwA8PDwAPT09AD4+PgA/Pz8AQEBAAEFBQQBCQkIAQ0NDAERERABFRUUARkZGAEdHRwBISEgASUlJAEpKSgBLS0sATExMAE1NTQBOTk4AT09PAFBQUABRUVEAUlJSAFNTUwBUVFQAVVVVAFZWVgBXV1cAWFhYAFlZWQBaWloAW1tbAFxcXABdXV0AXl5eAF9fXwBgYGAAYWFhAGJiYgBjY2MAZGRkAGVlZQBmZmYAZ2dnAGhoaABpaWkAampqAGtrawBsbGwAbW1tAG5ubgBvb28AcHBwAHFxcQBycnIAc3NzAHR0dAB1dXUAdnZ2AHd3dwB4eHgAeXl5AHp6egB7e3sAfHx8AH19fQB+fn4Af39/AICAgACBgYEAgoKCAIODgwCEhIQAhYWFAIaGhgCHh4cAiIiIAImJiQCKiooAi4uLAIyMjACNjY0Ajo6OAI+PjwCQkJAAkZGRAJKSkgCTk5MAlJSUAJWVlQCWlpYAl5eXAJiYmACZmZkAmpqaAJubmwCcnJwAnZ2dAJ6engCfn58AoKCgAKGhoQCioqIAo6OjAKSkpAClpaUApqamAKenpwCoqKgAqampAKqqqgCrq6sArKysAK2trQCurq4Ar6+vALCwsACxsbEAsrKyALOzswC0tLQAtbW1ALa2tgC3t7cAuLi4ALm5uQC6uroAu7u7ALy8vAC9vb0Avr6+AL+/vwDAwMAAwcHBAMLCwgDDw8MAxMTEAMXFxQDGxsYAx8fHAMjIyADJyckAysrKAMvLywDMzMwAzc3NAM7OzgDPz88A0NDQANHR0QDS0tIA09PTANTU1ADV1dUA1tbWANfX1wDY2NgA2dnZANra2gDb29sA3NzcAN3d3QDe3t4A39/fAODg4ADh4eEA4uLiAOPj4wDk5OQA5eXlAObm5gDn5+cA6OjoAOnp6QDq6uoA6+vrAOzs7ADt7e0A7u7uAO/v7wDw8PAA8fHxAPLy8gDz8/MA9PT0APX19QD29vYA9/f3APj4+AD5+fkA+vr6APv7+wD8/PwA/f39AP7+/gD///8A/5WTl5qam5ubm5qal5aSjpD/AACbko2VmKCgo6OjoJ2Yk42IipYAAIKEh4qQmJ2dnZ2bl5OKhIB7fAAAdXyAh7zw8vLy8vLy8LqAe3VtAABweHyA1f/8///8//z/1Xx1cWYAAGt2e3/V//z//P/////UdXFtYwAAY3Z9gtf8/Pz8/Pz8/9JxaWVdAABheX6D2Pz8/Pz8/Pz80GllX1gAAFx7gYTY/Pz8/Pz8/P/OY19bUQAAV32Ch5/X/ODQ0OD8151pWVNOAABVf4SJiJ78to2QtvyjlJFmT0oAAFOFi4uOpPy6l5e+/Kqbm5ZiSQAAU4qPkpSb+dmipNn5oqCkpJZTAABYkpiZnJrB+fPz/MKnqKqrq3YAAGKdnaCgpJqisrKioq6ysrS0jwAAgaSnqqqrra6usrS1uLq7u720AACbsrK0tbW4uru7vb/AwMPF0c4AAP+svcTExcnJzMzR09TU1NTQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20CB%20Profile%20Password%20%u043E%u0442%2009.11.2016.%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%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u043F%u0435%u0440%u0435%u043A%u043B%u0443%u0447%u0430%u0435%u0442%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u0438%20%u0437%u0430%u043F%u0440%u0430%u0448%u0438%u0432%u0430%u0435%u0442%20%u043F%u0430%u0440%u043E%u043B%u044C%20%u0435%u0441%u043B%u0438%20%u043E%u043D%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20var%20run%20%3D%20cbu.getPrefs%28s%29%3B%0A%20%20%20%20%20%20%20%20var%20password%20%3D%20cbu.getPrefs%28%22CB.Password.value%22%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20if%20%28%20%21run%20%26%26%20password%20%3D%3D%20null%20%7C%7C%20password%20%3D%3D%20%27%27%20%29%20savePassword%28%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%21run%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%0A%20%20%20//%20%u0421%u041A%u041C%20%u0437%u0430%u043F%u0440%u0430%u0448%u0438%u0432%u0430%u0435%u0442%20%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u043F%u0430%u0440%u043E%u043B%u044C%20....%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20savePassword%28%29%3B%20%0A%7D%3B%0A%0A%0Avar%20s%20%3D%20%27CB.Password%27%3B%0Avar%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%0A%0A//%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u043F%u0430%u0440%u043E%u043B%u044C%20...............%0Afunction%20savePassword%28%29%20%7B%0A%20%20%20var%20password%20%3D%20getPassword%28%29%3B%0A%20%20%20if%20%28%20%21password%20%29%20return%3B%0A%20%20%20%0A%20%20%20cbu.setPrefs%28%22CB.Password.value%22%2C%20convertFromUnicode%28%22UTF-8%22%2C%20password%29%29%3B%20%20%20%0A%20%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20%22%u041F%u0430%u0440%u043E%u043B%u044C%20%u0441%u043E%u0445%u0440%u0430%u043D%u0451%u043D%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u043A%u043E%u0434%u0438%u0440%u043E%u0432%u0430%u043D%u043D%u044B%u0439%20%u043F%u0430%u0440%u043E%u043B%u044C%20%u0438%u043B%u0438%20false%20%u0447%u0435%u0440%u0435%u0437%20%u043C%u043E%u0434%u0430%u043B%u044C%u043D%u043E%u0435%20%u043E%u043A%u043D%u043E%20%u0447%u0435%u0440%u0435%u0437%20%u043E%u043A%u043E%u0448%u043A%u043E%20%u0434%u043B%u044F%20%u0432%u043E%u0434%u0430%20%u043F%u0430%u0440%u043E%u043B%u044F%20...............%0Afunction%20getPassword%28%29%20%7B%20%20%20%0A%20%20%20var%20check%20%3D%20%7Bvalue%3A%20true%7D%2C%20password%20%3D%20%7Bvalue%3A%20%22%22%7D%3B%0A%20%20%20Cc%5B%22@mozilla.org/embedcomp/prompt-service%3B1%22%5D.getService%28Ci.nsIPromptService%29.%0A%20%20%20promptPassword%28null%2C%20self.label%2C%20%22%u0412%u0432%u0435%u0434%u0438%u0442%u0435%20%u043F%u0430%u0440%u043E%u043B%u044C%3A%22%2C%20password%2C%20null%2C%20check%29%3B%20%0A%20%20%20if%20%28%20password.value.length%20%29%20%20%0A%20%20%20%20%20%20%20%20return%20btoa%28unescape%28encodeURIComponent%28password.value%29%29%29%20%20%20%20%20%20%20%20%20%0A%20%20%20else%20%0A%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%22chrome%3A//global/skin/icons/error-16.png%22%2C%20self.label%2C%20%22%u041F%u0430%u0440%u043E%u043B%u044C%20%u043D%u0435%20%u0431%u044B%u043B%20%u0432%u0432%u0435%u0434%u0435%u043D%22%29%3B%0A%20%20%20%20%20%20%20%20return%20false%3B%20%20%20%20%20%20%20%20%0A%7D%3B%0A%20%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043F%u0430%u0440%u043E%u043B%u044C%20%u043F%u0440%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%20%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%20%u0435%u0441%u043B%u0438%20%u043F%u0430%u0440%u043E%u043B%u044C%20%u043D%u0435%20%u0432%u0435%u0440%u043D%u044B%u0439%20...............%0Afunction%20checkingPassword%28%29%20%7B%20%0A%20%20%20cbu.setPrefs%28%22CB.Password.data%22%2C%20%22%22%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%20%u0435%u0441%u043B%u0438%20%u043F%u0430%u0440%u043E%u043B%u044C%20%u043D%u0435%20%u0431%u044B%u043B%20%u0432%u0432%u0435%u0434%u0435%u043D%20%u0438%u043B%u0438%20%u043D%u0435%20%u043F%u0440%u0430%u0432%u0438%u043B%u044C%u043D%u044B%u0439%0A%20%20%20var%20password%20%3D%20getPassword%28%29%3B%0A%20%20%20if%20%28%20%21password%20%7C%7C%20password%20%21%3D%20gPrefService.getComplexValue%28%22CB.Password.value%22%2C%20Ci.nsISupportsString%29.data%20%29%20goQuitApplication%28%29%3B%0A%7D%3B%0Acbu.getPrefs%28%22CB.Password.data%22%29%20%3D%3D%20%27shutdown%27%20%26%26%20cbu.getPrefs%28s%29%20%26%26%20cbu.getPrefs%28%22CB.Password.value%22%29%20%26%26%20checkingPassword%28%29%3B%20%20%20%20%20%20%20%0A%0A%0A//%20%u0411%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0437%u0430%u043F%u0440%u043E%u0441%20%u043F%u0430%u0440%u043E%u043B%u044F%20%u0435%u0441%u043B%u0438%20%u0440%u0435%u0441%u0442%u0430%u0440%u0442%20...............%0Avar%20stopButton%20%3D%20%7B%0A%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20cbu.setPrefs%28%22CB.Password.data%22%2C%20data.toString%28%29%29%3B%0A%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28stopButton%2C%20%22quit-application%22%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%u0432%20%27about%3Aconfig%27%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%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%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%22%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%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20...............%0Athis.tooltipText%20%3D%20self.label%20+%20%22%5CnL%3A%20%20%u0417%u0430%u0449%u0438%u0442%u0438%u0442%u044C%20%u0437%u0430%u043F%u0443%u0441%u043A%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%5Cn%u0421%3A%20%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u043F%u0430%u0440%u043E%u043B%u044C%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

// CB Profile Password от 09.11.2016.

// Настройка функций кликов мыши для кнопки ...............
this.onclick =e=> {
   
   // ЛКМ переклучает кнопку и запрашивает пароль если он не существует ....
   if ( e.button == 0 ) { 
        var run = cbu.getPrefs(s);
        var password = cbu.getPrefs("CB.Password.value");
        
        if ( !run && password == null || password == '' ) savePassword();
        else
             cbu.setPrefs(s, !run);
        }
    
   // СКМ запрашивает и сохраняет пароль ....      
   if ( e.button == 1 ) savePassword(); 
};


var s = 'CB.Password';
var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);


// Сохранить пароль ...............
function savePassword() {
   var password = getPassword();
   if ( !password ) return;
   
   cbu.setPrefs("CB.Password.value", convertFromUnicode("UTF-8", password));   
   alertsService.showAlertNotification(self.image, self.label, "Пароль сохранён");
};


// Получить закодированный пароль или false через модальное окно через окошко для вода пароля ...............
function getPassword() {   
   var check = {value: true}, password = {value: ""};
   Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService).
   promptPassword(null, self.label, "Введите пароль:", password, null, check); 
   if ( password.value.length )  
        return btoa(unescape(encodeURIComponent(password.value)))         
   else 
        alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", self.label, "Пароль не был введен");
        return false;        
};
 

// Проверить пароль при запуске браузера и выключить браузер если пароль не верный ...............
function checkingPassword() { 
   cbu.setPrefs("CB.Password.data", "");  
               
   // закрыть браузер если пароль не был введен или не правильный
   var password = getPassword();
   if ( !password || password != gPrefService.getComplexValue("CB.Password.value", Ci.nsISupportsString).data ) goQuitApplication();
};
cbu.getPrefs("CB.Password.data") == 'shutdown' && cbu.getPrefs(s) && cbu.getPrefs("CB.Password.value") && checkingPassword();       


// Блокировать запрос пароля если рестарт ...............
var stopButton = {
   observe: function(subject, topic, data) {
      cbu.setPrefs("CB.Password.data", data.toString());
   }
};
Services.obs.addObserver(stopButton, "quit-application", false);


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек в 'about:config' ...............
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").
   src = !cbu.getPrefs(s)
   ? self.image
   : "data:image/x-icon;base64,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";
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage)); 


// Подсказка ...............
this.tooltipText = self.label + "\nL:  Защитить запуск браузера \nС: Изменить пароль";

Отредактировано bunda1 (29-07-2013 12:53:35)

Отсутствует

 

№9715-08-2012 21:45:49

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Открыть выделенный текст в внешнем текстовом редакторе( Firefox17+ ), от 29.01.2017.
Кнопка открывает выделенный текст из страницы или текстового поля в внешнем текстовом редакторе, который у вас по умолчанию открывает текстовые(.txt) файлы.

ЛКМ => открыть выделенный текст в внешнем текстовом редакторе.

Код кнопки и вкладки код:
Код кнопки:

Выделить код

Код:

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%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0432%u043D%u0435%u0448%u043D%u0435%u043C%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u043C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuklEQVR42oXQTyiDYRwH8O+717+JgxOO40hKc5mEKJRdHGhRa8jm4kBubnLYheaETWgXGWMTLlqKA8kOJH+SaYqQrWWJse31vP9s4xlPvf1+7/O87+f59mMgraMZcHzdg1N4VzAcOE48YxVRaOI6oa8ygUHSYuSf1UY7nK4CYbOxoQHg4uRU/Pb8yi9UjdoLr1WfgnwDlcYQHK4DKHMLkcnGpSMxAqNghVpfdoEzl44OqI0PuL3ew919AMos7vt2nmBJX1FZjujLJY5XetIBJ6R7kreoKxr0/wV4SHcnbNbZatIiE1xJOsCdBLTA06dCiPT8NJRJgNZ2g11jCQ1wALFHEZhrxSoBnN7fCZrVgD4JSQCGeeD9SQSW2rFMgGCEmCQCm5GKmBZoQNc08PYsAmudWCTABiVBLUlgoibosACvQRHYMsDOJwgDnzEy/ahYP0nNyQdGlmhAmxkIS4CnH7ME2KEkKFUBo04aoB0DgtIQ9wcx1UsSBBI3f/BJyJOdB5jdNKB6AJG8mAA0bQ9jUq/C4envBEXFwPjmD0BG5H6I8cHSnUjA3/whzYKfwfg6BUiZtNXH4Z8lA19Kh9YRwR0sPwAAAABJRU5ErkJggg%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//%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0444%u0430%u0439%u043B%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%20%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%20%u0432%20%u0432%u043D%u0435%u0448%u043D%u0435%u043C%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0435%20..........%0Avar%20file%20%3D%20Services.dirsvc.get%28%27ProfD%27%2C%20Ci.nsIFile%29%3B%0Afile.append%28%22TextToEditor.txt%22%29%3B%0AcustombuttonsUtils.writeFile%28%20file.path%2C%20convertFromUnicode%28%22UTF-16%22%2C%20getSelect%28%29%29%20%29%3B%0Afile.launch%28%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%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%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%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

// Записать выделенный текст в файл в папке профиля и открыть файл в внешнем редакторе ..........
var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
file.append("TextToEditor.txt");
custombuttonsUtils.writeFile( file.path, convertFromUnicode("UTF-16", getSelect()) );
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();
};


// Получить выделенный текст из страницы или 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,"");
};

Отредактировано bunda1 (27-05-2013 01:01:20)

Отсутствует

 

№9822-08-2012 23:40:57

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Открыть папки и файлы Firefox( Firefox11+ ) от 13.02.2017.
Кнопка дает возможность из меню кнопки открыть папки и файлы Firefox.
Папки - Firefox, Profile, bookmarkbackups, extensions, custombuttons и также папки searchplugins где лежат плагины поиска (на Firefox 40+ отсутствуют), Chrome и Download если эти папки уже созданы.
Файлы - userChrome.css, userContent.css, user.js, prefs.js, если эти файлы уже созданы.

ЛКМ => Открыть меню кнопки.

Скриншот меню кнопки:
d8fb047b3563242f6b200d5c01f6fa66.png

Код кнопки и инициализации:
Код кнопки:

Выделить код

Код:

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%u043F%u0430%u043F%u043A%u0438%20%u0438%20%u0444%u0430%u0439%u043B%u044B%20Firefox%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%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%7B%0A%20%20%20%20%20%20label%3A%20%22Profile%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//mozapps/skin/profile/profileicon.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%22%20%0A%20%20%20%20%20%7D%2C%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%7B%20%0A%20%20%20%20%20%20label%3A%20%22Firefox%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//branding/content/icon16.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22CurProcD%22%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Download%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//mozapps/skin/downloads/downloadIcon.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22DfltDwnld%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20separator%3A%20%27%27%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Extensions%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2Cextensions%22%20%0A%20%20%20%20%20%7D%2C%20%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Custom%20buttons%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//custombuttons/skin/cbicon.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2Ccustombuttons%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Bookmark%20backups%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//custombuttons/skin/button.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2Cbookmarkbackups%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Search%20plugins%28default%29%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22CurProcD%2Csearchplugins%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Search%20plugins%28user-defined%29%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22UsrSrchPlugns%22%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20separator%3A%20%27%27%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22Chrome%22%2C%0A%20%20%20%20%20%20image%3A%20%22chrome%3A//global/skin/dirListing/folder.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22UChrm%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22userChrome.css%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2Cchrome%2CuserChrome.css%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22userContent.css%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2Cchrome%2CuserContent.css%22%20%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22user.js%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2C%2Cuser.js%22%20%0A%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20label%3A%20%22prefs.js%22%2C%0A%20%20%20%20%20%20style%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%0A%20%20%20%20%20%20value%3A%20%22ProfD%2C%2Cprefs.js%22%20%0A%20%20%20%20%20%7D%20%20%20%20%20%0A%5D%3B%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%7B%0A%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%20LOG%28m.label.slice%280%2C6%29%29%0A%20%20%20if%20%28%20version%20%3E%2040%20%26%26%20m.label.startsWith%28%22Search%22%29%20%29%20return%3B%0A%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%22value%22%2C%20m.value%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20%28%22image%22%20in%20m%29%20%26%26%20mItem.setAttribute%28%22image%22%2C%20m.image%29%3B%20%20%20%20%0A%20%20%20%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%0A%7D%29%3B%0AmenuPopup.addEventListener%28%22click%22%2C%20e%3D%3E%20openFirefoxFolders%28e.target.value%29%29%3B%0A%20%0A%0A//%20%u0424%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%7B%0A%20%20%20var%20array%20%3D%20value.split%28%22%2C%22%29%2C%0A%20%20%20directory%20%3D%20array%5B0%5D%2C%20folders%20%3D%20array%5B1%5D%2C%20file%20%3D%20array%5B2%5D%3B%0A%0A%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28directory%2C%20Ci.nsIFile%29%3B%0A%20%20%20folders%20%26%26%20dir.append%28folders%29%3B%0A%20%20%20file%20%26%26%20%28dir.append%28file%29%2C%20dir.launch%28%29%29%3B%0A%20%20%20dir.exists%28%29%20%26%26%20%21file%20%26%26%20dir.reveal%28%29%3B%0A%7D%3B%0A%20%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

this._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");


// Создать меню ..................
var array = [
     {
      label: "Profile",
      image: "chrome://mozapps/skin/profile/profileicon.png",
      value: "ProfD" 
     },        
     { 
      label: "Firefox",
      image: "chrome://branding/content/icon16.png",
      value: "CurProcD"
     },
     {
      label: "Download",
      image: "chrome://mozapps/skin/downloads/downloadIcon.png",
      value: "DfltDwnld" 
     },
     {
      separator: ''
     },
     {
      label: "Extensions",
      image: "chrome://mozapps/skin/extensions/extensionGeneric-16.png",
      value: "ProfD,extensions" 
     }, 
     {
      label: "Custom buttons",
      image: "chrome://custombuttons/skin/cbicon.png",
      value: "ProfD,custombuttons" 
     },
     {
      label: "Bookmark backups",
      image: "chrome://custombuttons/skin/button.png",
      value: "ProfD,bookmarkbackups" 
     },
     {
      label: "Search plugins(default)",
      style: "chrome://global/skin/icons/Search-glass.png",
      value: "CurProcD,searchplugins" 
     },
     {
      label: "Search plugins(user-defined)",
      style: "chrome://global/skin/icons/Search-glass.png",
      value: "UsrSrchPlugns"
     },
     {
      separator: ''
     },
     {
      label: "Chrome",
      image: "chrome://global/skin/dirListing/folder.png",
      value: "UChrm" 
     },
     {
      label: "userChrome.css",
      style: "chrome://global/skin/icons/folder-item.png",
      value: "ProfD,chrome,userChrome.css" 
     },
     {
      label: "userContent.css",
      style: "chrome://global/skin/icons/folder-item.png",
      value: "ProfD,chrome,userContent.css"  
     },
     {
      label: "user.js",
      style: "chrome://global/skin/icons/folder-item.png",
      value: "ProfD,,user.js" 
     },
     {
      label: "prefs.js",
      style: "chrome://global/skin/icons/folder-item.png",
      value: "ProfD,,prefs.js" 
     }     
];
var version = parseInt(Services.appinfo.version);
var menuPopup = self.appendChild(document.createElement("menupopup"));
array.forEach(m=> {
   if ( "separator" in m ) { menuPopup.appendChild(document.createElement("menuseparator")); return }; LOG(m.label.slice(0,6))
   if ( version > 40 && m.label.startsWith("Search") ) return;
   var mItem = menuPopup.appendChild(document.createElement("menuitem"));
   mItem.setAttribute("label", m.label);
   mItem.setAttribute("value", m.value);        
   mItem.setAttribute("class", "menuitem-iconic");
   ("image" in m) && mItem.setAttribute("image", m.image);    
   ("style" in m) && mItem.setAttribute("style", "list-style-image: url('"+ m.style +"'); -moz-image-region: rect(0, 16px, 16px, 0)");
});
menuPopup.addEventListener("click", e=> openFirefoxFolders(e.target.value));
 

// Функция открывает папки и файлы Firefox, выбор завысит от аргумента 'value' ...................toString().startsWith("Search")
function openFirefoxFolders(value) {
   var array = value.split(","),
   directory = array[0], folders = array[1], file = array[2];

   var dir = Services.dirsvc.get(directory, Ci.nsIFile);
   folders && dir.append(folders);
   file && (dir.append(file), dir.launch());
   dir.exists() && !file && dir.reveal();
};

Отредактировано bunda1 (30-03-2013 16:42:27)

Отсутствует

 

№9925-08-2012 11:50:33

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Блокнот в вкладке( Firefox24+ ) от 27.09.2017.
Кнопка открывает в вкладке текстовое поле которое можно использовать как простой блокнот для заметок, можно открыть в блокноте выделенный на странице текст или текст из буфера обмена. Css код текстового поля находится в вкладке Справка и его можно менять как вам нравится, например: поменять фон блокнота на светло зеленей для этого нужно в вкладке Справка заменить background: #383838; на background: #F0FFF0, если блокнот открыт в текущей вкладке изменения блокнота будут сразу видны.

ЛКМ => Открыть блокнот в табе,
СКМ => Открыть в блокноте выделенный на странице текст или текст из буфера обмена,
ПКМ => CB меню.

Код кнопки, инициализации и справки:
Код кнопки:

Выделить код

Код:

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%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%3B%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%20gBrowser.currentURI.spec%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%20gBrowser.currentURI.spec%20%3D%3D%20notepad%20%26%26%20gURLBar.reset%28%29%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%28self.getAttribute%28%27Help%27%29.replace%28%27selfImage%27%2C%20self.image%29%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

Инициализация:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ...........
this.onclick =e=> {
   if ( e.button == 0 ) gBrowser.selectedTab = gBrowser.addTab(notepad); // открыть блокнот    
     
   if ( e.button == 1 ) {  
        // запомнить текст из буфера обмена и скопировать текст на странице
        var clip = gClipboard.read();
        window.content.focus();
        goDoCommand("cmd_copy");            

        // открыть блокнот и вставить текст из буфера обмена
        var browser = gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.addTab(notepad)); 
        browser.addEventListener("pageshow", function c(e) {      
           this.removeEventListener(e.type, c);           

           setTimeout(()=> {              
              content.document.getElementsByTagName("textarea")[0].value = gClipboard.read();
              clip && gClipboard.write(clip); // вернуть текст в буфер обмена 
           }, 50);      
        });       
        };
};


// Обновить блокнот в текущей вкладке после обновления кнопки ...........
if ( gBrowser.currentURI.spec == notepad ) {
     var val = content.document.getElementsByTagName("textarea")[0].value;
     loadURI(notepad);
     setTimeout(()=> content.document.getElementsByTagName("textarea")[0].value = val, 500);     
     };

        
// Очистить адресную строку в кладке блокнота ...........
addEventListener("TabAttrModified", ()=> gBrowser.currentURI.spec == notepad && gURLBar.reset());


// Получаем адрес блокнота как base64 из вкладки Справка и добавляем иконку для вкладки блокнота ...........
var notepad = "data:text/html;base64," + window.btoa(self.getAttribute('Help').replace('selfImage', self.image));


// Подсказка у кнопки ...........
this.tooltipText = "Блокнот в вкладке \nЛ: Открыть блокнот \nС: Открыть блокнот с текстом( выделенным или из буфера ) \nП: CB меню";

Справка:

Выделить код

Код:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Notepad</title>
<head>
 <link rel="shortcut icon" href="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="type="image/x-icon">
</head>

<TEXTAREA></TEXTAREA>
<style>

html {
  background-color: black;
  overflow: hidden;
}
textarea {
  background: #383838;
  overflow-y: auto;
  width: 100%;
  height: 100%;
  border-radius: 2px;
  border: 2px inset white;
  color: white;
}
</style>

Отредактировано bunda1 (21-06-2014 13:13:47)

Отсутствует

 

№10004-11-2012 13:00:42

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Готовые кнопки для Custom Buttons

Настройки( Firefox 17-33 )
Открывает настройки. Даёт возможность закрывать настройки двойным кликом на окошке настройки любой клавишей мыши. После установки кнопки настройки будут открываться как не модальное окно, то есть браузер не блокировается как при обычном открытие настроек.
Если заменить в коде preferences.addEventListener на gBrowser.addEventListener то можно будет закрыть настройки двойным кликом на странице.

ЛКМ => открыть настройки.

Код кнопки и инициализация:
Код кнопки:

Выделить код

Код:

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%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHUlEQVR4Xl3DS2hcVRzA4d+55869M5NMppOEyctoxlgnsRgxRrSKpaQ+arG4kkJEBQmu1YUaoXQluNEuRUQ3xShiKdpiKSFpNRAosbQaY3yUGqOpcZI0Zh7JzJx7zt9FyaYffKrp0Gl2iBMkERsSJwOqWJsUZwtUTb/zvTnxlHH1CKxFRNjhcRPKurtVLcpHTelPtkcGP47yrZ/adHiy9kT+gsskjlKLwDlu5QHgZLA20HHa9GcnzGB7j7svS/Tknkc5/MDTHNyTckN3jDntHUN7RxC6AVA3q9TBr8Hqt0uH9r/DcAKKhl3f/EXjPxuoQKE9H9uZohQTNjHocz99oTYqI4JYAA/nEGe79aUNqEDDzDqt26Xr8Q7/VNjiz/jNmIZqmdvDgGyuC5eK97rt7dDV67iawRNR+01f+4vykAdFIblV/zXeknjcC/0jKu49Fe9KPRbetWvKyzhykaFpqG/AZpvHURxAgSfKv6fe05t0fe1gFFaH6WhFF1wpNIkgWcbJRS/QzyV2Zy4ke2K0PdIbY/Tws9Ld8R4mavPFRpGaM8ga0AultnR7tlp7NZ30jzZkkkirRu0Obuh08IavmE4uSag2I2S9soyi7Clnvg+u//CtXpgrsGIwQZx/W5vHYg2xsZiWprjEaCn4JLbUbNKq2XpFIcv/Qbm0LNaGqmH4FBJFOGvfre478CadLWAhJTVySTPVmdFnUil/Lkj4+WtV9frlRe6sGuDyPExPj6r43s/AWd92tX1n9g3vxSpIAEVQAolQaIxT3q6pxkoVHEAOmP4Nzk48o8KHxyGyzTaXnYieHx7k6iY0K+jMwBWgAvhADIgAU4W1eZiZO8lG8RUVPHiCmxi2udZxVotnqFptR+5/CT+vWAL6gXuBq8AVA1+e+Jut4iC+v+ohAiLgZEr/vDyg1iqjFDZfVucWPuc2oMPAR18t8OHkCnkDNxagXjuO1qsAHjsUSBAriAeiEda31vjjF1icLbP45wtM/v4Wx87Oc37mNax5H6UA8LmFWIsoBcWt43wwPUU9MsSDS9joRy5eO09ML6E9dvwPdX9rZvPeL7sAAAAASUVORK5CYII%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%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20document.getElementById%28%27menu_preferences%27%29.click%28%29%3B%20%20%20%20%0A%7D%3B%0A%0A%0A//%20%u0421%u043B%u0435%u0434%u0438%u043C%20%u0437%u0430%u043F%u0443%u0441%u043A%u043E%u043C%20%u0432%u0441%u0435%u0445%20%u043A%u043E%u043C%u0430%u043D%u0434%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u043C%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u043A%u043E%u0434%u044B%20%u0438%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20..........................%0Afunction%20commandHandler%28e%29%20%7B%0A%20%0A%20%20%20var%20command%20%3D%20e.target.getAttribute%28%22oncommand%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%27%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%27%20%u043A%u0430%u043A%20%u043D%u0435%20%u043C%u043E%u0434%u0430%u043B%u044C%u043D%u043E%u0435%20%u043E%u043A%u043D%u043E%20%u0438%20%u0434%u0430%u0442%u044C%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u044C%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0434%u0432%u043E%u0439%u043D%u044B%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u043E%u043A%u043E%u0448%u043A%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20....%0A%20%20%20if%20%28%20command%20%3D%3D%20%27openPreferences%28%29%3B%27%20%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%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%2C%20%u0438%u043B%u0438%20%u0444%u043E%u043A%u0443%u0441%20%u043D%u0430%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0435%u0441%u043B%u0438%20%u043E%u043D%u0438%20%u0443%u0436%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%20....%0A%20%20%20%20%20%20%20%20var%20win%20%3D%20Cc%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D.getService%28Ci.nsIWindowMediator%29.getMostRecentWindow%28%22Browser%3APreferences%22%29%3B%0A%20%20%20%20%20%20%20%20var%20features%20%3D%20%22chrome%2C%20dialog%2C%20titlebar%2C%20toolbar%2C%20%22%20+%20%22centerscreen%2C%20minimizable%2C%20resizable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%20%21win%20%29%20var%20preferences%20%3D%20window.openDialog%28%22chrome%3A//browser/content/preferences/preferences.xul%22%2C%20%22Preferences%22%2C%20features%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%20win%20%29%20%7B%20win.focus%28%29%3B%20return%3B%20%7D%3B%20%0A%0A%20%20%20%20%20%20%20%20//%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u043F%u043E%20%u0434%u0432%u043E%u0439%u043D%u043E%u043C%u0443%20%u043A%u043B%u0438%u043A%u0443%20%u043D%u0430%20%u043E%u043A%u043E%u0448%u043A%u0435%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0441%u0435%u0431%u044F%20....%0A%20%20%20%20%20%20%20%20preferences.addEventListener%28%22dblclick%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%20%20var%20node%20%3D%20e.target.nodeName%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20node%20%3D%3D%20%22textbox%22%20%7C%7C%20node%20%3D%3D%20%22filefield%22%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%22dblclick%22%2C%20arguments.callee%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.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%7D%2C%20true%29%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%7D%3B%0A%0Awindow.addEventListener%28%22command%22%2C%20commandHandler%2C%20true%29%3B%20%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%20%20%20%20window.removeEventListener%28%22command%22%2C%20commandHandler%2C%20true%29%3B%0A%7D%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Инициализация:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ...............................................
this.onclick = function(e) {     
     if ( e.button == 0 ) document.getElementById('menu_preferences').click();    
};


// Следим запуском всех команд и запускаем нужные коды и функции ..........................
function commandHandler(e) {
 
   var command = e.target.getAttribute("oncommand"); 
           
   // открывать 'Настройки' как не модальное окно и дать возможность закрыть двойным кликом на окошке настроек ....
   if ( command == 'openPreferences();' ) {
        e.preventDefault();
        e.stopPropagation();
                
        // открыть настройки, или фокус на настройки если они уже открыты ....
        var win = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("Browser:Preferences");
        var features = "chrome, dialog, titlebar, toolbar, " + "centerscreen, minimizable, resizable";
        if ( !win ) var preferences = window.openDialog("chrome://browser/content/preferences/preferences.xul", "Preferences", features, "");
        if ( win ) { win.focus(); return; }; 

        // обработчик закрывает настройки по двойному клику на окошке настроек и удаляет себя ....
        preferences.addEventListener("dblclick", function(e) {
                    var node = e.target.nodeName;
                    if ( node == "textbox" || node == "filefield" ) return;
                    this.removeEventListener("dblclick", arguments.callee, true); 
                    this.close();
                    }, true); 
        }                 
};

window.addEventListener("command", commandHandler, true); 
this.onDestroy = function() {
    window.removeEventListener("command", commandHandler, true);
};


Настройки( Firefox 33+ )
Кнопка просто открывает настройки.

ЛКМ => открыть настройки.

Код кнопки и вкладка Код:
Код кнопки:

Выделить код

Код:

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%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADHUlEQVR4Xl3DS2hcVRzA4d+55869M5NMppOEyctoxlgnsRgxRrSKpaQ+arG4kkJEBQmu1YUaoXQluNEuRUQ3xShiKdpiKSFpNRAosbQaY3yUGqOpcZI0Zh7JzJx7zt9FyaYffKrp0Gl2iBMkERsSJwOqWJsUZwtUTb/zvTnxlHH1CKxFRNjhcRPKurtVLcpHTelPtkcGP47yrZ/adHiy9kT+gsskjlKLwDlu5QHgZLA20HHa9GcnzGB7j7svS/Tknkc5/MDTHNyTckN3jDntHUN7RxC6AVA3q9TBr8Hqt0uH9r/DcAKKhl3f/EXjPxuoQKE9H9uZohQTNjHocz99oTYqI4JYAA/nEGe79aUNqEDDzDqt26Xr8Q7/VNjiz/jNmIZqmdvDgGyuC5eK97rt7dDV67iawRNR+01f+4vykAdFIblV/zXeknjcC/0jKu49Fe9KPRbetWvKyzhykaFpqG/AZpvHURxAgSfKv6fe05t0fe1gFFaH6WhFF1wpNIkgWcbJRS/QzyV2Zy4ke2K0PdIbY/Tws9Ld8R4mavPFRpGaM8ga0AultnR7tlp7NZ30jzZkkkirRu0Obuh08IavmE4uSag2I2S9soyi7Clnvg+u//CtXpgrsGIwQZx/W5vHYg2xsZiWprjEaCn4JLbUbNKq2XpFIcv/Qbm0LNaGqmH4FBJFOGvfre478CadLWAhJTVySTPVmdFnUil/Lkj4+WtV9frlRe6sGuDyPExPj6r43s/AWd92tX1n9g3vxSpIAEVQAolQaIxT3q6pxkoVHEAOmP4Nzk48o8KHxyGyzTaXnYieHx7k6iY0K+jMwBWgAvhADIgAU4W1eZiZO8lG8RUVPHiCmxi2udZxVotnqFptR+5/CT+vWAL6gXuBq8AVA1+e+Jut4iC+v+ohAiLgZEr/vDyg1iqjFDZfVucWPuc2oMPAR18t8OHkCnkDNxagXjuO1qsAHjsUSBAriAeiEda31vjjF1icLbP45wtM/v4Wx87Oc37mNax5H6UA8LmFWIsoBcWt43wwPUU9MsSDS9joRy5eO09ML6E9dvwPdX9rZvPeL7sAAAAASUVORK5CYII%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%5Bdocument.getElementById%28%27menu_preferences%27%29.click%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

Вкладка Код:

Выделить код

Код:

document.getElementById('menu_preferences').click();

Отредактировано bunda1 (27-05-2013 01:02:44)

Отсутствует

 

№10114-11-2012 11:46:09

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Готовые кнопки для Custom Buttons

Save snapshot to html( Firefox24+ ) от 01.12.2017.
Кнопка сохраняет страницу с картинками или её часть, если она выделена, в html одним файлом.

Код кнопки

Выделить код

Код:

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%20snapshot%20to%20html%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/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%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%0A%0A%20%20%20%20var%20saveToFile%20%3D%20function%20%28fileContent%2C%20fileName%29%20%7B%0A%20%20%20%20var%20uc%20%3D%20Components.classes%5B%27@mozilla.org/intl/scriptableunicodeconverter%27%5D.createInstance%28Components.interfaces.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20uc.charset%20%3D%20%27utf-8%27%3B%0A%20%20%20%20fileContent%20%3D%20uc.ConvertFromUnicode%28fileContent%29%3B%0A%20%20%20%20var%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20%20%20var%20fp%20%3D%20Components.classes%5B%27@mozilla.org/filepicker%3B1%27%5D.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20fp.init%28window%2C%20%27%27%2C%20fp.modeSave%29%3B%0A%20%20%20%20fp.defaultString%20%3D%20fileName%3B%0A%20%20%20%20fp.appendFilters%28fp.filterHTML%29%3B%0A%20%20%20%20fp.appendFilters%28fp.filterAll%29%3B%0A%20%20%20%20fp.open%28function%20%28rv%29%20%7B%0A%20%20%20%20if%20%28rv%20%3D%3D%20nsIFilePicker.returnOK%20%7C%7C%20rv%20%3D%3D%20nsIFilePicker.returnReplace%29%20%7B%0A%20%20%20%20var%20stream%20%3D%20Components.classes%5B%27@mozilla.org/network/file-output-stream%3B1%27%5D.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%20%20%20%20stream.init%28fp.file%2C%200x02%7C0x20%7C0x08%2C%200666%2C%200%29%3B%0A%20%20%20%20stream.write%28fileContent%2C%20fileContent.length%29%3B%0A%20%20%20%20stream.close%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20resolveURL%20%3D%20function%20%28url%2C%20base%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20var%20ioService%20%3D%20Components.classes%5B%27@mozilla.org/network/io-service%3B1%27%5D.getService%28Components.interfaces.nsIIOService%29%3B%0A%20%20%20%20var%20baseURI%20%3D%20ioService.newURI%28base%2C%20null%2C%20null%29%3B%0A%20%20%20%20var%20absURI%20%3D%20ioService.newURI%28url%2C%20null%2C%20baseURI%29%3B%0A%20%20%20%20return%20absURI.spec%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20getSelWin%20%3D%20function%20%28w%29%20%7B%0A%20%20%20%20if%20%28w.getSelection%28%29.toString%28%29%29%20return%20w%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20f%2C%20r%3B%20f%20%3D%20w.frames%5Bi%5D%3B%20i++%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20if%20%28r%20%3D%20getSelWin%28f%29%29%20return%20r%3B%0A%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20encodeImg%20%3D%20function%20%28src%2C%20obj%29%20%7B%0A%20%20%20%20var%20canvas%2C%20img%2C%20ret%20%3D%20src%3B%0A%20%20%20%20if%20%28/%5Ehttps%3F%3A%5C/%5C//.test%28src%29%29%20%7B%0A%20%20%20%20canvas%20%3D%20doc.createElement%28%27canvas%27%29%3B%0A%20%20%20%20if%20%28%21obj%20%7C%7C%20obj.nodeName.toLowerCase%28%29%20%21%3D%20%27img%27%29%20%7B%0A%20%20%20%20img%20%3D%20doc.createElement%28%27img%27%29%3B%0A%20%20%20%20img.src%20%3D%20src%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20img%20%3D%20obj%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20if%20%28img.complete%29%20try%7B%0A%20%20%20%20canvas.width%20%3D%20img.width%3B%0A%20%20%20%20canvas.height%20%3D%20img.height%3B%0A%20%20%20%20canvas.getContext%28%272d%27%29.drawImage%28img%2C%200%2C%200%29%3B%0A%20%20%20%20ret%20%3D%20canvas.toDataURL%28%28/%5C.jpe%3Fg/i.test%28src%29%20%3F%20%27image/jpeg%27%20%3A%20%27image/png%27%29%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%3B%0A%20%20%20%20if%20%28img%20%21%3D%20obj%29%20img.src%20%3D%20%27about%3Ablank%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20ret%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20toSrc%20%3D%20function%20%28obj%29%20%7B%0A%20%20%20%20var%20strToSrc%20%3D%20function%20%28str%29%20%7B%0A%20%20%20%20var%20chr%2C%20ret%20%3D%20%27%27%2C%20i%20%3D%200%2C%20meta%20%3D%20%7B%27%5Cb%27%3A%20%27%5C%5Cb%27%2C%20%27%5Ct%27%3A%20%27%5C%5Ct%27%2C%20%27%5Cn%27%3A%20%27%5C%5Cn%27%2C%20%27%5Cf%27%3A%20%27%5C%5Cf%27%2C%20%27%5Cr%27%3A%20%27%5C%5Cr%27%2C%20%27%5Cx22%27%20%3A%20%27%5C%5C%5Cx22%27%2C%20%27%5C%5C%27%3A%20%27%5C%5C%5C%5C%27%7D%3B%0A%20%20%20%20while%20%28chr%20%3D%20str.charAt%28i++%29%29%20%7B%0A%20%20%20%20ret%20+%3D%20meta%5Bchr%5D%20%7C%7C%20chr%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20%27%5Cx22%27%20+%20ret%20+%20%27%5Cx22%27%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20arrToSrc%20%3D%20function%20%28arr%29%20%7B%0A%20%20%20%20var%20ret%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20arr.length%3B%20i++%29%20%7B%0A%20%20%20%20ret%5Bi%5D%20%3D%20toSrc%28arr%5Bi%5D%29%20%7C%7C%20%27null%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20%27%5B%27%20+%20ret.join%28%27%2C%27%29%20+%20%27%5D%27%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20objToSrc%20%3D%20function%20%28obj%29%20%7B%0A%20%20%20%20var%20val%2C%20ret%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20prop%20in%20obj%29%20%7B%0A%20%20%20%20if%20%28obj.hasOwnProperty%28prop%29%20%26%26%20%28val%20%3D%20toSrc%28obj%5Bprop%5D%29%29%29%20ret.push%28strToSrc%28prop%29%20+%20%27%3A%20%27%20+%20val%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20%27%7B%27%20+%20ret.join%28%27%2C%27%29%20+%20%27%7D%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20switch%20%28Object.prototype.toString.call%28obj%29.slice%288%2C%20-1%29%29%20%7B%0A%20%20%20%20case%20%27Array%27%3A%20return%20arrToSrc%28obj%29%3B%0A%20%20%20%20case%20%27Boolean%27%3A%0A%20%20%20%20case%20%27Function%27%3A%0A%20%20%20%20case%20%27RegExp%27%3A%20return%20obj.toString%28%29%3B%0A%20%20%20%20case%20%27Date%27%3A%20return%20%27new%20Date%28%27%20+%20obj.getTime%28%29%20+%20%27%29%27%3B%0A%20%20%20%20case%20%27Math%27%3A%20return%20%27Math%27%3B%0A%20%20%20%20case%20%27Number%27%3A%20return%20isFinite%28obj%29%20%3F%20String%28obj%29%20%3A%20%27null%27%3B%0A%20%20%20%20case%20%27Object%27%3A%20return%20objToSrc%28obj%29%3B%0A%20%20%20%20case%20%27String%27%3A%20return%20strToSrc%28obj%29%3B%0A%20%20%20%20default%3A%20return%20obj%20%3F%20%28obj.nodeType%20%3D%3D%201%20%26%26%20obj.id%20%3F%20%27document.getElementById%28%27%20+%20strToSrc%28obj.id%29%20+%20%27%29%27%20%3A%20%27%7B%7D%27%29%20%3A%20%27null%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20mainWin%20%3D%20document.commandDispatcher.focusedWindow.top%20%3D%3D%20content%20%3F%20document.commandDispatcher.focusedWindow%20%3A%20content%0A%20%20%20%20var%20selWin%20%3D%20getSelWin%28mainWin%29%2C%20win%20%3D%20selWin%20%7C%7C%20mainWin%2C%20doc%20%3D%20win.document%2C%20loc%20%3D%20win.location%3B%0A%20%20%20%20var%20ele%2C%20pEle%2C%20clone%2C%20reUrl%20%3D%20/%28url%5C%28%5Cx22%29%28.+%3F%29%28%5Cx22%5C%29%29/g%3B%0A%20%20%20%20if%20%28selWin%29%20%7B%0A%20%20%20%20var%20rng%20%3D%20win.getSelection%28%29.getRangeAt%280%29%3B%0A%20%20%20%20pEle%20%3D%20rng.commonAncestorContainer%3B%0A%20%20%20%20ele%20%3D%20rng.cloneContents%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20pEle%20%3D%20doc.documentElement%3B%0A%20%20%20%20ele%20%3D%20%28doc.body%20%7C%7C%20doc.getElementsByTagName%28%27body%27%29%5B0%5D%29.cloneNode%28true%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20while%20%28pEle%29%20%7B%0A%20%20%20%20if%20%28pEle.nodeType%20%3D%3D%201%29%20%7B%0A%20%20%20%20clone%20%3D%20pEle.cloneNode%28false%29%3B%0A%20%20%20%20clone.appendChild%28ele%29%3B%0A%20%20%20%20ele%20%3D%20clone%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20pEle%20%3D%20pEle.parentNode%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20sel.appendChild%28ele%29%3B%0A%20%20%20%20for%20%28var%20el%2C%20all%20%3D%20sel.getElementsByTagName%28%27*%27%29%2C%20i%20%3D%20all.length%3B%20i--%3B%29%20%7B%0A%20%20%20%20el%20%3D%20all%5Bi%5D%3B%0A%20%20%20%20if%20%28el.style%20%26%26%20el.style.backgroundImage%29%20el.style.backgroundImage%20%3D%20el.style.backgroundImage.replace%28reUrl%2C%20function%20%28a%2C%20prev%2C%20url%2C%20next%29%20%7B%0A%20%20%20%20if%20%28%21/%5E%5Ba-z%5D+%3A/.test%28url%29%29%20url%20%3D%20resolveURL%28url%2C%20loc.href%29%3B%0A%20%20%20%20return%20prev%20+%20encodeImg%28url%29%20+%20next%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20switch%20%28el.nodeName.toLowerCase%28%29%29%20%7B%0A%20%20%20%20case%20%27link%27%3A%0A%20%20%20%20case%20%27style%27%3A%0A%20%20%20%20case%20%27script%27%3A%20el.parentNode.removeChild%28el%29%3B%20break%3B%0A%20%20%20%20case%20%27a%27%3A%0A%20%20%20%20case%20%27area%27%3A%20if%20%28el.hasAttribute%28%27href%27%29%20%26%26%20el.getAttribute%28%27href%27%29.charAt%280%29%20%21%3D%20%27%23%27%29%20el.href%20%3D%20el.href%3B%20break%3B%0A%20%20%20%20case%20%27img%27%3A%0A%20%20%20%20case%20%27input%27%3A%20if%20%28el.hasAttribute%28%27src%27%29%29%20el.src%20%3D%20encodeImg%28el.src%2C%20el%29%3B%20break%3B%0A%20%20%20%20case%20%27audio%27%3A%0A%20%20%20%20case%20%27video%27%3A%0A%20%20%20%20case%20%27embed%27%3A%0A%20%20%20%20case%20%27frame%27%3A%0A%20%20%20%20case%20%27iframe%27%3A%20if%20%28el.hasAttribute%28%27src%27%29%29%20el.src%20%3D%20el.src%3B%20break%3B%0A%20%20%20%20case%20%27object%27%3A%20if%20%28el.hasAttribute%28%27data%27%29%29%20el.data%20%3D%20el.data%3B%20break%3B%0A%20%20%20%20case%20%27form%27%3A%20if%20%28el.hasAttribute%28%27action%27%29%29%20el.action%20%3D%20el.action%3B%20break%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20head%20%3D%20ele.insertBefore%28doc.createElement%28%27head%27%29%2C%20ele.firstChild%29%3B%0A%20%20%20%20var%20meta%20%3D%20doc.createElement%28%27meta%27%29%3B%0A%20%20%20%20meta.httpEquiv%20%3D%20%27content-type%27%3B%0A%20%20%20%20meta.content%20%3D%20%27text/html%3B%20charset%3Dutf-8%27%3B%0A%20%20%20%20head.appendChild%28meta%29%3B%0A%20%20%20%20var%20title%20%3D%20doc.getElementsByTagName%28%27title%27%29%5B0%5D%3B%0A%20%20%20%20if%20%28title%29%20head.appendChild%28title.cloneNode%28true%29%29%3B%0A%20%20%20%20head.copyScript%20%3D%20function%20%28unsafeWin%29%20%7B%0A%20%20%20%20if%20%28%27%24%27%20in%20unsafeWin%29%20return%3B%0A%20%20%20%20var%20f%20%3D%20doc.createElement%28%27iframe%27%29%3B%0A%20%20%20%20f.src%20%3D%20%27about%3Ablank%27%3B%0A%20%20%20%20f.setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bleft%3A0%3Btop%3A0%3Bvisibility%3Ahidden%3Bwidth%3A0%3Bheight%3A0%3B%27%29%3B%0A%20%20%20%20doc.documentElement.appendChild%28f%29%3B%0A%20%20%20%20var%20str%2C%20script%20%3D%20doc.createElement%28%27script%27%29%3B%0A%20%20%20%20script.type%20%3D%20%27text/javascript%27%3B%0A%20%20%20%20for%20%28var%20name%20in%20unsafeWin%29%20%7B%0A%20%20%20%20if%20%28name%20in%20f.contentWindow%20%7C%7C%20%21/%5E%5Ba-zA-Z_%24%5D%5B0-9a-zA-Z_%24%5D*%24/.test%28name%29%29%20continue%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20str%20%3D%20toSrc%28unsafeWin%5Bname%5D%29%3B%0A%20%20%20%20if%20%28%21/%5C%7B%5Cs*%5C%5Bnative%20code%5C%5D%5Cs*%5C%7D/.test%28str%29%29%20%7B%0A%20%20%20%20script.appendChild%28doc.createTextNode%28%27var%20%27%20+%20name%20+%20%27%20%3D%20%27%20+%20str.replace%28/%3C%5C/%28script%3E%29/ig%2C%20%27%3C%5C%5C/%241%27%29%20+%20%27%3B%5Cn%27%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20f.parentNode.removeChild%28f%29%3B%0A%20%20%20%20if%20%28script.childNodes.length%29%20this.nextSibling.appendChild%28script%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20head.copyScript%28win.wrappedJSObject%20%7C%7C%20win%29%3B%0A%20%20%20%20head.copyStyle%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20if%20%28%21s%29%20return%3B%0A%20%20%20%20var%20style%20%3D%20doc.createElement%28%27style%27%29%3B%0A%20%20%20%20style.type%20%3D%20%27text/css%27%3B%0A%20%20%20%20if%20%28s.media%20%26%26%20s.media.mediaText%29%20style.media%20%3D%20s.media.mediaText%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20rule%3B%20rule%20%3D%20s.cssRules%5Bi%5D%3B%20i++%29%20%7B%0A%20%20%20%20if%20%28rule.type%20%21%3D%203%29%20%7B%0A%20%20%20%20if%28%28%21rule.selectorText%20%7C%7C%20rule.selectorText.indexOf%28%27%3A%27%29%20%21%3D%20-1%29%20%7C%7C%20%28%21sel.querySelector%20%7C%7C%20sel.querySelector%28rule.selectorText%29%29%29%20%7B%0A%20%20%20%20var%20css%20%3D%20%21rule.cssText%20%3F%20%27%27%20%3A%20rule.cssText.replace%28reUrl%2C%20function%20%28a%2C%20prev%2C%20url%2C%20next%29%20%7B%0A%20%20%20%20if%20%28%21/%5E%5Ba-z%5D+%3A/.test%28url%29%29%20url%20%3D%20resolveURL%28url%2C%20s.href%20%7C%7C%20loc.href%29%3B%0A%20%20%20%20if%28rule.type%20%3D%3D%201%20%26%26%20rule.style%20%26%26%20rule.style.backgroundImage%29%20url%20%3D%20encodeImg%28url%29%3B%0A%20%20%20%20return%20prev%20+%20url%20+%20next%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20style.appendChild%28doc.createTextNode%28css%20+%20%27%5Cn%27%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20this.copyStyle%28rule.styleSheet%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20if%20%28s.ownerNode%29%20style%20%3D%20s.ownerNode.cloneNode%28false%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.appendChild%28style%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20sheets%20%3D%20doc.styleSheets%3B%0A%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20sheets.length%3B%20j++%29%20head.copyStyle%28sheets%5Bj%5D%29%3B%0A%20%20%20%20head.appendChild%28doc.createTextNode%28%27%5Cn%27%29%29%3B%0A%20%20%20%20var%20doctype%20%3D%20%27%27%2C%20dt%20%3D%20doc.doctype%3B%0A%20%20%20%20if%20%28dt%20%26%26%20dt.name%29%20%7B%0A%20%20%20%20doctype%20+%3D%20%27%3C%21DOCTYPE%20%27%20+%20dt.name%3B%0A%20%20%20%20if%20%28dt.publicId%29%20doctype%20+%3D%20%27%20PUBLIC%20%5Cx22%27%20+%20dt.publicId%20+%20%27%5Cx22%27%3B%0A%20%20%20%20if%20%28dt.systemId%29%20doctype%20+%3D%20%27%20%5Cx22%27%20+%20dt.systemId%20+%20%27%5Cx22%27%3B%0A%20%20%20%20doctype%20+%3D%20%27%3E%5Cn%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20var%20fileName%20%3D%20selWin%20%3F%20win.getSelection%28%29.toString%28%29%20%3A%20%28title%20%26%26%20title.text%20%3F%20title.text%20%3A%20loc.pathname.split%28%27/%27%29.pop%28%29%29%3B%0A%20%20%20%20fileName%20%3D%20fileName.replace%28/%5B%3A%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%27_%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29.slice%280%2C%20100%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%27%27%29%3B%0A%20%20%20%20fileName%20+%3D%20%28function%20%28%29%20%7B%0A%20%20%20%20var%20d%20%3D%20new%20Date%28%29%2C%20z%20%3D%20function%28n%29%7Breturn%20%27_%27%20+%20%28n%20%3C%2010%20%3F%20%270%27%20%3A%20%27%27%29%20+%20n%7D%3B%0A%20%20%20%20return%20z%28d.getHours%28%29%29%20+%20z%28d.getMinutes%28%29%29%20+%20z%28d.getSeconds%28%29%29%3B%0A%20%20%20%20%7D%29%28%29%3B%0A%20%20%20%20if%28%21/%5C.html%3F%24/.test%28fileName%29%29fileName%20+%3D%20%27.html%27%3B%0A%20%20%20%20saveToFile%28doctype%20+%20sel.innerHTML%20+%20%27%5Cn%3C%21--%20This%20document%20saved%20from%20%27%20+%20%28loc.protocol%20%21%3D%20%27data%3A%27%20%3F%20loc.href%20%3A%20%27data%3Auri%27%29%20+%20%27%20--%3E%27%2C%20fileName%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 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();
    }
    });
    };
    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 (obj.hasOwnProperty(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);

Отредактировано Lex1 (02-06-2013 22:29:27)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]