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

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№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)

Отсутствует

 

№5208-05-2011 18:52:05

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

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

Save( Firefox 24 + ) от 07.03.2017.
Кнопка для сохранения веб-страниц и элементов веб-страниц, открывает меню из которого можно:
Сохранить закладку текущей страницы с ярлыком сайта, иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\, можно сохранить ярлык страницы без запроса на сохранение в последнюю папку где сохранялся ярлык сайта,
Сохранить иконку сайта с диалогом сохранения,
Сохранить иконку сайта в буфере обмена как код base64.
Сохранить выделенную область страницы как PNG-изображение,
Сохранить выбранный элемент страницы как PNG-изображение,
Сохранить видимую область страницы как PNG-изображение,
Сохранить всю страницу как  PNG-изображение, если страница слишком большая то кнопка сохранит сколько возможно от страницы,
Сохранить страницу как PDF файл, через сервис pdfmyurl.com,
Добавить вверху страницы ссылку на её адрес и сохранить страницу через диалог сохранения,
Сохранить выделенный текст в текстовой txt файл, если текст не выделен сохранить весь текст на странице в txt файл,
Добавить в контекстного меню изображений новый пункт 'Запомнить изображение как base64',
Добавить в контекстного меню выделенного текста новый пункт 'Сохранить выделенный текст в файл', который позволяет сохранить выделенный текст в .txt файл на рабочем столе без запроса и с добавлением текста к тексту который уже был сохранен ранее,
Добавить в контекстного меню выделенного текста новый пункт 'Открыть выделенный текст в внешнем редакторе', который позволяет открыть выделенный текст из страницы или текстового поля в внешнем текстовом редакторе.

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

ЛКМ => Открыть меню кнопки.
Код инициализации:

Выделить код

Код:

// Save, от 07.03.2017. .............

self.label = "Save";
self._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
self.image = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAADAgBEDRIXnwxQjKQNWp6pDFWXqAxXm6gMV5moDFeaqAxXmqgMV5qoDFebqAxVlqgNW5+pCkyIogwSFqgDAgBHDQoFhyszOv8hheP+IJH7/x+L8v8fjfb/H433/x+N9v8fjfb/H432/x+N9/8fi/L/IJH7/yGF5P0kLTTvDAcDgwgICIQ8Ojf/0czA+Oji1fzh18r85NzO/OTbz/zj287849vO/OPbzvzk3M/84dfK++ji1f3Sy8D5NDIvywYGB3kKCgqFQ0A8/+XXw/v979f/9uTO//rp0f/66NH/+ujR//rn0f/66NH/+ujR//bkzv/979f/5tfD/UZBPv8KCwqEDQwMhUVDQP/f08X7+OrZ/+zf0P/v5NP/8OPT/+/j0//v4tP/8OPT/+/j0//s39D/+OrZ/+DTxfxEQj//DAwMhA8PD4VKR0T/4dXG+/rr2v/v4tH/9OXU//Ll1P/z5dT/8+XU//Pl1P/05NT/7+DR//rr2v/i1cX7SkhE/w8PD4USEhKFT0xI/+XXxfv97tr/9ePR//no1P/459T/+OfU//jn1P/459T/+OfU//Xk0f/97tr/5dfF+09MSf8SEhGFFRQUhVNQTv/j2cv7+u/g//Hm2P/169v/9Orb//Tq2//06tv/9erb//br3P/x5tf/+e/g/+PZzPtTUU7/FBQUhRgXF4VXU1D/2828+/Lk0f/q2sf/7d3K/+3dyv/t3cr/7N3K/+rayP/r28n/69vI//Ll0v/azbv7VlNP/xgXF4UfHh6FTktJ/1JOTPtZVFL/Uk5L/1FNSv9RTUr/UU1K/1JPTP9YVVD/VVJP/09NSv9WUk//UU1L+05LSf8fHh2FIR8fhVVTUP9FQkD7UlBM/6Wlj/+4uJ7/sLCX/7S0mv+xsJn/oKCQ/6+vmv+hoYv/TEtH/0NCQPtVUk//IR8fhSMhIIVcWVb/SEVF+19dVv/f3sP////e//X10v///93/2di8/1lYWP+eno//5+fG/19dV/9JRkb7W1hV/yMhIYUkJCOFXltZ/0tJSPtdW1f/0NC4/+/u1P/h4cj/8PDV/7++q/8vLC7/e3lw/9fWv/9eXVf/TElJ+15bWf8lJCKEJSQjhF9cWf9LSUf5XVtX/tbVwf/5+OL/6enV//j54v/GxrX/QD0+/42Kgv/d3cr/YF5a/k5LSvlhXlv/JSUjhCkoKIZpZWT/VVJR/WNhXP/V1cT//f3s/+3t3v/8/Or/zc2//01LSf+VlIz/4eDS/2hmYv9YVVT8aWVj/ycmJoIaGRlYSEVE1DYzM8NKSUfP0dHG9/X16P/n59v+7e3g/+jo3f/X2M3+6uve/9bWzPdOTUvNOjg3y0RBQLwPDw8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==";


var pref = "CB.Shortcuts.pathToSaveShortcuts";
var faviconFolder = "C:\\Documents and Settings\\Favicon\\";   // папка для сохранения иконок для ярлыков и ярлыков сайтов
var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);


// Создать меню для кнопки .............
var array = [
   { label: "Сохранить значок веб-сайта", func: "saveFavicon()", image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACPVBMVEX09ff////C3L+Uq8+Vq8+Uqs+Zr9CZrtCZr9Gfu+ear8+mt9JRf8ORxl3t8vfF06+Twojs8/d9otl8o9s+aquZrs/X9KLp8Pft8fZhisf//+DBzN2hveihv+pii8hti9pgicl6oNlojs1zncNsi836/P2duebx8/eYyWqBp+Gn0IKBvlKHsm9qmaVuk8zt7/FEbauEv1Tp7/JdhL9oi9Pl8e2LwlmdsdD7/P76+/3H7ofo8+peh8eHwFaSteZ0pkp2gl7q8/Ohy5OApt2by2eZuOqbuOWaezWuvtd7nN2HvWxul9Ty9feQxV5ljcqBp+JEcLCVtOOo0nR7odx5n9suX6Z1mtBzmtSXyGPv9PewzfOzx+O6zu/s8fd9o95Xfrthi8lYhMN5oNnw9ffw9Pjw9Pf8/f6ewO/m8O9zmdE6aapsjdyUwouPxWPDzd6XteOSs9B5nNVpnpqHt7h/s6F6n9d7ntSTttGHwVh4qp+Ev1HH7ox6qk5wj+Hm8e3t9fOm0IKAtqOBpNrx+P9ljcyhs9FpkM2hv+/u8/fF0eOLu4N+vFKgzX3p9OSFqN13qExekIl4n9j7/P3x9PhxmNDm8e9Vg8Zfkozr8veq0YTX9qL//92AtamOwnHFz96Fot1diMh+pd13ntmatu+YyW/3+/+Tqs5UgcShzJNbhsdTf8GHs7bo8PaXtuqMr+Ty8/SZt+SUqs7r7Ox3ndb9/f7t8feZyXGYyWWCpNbz9PRuiteNtNDn7/V4ntjx8fGo3JqNAAAAv3RSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AEVuhDkAAAD+SURBVBhXY5jHzcUMAqxAICq9bx8D96adDFAgaGQOFOBaH7h7zoqZDTlFyptncAAFWBjyi52CXCI0unRLxcECPhsatbbzmlXMnS60hg0kkOxW0uNrq93tNaFpD1ggUm21QK532ZQdSm1hmXKdDCwdnOWVOi1RjNGMQCCrwMDMJ8NZ4LAynVGPkXFp8zpJBubYmn579wXtqhZb0iwn9a1iWLaViYmJ3891obOwYtLEvcYMGyWAAkwJdv6accEhi8LjGVr11SenpC5f61g3NcO0vjCAIc+DjZ2dnWexddWSbYa9nlkM+8BgWsxsK7FZ1VLzRaACNokmtdnyu1QMQgF7Rlh4zWWTAwAAAABJRU5ErkJggg=="},
   { label: "Запомнить значок веб-сайта как base64", func: "copyFaviconData()", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAI2bv/9RVpf/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAACIkvD/Jia6/ywpq/8AAAAAAAAAAAAAAAAAAAD/AAAA/wbwAf90qpv/Ymic/1RWqP9OUKr/W2Ch/2dumf9YYKT/Ly/B/xQP3/8MB9P/JCGb/wAAAAAAAAAAAAAAAAAAAP8G8AH/U5ea/ycr8f8VIP3/HiP4/ywo8v8sIvb/LCL2/ywi9v8KBOj/BQDe/wQAtv8tK4P/AAAAAAAAAAAAAAD/BvAB/3Sqm/9iaJz/Tim3/0UuuP9GPrT/R0ex/zk8uf8gIMz/FRDe/xEMzv8jIJz/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8AAAD/SqOR/yImvP8sLKj/AAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/BvAB/3Sqm/9KW5r/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAABvAB/wbwAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BvAB/wbwAf8G8AH/AAAAAAAAAAAAAAAAAAAAAAAAAAAG8AH/AAAAAAAAAP8G8AH/AAAAAAAAAAAAAAAAAAAA/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAP8G8AH/BvAB/wbwAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BvAB/wbwAf8AAAAAAAAA/wAAAP8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/AAAAAAAAAAAG8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wbwAf8G8AH/BvAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOesQQBjrEGAAaxBwACsQcABrEHDg6xBwAesQcAPrEHAD6xBw8+sQcPprEHD8axBwAGsQQABrEGAAaxB//+sQQ=="},  
   { separator: ''},
   { label: "Сохранить ярлык страницы как…", func: "saveShortcuts('true')", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/BP8k/wT/JP8E/yT/BP8k/5XLDv/zqgD/86oA//I1///yNf//86oA//OqAP/zqgD/86oA//OqAP+Vyw7/lcsO/wT/JP8E/yT/BP8k/5XLDv+Vyw7/86oA//OqAP/yNf//8jX///OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA//02AP/9NgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP/9NgD//TYA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/wT/JP+Vyw7/86oA//OqAP/zqgD/86oA/wA31v8AN9b/86oA//9If///SH//86oA//OqAP/zqgD/86oA/5XLDv8E/yT/lcsO//OqAP/zqgD/86oA//OqAP8AN9b/ADfW//OqAP//SH///0h///OqAP/zqgD/86oA//OqAP+Vyw7/BP8k/5XLDv/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/lcsO/5XLDv+Vyw7/86oA//OqAP/zqgD/86oA/0CA//9AgP//86oA/07+9f9O/vX/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP9AgP//QID///OqAP9O/vX/Tv71//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/86oA//OqAP/zqgD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="},
   { label: "Сохранить ярлык страницы без запроса на сохранение", func: "saveShortcuts()", image: false},
   { separator: ''},
   { label: "Сохранить всю страницу как PNG", func: "WebScreenShot.captureAll()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAiAcFBa4KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwoJCa8KCQmvCgkJrwsJCaECAQE/BQMDAAAAAJUgICD4V1ZW/2FhYf5hYWH/YmFh/2BgYP9fX1//X19f/19fX/9gYGD/YmFh/2FhYf9gYGD+ZmVl/1RSUuIVFBQtCgkJy1paWv+Li4v9h4eH/oiIiP6FhYX+i4uL/pKSkv6Sk5P+kpKS/ouLi/6FhYX+iIiI/oiIiP6Hh4f7lZaW/25tbYQNDQ3OcHBw/5KSkv6Li4v/i4uL/5mZmf+EhIT/ZGRk/1tbWv9kZGT/hISE/5mZmf+Li4v/jY2N/4yMjPyWl5f/iomJjQ4NDc13d3f/m5ub/pWVlf+goKD/XFxc/ygoKP8fHyD/GBsb/yAhIv8pKSn/W1tb/6CgoP+Wlpb/lpaW/J6env+Jh4eMDg4OzX1+fv+ioqL+qqqq/1hYWP8ZGRn/Ghwb/x4dHP8mIh//FhQR/xUWF/8aGhr/WFhY/6urq/+cnJz8pKSk/4qJiYwPDg7Ng4OD/7W1tf6MjIz/Ghoa/xYYGP8uKCb/ZEAo/5xyOP++saL/RD45/xISE/8bGxv/jY2N/6+vr/ypqan/ioiIjA8PD82IiIj/xMTE/l1cXP8LDAz/JiId/1o3LP9ADgD/mGog//Dt6P/VysX/Ih4Z/wsMDf9eXl7/v7+//K6urv+KiYmMEA8PzY+Pj//Kysr+SEhH/wEDBv9MPi7/hlES/3dCAP+VZAn/tJVO/7eVXf9OQTL/AAIE/0pJSf/FxcX8tLS0/4qJiYwQEBDNm5ub/9/e3/5SUlL/AAAA/0M7Mf/aya7/ybiO/5RmEf9aIAD/cjkX/z80KP8AAAD/U1JS/9nZ2fzAwMD/i4qKjBEREc2oqKn/8O/w/oeGhv8AAAD/DAsK/6qkof/17uj/nW8l/14eCf9hPTr/ExUU/wAAAP+Hh4f/6urq/MzMzf+Mi4uMERERzbCwsv/r6uz+3Nzd/yoqKv8AAAD/ExEP/2heU/9yWjv/UD0u/xcXFv8AAAD/Kioq/93d3v/l5eb81NTV/4yLi4wSERHNuLm5/+/v8P7z8/P/xsbG/yAgIP8AAAD/AQEB/wAAAP8BAQH/AAAA/yAgIP/Gxsb/9PT0/+np6vzb29v/jIuLjBIREc2+vb7/+Pj5/uvr7P/7+/v/4ODg/3Nyc/8uLi7/Hh4d/y0sLP9zc3P/4ODg//v7+//s7O3/8/P0/OHg4f+Mi4uLFBMTyMPDw//////7+Pj4/ff29v38/Pz9/////fr6+v3u7u79+vr6/f////38/Pz99/b2/fn5+f37+/v53t7e/5KSko4GBgZ7m5yc//j4+P/w8fH/8fLy//Dw8P/u7u7/8vLy//X19f/y8vL/7u7u//Dw8P/x8vL/8vLy/uXl5f/BwcH+k5GRUAAAAAQeHR1yb25uxn59fcZ9fHzGfXx8xn18fMZ9e3vGfHt7xn17e8Z9fHzGfXx8xn18fMZ9fHzGgH9/xYmIiGVaV1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},
   { label: "Сохранить видимую часть страницы как PNG", func: "WebScreenShot.capturePage()", image: false},
   { label: "Сохранить выбранный элемент страницы как PNG", func: "WebScreenShotByClick.init()", image: "data:image/x-icon;base64,AAABAAEAIBkAAAEAIAAMDQAAFgAAACgAAAAgAAAAMgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29fT/2tra/8jIyP/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8jIyP/a2tr/9vX0/+zs7P/ak0b/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/9qTRv/s7Oz/7Ozs/+J9Dv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/6SdmP/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/+vn4//z7+v/6+fj/4n0O/+zs7P/s7Oz/4n0O//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r//Pv6//z7+v/8+/r/aFtT//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//j39v/ifQ7/7Ozs/+zs7P/ifQ7/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P9oW1P/7+zq/+/s6v/v7Or/8O3r//Dt6//w7ev/8O3r//Dt6//w7ev/8O3r/+/s6v/w7ev/9fTy/+J9Dv/s7Oz/7Ozs/+J9Dv/49/b/+Pf2//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4/2hbU//q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/y8O//4n0O/+zs7P/s7Oz/4n0O//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/+Pf2//j39v/49/b/aFtT/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe//Dt6//ifQ7/7Ozs/+zs7P/ifQ7/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P/29fT/9vX0//b19P9oW1P/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/7uro/+J9Dv/s7Oz/7Ozs/+J9Dv/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx//Ty8f/08vH/9PLx/2hbU//x7+3/8vDv//Hv7f/x7+3/8e/t//Lw7//x7+3/8e/t//Lw7//x7+3/8vDv//Hv7f/29fT/4n0O/+zs7P/s7Oz/4n0O//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//8vDv//Lw7//y8O//aFtT/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/6igmP+ooJj/qKCY/8vGwf/ifQ7/7Ozs/+zs7P/ifQ7/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f/x7+3/8e/t//Hv7f9nWlL/aFtT/2hbU/9nWlL/Z1pS/2hbU/9oW1P/Z1pS/2daUv9oW1P/aFtT/2hbU/9nWlL/pJyX/+J9Dv/s7Oz/7Ozs/+J9Dv/w7ev/8O3r//Dt6//w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Hv7f/w7ev/8O3r//Dt6//x7+3/8O3r//Dt6//w7ev/8e/t//Dt6//w7ev/8O3r//Dt6//w7ev/4n0O/+zs7P/s7Oz/4n0O/+/s6v/v7Or/7uro/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/v7Or/7+zq/+/s6v/u6uj/7+zq/+/s6v/ifQ7/7Ozs/+zs7P/ifQ7/7uro/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7uro/+zo5v/u6uj/7uro/+7q6P/s6Ob/7uro/+7q6P/u6uj/7Ojm/+7q6P/u6uj/7Ojm/+J9Dv/s7Oz/7Ozs/+J9Dv/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/7Ojm/+zo5v/s6Ob/4n0O/+zs7P/s7Oz/4n0O/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/q5uT/6ubk/+rm5P/ifQ7/7Ozs/+zs7P/ifQ7/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+nl4v/p5eL/6eXi/+J9Dv/s7Oz/7Ozs/+J9Dv/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/5uHe/+bh3v/m4d7/6eXi/+bh3v/m4d7/5uHe/+nl4v/m4d7/5uHe/+bh3v/p5eL/4n0O/+zs7P/s7Oz/4n0O/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/m4d7/5uHe/+bh3v/ifQ7/7Ozs/+zs7P/ifQ7/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+bh3v/k39z/5uHe/+Tf3P/m4d7/5N/c/+J9Dv/s7Oz/7Ozs/+J9Dv/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/i3Nn/4tzZ/+Lc2f/k39z/4n0O/+zs7P/s7Oz/4n0O/+Lc2f/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/h29j/4dvY/+Hb2P/ifQ7/7Ozs/+zs7P/ifQ7/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+DZ1v/g2db/4NnW/+J9Dv/s7Oz/9fTy/+J9Dv/8+/r/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/+vn4//r5+P/6+fj/4n0O//X08v/8+/r/6KFU/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ifQ7/4n0O/+J9Dv/ooVT//Pv6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},
   { label: "Сохранить выбранную область страницы как PNG", func: "WebScreenShotByClipping.init()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADDn2Hfz5pE/8eVQP7IlkH/yJZB/8iWQf/IlUH/yJVA/8iVQP/IlED/yJQ//8iUP//IlD//yJM+/8iTPv/Hkj3/nI1w//bDbP//8OH//+zW///s1///69b//+rV///p1P//59L//+XQ///izf//38n//9vG///ZxP//1b///dG////Prf/KlkX/88N4/v37///99Pj//fT6//vy9v/68fT/+u/y//rt8P/66u3/+ufq//rl6P/64eT/+93h//3a3//71d7//9LK/86XR//0xHb//vv////18///9fT///f5///4////9f7///P8///v+f//7Pb//+nz///m8f//4eb//9vZ//3Y2v//1Mb/zphH//TGd//+/////Pj1///7///Q58r/m9aV/6TZnv+i15r/otWY/6LTlv+j0pb/mc6M/9DXuf//3+P//Nnc///Wyf/OmUf/9MZ3//7////8+/j//////53WnP+Y5pn/rvGv/6PvpP+e7p//me6b/5nvm/95533/mM+L///j7f/629z//9jL/86ZR//0xnf//v////z9+v//////qtup/8Xzxf/a/tn/z/vO/8n7yf/D+sL/xPvD/6Hzo/+j05b//+Tu//re3///2cz/zplI//XGeP/+/////P36//////+n26f/uvC6/9T71P/K+Mr/xvjG/8D3wP+/+L//nfCf/6LTlf//5u//+t/g///cz//OmUj/9MZ3//7////8/fr//////6rcqv/G9MX/3//f/9n92f/V/NX/0PzQ/9H+0P+s9a7/pdSY///o8f/64OL//9zP/86aSP/0xnf//v////z9+f//////ndid/5TjlP+v7q//qeyp/6jsqf+k7KX/p+6n/4Tlh/+Z0Y7//+r0//rh4v//3tH/zppI//TGd//+/////v77///////Y8Nj/p9+n/6/jr/+t4a3/rd2p/67bpv+u2ab/p9Wc/9jgx///6Oz//OPl///e0f/Omkj/9MV1//7//////fr///78///+/f///////////////////P////j////0+///8fn//+vu///m4v/94+P//97P/86ZSP/zx3v//v/////+/f///////f////v////7////+/////v+///7+///+/f///vz/P/98Pr//+33//3p9///5OL/zppL//a1Sv/0xoL/9cR7//XEfP/1xHz/9cR8//XEfP/1xH3/9cR8//XCev/1wXr/9b94//W9d//1u3X/87l0//y6bP/Llj7/+pMA/vWBAP/1gwD/9YMA//WDAP/1gwD/9YMA//WDAP/1gwD/9YQA//WEAP/1hAD/9YQA//WEAP/zhAH//okA/8qLIv3xpzP/4ptV/+OdU//jnVP/451T/+OdU//jnVP/451T/+OdU//jnVL/451S/+OdUv/jnVL/451S/+GdVf/qnUf/2aRJ/9q0c9/8yn7/98V5/vjGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6//jGev/4xnr/+MZ6/vrIe/+jj2y4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},
   { separator: ''},
   { label: "Сохранить всю страницу как PDF", func: "savePageToPDF()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYUw4pJt3V/+Rb1D8lnFP/55zTf+VcVH/lXJS/5VyUv+VclL/lXJS/5VyUv+VclL/k3BR/J56Wv9cRzSkAAAAAJNvUKTto2L/4ppe/uehZf/Pmmr/noZv/9Scav/Wl17/1plh/9eZYf/XmWH/15lh/9eZYf/WmGD/2Jlg/suRXP9mRiuk8rWA/397dP1akKn/rqqi/3LF3f8Mntj/4dLJ///+9f/48u3/9e7n//bt5v/47+f/+O/n//jv5//rvZP/1ZJX/a9/VP9+lrD8AIvz/xOt+f8Douv/ALb6/wC28/9tmar/z8jJ//Lq5/////7//v////n9///6/P3//////+Ta0P/PjVP/pnpT/IWds/+aiXj/5efl/8Px//951/3/LMz//wCx8/8GltL/NIu3/4ycqf/l29L////+//n6+//8/v//3tXM/8+OVP+oe1P/6K57/86QWP/r6Ob////////++v/r9/z/oOb9/zDL//8Arf//AI/r/ydysv+hpqr//PTr///////d1Mz/0I5U/6h7U//osH//wo5g/+fm5P/7/f//9vf5//z7+////vv/9/r8/5Dc/P8Oqv7/AJf//wF02v9ffZ7/8Ojh/+Ha1P/NjFL/qHtT/+ewf//Ej1//7O3r///////+/v7//v7+//f5+v/6+vv////8/8Tq/f8hp/7/AJH//wB18/8/bqj/1MGu/9mXXv+leVH/569+/8iSYv+/tKn/wLew/8O5sf/P0M////////7+/v/3+fv////7/9Hv/v8hoP3/AIn//wB4/v84ZqL/w4NH/619VP/nsYD/x45c/9W5of/bv6j/0Jxt/6J/YP+spqD/2N3i//7////6+/3///76/8vr/v8Slv7/AIb+/wBz//83VH7/nW1B/+ewfv/Fjl7/7Ozr///////9+/r/9d7K/9Ghdv+jd1D/pJ6Y/+jt8f/9///////7/6fb/v8Ahv7/AYD//wRp6f95YlT/57B//8SOXv/n5uT//v7///r7/P/8/v////////XRsv/DhEv/loBu/9DX3P/9/v/////7/2O6/f8Afv//FnTU/5JtTf/nsH//xY9e/+jn5f/+/f//+fj5//n4+P/5+Pn/+/////Xbxf/Wj1D/nX1h/+Ll6P////7/3+/3/w+V//8tcbP/qHJB/+WuffzCjV7/5efn///////+/v7//////////////v7///////XRsP/TnW3/8fT3//////////z/ddD//0Nxl/+zdkH88LmH/9CRWP2+qJT/0M7N/8/Jxv/Pysf/z8rH/8/Kxv/Py8n/zsO6/7+pmP/PzMv/zsnG/9bNyP+nsK7/h4R3/b2BT/+Sb1Ck7qxw/9GSW/69hlb/wYhX/8CIV//AiFf/wIhX/8CIVv/BiVj/xI1d/8CIVv/BiFf/vYZW/9STW/7ppmv/bE80pAAAAACUd16k+sui/+7AmPzwwpr/8MKa//DCmv/wwpr/8MKa//DCmf/vwZj/8MKa//DCmv/uwJj8+cui/5N3XaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},
   { label: "Добавить url и сохранить страницу", func: "savePage()", image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAyMjIzwyMjFeLi0tVS8vLlcuLy9XLS4uVywsLFUuLi5aKSkpUggICBMAAAAAAgICAQAAAAAAAAAAAAAAABQTEyOgoJ/yysvL/s3Pz/7Z293/4OPk/+bp6f/t7u7/5eXl/LOysv97e3vLFRUWJQAAAAACAgIDAAAAAAAAAAA8PDxSz9HT/83Qz/fLx8T8z7+5/M/AsPzez8n89e3r/PDx8fyusLL43dzc/52dndMWFhY2AAAAAAICAgIAAAAAODg5T8bEv/+9o476vIR1/7WDcv+uj3v/spCA/8Wqk//Gtab/rqyq/+Pk5fn19fX+np6e4BQUFCgAAAAAAAAAAC4uJU29oYj/wLao+tLDqf/Mv7P/yLik/7zEvP/F0cr/v62Y/6+Kef/Z2NP/6Ors+d3c3P97e3vNBAQEDgIDAAZhRCuYxaSb/8Gvqfu2inL/vIF0/7FmUv+ygG//waaX/8m8tP/CoIn/vqOF/9zg3//l5ef7ycnJ/zY2Nm0hFw08rGJD/6BlYf2mWUD/rW9g/7aNff+ZRyL/pmxR/7RyWv+qaEz/uYR0/69kSf/k1tD//////Ozs6/1iYmK4WTMck61mVv+Yemj8hjsg/51bQ/+wem//n084/6+pq/+3p6H/l0Ux/4lFOf+gWDr/zq2X//b7/fzo6Oj/YWBgsXpXSbnMsp//wNC8/I9jWv+WX1X/tn5w/7iKfv/Tzc7/ztXc/513bf+MSjH/rWJG/7iRd//o7Oz85OPl/2BgYLN1aFqu2tO+/7ejnvyohYD/ybGb/7q1ov/HwrX/7/Lr//T19v/Hzs3/p4V0/6hvW/+6gHf/4uDh/N3e3v9hYWC0dWNPuaVXRP6cfWv8w7Gz/8vHsv/U2dP/4OHf//b08//9/Pv/3drZ/7rBw/+0ppv/wZ2F/9zc3PzW1tj/ZWRktE1HPW2oa1f/lX1t/cTP0v/Ew8T/3Nvd/9LR0//W1tf/5OXl/+/t6v/i6vD/wK+i/8y2o//b3t/81NTU/2FhYbMMDAsPsZ2a1tDX2P++vL390c/P/+Dh4P/b29r/09PS/9rY1//6+Pf/8PP3/8Kqlf/c0sv/3N7g/NTU1P9iYmKyAAAAAEY6MmXozcP/5ezt+OHk6Pzt7Oz9+Pj4/urq6/zs7/T8+f///NXGsPzey8P87vDy/OXm5vnf39//ZWVlrgAAAAAGBQQQdFdHy8Wfhv/d18797e7w/+3t7P/y8u7/7N/G/7unff+/uqT/4+Tl/97d3v/c3Nz/sLCw+h8fH0IBAQABAAEBABEVFx8vJB1cWy8ciZNrU8itknHrkWdIxUsqFnEnJSBRMjQ3WS8uL1csLCtVMjIyXiIiIj4BAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},
   { label: "Сохранить выделенный текст как txt файл", func: "saveSelectionToTxt()", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAQE6AAAAZAAAAGgAAAJmAAACZgAAAGYAAABmAAAAZgAAAGYAAABmAAAAZgAAAGYAAABlAAAAaQABAmYAAQEjAAAAADlVkOdVcKHxVXKi8kdklPJLZpfyU3Cg8lJvn/JRbZ7yUW+g8lFun/JRbp/yUG6e8lVyofFVdKjzLkV45wAAAFABAQEAaIzF/3y34v9wsuL/cJe0/0lpgv9bjLP/dLLh/2+v3v9sq9v/cK3d/3Gv3v9sqtv/b7Df/4G77P9VcqT2AAAAVAMDAQBnir/+ZqfU/pDB4/7a3uD+j46N/kxYXv6To6/+1er4/tXp+P7J3/D+1ej4/svg8v6Gut/9aqzd/lhxnvAAAABSAwIBAGaIvv9pptX/ocfj//f4/P/P0tX/g4CA/1xZWf+Woqr/2uz8/9Hl+f/W5fT/2Of3/5fC4v5tq93/Vm+e8QAAAFIDAgEAaYm+/3mw2/+iyeX/9Pn8/+z0+//IzNL/d3h5/0tMTv+Mkpn/xdvs/9Hp/f/O4PL/msXk/nmz4/9XcJ/xAAAAUgMDAQBti7//k7/h/6fL5v/v9fn/4u73/9Dk9P+8wMT/YGpx/zJJWv94iJf/ztzo/9Pp/P+ZwuD+gLfk/1dwnvEAAABSAwMBAHOPwf+myub/sNHp//j7/P/6/P3/8fr///r39P+sxdP/IXWq/xJJcv+NjZD/0+Lu/6TN7f6Ft+L/WXGf8QAAAFIDAwEAd5LD/7PR6/+ZxOP/0ePx/97r9f/Y5/L/3e32/8Tc7f9gseT/CHK3/zBYdv+HiY7/lL/f/pLE7/9bcJ3xAAAAUgMDAQB4k8P/xNvx/5/F5f+kyOX/qMrn/6TH5f+kyOX/sM/q/5e51P9Mm83/GHm3/xxIav9fdYf+pMvs/1x1pfIAAABTAwMBAHmSxf/O4/T/y9/y/8Hb9P/C3PX/wNv0/7vW7/+93ff/utDm/42fsf9Gjbn/EXS2/ytSbv6Fj5r/WnGc8gAAAFICAwEBepPE/tHk9f/S5PX/vMjV/7fCzP+3w8//uMPP/7XBzP+6ytf/qa+4/3h/hv9Ghaz/JoO+/jNXdP82PVnyAAAAVgACAgCBmcb/2+r3/dHh8fyPkpX/kI6N/5yam/+dnJ3/paWk/6enpf+sr6//mpSR/3Bubf9SjbD8H4C+/QsrSvcCAAB/AAAAA3yVx//j8///3u/7/52gpf6pqKf+uLm5/rq7u/7Ly8v+ycnI/paWlf6LjY/+np2f/Xh+g/5gnL7/MX+y/xcgJ80BAgNNN1OUs6W84fDA1O73mJyj/ainpv+2trb/t7e4/8fHyP/Fxsb/kZGQ/4eGhP+vucT/j6G+/W53k/NlkbnwNoOv/AgiNb8CCBsQDRo/YwsaO3B0d33arKyp9q2trfWvr6/2u7u79ru7vPawr7H1sbCt9nJ2gOQIGD6bFCFEYB0qPE1Bf6SpEz9cggAAAAMCAQEBAQAAADIyMmlDQ0ONQUFBhUFBQYVCQkGFQkJBhUhISIRNTU2OKysrZAEAAAUBAQAAAgEAAAkEAAEDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},
   { separator: ''},
   { label: "Запомнить изображение как base64, в контекстном меню", value: "CB.Save.WebScreenShotOnImage"},
   { label: "Сохранить выделенный текст в файл, в контекстном меню", value: "CB.Save.SelectionToFile" },
   { label: "Открыть выделенный текст в внешнем редакторе, в контекстном меню", value: "CB.Save.TextToEditor"},
];

var menuPopup = self.appendChild(document.createElement("menupopup"));
array.forEach((m,i)=> {
   if ("separator" in m) { menuPopup.appendChild(document.createElement("menuseparator")); return };
   var mItem = menuPopup.appendChild(document.createElement("menuitem"));
   mItem.setAttribute("label", m.label);
   mItem.setAttribute("class", "menuitem-iconic");
   if ("image" in m) mItem.setAttribute("image", m.image || array[i-1].image); 
   if ("value" in m) { 
       mItem.setAttribute('type', 'checkbox');
       mItem.setAttribute('checked', cbu.getPrefs(m.value) );
       mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));
       }
   if ("func" in m) mItem.addEventListener("command", ()=> eval(m.func.toString()));
});
menuPopup.setAttribute("onclick", "event.stopPropagation()");



// Сохранить как PNG страницу или части страницы .............
WebScreenShot = {
   capture: function(win, x, y, width, height) {
      var canvas = document.createElementNS(xhtmlns, 'canvas');
      canvas.width = width;
      canvas.height = height;
      var ctx = canvas.getContext("2d");
      ((i = 17)=> { 
         try { ctx.drawWindow(win, x, y, canvas.width, canvas.height, "white") }
         catch(e) { canvas.height = canvas.width*i; arguments.callee(--i) };
      })();
      var url = makeURI(canvas.toDataURL("image/png"));
      
      var fp = window.makeFilePicker();
      fp.init(window, "Сохранить как…", fp.modeSave);
      fp.appendFilter("", "*.png");
      fp.defaultString = getTabLabel() + "  " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png";
      if (fp.show() == fp.returnCancel || !fp.file) return;
      
      var wbp = window.makeWebBrowserPersist();
      parseInt(Services.appinfo.version) < 36
      ? wbp.saveURI(url, null, null, null, null, fp.file, null)
      : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+
   },
   captureAll: function() {
      var win = content;
      WebScreenShot.capture(win, 0, 0, win.innerWidth + win.scrollMaxX, win.innerHeight + win.scrollMaxY);
   },
   capturePage: function() {
      var win = content, doc = win.document, body = doc.body, html = doc.documentElement;
      var scrX = (body.scrollLeft || html.scrollLeft) - html.clientLeft;
      var scrY = (body.scrollTop || html.scrollTop) - html.clientTop;
      WebScreenShot.capture(win, scrX, scrY, win.innerWidth, win.innerHeight);
   },
   onImage: function(image) {
      var canvas = document.createElementNS(xhtmlns, 'canvas');
      canvas.width = image.naturalWidth;
      canvas.height = image.naturalHeight;
      var ctx = canvas.getContext('2d');
      ctx.drawImage(image, 0, 0);
      var base64 = canvas.toDataURL();
      gClipboard.write(base64);
   
      // стиль для изображение в сплывающей подсказке ....
      var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
      var uri = makeURI('data:text/css,'+ encodeURIComponent('#alertImage { height: 25px !important; width: 25px !important; }'));
      sss.loadAndRegisterSheet(uri, 0);
      
      alertsService.showAlertNotification(base64, self.label, "Запомнил изображение как base64", false, "", (s, t)=> { 
         if (t == 'alertfinished')
             sss.unregisterSheet(uri, 0); // удалить стиль когда подсказка закрывается
      }, "");
   }
};

// Сохранить выбранную область страницы как PNG ....
WebScreenShotByClipping = {
   capture: WebScreenShot.capture,
   handleEvent: function(e) {
      if (e.button) return false;
          e.preventDefault();
          e.stopPropagation();
          switch(e.type){
                 case 'mousedown':
                    this.downX = e.pageX;
                    this.downY = e.pageY;
                    this.bs.left = this.downX + 'px';
                    this.bs.top = this.downY + 'px';
                    this.body.appendChild(this.box);
                    this.flag = true;
                    break;
                 case 'mousemove':
                    if (!this.flag) return;
                    this.moveX = e.pageX;
                    this.moveY = e.pageY;
                    if (this.downX > this.moveX) this.bs.left = this.moveX + 'px';
                    if (this.downY > this.moveY) this.bs.top  = this.moveY + 'px';
                    this.bs.width = Math.abs(this.moveX - this.downX) + 'px';
                    this.bs.height = Math.abs(this.moveY - this.downY) + 'px';
                    break;
                 case 'mouseup':
                    this.uninit();
                    break;
          }
   },
   init: function() {
      this.win = document.commandDispatcher.focusedWindow;
      if (this.win == window) this.win = content;
      this.doc = this.win.document;
      this.body = this.doc.body;
      if (!this.body instanceof HTMLBodyElement){
          alertsService.showAlertNotification(self.image, self.label, "Не удается захватить!");
          return false;
          }
      this.flag = null;
      this.box = this.doc.createElement('div');
      this.bs = this.box.style;
      this.bs.border = '#0f0 dashed 2px';
      this.bs.position = 'absolute';
      this.bs.zIndex = '2147483647';
      this.defaultCursor = getComputedStyle(this.body, '').cursor;
      this.body.style.cursor = 'crosshair';
      ["click", "mouseup", "mousemove", "mousedown"].forEach(type=> this.doc.addEventListener(type, this, true));
   },
   uninit: function() {
      var pos = [this.win, parseInt(this.bs.left), parseInt(this.bs.top), parseInt(this.bs.width), parseInt(this.bs.height)];
      this.body.style.cursor = this.defaultCursor;
      this.body.removeChild(this.box);
      this.capture.apply(this, pos);
      ["click", "mouseup", "mousemove", "mousedown"].forEach(type=> this.doc.removeEventListener(type, this, true));
   },
};

// Сохранить выбранный элемент на странице как PNG ....
WebScreenShotByClick = {
   capture: WebScreenShot.capture,
   getPosition: function() {
      var html = this.doc.documentElement;
      var body = this.doc.body;
      var rect = this.target.getBoundingClientRect();
      return [
              this.win
             ,Math.round(rect.left) + (body.scrollLeft || html.scrollLeft) - html.clientLeft
             ,Math.round(rect.top) + (body.scrollTop || html.scrollTop) - html.clientTop
             ,parseInt(rect.width)
             ,parseInt(rect.height)
          ];
   },
   highlight: function() {
      this.orgStyle = this.target.hasAttribute('style') ? this.target.style.cssText : false;
      this.target.style.cssText += 'outline: red 2px solid; outline-offset: 2px; -moz-outline-radius: 2px;';
   },
   lowlight: function(e) {
      if (this.orgStyle) this.target.style.cssText = this.orgStyle;
      else this.target.removeAttribute('style'); 
   },
   handleEvent: function(e) {
      switch(e.type){
             case 'click':
                if (e.button) return;
                e.preventDefault();
                e.stopPropagation();
                this.lowlight();
                this.capture.apply(this, this.getPosition());
                this.uninit();
                break;
             case 'mouseover':
                if (this.target) this.lowlight();
                this.target = e.target;
                this.highlight();
                break;
      }
   },
   init: function() {
      this.win = content;
      this.doc = content.document;
      ["click", "mouseover"].forEach(type=> this.doc.addEventListener(type, this, true));
   },
   uninit: function() {
      this.target = false;
      ["click", "mouseover"].forEach(type=> this.doc.removeEventListener(type, this, true));
   },
};


// Сохранить страницу как PDF файл через сервис 'pdfmyurl.com' .............
function savePageToPDF(loc = content.location) {
   loc.href.startsWith("http") && loadURI("http://pdfmyurl.com?url=" + loc);
}; 

 
// Сохранить ярлык страницы в указанную папку или в последнюю папку сохранения ..............
function saveShortcuts(saveAs, shortcutName) {
   var url = content.document.location;
   cbu.isPref(pref, "C:\\");
  
   // блокируем создание ярлыков для внутренних страниц FF
   if ( ["about:", "chrome:", "jar:", "data:"].indexOf(url.protocol) !== -1 ) {   
         alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", self.label, "Не поддерживается");
         return;
         }          
   
   // получить название ярлыка 
   if ( saveAs ) shortcutName = setPathToShortcut(shortcutName)
   else 
        shortcutName = shortcutName ? shortcutName : getSiteName() + getTabLabel() + " " + Date.now();
   if ( saveAs && shortcutName == false ) return;
   
   // сохранить иконку таба в установленную папку
   var faviconName = "favicon" + Date.now();
   var favicon = saveFaviconToFolder(faviconName);
 
   // получить путь для сохранения ярлыка из 'about:config' 
   var pathToFolder = gPrefService.getComplexValue(pref, Ci.nsISupportsString).data;
   var pathToShortcut = pathToFolder + shortcutName + ".url";
       
   // адрес страницы в UTF-8 если это протокол 'file' или в 'Punycode' если это .рф домен
   if ( url.protocol == 'file:' ) url = convertFromUnicode("UTF-8", url);   
   if ( url.host.slice(-3) == '.рф') url = Services.io.newURI(url, null, null).asciiSpec;
     
   // текст ярлыка из адреса страницы и пути к иконке таба    
   var text = "[InternetShortcut]" + "\r\n" + "URL=" + url;
   var pathToFavicon = "IconFile=" + faviconFolder + faviconName + ".ico" + "\r\n";
   if ( favicon == false ) var pathToFavicon = "";
   var data = text + "\r\n" + pathToFavicon + "IconIndex=0";      

   // записать текст в ярлык
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
   file.initWithPath(pathToShortcut);
   foStream.init(file, 0x02|0x08|0x20, 0666, 0);
   foStream.write(data, data.length);
   foStream.close();

   // подсказка
   var notification = 'Сохранил в: ' + pathToFolder;
   var image = (favicon == false) ? self.image : gBrowser.selectedBrowser.mIconURL;
   alertsService.showAlertNotification(image, shortcutName, notification);
};


// Установка пути и названия для сохранения ярлыка через диалог сохранения, отмена отдаст 'false' ..............
function setPathToShortcut(shortcutName) {     
   var pathToFile = gPrefService.getComplexValue(pref, Ci.nsISupportsString).data;
   var shortcutName = shortcutName ? shortcutName : getSiteName() + getTabLabel() + " " + Date.now();

   // диалог создания и установки пути    
   var fp = window.makeFilePicker();
   fp.init(window, "Укажите где сохранить ярлык страницы!", fp.modeSave);
   fp.appendFilters(fp.filterAll);
   fp.defaultString = shortcutName;
     
   if ( fp.show() == fp.returnCancel ) return false;          
     
   // убрать название файла из пути к файлу и записать путь в 'about:config'
   var filePath = fp.file.path.toString();
   var fileName = fp.file.leafName.toString();
   cbu.setPrefs(pref, convertFromUnicode("UTF-8", filePath.replace(fileName, "")) );      
   return fileName;
};


// Сохранить в указанную папку иконку таба как .ico и без диалога сохранения ..............
function saveFaviconToFolder(faviconName) {
   var url = gBrowser.mCurrentTab.image.replace("#-moz-resolution=16,16","");
   if ( !url || content.document.mozSyntheticDocument ) return false;
   if ( url.startsWith("http") ) url = "moz-anno:favicon:" + url;

   var img = new Image();
   img.onload = function() {
       var tools = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools);
       var stream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
       var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);

       var request = img.QueryInterface(Ci.nsIImageLoadingContent).getRequest(img.CURRENT_REQUEST);
       var istrm = tools.encodeImage(request.image, "image/vnd.microsoft.icon", "format=bmp;bpp=32");
       stream.init(istrm);
       var data = stream.readBytes(stream.available());
       istrm.close(); stream.close();

       var path = faviconFolder + faviconName + ".ico";
       file.initWithPath(path);
       file.exists() && file.remove(false);
       try { file.create(file.NORMAL_FILE_TYPE, 448) } 
       catch(e) {
          setTimeout(()=> {  
             alertsService.showAlertNotification("chrome://global/skin/icons/error-16.png", self.label,
             "Не могу сохранить иконку вкладки в " + faviconFolder + "\n" + "Укажите в начале кода кнопки другой диск!");
          }, 2500);
       };
       cbu.writeFile(path, data);
   }
   img.setAttribute("src", url);
};


// Добавить адрес наверху страницы и открыть диалог сохранения страницы .............
function savePage() {
   var sURL = gURLBar.value;
   content.document.body.innerHTML = "<table width=100%><tr><td align=left><small><a target=_blank href=" + 
                                        sURL + ">"+ sURL + "</a></small>\n</td></tr></table>" + content.document.body.innerHTML;
   saveDocument(window.content.document);
};


// Сохранить иконку текущего сайта с диалогом сохранения .............
function saveFavicon() { saveImageURL(gBrowser.mCurrentTab.image, "save", null, false, false, null, content.document) };


// Скопировать иконку текущего сайта как base64 код .............
function copyFaviconData() {
   var img = new Image();
   img.src = gBrowser.mCurrentTab.image;
   WebScreenShot.onImage(img);
};


// Сохранить выделенный текст или весь текст на странице как txt файл .............
function saveSelectionToTxt() {
   var sel = getSelect();
   !sel && document.getElementById("cmd_selectAll").doCommand(); 
     
   // создать название файла из заголовка страницы и текущего времени и сохранить текст ....
   var fileTitle = getTabLabel() + '  ' + (new Date()).toLocaleFormat("%H·%M·%S");
   saveURL("data:text/plain," + encodeURIComponent(content.location + ("\r\n\r\n" + sel)), 
                                fileTitle + ".txt", null, false, false, null, content.document);
   !sel && goDoCommand("cmd_selectNone"); 
};

 
// Добавляем в контекстного меню страницы новые пункты .............
((contextMenu, el)=> {
   // в контекстного меню изображений ....
   var baseItem = contextMenu.appendChild(document.createElement("menuitem"));
   baseItem.id = "content-baseItem";
   baseItem.setAttribute("label", "Запомнить изображение как base64");
   baseItem.onclick =()=> WebScreenShot.onImage(gContextMenu.target);

   // в контекстного меню выделенного текста ....
   var saveItem = contextMenu.insertBefore(document.createElement("menuitem"), el);
   saveItem.id = "content-saveItem";
   saveItem.setAttribute("label", "Сохранить выделенный текст в файл");
   saveItem.onclick =()=> saveSelectionToFile();

   var editorItem = contextMenu.insertBefore(document.createElement("menuitem"), el);
   editorItem.id = "content-editorItem";
   editorItem.setAttribute("label", "Открыть выделенный текст в внешнем редакторе");
   editorItem.onclick =()=> textToEditor();

   // устанавливаем где и при каких настройках показывать новые пункты ....
   addEventListener('popupshowing', e=> {
      if (e.target != e.currentTarget) return;
      var sel = gContextMenu.isTextSelected;
      saveItem.hidden = !sel || !cbu.getPrefs("CB.Save.SelectionToFile");
      editorItem.hidden = !sel || !cbu.getPrefs("CB.Save.TextToEditor"); 
      baseItem.hidden =  !gContextMenu.onImage || !cbu.getPrefs("CB.Save.WebScreenShotOnImage"); 
   }, false, contextMenu);

   // удалять новые пункти при изминениях ....
   addDestructor(()=> {
      baseItem.remove(); saveItem.remove(); editorItem.remove();
   });   
})(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open"));


// Сохранить выделенный текст в файл на рабочем столе .............
function saveSelectionToFile() {
   // создать текст для записи
   var url = content.document.location;
   if (/\.рф/.test(url.host)) url = convertFromUnicode("UTF-8", url);
   
   var time = new Date().toLocaleFormat("%H:%M:%S");
   var text = convertFromUnicode("UTF-8", getSelect()); 
   var title = convertFromUnicode("UTF-8", getTabLabel());
   
   var text = "..............................................................\n"
            + title + " - " + time + "\n" + url + "\n\n" + text + "\n\n\n";
   var text = text.replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A");

   // путь к файлу и название файла
   var file = Services.dirsvc.get("Desk", Ci.nsIFile); 
   file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt");
          
   // создать файл с текстом или добавлять текст в файл
   var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
   file.exists() ? foStream.init(file, 0x02 | 0x10, 0664, 0) : foStream.init(file, 0x02|0x08|0x20, 0666, 0);
   foStream.write(text, text.length);
   foStream.close();

   // всплывающая подсказка дает возможность открыть файл если кликнуть на подсказке
   var notification = 'Сохранил выделенный текст в файл на рабочий стол'; 
   var image = gBrowser.mCurrentTab.image || self.image;
   alertsService.showAlertNotification(image, notification, "Кликни чтобы открыть файл", true, "", (s, t)=> { 
      if (t == 'alertclickcallback') file.launch();
   }, "");
};


// Создать текстовой файл с выделенным текстом в папке профиля и открыть в редакторе .............
function textToEditor() {
   var text = convertFromUnicode("UTF-16", getSelect()); 
   var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
   file.append("TextToEditor.txt");
   custombuttonsUtils.writeFile(file.path, text);
   file.launch(); 
};


// Конвертировать текст в юникод .............
function convertFromUnicode(charset, str) {
   var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
   converter.charset = charset;
   str = converter.ConvertFromUnicode(str);
   return str + converter.Finish();
};


// Получить название домена с заглавным первым символом и без приставок( типа .ru и .com ) ..............
function getSiteName() {
   try { var domain = content.document.domain.split('.') } catch(e) { return "" };
   domain = (domain.length == 2) ? domain[0] : domain[1]
   return domain[0].toUpperCase() + domain.slice(1).split('.')[0] + " ";  
};


// Получить название вкладки без не сохраняемых символов и лишних пробелов ..............
function getTabLabel() { 
   var label = gBrowser.mCurrentTab.label;      
   var label = label.replace(/[:+.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " ");
   return label.substring(0, 50);
};

    
// Получить выделенный текст из страницы или 'false' ..............
function getSelect() {
   var el = document.commandDispatcher.focusedElement;
   try { return el.value.substring(el.selectionStart, el.selectionEnd) } catch(e) {};
   var sel = document.commandDispatcher.focusedWindow.getSelection();
   return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"").replace(/\u000A/g, "\u000D\u000A").replace(/\u000D\u000D\u000A/g, "\u000D\u000A");
};


Установка кнопки: устанавливаем расширение Сustom Buttons, создаём новую кнопку, откроется окно диалога добавления кнопки, копируем в вкладку Инициализация код инициализации и нажимаем Ok, потом откроется сообщение о успешном создании кнопки, опять нажимаем Ok. Потом открываем настройку панелей инструментов, перетаскиваем кнопку в нужное место на панели и начинаем пользоваться кнопкой.

Большое спасибо Dumby за помощь с кнопкой.

Отредактировано bunda1 (07-03-2014 19:57:21)

Отсутствует

 

№5313-05-2011 19:07:16

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

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

Открыть внешние win приложения( Firefox24+ )от 12.12.2015.
Кнопка открывает меню с Windows приложениями и даёт возможность их запустить. В меню кнопки легко добавить для запуска другие win приложения или в системе установленные программы.

Меню кнопки:
09943b704b0c3c010a984bd3fae6c16a.jpg

ЛКМ => Показать меню.
Код кнопки и код для инициализации:
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u043D%u0435%u0448%u043D%u0438%u0435%20win%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u044F%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMAAwQAKCImDyo4IWkYaBzFQ6xI8FG/V/VCq0jcGGQbkwAQACQAAAAAAAIAAwAAAAAAAAAAAAAAAAEAAAIAAgIAQy4iYp9YOuZUah3/QMJQ/nfxgP97+Yb/f/+L/m/7ev87v0L1BzwIawAAAAAAAgADAAAAAAEAAAIAAAAAQR4Ki7pwNP//tG79aXQg/CGwM/tL3lP+SeJU/krmVf5I5lT8ROZQ/SjIMf8DQgWFAAAAAAACAAMAAAAAMRoKX5hKHP/qoVT69JtU/WVsGP8RmyP/LMAz/ynHM/4ozTP8Jc4w+x/KK/sbxyn7Daoa/wAlA1QAAAEAAgAAA2o5G9GhVyT/z305/N54Nv9eWxTyAnMR6Qp+DvsIig//CpQR/wucE/8KnQ//CpkG/QedAf8FZADWAwIACigYIklrMln7h0VB/6dcJPvBaCz/XC8RlgABAAACDgAlABUANAAfAUsAKABeAz8RlAhfUvkDZnP/CFtw+gcXKklSLEeVlUiB/6VamPykYGD7o1wl/2A4H5YAAAAAAgEBBAAAAAAAAQMEAAAAAAUoVmcHcfT/AIL5+QCK//8BOZ2rXjJRsJtOhf/SgLr9zoK++5hbW/9AKhaGAAAAAAICAQYAAQACAAMDBwAAAAABLlprD4///wqh9/oJsf//Al7M1FsxT6ucUYf/1Iq//Oyd1vzYkMf/X0FVhQAAAAADAgMEAAAAAAACBAQBAAAAAC1aYRSQ//8lpPr6Irj//wtt1t5GJT2DmlCF/82Juvz2reH/8Kbb/eej1P9jR1t+AAAAAAMCAwQBAwUGAAAAAAYkV2wjkv//PLP7+jzE//8VaMXMHhAaP5FLff+4d6b++rno//iz5P/3suP88rLg/2hPYn8AAAAAAQAAAAgPYW1bXeD/PJL0/1DB/fxSy///EkiRlwAAAABqOFzBp16S/+ev2Pz/we///b7s//u86vr7wev/dFxfcgAJYmhxeP//lJH+/juS+/5q0f/+V7n4/AASODwAAAAAHA4YP5NMgP+6fKj9/Mzw/f3H8/7/y/X/7LvU811Ywd54gPv8r6z//puZ/P1Akff5g+L//y5hmZ8AAAAAAgECAwAAAAA1Gy5vmlGG/8iOuP3/1vX/8sfe811YxNZ6g/f5ubb9/a6u+/uvrfz8TZPt/1GFvMcAAQwNAQAAAAAAAAACAQEDAAAAACoVJVh/QW3umWuP7V5fzeSMk/j9zcn//7+//v7Av///o6Pz+yU2XH0AAwYKAQAAAAAAAQEAAAAAAAAAAAEBAQMAAAAADwkHFAcCKUsJGb3VO0vn9lRf5/RdZMzXRkmTmw4OKTUAAAAAAgIDAwABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%0Avar%20array%20%3D%20%5B%0A%20%20%20%5B%22IE%22%2C%20%22c%3A%5C%5CProgram%20files%5C%5CInternet%20Explorer%5C%5Ciexplore.exe%22%5D%2C%0A%20%20%20%5B%22Explorer%22%2C%20%22c%3A%5C%5Cwindows%5C%5Cexplorer.exe%22%5D%2C%0A%20%20%20%5B%22separator%22%5D%2C%0A%20%20%20%5B%22Cmd%20Prompt%22%2C%20%22C%3A%5C%5Cwindows/system32%5C%5Ccmd.exe%22%5D%2C%0A%20%20%20%5B%22Media%20Player%22%2C%20%22C%3A%5C%5CProgram%20Files%5C%5CWindows%20Media%20Player%5C%5Cwmplayer.exe%22%5D%2C%0A%20%20%20%5B%22Task%20Manager%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ctaskmgr.exe%22%5D%2C%20%0A%20%20%20%5B%22Control%20Panel%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccontrol.exe%22%5D%2C%0A%20%20%20%5B%22separator%22%5D%2C%0A%20%20%20%5B%22Notepad%22%2C%20%22c%3A%5C%5Cwindows%5C%5Cnotepad.exe%22%5D%2C%0A%20%20%20%5B%22Calculator%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccalc.exe%22%5D%2C%0A%20%20%20%5B%22Virtual%20Keyboard%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5COSK.exe%22%5D%2C%0A%20%20%20%5B%22Character%20table%22%2C%20%22C%3A%5C%5Cwindows%5C%5Csystem32%5C%5Ccharmap.exe%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20if%20%28m%20%3D%3D%20%22separator%22%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m%5B0%5D%29%3B%20%20%20%20%20%0A%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20mItem.setAttribute%28%22image%22%2C%20%22moz-icon%3A//file%3A//%22%20+%20m%5B1%5D%29%3B%0A%20%20%20mItem.onclick%20%3De%3D%3E%20Components.Constructor%28%22@mozilla.org/file/local%3B1%22%2C%20%22nsIFile%22%2C%20%22initWithPath%22%29%28m%5B1%5D%29.launch%28%29%3B%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%7D%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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

var array = [
   ["IE", "c:\\Program files\\Internet Explorer\\iexplore.exe"],
   ["Explorer", "c:\\windows\\explorer.exe"],
   ["separator"],
   ["Cmd Prompt", "C:\\windows/system32\\cmd.exe"],
   ["Media Player", "C:\\Program Files\\Windows Media Player\\wmplayer.exe"],
   ["Task Manager", "C:\\windows\\system32\\taskmgr.exe"], 
   ["Control Panel", "C:\\windows\\system32\\control.exe"],
   ["separator"],
   ["Notepad", "c:\\windows\\notepad.exe"],
   ["Calculator", "C:\\windows\\system32\\calc.exe"],
   ["Virtual Keyboard", "C:\\windows\\system32\\OSK.exe"],
   ["Character table", "C:\\windows\\system32\\charmap.exe"]
            ];
            
var menuPopup = self.appendChild( document.createElement("menupopup") );
array.forEach((m)=> {
   if (m == "separator") { menuPopup.appendChild( document.createElement("menuseparator") ); return };
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m[0]);     
   mItem.setAttribute("class", "menuitem-iconic");
   mItem.setAttribute("image", "moz-icon://file://" + m[1]);
   mItem.onclick =e=> Components.Constructor("@mozilla.org/file/local;1", "nsIFile", "initWithPath")(m[1]).launch();
   menuPopup.appendChild(mItem);
});

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

Отсутствует

 

№5424-05-2011 22:22:28

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Панель поиска на сайте(Firefox3.6-5.0)
Открывает панель с кнопками "Поиск Google на сайте","Поиск Yandex на сайте","Поиск Bing на сайте","Поиск BugMeNot - логины,пароли для сайта","Информация о браузере и открытой странице","Leader-When security matters-Информация о сайте ","Leader-When security matters-Информация об IP адресе"
В кнопке использованы фрагменты кода Lex1, Anton, Infocatcher

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%20%u043D%u0430%20%u0441%u0430%u0439%u0442%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAmBJREFUeJx9k09IVGEUxc/33pvJMZ2mxiCY2WolFANjQtDCKIIIQcOVtBDatTJo5aIyENoUroKEtrr0rXLTnxFbhIwyGg3+KZiccRQsnfHNjPNm3r23hfScl9HZfd/9nXsuF64SETTq4teBy37lG9VF69KhRYkJNtdyNteTNteeZOMzy428amwQSw9O60rr27C3sUcWCAQA0KGhBQGEJYg6O+ZG90y/p8Gj3HjTrLW4/tMpRDO1PP6nMLUiQP5cpHym/fPNqaoBAO/256eKVHLNfaEexJo7EAucR6aWh1lIIGEtAAB+6RZC3Bz93rQ9BaBfdaXvXWHI/GJlxU2RePJY8vjWJB7mX7rvtnILmLlbq3JtbMPe9sBP8xOIJQYQensV5tYHAMBQWy9QcFym5K+irmhMC6gTnXtkeRqMbk1gyfmGYshGitcBAIW6BZTIZWyDoOrSaYhI5M+2PTptYCjci+Fzg4dTrbwCtKOyKAETRwzif5gBfOx4jZ7WOFLlVQwvPcfsThII6h6GhKE5TJt6Y+u/ZGbfY3ZvAQj7gKDh/isBiGnTKHEl3YJApIiyxzicfYFQKYBMMQc0a0DAG6KqABmc1nysj4QleCw51TmJRPcbDF24C5zUj9U1i8B1GtFW42ayzo4ZplYPkLAWkNhNIrOTBXYdr3mfQWCT7ywnlYjgxtz9pjUjt15SB9GCr3JEFhygLoBPASHDNUuFcvLjoF0erFU9x3T20/VpsPSV/FXYBkGUuAtT1cOxCWzy7SXvMTXq1Ny1SyB5JiRd4nCUhEGgHClOspLHfCv1pZH/DQCsPJc3oUS/AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E/*Initialization%20Code*/%0Avar%20menu%20%3D%20%26lt%3Bpanel%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%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20onclick%3D%22this.%20parentNode.%20handleClick%20%28event%29%3B%22%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bvbox%26gt%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22%u041F%u043E%u0438%u0441%u043A%20Google%20%u043D%u0430%20%u0441%u0430%u0439%u0442%u0435%22%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsSAAALEgHS3X78AAACyElEQVQokTWSTWhcVRhAz3fvfW/ezGQmba0ZTJvEWtNKk53UCKViNkFREH/AlSBSCqWopYtSV1oUGnGjKwV1qehGK6RgQbAFhXaitsEumhaTFtMxGWeSJp1M8mbevZ+L4OpsD5wjZyc/GnfOfdPTU+wT48gnFuNy5DLPjuo1CvN3CUkOVEEAlGwz2xCRY05VzxfscH6g8BzNWmD8RRjYZ9B/akiyDod3QW8R4giNLOI9t76u5u/cqH3qCsU4//jIBG8/m/LQkHB9Gt76UOjfW8EXK7iZKlQCOEEiC6IMjz/K/J+380YE9o56Boc9WddTm/dcPJdisKz1OO7YBWp2iUVZYiVdorPcgL/vkbbaOJ9BaZvy8vHA52eU5Vml3XYA/Dy0wIWdN+lLWkRB6FuN2b0Y8XAtxjTbuCyD5mLglaNKlAvc+MNw6PnAleaPXK5fIMoMnVaLzAjzFm4OBrp7lP7KGi7dgMnjKS8cEZ6cgJfe6GW6fpEz0yewtks52s59SYmMxWJBFRXl+0MpThXOTXWZmkp5/ajh1MeWZONB9uRHmVn+lSyyGBGc2SIKQQLBKg71HBzNmHi1zMhYCY0D+7Y/xsl4knevHmP630s8kOwEAbMVGi8BDQkuX0p457MEE/9E9941fvkuorL/GUb2j/Ha0Jvcbs5RX71LziaoBgBUlJgc9uBu3ht7qpcw9z7b5HeKoUqjNkdLdvHEIxPM1me4UvuNgknIMk/wSvDgGgVc868qpUaH/h0NolwRkTzJwiVW6geIDhwmUodPQSPQoKCAKABOg2qhdV02M8OGriPGUA6r2GSVzS74boZ2IKQQtqz/X1xNIJYvv+3g11qEtRa+U6Y9+AGFgRN8dfkTzs/+QK/JkaVdtKNoR4mWSoiKyJGnB0+L+rPi2yoiomKx5FkuOq6WV1g3GYmLEStYa3HWqjFOrDVf/AddhjkVPuJ3DwAAAABJRU5ErkJggg%3D%3D%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5Bjavascript%3Avoid%28str%3Dprompt%28%27%u041F%u043E%u0438%u0441%u043A%20%u0441%20%u043F%u043E%u043C%u043E%u0449%u044C%u044E%20Google%20%u043D%u0430%20%u044D%u0442%u043E%u043C%20%u0441%u0430%u0439%u0442%u0435%3A%27+document.domain%2C%27%27%29%29%3Bif%28str%29%7Bvoid%28open%28%27http%3A//www.google.com/search%3Fas_q%3D%27+str+%27%26amp%3Bamp%3Bas_sitesearch%3D%27+document.domain%29%29%3B%7D%5D%5D%26gt%3B%3B%26amp%3B%23xA%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22%u041F%u043E%u0438%u0441%u043A%20Yandex%20%u043D%u0430%20%u0441%u0430%u0439%u0442%u0435%22%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sEEwEgIKwpdqAAAAKSSURBVDjLjZFPaBx1FMc/MztFQ2sUSUi7JUJ2kw0psmCgUEFP3nsVpYd6EduDt4g2khaxCHrsIYVKD2m0N+kp17IQBmwyWUYsdC8ZZnelhnVlM3Tnz77Z3/PQTWyqh3zh8ePxee/x3vdn+b6/DHzLxsaGDk6dUnzfV1XFnogims2m4rqu5uu3VD+6oEmSqBOGIa999hUAf9RqWL7vKyNVq1WLLMt08HhHsyxT13XfIwxD3b90ScMw1Eajodb29vZhC2DheZ4aY/4TOzs7aozBjqKIOI6x3p55/p57iziOqVQqeJ6nTq/Xo9VqYd2+xytLS+y3e0StFgDtdvtna21t7WmpVDrNS9rd3f26VCrdtHzfbwNnX+Kr1Wr1KgD/t2Capup53uvGGGwRQURg+RPML3cRESzLwhjTExEcEQFAL1wEEfJRvrCwgOu6nzrdbheAyZVvMBMTdM+/e7hIkiRXnDiOAfi70yG9fBkZ5VEUMTMz847T7/exHz0iuXYNsgzT7x+c+cPc3BxWrVbTQqFw5Ma9vT2mpqYsAOr1enswGOhxFASB1uv1L1WVg3BE5Kxt2wyHw+fjJcN+cAfr8a/Q/RPGTjL8/gEA09PTFAqF77a2tt5cXFz8AsBO05QDL0UE+8MPyMemSJfvIhc/h/ruET45OUmxWFxyXfcnEcHOsuxIgXk2hm7/jogw/OsZ/Pb0CBcRxsfHqVQqH29ubtadJEnodDr/OnTnR169f5+TxSLJmTNkmdB9kY8UBAFJkqw6WZbRH1kPcGJlhfzJE7q1GoWHDzlx4wbpC9wYQxAE5Hn+/vz8/Ka1vr6u5XKZ4yjPc5rNJqr6Rrlc3gdw8jy/3mg0rgCnjzFjdXZ29ipw+Gv/AGlK32Dj9T2iAAAAAElFTkSuQmCC%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3Avoid%28str%3Dprompt%28%27%25D0%259F%25D0%25BE%25D0%25B8%25D1%2581%25D0%25BA%2520%25D1%2581%2520%25D0%25BF%25D0%25BE%25D0%25BC%25D0%25BE%25D1%2589%25D1%258C%25D1%258E%2520Yandex%2520%25D0%25BD%25D0%25B0%2520%25D1%258D%25D1%2582%25D0%25BE%25D0%25BC%2520%25D1%2581%25D0%25B0%25D0%25B9%25D1%2582%25D0%25B5%3A%27+document.domain%2C%27%27%29%29%3Bif%28str%29%7Bvoid%28open%28%27http%3A//www.yandex.ru/yandsearch%3Frpt%3Drad%26amp%3Bamp%3Btext%3D%27+str+%27%26amp%3Bamp%3Bserverurl%3D%27+document.domain%29%29%3B%7D%26amp%3B%23xA%3B%26amp%3B%23xA%3B%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%0A%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22%u041F%u043E%u0438%u0441%u043A%20Bing%20%u043D%u0430%20%u0441%u0430%u0439%u0442%u0435%22%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsSAAALEgHS3X78AAAB50lEQVQokY3TP2xNYRzG8c855173ttrS1t9GakCFVBASg0TCIrGI2UBiMBoMJoOJVSIWk4FVIhESkfg7+DOIQQkGrTSlbVT1323PPa/hvbdak2d6T875Pu/7e97nJOH22kDwV4n/VQmEJXCyFE4sN/4XTjI2HaWyhl8fGH1FViXkhKLhkUWjUCwzK0nL7L5IRx+fbzL4gHILSUqpSlGQT8ZDZG1k5UXTEoGFKRQUC3TtoGtPNGvpoT7D5Cd+DTD5hdoYpbYlMycZUjYcYuNh2rcw+53aKFkrrT0kJb7e4ctNRp6QVhpwc46OvrjDy3N8f8rsOOVWVu9k62k2n6DnCC/OMvJYGtlGMNODPDvFwHWmBinmqI3z7T7Pz/DtHpVu9l+m1NqE8whPvOfHa1b2kpZjaElKdR3FPEN3mZ+gYxtJJlXkTH6OcLmdSif5b9IVDbiMOvkUXXvjNw2l6nN8vBGfuvdx4Go82tQQ8z+ZGSav0X+eLSdjuG8vkU9Lwq3uIORsOsauC3TtZnqIsTfM/mDFKjr7WbU9bvDuCgPXCHVJuL02CCHOtLKX9QfZfJz2PsJCvKqZIYYfMfwwtlBA2oCbqtcazWojq8Q1FDXymfi+mcViSZrKqrFp9ekY2uL/0Ug9a1nW7T+z2Kt7++dAvwAAAABJRU5ErkJggg%3D%3D%22%20%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3Avoid%28str%3Dprompt%28%27%u041F%u043E%u0438%u0441%u043A%20%u0441%20%u043F%u043E%u043C%u043E%u0449%u044C%u044E%20Bing%20%u043D%u0430%20%u044D%u0442%u043E%u043C%20%u0441%u0430%u0439%u0442%u0435%3A%27+document.domain%2C%27%27%29%29%3Bif%28str%29%7Bvoid%28open%28%27http%3A//www.bing.com/search%3Fq%3Dsite%3A%27+document.location.hostname+%20%27+%27%20+str+%27%26amp%3Bamp%3Bgo%3D%26amp%3Bamp%3Bform%3DQBRE%26amp%3Bamp%3Bfilt%3Dall%27%29%29%3B%7D%26amp%3B%23xA%3B%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%0A%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22%u041F%u043E%u0438%u0441%u043A%20BugMeNot%20%u043B%u043E%u0433%u0438%u043D%u044B%2C%u043F%u0430%u0440%u043E%u043B%u0438%20%u0434%u043B%u044F%20%u0441%u0430%u0439%u0442%u0430%22%20%0A%20%20%20%20%20image%3D%22data%3Aimage/x-icon%3Bbase64%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%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3Avoid%28window.open%28%27http%3A//www.bugmenot.com/view/%27+location.hostname%2C%27BugMeNot_%27+location.hostname%2C%27width%3D500%2Cheight%3D400%2Cleft%3D100%2Ctop%3D100%2Cscrollbars%3Dyes%2Clocation%3Dno%27%29%29%26amp%3B%23xA%3B%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A%20/%26gt%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%20%0A%20%20%20%20%20tooltiptext%3D%22%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0435%20%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%22%20%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAfpJREFUeJydk0trU0EUx/9n5ia9SbwI2lBsaUTsItbqTsGFIjbgVxBd+A1cdVNwXwi4cCGIrt121ZWYLqrdVAUfIGpbKUlqqolJSe773jnjwqp5XAp6VsP8zvmfx8whrTX67elO62LGkEuC6BwB+YgZbsRNL1bvfaUWb56Z3Oj3p36BF7udiinFtYYTwA4V+IARACkIBMBTvHr77NT8sID5aq9b7YZRvmEHOMyU1vBjbn53w8LdS6d9cZB5JSl42jIxbZkDd5IIgpC30nIFAOh5vX3ZlGLtU9sZyXZrdhIA8PBNDVZaDrCGEyBUfMVgrcsNJ7nstVobdTvAru2jeCw3wKyUxA/FZZGWYsYOVaJAreejG8SYOmKOsGxKwg7VjMGMcR56SgCYyI2hdPI4AODJh68jXBAhUDwuIubE7N/62vqYMB8AiBRDeDG3KBEfboo1Yq1bwo3UlhT/LtHyQpiG3BIh88L/VLC976IXxgviRvHEuqe4ooYGOZEb+3M+dTQzwDY7DkBUeXx9bp201nj0tmYCqApCPmP8/TBupFDt+QCAgmUim5LY7Dio94Lm8ue9QvtOyR9Ypvuvd55FrOetlEQ2JSHoV3OKNVpeiO19FyCqPCjNln7H0PA6lze+XAiVXvJjPu/FKh8pBghNInpnCFq8d7X4st//J3JK/Ibf2DGRAAAAAElFTkSuQmCC%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3A%28function%28%29%7Bvar%20meta%3D%27%27%3Bvar%20scripts%3D%27%27%3Bvar%20embed%3D%27%27%3Bvar%20m%3Ddocument.getElementsByTagName%28%27meta%27%29%3Bfor%28var%20i%3D0%2Cmi%3Bmi%3Dm%5Bi%5D%3Bi++%29%7Bmeta+%3D%28mi.name%3Fmi.name+%27%3A%20%27%3A%28mi.httpEquiv%3Fmi.httpEquiv+%27%3A%27%3A%27%27%29%29+mi.content+%27%255Cn%27%7D%3Bvar%2520s%3Ddocument.getElementsByTagName%28%27script%27%29%3Bfor%28var%2520i%3D0%2Csi%3Bsi%3Ds%5Bi%5D%3Bi++%29%7Bif%28si.src%29scripts+%3Dsi.src+%27%255Cn%27%7D%3Bvar%2520e%3Ddocument.getElementsByTagName%28%27embed%27%29%3Bvar%2520o%3Ddocument.getElementsByTagName%28%27object%27%29%3Bvar%2520fullUrl%3Dfunction%28url%29%7Bvar%2520a%3Ddocument.createElement%28%27a%27%29%3Ba.href%3Durl%3Breturn%2520url%3Fa.href+%27%255Cn%27%3A%27%27%7D%3Bfor%28var%2520i%3D0%2Cei%3Bei%3De%5Bi%5D%3Bi++%29%7Bembed+%3DfullUrl%28ei.getAttribute%28%27src%27%29%29%7D%3Bfor%28var%2520i%3D0%2Coi%3Boi%3Do%5Bi%5D%3Bi++%29%7Bvar%2520src%3Doi.getAttribute%28%27data%27%29%7C%7Coi.getAttribute%28%27src%27%29%3Bif%28%21src%29%7Bfor%28var%2520j%3D0%2Cp%3Bp%3Doi.childNodes%5Bj%5D%3Bj++%29%7Bif%28p.tagName%26amp%3Bamp%3B%26amp%3Bamp%3Bp.tagName.toLowerCase%28%29%3D%3D%27param%27%26amp%3Bamp%3B%26amp%3Bamp%3Bp.getAttribute%28%27name%27%29.match%28/%5E%28movie%7Cdata%7Csrc%7Ccode%7Cfilename%7Curl%29%24/i%29%29%7Bsrc%3Dp.getAttribute%28%27value%27%29%3B%2520break%7D%7D%7D%3Bvar%2520lnk%3DfullUrl%28src%29%3Bif%28embed.indexOf%28lnk%29%3D%3D-1%29embed+%3Dlnk%7D%3Bvar%2520lastmod%3D%28Date.parse%28document.lastModified%29%3D%3D0%29%3F%27%27%3Adocument.lastModified%3Bvar%2520mode%3Ddocument.getElementsByTagName%28%27HTmL%27%29.length%3D%3D0%3F%27Really%2520strict%27%3A%28document.compatMode%3D%3D%27CSS1Compat%27%3F%27Normal%2520strict%27%3A%27Quirks%27%29%3Bvar%2520title%3Ddocument.title%7C%7C%28document.getElementsByTagName%28%27title%27%29%5B0%5D%26amp%3Bamp%3B%26amp%3Bamp%3Bdocument.getElementsByTagName%28%27title%27%29%5B0%5D.text%29%7C%7C%27%27%3B%2520if%28meta%29meta%3D%27%255CnMeta-%25D0%25B4%25D0%25B0%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%3A%255Cn%27+meta%3Bif%28scripts%29scripts%3D%27%255Cn%25D0%25A1%25D0%25BA%25D1%2580%25D0%25B8%25D0%25BF%25D1%2582%25D1%258B%3A%255Cn%27+scripts%3Bif%28embed%29embed%3D%27%255Cn%25D0%2592%25D1%2581%25D1%2582%25D1%2580%25D0%25BE%25D0%25B5%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D0%25BE%25D0%25B1%25D1%258A%25D0%25B5%25D0%25BA%25D1%2582%25D1%258B%3A%255Cn%27+embed%3B%2520alert%28%27%25D0%2598%25D0%25B4%25D0%25B5%25D0%25BD%25D1%2582%25D0%25B8%25D1%2584%25D0%25B8%25D0%25BA%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25B1%25D1%2580%25D0%25B0%25D1%2583%25D0%25B7%25D0%25B5%25D1%2580%25D0%25B0%3A%2520%27+navigator.userAgent+%27%255Cn%255Cn%25D0%2597%25D0%25B0%25D0%25B3%25D0%25BE%25D0%25BB%25D0%25BE%25D0%25B2%25D0%25BE%25D0%25BA%3A%2520%27+title+%27%255Cn%255Cn%25D0%2590%25D0%25B4%25D1%2580%25D0%25B5%25D1%2581%3A%2520%27+location.href+%27%255Cn%255Cn%25D0%25A0%25D0%25B5%25D1%2584%25D0%25B5%25D1%2580%25D1%2580%25D0%25B5%25D1%2580%3A%2520%27+document.referrer+%27%255Cn%255Cn%25D0%2594%25D0%25B0%25D1%2582%25D0%25B0%2520%25D0%25BF%25D0%25BE%25D1%2581%25D0%25BB%25D0%25B5%25D0%25B4%25D0%25BD%25D0%25B5%25D0%25B3%25D0%25BE%2520%25D0%25B8%25D0%25B7%25D0%25BC%25D0%25B5%25D0%25BD%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258F%3A%2520%27+lastmod+%27%255Cn%255Cn%25D0%25A0%25D0%25B5%25D0%25B6%25D0%25B8%25D0%25BC%2520%25D0%25BE%25D1%2582%25D0%25BE%25D0%25B1%25D1%2580%25D0%25B0%25D0%25B6%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258F%3A%2520%27+mode+%27%2520mode%255Cn%27+meta+scripts+embed%29%7D%29%28%29%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%0A%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22Leader-When%20security%20matters-%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%20%u0441%u0430%u0439%u0442%u0435%20%22%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASElEQVQ4jWM4c+bMf0oww5kzZ/7//MJAFkYxgFSbsRpALMBvAIMxKqa/AciGkOUFmhmAJEZHA7Bh+hhAAOA0gKKkTFFmogQDAJUMSdAatE7rAAAAAElFTkSuQmCC%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3Avoid%28open%28%27http%3A//leader.ru/secure/whoiz.html%3Fq%3D%27+document.domain%29%29%3B%26amp%3B%23xA%3B%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%0A%20%20%20%20%20%0A%20%20%20%26lt%3Btoolbarbutton%20id%3D%22custombuttons-button%22%0A%20%20%20%20%20tooltiptext%3D%22Leader-When%20security%20matters-%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%u0431%20IP%20%22%0A%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASElEQVQ4jWM4c+bMf0oww5kzZ/7//MJAFkYxgFSbsRpALMBvAIMxKqa/AciGkOUFmhmAJEZHA7Bh+hhAAOA0gKKkTFFmogQDAJUMSdAatE7rAAAAAElFTkSuQmCC%22%0A%20%20%20%20%20cb-oncommand%3D%22var%20uri%20%3D%20%26lt%3B%21%5BCDATA%5B%20javascript%3Avoid%28str%3Dprompt%28%27%25D0%2592%25D0%25B2%25D0%25B5%25D1%2581%25D1%2582%25D0%25B8%2520IP%2520%25D0%25B0%25D0%25B4%25D1%2580%25D0%25B5%25D1%2581%27%29%29%3Bif%28str%29%7Bvoid%28open%28%27http%3A//leader.ru/secure/whoiz.html%3Fq%3D%27+str%29%29%3B%7D%3B%26amp%3B%23xA%3B%5D%5D%26gt%3B%3B%26amp%3B%23xA%3Bif%28%21%28%26amp%3Bquot%3BnoscriptUtil%26amp%3Bquot%3B%20in%20window%29%20%7C%7C%20%21noscriptUtil.service.handleBookmark%28uri%29%29%26amp%3B%23xA%3B%20%20%20%20loadURI%28uri%29%3B%22%0A/%26gt%3B%0A%20%20%20%20%20%0A%20%20%20%20%20%20%20%26lt%3B/vbox%26gt%3B%0A%26lt%3B/panel%26gt%3B%3B%0Athis.%20appendChild%20%28custombuttonsUtils.%20makeXML%20%28menu%29%29%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0A%0Athis.%20handleClick%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20var%20menuitem%20%3D%20event.%20target%3B%0A%20%20%20%20var%20url%20%3D%20menuitem.%20getAttributeNS%20%28%22http%3A//xsms.nm.ru/custombuttons/%22%2C%20%22url%22%29%3B%0A%20%20%20%20if%20%28%21url%29%20return%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%200%29%0A%20%20%20%20%20%20%20%20loadURI%20%28url%29%3B%0A%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%201%29%0A%20%20%20%20%20%20%20%20gBrowser.%20addTab%20%28url%29%3B%0A%20%20%20%20this.%20open%20%3D%20false%3B%0A%7D%3B%0A%0A%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 menu = <panel xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              xmlns:cb="http://xsms.nm.ru/custombuttons/"
              onclick="this. parentNode. handleClick (event);">
        <vbox>
        
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Поиск Google на сайте"
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsSAAALEgHS3X78AAACyElEQVQokTWSTWhcVRhAz3fvfW/ezGQmba0ZTJvEWtNKk53UCKViNkFREH/AlSBSCqWopYtSV1oUGnGjKwV1qehGK6RgQbAFhXaitsEumhaTFtMxGWeSJp1M8mbevZ+L4OpsD5wjZyc/GnfOfdPTU+wT48gnFuNy5DLPjuo1CvN3CUkOVEEAlGwz2xCRY05VzxfscH6g8BzNWmD8RRjYZ9B/akiyDod3QW8R4giNLOI9t76u5u/cqH3qCsU4//jIBG8/m/LQkHB9Gt76UOjfW8EXK7iZKlQCOEEiC6IMjz/K/J+380YE9o56Boc9WddTm/dcPJdisKz1OO7YBWp2iUVZYiVdorPcgL/vkbbaOJ9BaZvy8vHA52eU5Vml3XYA/Dy0wIWdN+lLWkRB6FuN2b0Y8XAtxjTbuCyD5mLglaNKlAvc+MNw6PnAleaPXK5fIMoMnVaLzAjzFm4OBrp7lP7KGi7dgMnjKS8cEZ6cgJfe6GW6fpEz0yewtks52s59SYmMxWJBFRXl+0MpThXOTXWZmkp5/ajh1MeWZONB9uRHmVn+lSyyGBGc2SIKQQLBKg71HBzNmHi1zMhYCY0D+7Y/xsl4knevHmP630s8kOwEAbMVGi8BDQkuX0p457MEE/9E9941fvkuorL/GUb2j/Ha0Jvcbs5RX71LziaoBgBUlJgc9uBu3ht7qpcw9z7b5HeKoUqjNkdLdvHEIxPM1me4UvuNgknIMk/wSvDgGgVc868qpUaH/h0NolwRkTzJwiVW6geIDhwmUodPQSPQoKCAKABOg2qhdV02M8OGriPGUA6r2GSVzS74boZ2IKQQtqz/X1xNIJYvv+3g11qEtRa+U6Y9+AGFgRN8dfkTzs/+QK/JkaVdtKNoR4mWSoiKyJGnB0+L+rPi2yoiomKx5FkuOq6WV1g3GYmLEStYa3HWqjFOrDVf/AddhjkVPuJ3DwAAAABJRU5ErkJggg=="
     cb-oncommand="var uri = <![CDATA[javascript:void(str=prompt('Поиск с помощью Google на этом сайте:'+document.domain,''));if(str){void(open('http://www.google.com/search?as_q='+str+'&amp;as_sitesearch='+document.domain));}]]>;&#xA;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;&#xA;    loadURI(uri);"
/>     
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Поиск Yandex на сайте"
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sEEwEgIKwpdqAAAAKSSURBVDjLjZFPaBx1FMc/MztFQ2sUSUi7JUJ2kw0psmCgUEFP3nsVpYd6EduDt4g2khaxCHrsIYVKD2m0N+kp17IQBmwyWUYsdC8ZZnelhnVlM3Tnz77Z3/PQTWyqh3zh8ePxee/x3vdn+b6/DHzLxsaGDk6dUnzfV1XFnogims2m4rqu5uu3VD+6oEmSqBOGIa999hUAf9RqWL7vKyNVq1WLLMt08HhHsyxT13XfIwxD3b90ScMw1Eajodb29vZhC2DheZ4aY/4TOzs7aozBjqKIOI6x3p55/p57iziOqVQqeJ6nTq/Xo9VqYd2+xytLS+y3e0StFgDtdvtna21t7WmpVDrNS9rd3f26VCrdtHzfbwNnX+Kr1Wr1KgD/t2Capup53uvGGGwRQURg+RPML3cRESzLwhjTExEcEQFAL1wEEfJRvrCwgOu6nzrdbheAyZVvMBMTdM+/e7hIkiRXnDiOAfi70yG9fBkZ5VEUMTMz847T7/exHz0iuXYNsgzT7x+c+cPc3BxWrVbTQqFw5Ma9vT2mpqYsAOr1enswGOhxFASB1uv1L1WVg3BE5Kxt2wyHw+fjJcN+cAfr8a/Q/RPGTjL8/gEA09PTFAqF77a2tt5cXFz8AsBO05QDL0UE+8MPyMemSJfvIhc/h/ruET45OUmxWFxyXfcnEcHOsuxIgXk2hm7/jogw/OsZ/Pb0CBcRxsfHqVQqH29ubtadJEnodDr/OnTnR169f5+TxSLJmTNkmdB9kY8UBAFJkqw6WZbRH1kPcGJlhfzJE7q1GoWHDzlx4wbpC9wYQxAE5Hn+/vz8/Ka1vr6u5XKZ4yjPc5rNJqr6Rrlc3gdw8jy/3mg0rgCnjzFjdXZ29ipw+Gv/AGlK32Dj9T2iAAAAAElFTkSuQmCC"
     cb-oncommand="var uri = <![CDATA[ javascript:void(str=prompt('%D0%9F%D0%BE%D0%B8%D1%81%D0%BA%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20Yandex%20%D0%BD%D0%B0%20%D1%8D%D1%82%D0%BE%D0%BC%20%D1%81%D0%B0%D0%B9%D1%82%D0%B5:'+document.domain,''));if(str){void(open('http://www.yandex.ru/yandsearch?rpt=rad&amp;text='+str+'&amp;serverurl='+document.domain));}&#xA;&#xA;]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
/>
     
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Поиск Bing на сайте"
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAAsSAAALEgHS3X78AAAB50lEQVQokY3TP2xNYRzG8c855173ttrS1t9GakCFVBASg0TCIrGI2UBiMBoMJoOJVSIWk4FVIhESkfg7+DOIQQkGrTSlbVT1323PPa/hvbdak2d6T875Pu/7e97nJOH22kDwV4n/VQmEJXCyFE4sN/4XTjI2HaWyhl8fGH1FViXkhKLhkUWjUCwzK0nL7L5IRx+fbzL4gHILSUqpSlGQT8ZDZG1k5UXTEoGFKRQUC3TtoGtPNGvpoT7D5Cd+DTD5hdoYpbYlMycZUjYcYuNh2rcw+53aKFkrrT0kJb7e4ctNRp6QVhpwc46OvrjDy3N8f8rsOOVWVu9k62k2n6DnCC/OMvJYGtlGMNODPDvFwHWmBinmqI3z7T7Pz/DtHpVu9l+m1NqE8whPvOfHa1b2kpZjaElKdR3FPEN3mZ+gYxtJJlXkTH6OcLmdSif5b9IVDbiMOvkUXXvjNw2l6nN8vBGfuvdx4Go82tQQ8z+ZGSav0X+eLSdjuG8vkU9Lwq3uIORsOsauC3TtZnqIsTfM/mDFKjr7WbU9bvDuCgPXCHVJuL02CCHOtLKX9QfZfJz2PsJCvKqZIYYfMfwwtlBA2oCbqtcazWojq8Q1FDXymfi+mcViSZrKqrFp9ekY2uL/0Ug9a1nW7T+z2Kt7++dAvwAAAABJRU5ErkJggg==" 
     cb-oncommand="var uri = <![CDATA[ javascript:void(str=prompt('Поиск с помощью Bing на этом сайте:'+document.domain,''));if(str){void(open('http://www.bing.com/search?q=site:'+document.location.hostname+ '+' +str+'&amp;go=&amp;form=QBRE&amp;filt=all'));}&#xA;]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
/>
     
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Поиск BugMeNot логины,пароли для сайта" 
     image="data:image/x-icon;base64,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"
     cb-oncommand="var uri = <![CDATA[ javascript:void(window.open('http://www.bugmenot.com/view/'+location.hostname,'BugMeNot_'+location.hostname,'width=500,height=400,left=100,top=100,scrollbars=yes,location=no'))&#xA;]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
 /> 
           
   <toolbarbutton id="custombuttons-button" 
     tooltiptext="Информация о браузере и открытой странице" 
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAfpJREFUeJydk0trU0EUx/9n5ia9SbwI2lBsaUTsItbqTsGFIjbgVxBd+A1cdVNwXwi4cCGIrt121ZWYLqrdVAUfIGpbKUlqqolJSe773jnjwqp5XAp6VsP8zvmfx8whrTX67elO62LGkEuC6BwB+YgZbsRNL1bvfaUWb56Z3Oj3p36BF7udiinFtYYTwA4V+IARACkIBMBTvHr77NT8sID5aq9b7YZRvmEHOMyU1vBjbn53w8LdS6d9cZB5JSl42jIxbZkDd5IIgpC30nIFAOh5vX3ZlGLtU9sZyXZrdhIA8PBNDVZaDrCGEyBUfMVgrcsNJ7nstVobdTvAru2jeCw3wKyUxA/FZZGWYsYOVaJAreejG8SYOmKOsGxKwg7VjMGMcR56SgCYyI2hdPI4AODJh68jXBAhUDwuIubE7N/62vqYMB8AiBRDeDG3KBEfboo1Yq1bwo3UlhT/LtHyQpiG3BIh88L/VLC976IXxgviRvHEuqe4ooYGOZEb+3M+dTQzwDY7DkBUeXx9bp201nj0tmYCqApCPmP8/TBupFDt+QCAgmUim5LY7Dio94Lm8ue9QvtOyR9Ypvuvd55FrOetlEQ2JSHoV3OKNVpeiO19FyCqPCjNln7H0PA6lze+XAiVXvJjPu/FKh8pBghNInpnCFq8d7X4st//J3JK/Ibf2DGRAAAAAElFTkSuQmCC"
     cb-oncommand="var uri = <![CDATA[ javascript:(function(){var meta='';var scripts='';var embed='';var m=document.getElementsByTagName('meta');for(var i=0,mi;mi=m[i];i++){meta+=(mi.name?mi.name+': ':(mi.httpEquiv?mi.httpEquiv+':':''))+mi.content+'%5Cn'};var%20s=document.getElementsByTagName('script');for(var%20i=0,si;si=s[i];i++){if(si.src)scripts+=si.src+'%5Cn'};var%20e=document.getElementsByTagName('embed');var%20o=document.getElementsByTagName('object');var%20fullUrl=function(url){var%20a=document.createElement('a');a.href=url;return%20url?a.href+'%5Cn':''};for(var%20i=0,ei;ei=e[i];i++){embed+=fullUrl(ei.getAttribute('src'))};for(var%20i=0,oi;oi=o[i];i++){var%20src=oi.getAttribute('data')||oi.getAttribute('src');if(!src){for(var%20j=0,p;p=oi.childNodes[j];j++){if(p.tagName&amp;&amp;p.tagName.toLowerCase()=='param'&amp;&amp;p.getAttribute('name').match(/^(movie|data|src|code|filename|url)$/i)){src=p.getAttribute('value');%20break}}};var%20lnk=fullUrl(src);if(embed.indexOf(lnk)==-1)embed+=lnk};var%20lastmod=(Date.parse(document.lastModified)==0)?'':document.lastModified;var%20mode=document.getElementsByTagName('HTmL').length==0?'Really%20strict':(document.compatMode=='CSS1Compat'?'Normal%20strict':'Quirks');var%20title=document.title||(document.getElementsByTagName('title')[0]&amp;&amp;document.getElementsByTagName('title')[0].text)||'';%20if(meta)meta='%5CnMeta-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5:%5Cn'+meta;if(scripts)scripts='%5Cn%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B:%5Cn'+scripts;if(embed)embed='%5Cn%D0%92%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B:%5Cn'+embed;%20alert('%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F%20%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%B0:%20'+navigator.userAgent+'%5Cn%5Cn%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%BA:%20'+title+'%5Cn%5Cn%D0%90%D0%B4%D1%80%D0%B5%D1%81:%20'+location.href+'%5Cn%5Cn%D0%A0%D0%B5%D1%84%D0%B5%D1%80%D1%80%D0%B5%D1%80:%20'+document.referrer+'%5Cn%5Cn%D0%94%D0%B0%D1%82%D0%B0%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F:%20'+lastmod+'%5Cn%5Cn%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC%20%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F:%20'+mode+'%20mode%5Cn'+meta+scripts+embed)})()]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
/>
     
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Leader-When security matters-Информация о сайте "
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASElEQVQ4jWM4c+bMf0oww5kzZ/7//MJAFkYxgFSbsRpALMBvAIMxKqa/AciGkOUFmhmAJEZHA7Bh+hhAAOA0gKKkTFFmogQDAJUMSdAatE7rAAAAAElFTkSuQmCC"
     cb-oncommand="var uri = <![CDATA[ javascript:void(open('http://leader.ru/secure/whoiz.html?q='+document.domain));&#xA;]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
/>
     
   <toolbarbutton id="custombuttons-button"
     tooltiptext="Leader-When security matters-Информация об IP "
     image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAASElEQVQ4jWM4c+bMf0oww5kzZ/7//MJAFkYxgFSbsRpALMBvAIMxKqa/AciGkOUFmhmAJEZHA7Bh+hhAAOA0gKKkTFFmogQDAJUMSdAatE7rAAAAAElFTkSuQmCC"
     cb-oncommand="var uri = <![CDATA[ javascript:void(str=prompt('%D0%92%D0%B2%D0%B5%D1%81%D1%82%D0%B8%20IP%20%D0%B0%D0%B4%D1%80%D0%B5%D1%81'));if(str){void(open('http://leader.ru/secure/whoiz.html?q='+str));};&#xA;]]>;&#xA;if(!(&quot;noscriptUtil&quot; in window) || !noscriptUtil.service.handleBookmark(uri))&#xA;    loadURI(uri);"
/>
     
       </vbox>
</panel>;
this. appendChild (custombuttonsUtils. makeXML (menu));
this. type = "menu";
this. orient = "horizontal";

this. handleClick = function (event)
{
    var menuitem = event. target;
    var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url");
    if (!url) return;
    if (event. button == 0)
        loadURI (url);
    else if (event. button == 1)
        gBrowser. addTab (url);
    this. open = false;
};


                       *Добавлено "Leader-When security matters-Информация об IP адресе" 21.07.2011
Добавлено 24-05-2011 22:46:54
Открыть в Opera(Ubuntu)(Firefox3.6-5.0)
Открывает текущую страницу в Opera
скрытый текст
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EOpera%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAABGdBTUEAAK/INwWK6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFFBMkGw0H7zIAAAL9SURBVDjLbZJfTJtlFMZ/30cLS6lS/pWWtBKyBruyLSSyEBMn88q5BC/0yi1uckWWeOENN2Yak116IUY3wWhkM8HFxERF1DlD3KLAHDrKhM0ULHzCJhUKtHVroXyPF7AKcefqvO95znPe5zkvbI/oYw0qHAxJmn//DAbA/MBXylqzbJhFm5A/wuV29tvPdSPIfz3vlG8l57xmfDk6Jkmb1e/r3br53GFJUn8NY1wP4LdXV7V08kUNB7bazldDb6gqnrEs+95CQuNnu9TtwV8YcOXIIVuSYq+/qvETxyRJ0+++rQuV9PG1Dy7XIntjQ3PtbYrVG5KkYT8arKWtwBI52Np5qcG9HGsJ5E417Y4279vr2mFEQceDotuDf/xsl+4tJJSxLLs3VBk/X70NEOvptiVp+r0zWo6Oaf6bAZ3zmnEA80IlfeZa1gD4Z2SIxc8+pfbwEeqbn6wDcJQ6iBQXOwDQb9fIp5cAyN0cNQDM0iJem3vjZQBcyRgPlTlA4MxlGPABI0G4EUTJjmPKXvxCdiql6Uc99mhgm5PN+/a6TjXtjk63BHKXGtzLjQdbOwur3y63pxI6lqDLSRvwQkVjfQQgORGfBD55ZZ3++5gdBB9VgcDvrgvdfuLNHjnLyoyK/fvJJhIg2FVTQ3I8yvrqqn7s7DBSs1O1RXCnfREcfV6wbdq8TS1f+g604jv0lGEYBn9+3Evm91sAuBvCBI+/BJIRfvp57vz8w+3E2NVn+7z0m0cT4DI5XZzOULFnD4axqSpzeZC10RHWRkfIXBnceq9BRThMSTqDy+D00QSYAKUmk3lrQumfLha0FS9ZOGeiOGeilCxZhfv08HfkrQmVFjG5478MBYj/GsC2jj8jSUp92KW5IJoLotQHb0mSrPY2/RLAHgoQf+AWusNVkcdzK9fq6iMu5yONclbXGADrfy9ofXbCmJmZvDtc4jlw8tbi5P8IPB4PKysrhEIhR4Wn3Jsq3uW7azrKAFx2fvXhtexfyZXlxNTUVP4+FuBfs3VpxpzbeVsAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E1%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Avar%20page%20%3D%20gBrowser.currentURI%3B%0Avar%20browser%20%3D%20%22/usr/bin/opera%22%3B%0A%0Avar%20file%20%3D%20%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Afile.initWithPath%28browser%29%3B%0A%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0Aprocess.init%28file%29%3B%0Aprocess.run%28false%2C%20%5Bpage.spec%5D%2C%201%29%3B%0Areturn%20true%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%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%22Opera%22%20%u0434%u043B%u044F%20Linux%20OS%0A%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

var page = gBrowser.currentURI;
var browser = "/usr/bin/opera";

var file =  Components.classes["@mozilla.org/file/local;1"]
                      .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(browser);

var process = Components.classes["@mozilla.org/process/util;1"]
                        .createInstance(Components.interfaces.nsIProcess);
process.init(file);
process.run(false, [page.spec], 1);
return true;

Открыть в Midori(Ubuntu)(Firefox3.6-5.0)
Открывает текущую страницу в Midori

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMidori%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKTSURBVDiNlZHPb1RVHMU/90dnXqHtDLaNtWIpnfAj0IKEAAsXmBgXxo0u3MkfYEwIC2GBGxO3sHHLzh2NEkw0JkCUxBAWZmwhKEjjD8SpkynpS2d4zpt37/deF61DTBMMZ39Ozucc9f78sddD4JxS+gDPoBjDba35wHrH+YP7Ds9Vhir/b+qWka6Cob/Jis6BWz/Vz9sQ4lxbLdNcu7vZ4AwvrB1loryLldYjfuks4F58wLApscVWCCHOWVcUdHqr/3UWlun8OK/sfIut24f57MYFHgxeZ3h6gLG/DjP0cJzG5FVcUWBdIXiRvndLq8abtffYMz1Lr8j55MuzZFN3SKxhsvEabxw6wbe3L+NFcIVgnfN48QCo5ihvz55ix2SNGCNf3ZgnnVhgJK1xfPQE+48dQilFs/07/jmPcx4rXhAReFzmnR1nGKtMkGUZSilqz88ynn3I3pcPkiRJv+VyZ4kBEcQL1vmAD8JM9io7t+/euCgCMPPSrk3DZllGW7eohIDzAe03EPaOH8EYQ5qmT71yudlAjeR48Xjn0d4JrucZKlex1lKv16lWqxhj6PV6hBAwxvQDVtdW0IPr2N4J2nvBec9qu0We54QQANBas7i4SKVSoVQq9QN+bd2FgbDewAtafCCawNf3PuXhn39gre3v8C+OUgqAzuMON1uXkCj4IIgP6w1EhPbUHT7+5l2+X7pOt9tFREiShEajQVEUAFy8dgEzkyKygeAFM3kk+WhkyhAJlEaFdPg+C9/dI+aGNFvhys0vaHfWuFL/nB8G5rFbIcRAiIH0twJ19GT157H95d3JNt3nDC7iuhFtwA5qfB6wZY16siV5Gnj0Y+++1ZbTzVvdc1HYfPpTpAxLpUSf/gcI2lvMWbR5vAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Avar%20page%20%3D%20gBrowser.currentURI%3B%0Avar%20browser%20%3D%20%22/usr/bin/midori%22%3B%0A%0Avar%20file%20%3D%20%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Afile.initWithPath%28browser%29%3B%0A%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0Aprocess.init%28file%29%3B%0Aprocess.run%28false%2C%20%5Bpage.spec%5D%2C%201%29%3B%0Areturn%20true%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%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%22Opera%22%20%u0434%u043B%u044F%20Linux%20OS%0A%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

var page = gBrowser.currentURI;
var browser = "/usr/bin/midori";

var file =  Components.classes["@mozilla.org/file/local;1"]
                      .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(browser);

var process = Components.classes["@mozilla.org/process/util;1"]
                        .createInstance(Components.interfaces.nsIProcess);
process.init(file);
process.run(false, [page.spec], 1);
return true;

Отредактировано imyax (22-07-2011 03:35:34)

Отсутствует

 

№5525-05-2011 21:59:12

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Текстовые смайлы(Firefox3.6-5.0)
Вставка текстовых смайлов.В основе кнопки код Infocatcher

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0Athis.appendChild%28parseFromXML%28%0A%20%20%20%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.insertText%28event.target.getAttribute%28%27cb_text%27%29%29%3B%22%3E%0A%20%3Cmenu%20label%3D%22%u042D%u043C%u043E%u0446%u0438%u044F%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%29%22%20label%3D%22%3A-%29%20%u0443%u043B%u044B%u0431%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%28%22%20label%3D%22%3A-%28%20%u0433%u0440%u0443%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%7C%22%20label%3D%22%3A-%7C%20%u0437%u0430%u0434%u0443%u043C%u0447%u0438%u0432%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-D%22%20label%3D%22%3A-D%20%u0441%u043C%u0435%u0445%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22X-D%22%20label%3D%22X-D%20%u0441%u043C%u0435%u0445%20%u0441%20%u0437%u0430%u0436%u043C%u0443%u0440%u0435%u043D%u043D%u044B%u043C%u0438%20%u0433%u043B%u0430%u0437%u0430%u043C%u0438%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-C%22%20label%3D%22%3A-C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u043E%u0433%u043E%u0440%u0447%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-/%22%20label%3D%22%3A-/%20%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%5C%22%20label%3D%22%3A-%5C%20%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-0%22%20label%3D%22%3A-0%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%228-O%22%20label%3D%228-O%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3D-O%22%20label%3D%22%3D-O%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%20%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%5B%20%5D%22%20label%3D%22%3A-%5B%20%5D%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%5B%22%20label%3D%22%3A-%5B%20%u0441%u043C%u0443%u0449%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%250%22%20label%3D%22%250%20%u0441%u0431%u0438%u0442%20%u0441%20%u0442%u043E%u043B%u043A%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3E%3A-D%22%20label%3D%22%3E%3A-D%20%u0437%u043B%u043E%u0440%u0430%u0434%u043D%u044B%u0439%20%20%u0441%u043C%u0435%u0445%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%7D%3A-%3E%22%20label%3D%22%7D%3A-%3E%20%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%3E%22%20label%3D%22%5D%3A-%3E%20%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A%27-%29%22%20label%3D%22%3A%27-%29%20%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A%27-D%22%20label%3D%22%3A%27-D%20%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22D-%3A%22%20label%3D%22D-%3A%20%u0441%u0438%u043B%u044C%u043D%u0430%u044F%20%u0437%u043B%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22/%3A-%28%22%20label%3D%22/%3A-%28%20%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22/%3A-%5D%22%20label%3D%22/%3A-%5D%20%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%3Cmenu%20label%3D%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3B-%29%22%20label%3D%22%3B-%29%20%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-*%22%20label%3D%22%3A-*%20%u0446%u0435%u043B%u043E%u0432%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A_%28%22%20label%3D%22%3A_%28%20%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A%7E%28%22%20label%3D%22%3A%7E%28%20%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A%27%28%22%20label%3D%22%3A%27%28%20%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A*%28%22%20label%3D%22%3A*%28%20%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%7B%7D%22%20label%3D%22%3A-%7B%7D%20%u0441%u0442%u0440%u0430%u0441%u0442%u043D%u044B%u0439%20%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-@%22%20label%3D%22%3A-@%20%u043A%u0440%u0438%u0447%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-X%22%20label%3D%22%3A-X%20%u0440%u043E%u0442%20%u043D%u0430%20%u0437%u0430%u043C%u043A%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%21%22%20label%3D%22%3A-%21%20%u043E%u0442%u0432%u0440%u0430%u0449%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-P%22%20label%3D%22%3A-P%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-p%22%20label%3D%22%3A-p%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3Alol%3A%22%20label%3D%22%3Alol%3A%20%u0433%u0440%u043E%u043C%u043A%u0438%u0439%20%u0441%u043C%u0435%u0445%22%20/%3E%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%3Cmenu%20label%3D%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%228-%29%22%20label%3D%228-%29%20%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22B-%29%22%20label%3D%22B-%29%20%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22O%3A-%29%22%20label%3D%22O%3A-%29%20%u0430%u043D%u0433%u0435%u043B%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%25%29%22%20label%3D%22%25%29%20%u0441%u0443%u043C%u0430%u0441%u0448%u0435%u0434%u0448%u0438%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A*%29%22%20label%3D%22%3A*%29%u043F%u044C%u044F%u043D%u044B%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22/b/%22%20label%3D%22/b/%20%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5Co/%22%20label%3D%22%5Co/%20%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%u0413%u0433Y%22%20label%3D%22%u0413%u0433Y%20%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%7B%3A%u20AC%22%20label%3D%22%7B%3A%u20AC%20%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3AE%22%20label%3D%22%3AE%20%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3B%2C%3B%29%22%20label%3D%22%28%3B%2C%3B%29%20%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22*%3AO%29%22%20label%3D%22*%3AO%29%20%u043A%u043B%u043E%u0443%u043D%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-E%22%20label%3D%22%3A-E%20%u043E%u0441%u043A%u0430%u043B%u0435%u043D%u043D%u044B%u0439%20%20%u0432%u0430%u043C%u043F%u0438%u0440%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-F%22%20label%3D%22%3A-F%20%u0432%u0430%u043C%u043F%u0438%u0440%20%u0431%u0435%u0437%20%u043A%u043B%u044B%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A%3A-%29%22%20label%3D%22%3A%3A-%29%20%u043C%u0443%u0442%u0430%u043D%u0442/%u043F%u0440%u0438%u0448%u0435%u043B%u0435%u0446%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5B%3A%5D%22%20label%3D%22%5B%3A%5D%20%u0440%u043E%u0431%u043E%u0442%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22-%3D%3C%3A-%29%22%20label%3D%22-%3D%3C%3A-%29%20%u0432%u043E%u043B%u0448%u0435%u0431%u043D%u0438%u043A%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%2C%u2019-/%22%20label%3D%22%2C%u2019-/%20%u043A%u0438%u0442%u0430%u0435%u0446%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3C%7C-%29%22%20label%3D%22%3C%7C-%29%20%u043A%u0438%u0442%u0430%u0435%u0446%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%u043E-%29%22%20label%3D%22%u043E-%29%20%u0446%u0438%u043A%u043B%u043E%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22O-%29%22%20label%3D%22O-%29%20%u0446%u0438%u043A%u043B%u043E%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%5D%5B%22%20label%3D%22%3A-%5D%5B%20%u0447%u0435%u0440%u0435%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3A-%3F%22%20label%3D%22%3A-%3F%20%u043A%u0443%u0440%u044F%u0449%u0438%u0439%20%u0442%u0440%u0443%u0431%u043A%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%u042D%3A-%29%22%20label%3D%22%u042D%3A-%29%20%u043E%u043B%u0435%u043D%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3C3%22%20label%3D%22%3C3%20%u0441%u0435%u0440%u0434%u0446%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22@%7D-%3E--%22%20label%3D%22@%7D-%3E--%20%u0440%u043E%u0437%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5Cm/%22%20label%3D%22%5Cm/%20%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5Cm/_%22%20label%3D%22%5Cm/_%20%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5B%3A%7C%7C%7C%3A%5D%22%20label%3D%22%5B%3A%7C%7C%7C%3A%5D%20%u0431%u0430%u044F%u043D%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5B%3A%5D/%5C/%5C/%5C%5B%3A%5D%22%20label%3D%22%5B%3A%5D/%5C/%5C/%5C%5B%3A%5D%20%u0431%u0430%u044F%u043D%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5B%3A%5D%7C%7C%7C%5B%3A%5D%22%20label%3D%22%5B%3A%5D%7C%7C%7C%5B%3A%5D%20%u0431%u0430%u044F%u043D%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28_%21_%29%22%20label%3D%22%28_%21_%29%20%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%29%28%29%22%20label%3D%22%28%29%28%29%20%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%20%20%20%3C/menupopup%3E%0A%29%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0Athis.insertText%20%3D%20function%28str%29%20%7B%0A%20%20%20%20var%20command%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%20%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28command%29%29%20%7B%0A%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28command%2C%20params%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Afunction%20parseFromXML%28xml%29%20%7B%0A%20%20%20%20var%20pp%20%3D%20XML.prettyPrinting%3B%0A%20%20%20%20XML.prettyPrinting%20%3D%20false%3B%0A%20%20%20%20var%20elt%20%3D%20new%20DOMParser%28%29.parseFromString%28xml.toXMLString%28%29%2C%20%22application/xml%22%29.documentElement%3B%0A%20%20%20%20XML.prettyPrinting%20%3D%20pp%3B%0A%20%20%20%20return%20elt%3B%0A%7D%0A%0Avar%20that%20%3D%20this%3B%0Athis.hideDropMarker%20%3D%20function%28%29%20%7B%0A%20%20var%20dropMarker%20%3D%20document.getAnonymousElementByAttribute%28that%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%20%20if%20%28dropMarker%29%20%7B%0A%20%20%20%20dropMarker.setAttribute%28%22hidden%22%2C%20%22true%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20setTimeout%28that.hideDropMarker%2C%2010%29%3B%0A%20%20%7D%0A%7D%0Athis.hideDropMarker%28%29%3B%0A%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%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

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

Выделить код

Код:

/*Initialization Code*/
this.appendChild(parseFromXML(
    <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        oncommand="this.parentNode.insertText(event.target.getAttribute('cb_text'));">
 <menu label="Эмоция">
            <menupopup>
        <menuitem cb_text=":-)" label=":-) улыбка" />
        <menuitem cb_text=":-(" label=":-( грусть" />
        <menuitem cb_text=":-|" label=":-| задумчивость" />
        <menuitem cb_text=":-D" label=":-D смех" />
        <menuitem cb_text="X-D" label="X-D смех с зажмуренными глазами" />
        <menuitem cb_text=":-C" label=":-C сильное огорчение" />
        <menuitem cb_text=":-/" label=":-/ недовольство/озадаченность" />
        <menuitem cb_text=":-\" label=":-\ недовольство/озадаченность" />
        <menuitem cb_text=":-0" label=":-0 удивление" />
        <menuitem cb_text="8-O" label="8-O сильное удивление" />
        <menuitem cb_text="=-O" label="=-O сильное удивление" /> 
        <menuitem cb_text=":-[ ]" label=":-[ ] сильное удивление" />
        <menuitem cb_text=":-[" label=":-[ смущение" />
        <menuitem cb_text="%0" label="%0 сбит с толку" />
        <menuitem cb_text=">:-D" label=">:-D злорадный  смех" />
        <menuitem cb_text="}:->" label="}:-> коварная  улыбка" />
        <menuitem cb_text=":->" label="]:-> коварная  улыбка" />
        <menuitem cb_text=":'-)" label=":'-) сильный смех(до слёз)" />
        <menuitem cb_text=":'-D" label=":'-D сильный смех(до слёз)" />
        <menuitem cb_text="D-:" label="D-: сильная злость" />
        <menuitem cb_text="/:-(" label="/:-( «едет крыша»" />
        <menuitem cb_text="/:-]" label="/:-] «едет крыша»" />
          </menupopup>
             </menu>
 <menu label="Действие">
            <menupopup>
        <menuitem cb_text=";-)" label=";-) подмигивать" />
        <menuitem cb_text=":-*" label=":-* целовать" />
        <menuitem cb_text=":_(" label=":_( плакать" />
        <menuitem cb_text=":~(" label=":~( плакать" />
        <menuitem cb_text=":'(" label=":'( плакать" />
        <menuitem cb_text=":*(" label=":*( плакать" />
        <menuitem cb_text=":-{}" label=":-{} страстный поцелуй" />
        <menuitem cb_text=":-@" label=":-@ кричать" />
        <menuitem cb_text=":-X" label=":-X рот на замке" />
        <menuitem cb_text=":-!" label=":-! отвращение" />
        <menuitem cb_text=":-P" label=":-P показывать язык" />
        <menuitem cb_text=":-p" label=":-p показывать язык" />
        <menuitem cb_text=":lol:" label=":lol: громкий смех" />
        
        
          </menupopup>
             </menu>
 <menu label="Персонаж">
            <menupopup>
        <menuitem cb_text="8-)" label="8-) человек в очках" />
        <menuitem cb_text="B-)" label="B-) человек в очках" />
        <menuitem cb_text="O:-)" label="O:-) ангел" />
        <menuitem cb_text="%)" label="%) сумасшедший" />
        <menuitem cb_text=":*)" label=":*)пьяный" />
        <menuitem cb_text="/b/" label="/b/ Медвед/«Превед!" />
        <menuitem cb_text="\o/" label="\o/ Медвед/«Превед!»" />
        <menuitem cb_text="ГгY" label="ГгY Медвед/«Превед!»" />
        <menuitem cb_text="{:€" label="{:€ Ктулху" />
        <menuitem cb_text=":E" label=":E Ктулху" />
        <menuitem cb_text="(;,;)" label="(;,;) Ктулху" />
        <menuitem cb_text="*:O)" label="*:O) клоун" />
        <menuitem cb_text=":-E" label=":-E оскаленный  вампир" />
        <menuitem cb_text=":-F" label=":-F вампир без клыка" />
        <menuitem cb_text="::-)" label="::-) мутант/пришелец" />
        <menuitem cb_text="[:]" label="[:] робот" />
        <menuitem cb_text="-=<:-)" label="-=<:-) волшебник" />
        <menuitem cb_text=",’-/" label=",’-/ китаец" />
        <menuitem cb_text="<|-)" label="<|-) китаец" />
        <menuitem cb_text="о-)" label="о-) циклоп" />
        <menuitem cb_text="O-)" label="O-) циклоп" />
        <menuitem cb_text=":-][" label=":-][ череп" />
        <menuitem cb_text=":-?" label=":-? курящий трубку" />
        <menuitem cb_text="Э:-)" label="Э:-) олень" />
        <menuitem cb_text="<3" label="<3 сердце" />
        <menuitem cb_text="@}->--" label="@}->-- роза" />
        <menuitem cb_text="\m/" label="\m/ коза (жест)" />
        <menuitem cb_text="\m/_" label="\m/_ коза (жест)" />
        <menuitem cb_text="[:|||:]" label="[:|||:] баян" />
        <menuitem cb_text="[:]/\/\/\[:]" label="[:]/\/\/\[:] баян" />
        <menuitem cb_text="[:]|||[:]" label="[:]|||[:] баян" />
        <menuitem cb_text="(_!_)" label="(_!_) задница" />
        <menuitem cb_text="()()" label="()() задница" />
       
        
          </menupopup>
             </menu>
    </menupopup>
));
this.type = "menu";
this.orient = "horizontal";
this.insertText = function(str) {
    var command = "cmd_insertText";
    var controller = document.commandDispatcher.getControllerForCommand(command);
    if(controller && controller.isCommandEnabled(command)) {
        controller = controller.QueryInterface(Components.interfaces.nsICommandController);
        var params = Components.classes["@mozilla.org/embedcomp/command-params;1"]
            .createInstance(Components.interfaces.nsICommandParams);
        params.setStringValue("state_data", str);
        controller.doCommandWithParams(command, params);
    }
};
function parseFromXML(xml) {
    var pp = XML.prettyPrinting;
    XML.prettyPrinting = false;
    var elt = new DOMParser().parseFromString(xml.toXMLString(), "application/xml").documentElement;
    XML.prettyPrinting = pp;
    return elt;
}

var that = this;
this.hideDropMarker = function() {
  var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker");
  if (dropMarker) {
    dropMarker.setAttribute("hidden", "true");
  } else {
    setTimeout(that.hideDropMarker, 10);
  }
}
this.hideDropMarker();

Добавлено 25-05-2011 22:09:28
Текстовые смайлы(Азия)(Firefox3.6-5.0)
Вставка текстовых смайлов.В основе кнопки код Infocatcher

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%28%u0410%u0437%u0438%u044F%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0Athis.appendChild%28parseFromXML%28%0A%20%20%20%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.insertText%28event.target.getAttribute%28%27cb_text%27%29%29%3B%22%3E%0A%20%3Cmenu%20label%3D%22%u042D%u043C%u043E%u0446%u0438%u044F%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28n_n%29%22%20label%3D%22%28n_n%29%u0443%u043B%u044B%u0431%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%5E_%5E%29%22%20label%3D%22%28%5E_%5E%29%u0440%u0430%u0434%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3C_%3E%29%22%20label%3D%22%28%3C_%3E%29%u0433%u0440%u0443%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28v_v%29%22%20label%3D%22%28v_v%29%u0433%u0440%u0443%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%5E%20%5E%29%22%20label%3D%22%28%5E%20%5E%29%u0443%u043B%u044B%u0431%u043A%u0430%20%u0447%u0435%u0440%u0435%u0437%20%u0441%u0438%u043B%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3E_%3C%29%22%20label%3D%22%28%3E_%3C%29%u0437%u043B%u043E%u0441%u0442%u044C/%u043A%u0430%u0442%u0435%u0433%u043E%u0440%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3E_%3E%29%22%20label%3D%22%28%3E_%3E%29%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3C_%3C%29%22%20label%3D%22%28%3C_%3C%29%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-%A8%29%22%20label%3D%22%28-_-%A8%29%u0441%u043A%u043E%u043D%u0444%u0443%u0436%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5E_%5E%A8%22%20label%3D%22%5E_%5E%A8%u0441%u043C%u0443%u0449%u0451%u043D%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22*%5E_%5E*%22%20label%3D%22*%5E_%5E*%u0441%u043C%u0443%u0449%u0435%u043D%u043D%u043E%u0441%u0442%u044C%20%u0441%20%u043F%u043E%u043A%u0440%u0430%u0441%u043D%u0435%u043D%u0438%u0435%u043C%22%20/%3E%20%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-%23%29%22%20label%3D%22%28-_-%23%29%u044F%u0440%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-%A4%29%22%20label%3D%22%28-_-%A4%29%u044F%u0440%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-+%29%22%20label%3D%22%28-_-+%29%u044F%u0440%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28o_o%29%22%20label%3D%22%28o_o%29%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%280_0%29%22%20label%3D%22%280_0%29%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28O_o%29%22%20label%3D%22%28O_o%29%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28o_O%29%22%20label%3D%22%28o_O%29%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28V_v%29%22%20label%3D%22%28V_v%29%u043D%u0435%u043F%u0440%u0438%u044F%u0442%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28@_@%29%22%20label%3D%22%28@_@%29%u043E%u0431%u0430%u043B%u0434%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%25_%25%29%22%20label%3D%22%28%25_%25%29%u0443%u0441%u0442%u0430%u043B%u043E%u0441%u0442%u044C%20%u0433%u043B%u0430%u0437%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28u_u%29%22%20label%3D%22%28u_u%29%u0434%u0435%u043F%u0440%u0435%u0441%u0441%u0438%u044F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3Ex%3C%21%29%22%20label%3D%22%28%3Ex%3C%21%29%u0447%u0435%u0440%u0442%21%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%228%28%3E_%3C%298%22%20label%3D%228%28%3E_%3C%298%u0440%u0435%u0432%u043D%u0438%u0432%u044B%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3E%3E%29%22%20label%3D%22%28%3E%3E%29%u043A%u043E%u0441%u043E%u0439%20%u0432%u0437%u0433%u043B%u044F%u0434%2C%20%u043D%u0435%u0434%u043E%u0432%u0435%u0440%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%280_%3C%29%22%20label%3D%22%280_%3C%29%u043D%u0435%u0440%u0432%u043D%u044B%u0439%20%u0442%u0438%u043A%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28*_*%29%22%20label%3D%22%28*_*%29%u0444%u0430%u043D%u0430%u0442%u0435%u043D%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22-__-%22%20label%3D%22-__-%u0444%u043B%u0435%u0433%u043C%u0430%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C/%AB%u043C%u0434%u0430-%u0430-%u0430%u2026%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%289_9%29%22%20label%3D%22%289_9%29%u043D%u0435%20%u0441%u043F%u0430%u043B%20%u0432%u0441%u044E%20%u043D%u043E%u0447%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3D__%3D%22%20label%3D%22%3D__%3D%u0441%u043E%u043D%u043D%u044B%u0439%20%u0438%u043B%u0438%20%AB%u0434%u043E%u0441%u0442%u0430%u043B%u0438%u2026%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-.-%29Zzz.%22%20label%3D%22%28-.-%29Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-%29Zzz.%22%20label%3D%22%28-_-%29Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-_-%3B%29%22%20label%3D%22%28-_-%3B%29%u0431%u043E%u043B%u0435%u0437%u043D%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%u0425_%u0445%29%22%20label%3D%22%28%u0425_%u0445%29%u0442%u0440%u0443%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28+_+%29%22%20label%3D%22%28+_+%29%u0442%u0440%u0443%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%u0445_%u0445%29%22%20label%3D%22%28%u0445_%u0445%29%u0442%u0440%u0443%u043F%22%20/%3E%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%3Cmenu%20label%3D%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%5E_%7E%29%22%20label%3D%22%28%5E_%7E%29%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%5E_-%29%22%20label%3D%22%28%5E_-%29%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3B_%3B%29%22%20label%3D%22%28%3B_%3B%29%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28T_T%29%22%20label%3D%22%28T_T%29%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28TT.TT%29%22%20label%3D%22%28TT.TT%29%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28ToT%29%22%20label%3D%22%28ToT%29%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22Q__Q%22%20label%3D%22Q__Q%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3DX%3D%22%20label%3D%22%3DX%3D%u0440%u0443%u043A%u043E%u043F%u043E%u0436%u0430%u0442%u0438%u0435%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5E%7D%7B%5E%22%20label%3D%22%5E%7D%7B%5E%u043B%u044E%u0431%u043E%u0432%u044C%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%5E3%5E%29%22%20label%3D%22%28%5E3%5E%29%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%20/%3E%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%3Cmenu%20label%3D%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenupopup%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3D%5E.%5E%3D%29%22%20label%3D%22%28%3D%5E.%5E%3D%29%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%3D%5E_%5E%3D%22%20label%3D%22%3D%5E_%5E%3D%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28O%2Co%29%22%20label%3D%22%28O%2Co%29%u0441%u043E%u0432%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5E..%5E%22%20label%3D%22%5E..%5E%u0441%u0432%u0438%u043D%u044C%u044F%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22///_%u0422%22%20label%3D%22///_%u0422%u044D%u043C%u043E-%u043A%u0438%u0434%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22T_%5C%5C%5C%22%20label%3D%22T_%5C%5C%5C%u044D%u043C%u043E-%u043A%u0438%u0434%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22///_%5E%22%20label%3D%22///_%5E%u044D%u043C%u043E-%u043A%u0438%u0434%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%5E_%5C%5C%5C%22%20label%3D%22%5E_%5C%5C%5C%u044D%u043C%u043E-%u043A%u0438%u0434%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%A8%5C%28%u043E_%u041E%29/%A8%29%22%20label%3D%22%28%A8%5C%28%u043E_%u041E%29/%A8%29%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28jIj%29%22%20label%3D%22%28jIj%29%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28%3B%2C%3B%29%22%20label%3D%22%28%3B%2C%3B%29%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28o%2C.%2CO%29%22%20label%3D%22%28o%2C.%2CO%29%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22Y%28O%2C%2C%2C%2CO%29Y%22%20label%3D%22Y%28O%2C%2C%2C%2CO%29Y%u041A%u0442%u0443%u043B%u0445%u0443%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28x%28x_%28x_x%28%u041E_%u043E%29x_x%29_x%29x%29%22%20label%3D%22%28x%28x_%28x_x%28%u041E_%u043E%29x_x%29_x%29x%29%u0436%u0438%u0432%u043E%u0439%20%u0441%u0440%u0435%u0434%u0438%20%u0437%u043E%u043C%u0431%u0438%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22%28-%28-_%28-_-%28%u041E_%u043E%29-_-%29_-%29-%29%22%20label%3D%22%28-%28-_%28-_-%28%u041E_%u043E%29-_-%29_-%29-%29%u043F%u0440%u043E%u0441%u043D%u0443%u043B%u0441%u044F%20%u0432%20%u043C%u0435%u0442%u0440%u043E%22%20/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20cb_text%3D%22@-_-@%22%20label%3D%22@-_-@%u043E%u0432%u0435%u043D%2C%20%u0431%u0430%u0440%u0430%u0448%u043A%u0430%22%20/%3E%0A%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menu%3E%0A%20%20%20%20%3C/menupopup%3E%0A%29%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0Athis.insertText%20%3D%20function%28str%29%20%7B%0A%20%20%20%20var%20command%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%20%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28command%29%29%20%7B%0A%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20str%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28command%2C%20params%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Afunction%20parseFromXML%28xml%29%20%7B%0A%20%20%20%20var%20pp%20%3D%20XML.prettyPrinting%3B%0A%20%20%20%20XML.prettyPrinting%20%3D%20false%3B%0A%20%20%20%20var%20elt%20%3D%20new%20DOMParser%28%29.parseFromString%28xml.toXMLString%28%29%2C%20%22application/xml%22%29.documentElement%3B%0A%20%20%20%20XML.prettyPrinting%20%3D%20pp%3B%0A%20%20%20%20return%20elt%3B%0A%7D%0Avar%20that%20%3D%20this%3B%0Athis.hideDropMarker%20%3D%20function%28%29%20%7B%0A%20%20var%20dropMarker%20%3D%20document.getAnonymousElementByAttribute%28that%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%20%20if%20%28dropMarker%29%20%7B%0A%20%20%20%20dropMarker.setAttribute%28%22hidden%22%2C%20%22true%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20setTimeout%28that.hideDropMarker%2C%2010%29%3B%0A%20%20%7D%0A%7D%0Athis.hideDropMarker%28%29%3B%0A%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%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

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

Выделить код

Код:

/*Initialization Code*/
this.appendChild(parseFromXML(
    <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        oncommand="this.parentNode.insertText(event.target.getAttribute('cb_text'));">
 <menu label="Эмоция">
            <menupopup>
        <menuitem cb_text="(n_n)" label="(n_n)улыбка" />
        <menuitem cb_text="(^_^)" label="(^_^)радость" />
        <menuitem cb_text="(<_>)" label="(<_>)грусть" />
        <menuitem cb_text="(v_v)" label="(v_v)грусть" />
        <menuitem cb_text="(^ ^)" label="(^ ^)улыбка через силу" />
        <menuitem cb_text="(>_<)" label="(>_<)злость/категоричность" />
        <menuitem cb_text="(>_>)" label="(>_>)скептичность" />
        <menuitem cb_text="(<_<)" label="(<_<)скептичность" />
        <menuitem cb_text="(-_-¨)" label="(-_-¨)сконфуженность" />
        <menuitem cb_text="^_^¨" label="^_^¨смущённость" />
        <menuitem cb_text="*^_^*" label="*^_^*смущенность с покраснением" /> 
        <menuitem cb_text="(-_-#)" label="(-_-#)ярость" />
        <menuitem cb_text="(-_-¤)" label="(-_-¤)ярость" />
        <menuitem cb_text="(-_-+)" label="(-_-+)ярость" />
        <menuitem cb_text="(o_o)" label="(o_o)удивление" />
        <menuitem cb_text="(0_0)" label="(0_0)сильное удивление" />
        <menuitem cb_text="(O_o)" label="(O_o)очень сильное удивление" />
        <menuitem cb_text="(o_O)" label="(o_O)очень сильное удивление" />
        <menuitem cb_text="(V_v)" label="(V_v)неприятное удивление" />
        <menuitem cb_text="(@_@)" label="(@_@)обалдение" />
        <menuitem cb_text="(%_%)" label="(%_%)усталость глаз" />
        <menuitem cb_text="(u_u)" label="(u_u)депрессия" />
        <menuitem cb_text="(>x<!)" label="(>x<!)черт!" />
        <menuitem cb_text="8(>_<)8" label="8(>_<)8ревнивый" />
        <menuitem cb_text="(>>)" label="(>>)косой взгляд, недоверие" />
        <menuitem cb_text="(0_<)" label="(0_<)нервный тик" />
        <menuitem cb_text="(*_*)" label="(*_*)фанатение" />
        <menuitem cb_text="-__-" label="-__-флегматичность/«мда-а-а…»" />
        <menuitem cb_text="(9_9)" label="(9_9)не спал всю ночь" />
        <menuitem cb_text="=__=" label="=__=сонный или «достали…»" />
        <menuitem cb_text="(-.-)Zzz." label="(-.-)Zzz.спящий" />
        <menuitem cb_text="(-_-)Zzz." label="(-_-)Zzz.спящий" />
        <menuitem cb_text="(-_-;)" label="(-_-;)болезненность" />
        <menuitem cb_text="(Х_х)" label="(Х_х)труп" />
        <menuitem cb_text="(+_+)" label="(+_+)труп" />
        <menuitem cb_text="(х_х)" label="(х_х)труп" />
          </menupopup>
             </menu>
 <menu label="Действие">
            <menupopup>
        <menuitem cb_text="(^_~)" label="(^_~)подмигивать" />
        <menuitem cb_text="(^_-)" label="(^_-)подмигивать" />
        <menuitem cb_text="(;_;)" label="(;_;)плакать" />
        <menuitem cb_text="(T_T)" label="(T_T)плакать" />
        <menuitem cb_text="(TT.TT)" label="(TT.TT)плакать" />
        <menuitem cb_text="(ToT)" label="(ToT)плакать" />
        <menuitem cb_text="Q__Q" label="Q__Qплакать" />
        <menuitem cb_text="=X=" label="=X=рукопожатие" />
        <menuitem cb_text="^}{^" label="^}{^любовь" />
        <menuitem cb_text="(^3^)" label="(^3^)поцелуй" />
          </menupopup>
             </menu>
 <menu label="Персонаж">
            <menupopup>
        <menuitem cb_text="(=^.^=)" label="(=^.^=)кошка(ня)" />
        <menuitem cb_text="=^_^=" label="=^_^=кошка(ня)" />
        <menuitem cb_text="(O,o)" label="(O,o)сова" />
        <menuitem cb_text="^..^" label="^..^свинья" />
        <menuitem cb_text="///_Т" label="///_Тэмо-кид" />
        <menuitem cb_text="T_\\\" label="T_\\\эмо-кид" />
        <menuitem cb_text="///_^" label="///_^эмо-кид" />
        <menuitem cb_text="^_\\\" label="^_\\\эмо-кид" />
        <menuitem cb_text="(¨\(о_О)/¨)" label="(¨\(о_О)/¨)Медвед/«Превед!»" />
        <menuitem cb_text="(jIj)" label="(jIj)Ктулху" />
        <menuitem cb_text="(;,;)" label="(;,;)Ктулху" />
        <menuitem cb_text="(o,.,O)" label="(o,.,O)Ктулху" />
        <menuitem cb_text="Y(O,,,,O)Y" label="Y(O,,,,O)YКтулху" />
        <menuitem cb_text="(x(x_(x_x(О_о)x_x)_x)x)" label="(x(x_(x_x(О_о)x_x)_x)x)живой среди зомби" />
        <menuitem cb_text="(-(-_(-_-(О_о)-_-)_-)-)" label="(-(-_(-_-(О_о)-_-)_-)-)проснулся в метро" />
        <menuitem cb_text="@-_-@" label="@-_-@овен, барашка" />
          </menupopup>
             </menu>
    </menupopup>
));
this.type = "menu";
this.orient = "horizontal";
this.insertText = function(str) {
    var command = "cmd_insertText";
    var controller = document.commandDispatcher.getControllerForCommand(command);
    if(controller && controller.isCommandEnabled(command)) {
        controller = controller.QueryInterface(Components.interfaces.nsICommandController);
        var params = Components.classes["@mozilla.org/embedcomp/command-params;1"]
            .createInstance(Components.interfaces.nsICommandParams);
        params.setStringValue("state_data", str);
        controller.doCommandWithParams(command, params);
    }
};
function parseFromXML(xml) {
    var pp = XML.prettyPrinting;
    XML.prettyPrinting = false;
    var elt = new DOMParser().parseFromString(xml.toXMLString(), "application/xml").documentElement;
    XML.prettyPrinting = pp;
    return elt;
}
var that = this;
this.hideDropMarker = function() {
  var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker");
  if (dropMarker) {
    dropMarker.setAttribute("hidden", "true");
  } else {
    setTimeout(that.hideDropMarker, 10);
  }
}
this.hideDropMarker();

Отредактировано imyax (27-06-2011 23:20:15)

Отсутствует

 

№5628-05-2011 13:20:36

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

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

Прокрутка страницы( 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%3E%u041F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAFBIAAAEAIAAQBgAAFgAAACgAAAAUAAAAJAAAAAEAIAAAAAAA6AUAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A+Pj4DP///wCRkZGwmJiYpfLy8hT///8A/Pz8BPz8/AT///8A8vLyFJiYmKWRkZGw////APj4+Az///8A////AP///wD///8A////AP///wD4+PgM////AJGRkbCYmJil8vLyFP///wD8/PwE/Pz8BP///wDy8vIUmJiYpZGRkbD///8A+Pj4DP///wD///8A////AP///wD///8A+vr6Cf///wClpaWVOzs7/52dnYv8/PwJ////AP39/QT9/f0E////APz8/AmdnZ2LOzs7/6WlpZX///8A+vr6Cf///wD///8A/f39AP///wB9fX0JVFRUAF5eXpVfX1//aGhoi0tLSwl9fX0A7u7uBO7u7gR9fX0AS0tLCWhoaItfX1//Xl5elVRUVAB9fX0J////AP39/QD9/f0A////B319fQBUVFS5Xl5e/19fX/9oaGjzS0tL/319fcDu7u4f7u7uH319fcBKSkr/ampq81xcXP9TU1P/jIyMuf///wD7+/sH////AP39/QD///8HfX19AFRUVLleXl7/X19f/2hoaPNLS0v/fX19wO7u7h/u7u4ffX19wEpKSv9qamrzXFxc/1NTU/+MjIy5////APv7+wf///8A/f39Av///wB9fX3RVFRU/15eXv1fX1//aGho9EtLS/99fX3A7u7uH+7u7h99fX3AS0tL/2hoaPRfX1//Xl5e/VRUVP99fX3R////AP39/QL9/f0C////AH19fdFUVFT/Xl5e/V9fX/9oaGj0S0tL/319fcDu7u4f7u7uH319fcBLS0v/aGho9F9fX/9eXl79VFRU/319fdH///8A/f39Av39/QD///8HfX19AFRUVLleXl7/X19f/2hoaPNLS0v/fX19wO7u7h/u7u4ffX19wEpKSv9qamrzXFxc/1NTU/+MjIy5////APv7+wf///8A/f39AP///wd9fX0AVFRUuV5eXv9fX1//aGho80tLS/99fX3A7u7uH+7u7h99fX3ASkpK/2pqavNcXFz/U1NT/4yMjLn///8A+/v7B////wD9/f0A////AH19fQlUVFQAXl5elV9fX/9oaGiLS0tLCX19fQDu7u4E7u7uBH19fQBKSkoJampqi1xcXP9TU1OVjIyMAP///wn7+/sA////AP39/QD///8AfX19CVNTUwBoaGiVR0dH/6CgoIv6+voJ////AP39/QT9/f0E////APr6+gmioqKLRUVF/11dXZWLi4sA////Cfv7+wD///8A////AP///wD///8A+Pj4DP///wCRkZGwmJiYpfLy8hT///8A/Pz8BPz8/AT///8A8vLyFJiYmKWRkZGw////APj4+Az///8A////AP///wD///8A////AP///wD4+PgM////AJGRkbCYmJil8vLyFP///wD8/PwE/Pz8BP///wDy8vIUmJiYpZGRkbD///8A+Pj4DP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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........%0Aself.onclick%20%3D%20this.onmousedown%20%3De%3D%3E%20%7B%0A%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%26%26%20%21e.button%20%29%20%20%20%20%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.taimer%20%3D%20setTimeout%28%28%29%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20delete%20self.taimer%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_scrollTop%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%26%26%20e.button%20%3D%3D%202%20%29%20%20//%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20self.taimer%20%3D%20setTimeout%28%28%29%3D%3E%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20delete%20self.taimer%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_scrollBottom%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%20%20%20%20%20%20%20%20%20//%20%u0441%u0440%u0435%u0434%u043D%u0438%u0439%20%u043A%u043B%u0438%u043A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27click%27%20%26%26%20self.taimer%20%29%20%7B%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%20%20%20%20%20%20%20%20clearTimeout%28self.taimer%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20content.scrollTo%280%2C%20content.scrollY%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27click%27%20%26%26%20e.button%20%3D%3D%202%20%29%20%7B%20%20%20%20//%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%0A%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%20content.scrollTo%28content.scrollMaxX%2C%20content.scrollY%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043F%u0440%u043E%u043A%u0440%u0443%u0447%u0438%u0432%u0430%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%u0435%u0440%u0445%20-%20%u0432%u043D%u0438%u0437%20........%0Avar%20speed%20%3D%2014%3B%20//%20%u0441%u043A%u043E%u0440%u043E%u0441%u0442%u044C%20%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u043A%u0438%0Athis.onwheel%20%3De%3D%3E%20e.deltaY%20%3C%200%20%3F%20content.scrollBy%280%2C%20-speed%29%20%3A%20content.scrollBy%280%2C%20speed%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.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u0440%u043E%u043A%u0440%u0443%u0442%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043D%u0430%u043B%u0435%u0432%u043E%20%5Cn%u0414%u041B%3A%20%u041F%u0440%u043E%u043A%u0440%u0443%u0442%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%u0432%u0435%u0440%u0445%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u041F%u0440%u043E%u043A%u0440%u0443%u0442%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043D%u0430%u043F%u0440%u0430%u0432%u043E%20%5Cn%u0414%u041F%3A%20%u041F%u0440%u043E%u043A%u0440%u0443%u0442%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%u043D%u0438%u0437%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20%u043C%u043E%u0436%u043D%u043E%20%u043F%u0440%u043E%u043A%u0440%u0443%u0447%u0438%u0432%u0430%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%u0435%u0440%u0445%20-%20%u0432%u043D%u0438%u0437%22%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

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

Выделить код

Код:

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

   if ( e.type == 'mousedown' && !e.button )      // длинный левый клик
        self.taimer = setTimeout(()=> {         
           delete self.taimer;

           goDoCommand('cmd_scrollTop');
        }, 500);
        
   if ( e.type == 'mousedown' && e.button == 2 )  // длинный правый клик
        self.taimer = setTimeout(()=> {         
           delete self.taimer;
           
           goDoCommand('cmd_scrollBottom');
        }, 500);
        
   if ( e.button == 1 ) gShowPopup(this);         // средний клик           
        
   if ( e.type == 'click' && self.taimer ) {      // левый клик
        clearTimeout(self.taimer);
                  
        content.scrollTo(0, content.scrollY);
        }
 
   if ( e.type == 'click' && e.button == 2 ) {    // правый клик
        e.preventDefault();
          
        content.scrollTo(content.scrollMaxX, content.scrollY);
        }
};


// Колёсиком мыши на кнопке прокручивать страницу верх - вниз ........
var speed = 14; // скорость прокрутки
this.onwheel =e=> e.deltaY < 0 ? content.scrollBy(0, -speed) : content.scrollBy(0, speed);


// Подсказка для кнопки ........
this.tooltipText = "Л: Прокрутить страницу налево \nДЛ: Прокрутить страницу вверх\
                    \nП: Прокрутить страницу направо \nДП: Прокрутить страницу вниз\
                    \nКолёсиком мыши на кнопке можно прокручивать страницу верх - вниз";

Отредактировано bunda1 (26-05-2013 23:14:33)

Отсутствует

 

№5728-05-2011 15:53:01

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

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

BB: Color Menu ( Firefox24 + ) от 13.01.2015.
Кнопка открывает меню с подборкой BB цветов(кодов) для форумов. Выделите текст в поле текстового ввода и нажмите в меню нужный цвет.

Пример как добавлять новые цвета в кнопку:
Добавляем в кнопку новый пункт Neon Green за White
В коде инициализации добавляем за:

Выделить код

Код:

"#ffffff,White",

новую строку:

Выделить код

Код:

"#affe31,Neon Green",

Нажать Ok или Сохранить


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

Выделить код

Код:

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%3EBB%3A%20Color%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADU0lEQVR4Xk3OW0ybBRyH4fc7lLZQyqGwclqLG5hFbvCAxpvFEBPkwkkWFo3ZlW43CxckapZ44Y0XvXAbFwaSiWJGoiFzHjKzicJ0w4XJQZfpaORQDqVdO6At9GP03L9NRtQ3efK7/SmXLD+RR4jqxUS1A+xZnaURq/2VrFM5ul1Mc4kbKppYdDQyUV7PqLUSw1wFajmIAir/pgB5t0mX86XFuYsq9CQTdERidGzE6InscTEP53UVt/BfqoJGARnZa6su08cP1xafdtVqFTXVUFsDNjukNVgyqJiMcjquMm7TacsLiICakgjxXMhVby8eaXM1NjXWFeGqU3C7wH0QGhvhiUPQ4IJMKfycpilaxEi5CZfFBHjUD2wD1o8Hg8/GJdQlcv+UyO2zIlc9Ip+cEzn3qYjnmsjZKZFT8yIdD0W6EjkZkezgFUna1KSEO5+sqDxR5zBRZc/Q4ICDNeCqL3CD2wX1BTUN4KgTDlQniFk28RI5AXudXLC83b/81GWR1+ZFzgREPHFJDWclOiYyPyNyd1XkRlxkOJMRj0TljCxLh8zKyYIhWenns7KTo8ZzQyLdP4r0Tor0eUW+CYn8kZCIb1du/HZXJhOb8p2EpE/+lF6ZkC75Vjrlsnwk06NqTrbIyDoQ2OeH/CqoAfL4mZu+hX/8FsbGPVSCwDoKQdKFfcQGaiQZ8AV3vZBdg/QKJHyPN71KlTNFy9NOaq1OlOkt4lteUvhIFpQQQ8PwqUbm4c2F2P0dHi3AoyXIBkAJgVZQeNL6vMIDZZbm8iPUzdhRtsNk8WMhthPFf1PVxPhhLrr8VXD7b9A3920AQcitYikKc+SlPX5Pf02r4xkq+ysoGjMoIzMcz65f13U9tZsR+fD7sK/9zRbrIbtZAS0N7IKYyAMmNY27Pcn1oS/4/MIVLC0KL4Rf9B22NSVVNEE34V9PGG986Z1bCkaXQQ2DHgQtgMpjOg/Qjk7R8lZZ3vfrGtf6Ro/fGZuqUdnPrDMTNOIvX7rjHbx6+15sYWme7cgKqZSfaGyNgH8pZpj/Gmg/3tr5bs/7A73v9Xq6X+8O6fwvk8ZaMpt9Z3ZxY2wxuXPUETQ3mxt0wuQW4yW5iV1natShmIxjrx77xVZdlEmn0/wDi3q+iH+UAK0AAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20........................%0Athis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%20%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20........................%0Avar%20colors%20%3D%20%5B%0A%09%22%23000000%2CBlack%22%2C%0A%09%22%23808080%2CGray%22%2C%0A%09%22%23000066%2CD-Blue%22%2C%0A%09%22%233366ff%2CM-Blue%22%2C%0A%09%22%2333ccff%2CL-Blue%22%2C%0A%09%22%23ff0000%2CRed%22%2C%0A%09%22%23006600%2CD-Green%22%2C%0A%09%22%2333cc00%2CM-Green%22%2C%0A%09%22%2399FF99%2CL-Green%22%2C%0A%09%22%23ffff00%2CYellow%22%2C%0A%09%22%23964B00%2CBrown%22%2C%0A%09%22%23FF4F00%2COrange%22%2C%0A%09%22%23FFC0CB%2CPink%22%2C%0A%09%22%23ffffff%2CWhite%22%2C%0A%09%0A%20%20%20%09%22separator%22%2C%0A%0A%09%22%23006600%2Csome%201%22%2C%0A%09%22%23ff0000%2Csome%202%22%2C%0A%09%22%23e30077%2Csome%203%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Acolors.forEach%28%28str%29%3D%3E%20%7B%20%0A%20%20%20if%20%28%20str%20%3D%3D%20%22separator%22%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20var%20color%20%3D%20str.split%28%22%2C%22%29%5B0%5D%2C%20label%20%3D%20str.split%28%22%2C%22%29%5B1%5D%2C%0A%20%20%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20label%29%3B%0A%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%0A%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20insertBBcode%28color%29%3B%20%0A%20%20%20menuPopup.appendChild%28mItem%29%3B%0A%20%20%20%0A%20%20%20//%20%u0434%u043B%u044F%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u044F%20%u0446%u0432%u0435%u0442%u043D%u044B%u0445%20%u0438%u043A%u043E%u043D%u043E%u043A%20%u0432%20%u043C%u0435%u043D%u044E%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20CSS%20%u043A%u043E%u0434%20%u043A%20%u0432%u0441%u0435%u043C%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20....%0A%20%20%20%28function%28css%29%20%7B%0A%20%20%20%20%20%20var%20pi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%3Butf-8%2C%27%20+%20encodeURIComponent%28css%29%20+%20%27%22%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20document.insertBefore%28pi%2C%20document.documentElement%29%3B%20%20%20%0A%20%20%20%20%7D%29%28%27menuitem%5Blabel%3D%22%27%20+%20label%20+%20%27%22%5D%3E%20.menu-iconic-left%20%3E%20.menu-iconic-icon%20%7B%20background-color%3A%27%20+%20color%20+%20%27%21important%3B%7D%27%29%3B%0A%20%20%20%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20bb%20%u043A%u043E%u0434%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20........................%0Afunction%20insertBBcode%28color%29%20%7B%0A%20%20%20var%20textBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20var%20text%20%3D%20textBox.value.substring%28textBox.selectionStart%2C%20textBox.selectionEnd%29%3B%0A%20%20%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Ci.nsICommandController%29%3B%0A%20%20%20var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20params.setStringValue%28%22state_data%22%2C%20%22%5Bcolor%3D%22%20+%20color%20+%20%22%5D%22%20+%20text%20+%20%22%5B/color%5D%22%29%3B%0A%20%20%20controller.doCommandWithParams%28cmd%2C%20params%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._handleClick =()=> menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft"); 


// Создать меню ........................
var colors = [
    "#000000,Black",
    "#808080,Gray",
    "#000066,D-Blue",
    "#3366ff,M-Blue",
    "#33ccff,L-Blue",
    "#ff0000,Red",
    "#006600,D-Green",
    "#33cc00,M-Green",
    "#99FF99,L-Green",
    "#ffff00,Yellow",
    "#964B00,Brown",
    "#FF4F00,Orange",
    "#FFC0CB,Pink",
    "#ffffff,White",
    
       "separator",

    "#006600,some 1",
    "#ff0000,some 2",
    "#e30077,some 3"
            ];
                        
var menuPopup = self.appendChild(document.createElement("menupopup"));
colors.forEach((str)=> { 
   if ( str == "separator" ) { menuPopup.appendChild(document.createElement("menuseparator")); return };
   var color = str.split(",")[0], label = str.split(",")[1],
   mItem = document.createElement("menuitem");
   mItem.setAttribute("label", label);
   mItem.setAttribute("class", "menuitem-iconic");
   mItem.onclick =()=> insertBBcode(color); 
   menuPopup.appendChild(mItem);
   
   // для создания цветных иконок в меню добавляем CSS код к всем пунктам меню ....
   (function(css) {
      var pi = document.createProcessingInstruction('xml-stylesheet',
              'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
               return document.insertBefore(pi, document.documentElement);   
    })('menuitem[label="' + label + '"]> .menu-iconic-left > .menu-iconic-icon { background-color:' + color + '!important;}');
   
});
menuPopup.setAttribute("onclick", "event.stopPropagation()");


// Добавить bb код в текстовое поле ........................
function insertBBcode(color) {
   var textBox = document.commandDispatcher.focusedElement;
   var text = textBox.value.substring(textBox.selectionStart, textBox.selectionEnd);
  
   var cmd = "cmd_insertText";
   var controller = document.commandDispatcher.getControllerForCommand(cmd);
   var controller = controller.QueryInterface(Ci.nsICommandController);
   var params = Cc["@mozilla.org/embedcomp/command-params;1"].createInstance(Ci.nsICommandParams);
   params.setStringValue("state_data", "[color=" + color + "]" + text + "[/color]");
   controller.doCommandWithParams(cmd, params);
};


Спасибо Dumby за помощь с кнопкой.

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

Отсутствует

 

№5816-06-2011 20:23:06

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

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

userChrome.css ( Firefox 3.6+ )
открывает файл userChrome.css в внешнем текстовом редакторе по умолчанию.

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

Выделить код

Код:

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%3EuserChrome.css%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyhJREFUOMtdk11oW3UYh59zzj8nyUnz2TSmaWfT2lY3nWvRi7KBX3gxxBsHguKY84OyG9ErL7yQgdfFKYKI4gQvnKDI5kVRkNWqGyg6R9utpraNXWzztTRZ0pPk5Jz/8aJbaf3Be/e+Dw8v76twO2ff63uj0ejMBHziRZ9P/VEX6uvArCYCj0i5VbXcePr5yT/G+V80gOnpqx9n5+tv9QYap2rWSxNJY/G5n+ZPpwe6jUfrzvF0NNR/n99uJOPpl080LJlNpcfq3eGDzVLpmhQA5ZvtsSdPvIOz/Db37nsFf3sUbd8ghycmKOVWGThwjFuVAlkuhX6+EjsiPCKTCOmVhQVsASClVHtSAazUGVzHReNp9g+DL+xhqHsYAFuEmZuf8wmhJhXXjhCwjMmHJrcBruuqEoiHPQhgy7RxJSgKWLnz5ItVPp0u4JjrXe+/sHz0yoqSPXfZX92M5231zjIcYL3WIVux2GxJGpZEupD/5Qzh1iz3jw4imxuEjXwiHmoe99B5rGLKxA7gjkFvTCcV00lFFNT5N4mnoijqdlvHktRKdYYTq0NTp5iqNZ0hsdvg6pqJZUl8msLdMZ3fP/mMo8cO47SzjChfwoEStgVW1WXpekV37OCzewyWNlrMrZk0O5KFf5scfGYKUDC32vQaOcZHW3SnwnhDI3z9vafasTB2DGxgsNeHZUk0VSER0tjsPMyv776GHhzniadUfrvUplG0IWHLa6aRi6jOithtkIh6QIK0JfmyRfKuISInZ3ngwf18dbKfizdj9loleqtLc6qGRgbUi3sALQk4Ll26ynCfn6ihcU/yEB7g1QtF2h+ctRc//Gheuu5MROssK5Dds0QJuIBhCHyasgN2AAXQhGYHE31FT6d52WM3Mk67XtwDiNw+JHYN7S7TbJtC91Z0n1EM+nvKhzbXTAGQ+eufC4+3RsYMj8NW3WTp71U7v1G084WyvZhZaeVubDT+nLteFkKsj46kl1Upqj09mnX6m5ntZ/r2uy8+P//DuVq+UDjiujLk9epqOBS0DMNver16VVWV9fRA/416w1xstzp51+etpFIpC+A/x3JsuL3cxBcAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Components.interfaces.nsIProperties%29.get%28%22UChrm%22%2C%20Components.interfaces.nsIFile%29%3B%20%0Afile.append%28%22userChrome.css%22%29%3B%20%20%20%20%20%0Afile.launch%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

Код:

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("UChrm", Components.interfaces.nsIFile); 
file.append("userChrome.css");     
file.launch();


userContent.css ( Firefox 3.6+ )
открывает файл userContent.css в внешнем текстовом редакторе по умолчанию.
скрытый текст
Код кнопки:

Выделить код

Код:

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%3EuserContent.css%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM08tJDdQK3IgOROtHzcSuyY9Gb00Sii3PlMyrUVZOZ1HWjuDQ1c3ZjdNKj5FWjomTWZAEICAgAIAAAAAAAAAAHqoeoHo7OH/9fTr/+jq4P/Eybv7q7Oj95Sfi/NufWPrUWRH3yQ7F8soPxuxTV9BdktjRiJmZmYIAAAAAAAAAAChx6DP8PfK////1f///9n////d////4v///+b////r////7/////P/jZqH6UZZPZlIXEQyUV5RDkBAgAIAAAAAocegz/D3zf/w+sX/7fnE//z+3f///+X////q////7v////L////2/5ehkfNAUjmrO0k+SDc9QyIwMEAMAAAAAKHHoM/w99D/8PrH/+35x//y+tP/8/vZ//3+6v////D////1////+f+Tno73KjcswSo2NIErMTxeKzE9IgAAAAChx6DP8PfS//L6z//w+s//7PjN/9jytf/n983/v9Cx/+353f9NFZX/OidU+ygxNu0rLkLdKDMsqSgyMkIAAAAAocegz/D31P/h9bn/2/Oz/930uf/n98z/0NXG/18Oof9sP6f/tjnp/20gpv9XGJr/bSma/SUzIs8nMDKDAAAAAKHHoM/w99j/yO2Y/73piv/Z8rb/1fGy/72h1/++T/L/sD3k/7U36P+nJ9v/pRzZ/5wty/8vKkzrKjIspQAAAAChx6DP8Pfa/+H1vf/b87f/3vS///D63f9sFKr/vk7y/7tE7v+rU8//gS+q/4sNxv+OCMT/dSWf+zAyMZsAAAAAocegz/D33f///+z////v////9P/9+vj/0HT7/8JR9f/HZPH/qqqq/1dEYf+RDcr/ngnR/6k30/U0NDRGAAAAAKHHoM/w99//8PrY/+351v/t+dr/7fne//z++f+oQOH/xWLw/6qqqv9dRmb/phrZ/4gqrd1BN0ZoPTdDJAAAAAChx6DP8Pfi////8v////b/9fvr//P76v/9/vv/47D5/82g4f+EiX//Zl9o/5wyyul6M5mBQTxBKEc5VQ4AAAAAosihzfD35P/w+t7/7fnd/+354P/t+eH//P76////////////7O/q/3B5a/NBVTihQVM5OFFRRhIzZmYEAAAAAKTKo8vW7M//s2rM/9Dqz//Jrdj/tM64/+zb8v/Qut3/+vf8/+jg7v+cppjrPVM0iUJXOChGXUYIAAAAAAAAAAC30bebeGmL/4kzqP+Fh5T/lym1/2yjc/+Vaq7/lqWh/6Z9uP+cS7j/bodw3TFBLE44UDAaK1UrBAAAAAAAAAAAAAAAAJEbn3CFFpMwjRqej5UcplCZHqy/mR6sgZ0pr7+bHq2vmjKnzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Components.interfaces.nsIProperties%29.get%28%22UChrm%22%2C%20Components.interfaces.nsIFile%29%3B%20%0Afile.append%28%22userContent.css%22%29%3B%20%20%20%20%20%0Afile.launch%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

Код:

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("UChrm", Components.interfaces.nsIFile); 
file.append("userContent.css");     
file.launch();


Предварительно эти файлы должны быть созданы пользователем.

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

Отсутствует

 

№5917-06-2011 16:06:35

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Просмотр и сохранение иконок сайтов(Firefox3.6-5.0)
При нажатии на кнопку любой клавишей мыши открывается меню: Показать иконку сайта - иконка кнопки заменяется на иконку текущего сайта
Сохранить иконку сайта - Появляется диалог сохранения, в котором следует указать место сохранения и название иконки. После этого происходит сохранение. Восстановить иконку кнопки - первоначальный вид иконки кнопки. Меню - контекстное меню кнопки. Важно: Если уже установлена любая другая кнопка, сохраняющая иконку сайта, то работать не будет до удаления этой(другой) кнопки и перезапуска браузера.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%20%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435%20%u0438%u043A%u043E%u043D%u043E%u043A%20%u0441%u0430%u0439%u0442%u043E%u0432%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAADMklEQVQ4y22SS2hcZRzFz/e4r5k7rySTJs3EajVtbDomtBpKRKiFYretz4VuFDfFpYhuxI3rplRBSqGGVgtuAtXaLFUEkSJiM0mjNIZhJqnDzZ2Z3Ll37vO7n4umItrf6n/gnD9ncQgewqVLC2CMEdve5o1mE6urK4mu6/Lr64v/8/IHx+cLi5iZnoRI04yuKids2zplGNq4lKn0/f7GnbU7S8XS4A+5fN5v1Df+ecAA4P0Pz6N6+AlYdmcsn8ueU1X+kdsP5sJEHsyY+cm9o6PHSsX8aSHEeN8Lb41Vxt227SBNYxAAuHxlEX4QFQ/sr1yMkuTl23cttH0NoaDwgwhpKlEpRBg2PNzb2rpqtZyzuqH25s9/DHLukwXMHjmEHcd9q+cFnzW6hD82MQmmGrC6PbRsFy1XwUbThuI1cObpTKQS8qamq1/Ulv8AnXumiuGhkiGEeLETKvzkiWPYVylB0SmoAjAVUHMcSSaDn9pDWFoJ1HzRPDPz1JPqyReeA02SGG3bPmQ7wezs0SkMFAyAElCFgmkMTGdgBodDAFow8Eu3gPW/3LlOx54QiQB1XQ/tjjPJNGOgMlKCJBKEE1CVgWkM3OBwOYWjUOglDYFhotlD2dlxDnqeB+77AWSaZplaJJwzkDgF4RRUlSCpD8eqo9ZK4Xf6kDEFaAahECwIomwoJLgQCZCm21EiEj8WnFAKxgi4SuFlsrhtlOEOE2TNGIknIH2JgplESRxtx4KAx1EMBrEsUm/zT8vZ9+hIEV2R4lY3wI9dwMoNQctKcF8g2Ikw1PewN4t6GISrMShoFMXobDbvqpF7bWW9jgvLFuZ/7+D6lgsrTEClBCUAUykyGsGzJV+asn/l9Ksv1aNwd0ifXrgImYQjQje/7DxSfb63ZwyaxkHSFAAgCIXnRxiyNjHYqC3JoP8GU7Tts++8fX/KN5e+wY2bN9zXX3uFlRP36JFy3pweMMlUjmO/kmIwcKCv18Tat181rl29PD/x+MTP733wLgDcb/AvCrqmHz88VT1enZ45UN4zWgIkWve22su//bpWW619F0XR9wB6DwIED0cDYAIwdrW/G4r+a/wbqOd9YAmWl1IAAAAldEVYdGNyZWF0ZS1kYXRlADIwMDktMDktMjhUMTE6Mjc6NTUtMDQ6MDDs/LGJAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDA5LTA3LTAzVDEwOjAwOjI0LTA0OjAwYkMTwQAAAABJRU5ErkJggg%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%20Cb%20%3D%20custombuttons%3B%0Avar%20orgImg%3Dthis.image%3B%0A//%20Three%20functions%20for%20testing%2C%20this.one%28%29%20and%20this.two%28%29%20and%20this.three%28%29%0Athis.one%20%3D%20function%28%29%0A%7B%0A%09this.image%3Ddocument.getElementById%28%22page-proxy-favicon%22%29.src%3B%0A%7D%3B%0A%0Athis.two%20%3Dfunction%28%29%0A%7B%0A%09this.image%3Ddocument.getElementById%28%22page-proxy-favicon%22%29.src%3B%0A%09openUILinkIn%28this.image%2C%22save%22%29%3B%0A%7D%3B%0A%0Athis.three%20%3Dfunction%28%29%0A%7B%0A%09this.image%3DorgImg%3B%0A%7D%3B%0A//%20Our%20menu%20items%0Athis.ss%20%3D%20%5B%0A%20%20%7B%20label%3A%20%27%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0441%u0430%u0439%u0442%u0430%27%2C%20cmd%3A%20%27document.popupNode.one%28%29%27%2C%20sItemId%3A%20%27%27%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0441%u0430%u0439%u0442%u0430%27%20%20%2C%20cmd%3A%20%27document.popupNode.two%28%29%27%2C%20sItemId%3A%20%27%27%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%27%20%20%2C%20cmd%3A%20%27document.popupNode.three%28%29%27%2C%20sItemId%3A%20%27%27%20%7D%5D%3B%0A%0A//%20Our%20Initialization%20function%20for%20creating%20the%20context%20menu%2C%20setting%20up%20menuitems%20and%20telling%0A//%20custombuttons2%20extension%20to%20put%20cb%20context%20in%20a%20submenu%0Athis.mObj%20%3D%20Cb.getCbContextObj%28this%29%3B%0Athis.init%20%3D%20function%28x%29%20%7B%0A%20%20x.mObj.setSub%28%29%3B%0A%20%20var%20nItem%20%3D%20%7B%7D%2C%20mItem%20%3D%20%7B%7D%3B%0A%20%20document.getElementById%28CB2const.sCBCtxtMenu%29.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20for%28var%20i%20in%20x.ss%29%20%7B%0A%20%20%20%20nItem%20%3D%20new%20x.mObj.getItem%28%29%3B%0A%20%20%20%20nItem.id%20%3D%20%27Note%27%3B%0A%20%20%20%20nItem.label%20%3D%20x.ss%5Bi%5D.label%3B%0A%20%20%20%20nItem.value%20%3D%20String%28i%29%3B%0A%20%20%20%20mItem%20%3D%20x.mObj.insertBefore%28nItem%20%2C%20x.mObj.oMenu.lastChild%29%3B%0A%20%20%20%20this.ss%5Bi%5D.sItemId%20%3D%20mItem.id%3B%0A%20%20%20%20mItem.setAttribute%28%27oncommand%27%2Cx.ss%5Bi%5D.cmd%29%0A%20%20%7D%0A%20%20x.mObj.getItem%28%29%3B%0A%20%20nItem%20%3D%20x.mObj.getItem%28%29%3B%0A%20%20nItem.id%20%3D%20%27Note%27%3B%0A%20%20this.separator%20%3D%20x.mObj.insertBefore%28%20nItem%20%2C%20x.mObj.oMenu.lastChild%29%3B%0A%7D%0Athis.init%28this%29%3B%0A%0Athis.setAttribute%28%27onclick%27%2C%20%27custombuttons.gQuot.mHandler%28event%2C%20this%29%27%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27custombuttons.gQuot.gShowPopup%28this%29%3B%27%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u041B%u041A%u041C%3D%u041F%u041A%u041C%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

var Cb = custombuttons;
var orgImg=this.image;
// Three functions for testing, this.one() and this.two() and this.three()
this.one = function()
{
    this.image=document.getElementById("page-proxy-favicon").src;
};

this.two =function()
{
    this.image=document.getElementById("page-proxy-favicon").src;
    openUILinkIn(this.image,"save");
};

this.three =function()
{
    this.image=orgImg;
};
// Our menu items
this.ss = [
  { label: 'Показать иконку сайта', cmd: 'document.popupNode.one()', sItemId: '' },
  { label: 'Сохранить иконку сайта'  , cmd: 'document.popupNode.two()', sItemId: '' },
  { label: 'Восстановить иконку кнопки'  , cmd: 'document.popupNode.three()', sItemId: '' }];

// Our Initialization function for creating the context menu, setting up menuitems and telling
// custombuttons2 extension to put cb context in a submenu
this.mObj = Cb.getCbContextObj(this);
this.init = function(x) {
  x.mObj.setSub();
  var nItem = {}, mItem = {};
  document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()");
  for(var i in x.ss) {
    nItem = new x.mObj.getItem();
    nItem.id = 'Note';
    nItem.label = x.ss[i].label;
    nItem.value = String(i);
    mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild);
    this.ss[i].sItemId = mItem.id;
    mItem.setAttribute('oncommand',x.ss[i].cmd)
  }
  x.mObj.getItem();
  nItem = x.mObj.getItem();
  nItem.id = 'Note';
  this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild);
}
this.init(this);

this.setAttribute('onclick', 'custombuttons.gQuot.mHandler(event, this)');
this.setAttribute('ondblclick', 'custombuttons.gQuot.gShowPopup(this);');

Добавлено 17-06-2011 16:21:42
Ffolders+(Ubuntu) (Firefox5.0)
При нажатии на кнопку появляется меню из которого можно открыть: папку установки Firefox, папку текущего профиля, папку chrome текущего профиля, папку custombuttons текущего профиля, папку extensions текущего профиля.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFfolders+%20%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADIklEQVQ4jXWSy2tcVRzHP79zzn3MI5km5tXG8TE10EiCaEWtTQuCaAW7cFFBqgi6EQRFBP8DsTsXLnRTUVxUECniC6Mo2CAuaqWtqEk176bNw0kyyczcufeec1wEl372X/h84SPzn51hcqap01azVK2YxvBQL6FtEfgMj+A9GAU/L7Rlrml6EdFGcH3lsH5itOzkwQOGI0P2bFa58/C5+eCN16rTD03uHFyeyXtWIskDEYWDfLPR6T0zvvxW7RZVVJ74/OXmh1dW7cvSW9S1z18YvjhVe6nneHjJZwsL8vrYJ0RDA8QuI3WQO4spVDjx/as8L+c93X2ysr67+eg7c/cba23sYsPp5H10ve7e7n7Fi/ZS3lqShIAst5QNbCUps6WD0mx4r10ubecAFysP6ACVhjE75UH1bPSF+bR+Uj9ZP6uuN5WSrKPqzVRJe1v9MfiI/G3ukFKUo0KlPGA8oEIlYQQZmr64wexyi6kkpms8odNuAwpcQNLYpBSlSKTRoRXvQQGoUOOjgP1Dngvrt/Lixpv8Vj2J7K6TJR0kS0gaW2RSYLE0QhxbfGgAMCBIKMRdmqszGRc7o8joISJbx9oQbzMyPLsu5nH5gVplhSwuYKIOexc8EBrKhZRfOMxHa0cJzTalqINK6ySqgvIdENgJAg7tW8XG3egw/c8ATCS0dYHT916jp/ot13e6ONb3F+P9dd6dfoD3Fo8jqkWtcgNdCnFaI6HaMwCPCgQdK5LEc+q2y0RFT952fDmZ8OvcKnIgYbcjHBmbw8QapxQqUODBIIIKxKOFoKj5c97x1Y+aSzf38Z2boN1fZbDZ4rmRWY7uX6KZR8SB39sIGJt5XKB83BPS3M189a6IiShkbXqYh51ipHKFU7UZxvo3cCZEW3zUFYi70fIuB2MdfvrCstw+0AeqIGGsZOIeOHbfTVDrYBw+EzqtAbLU4TNLsmm59tOKWIc3mZLFDyb/+SZpXX0qrJRaYVErUzAEBUMQKxyC7VhskpO1LGkrd+l2q/jx1MZkpmRJnnligHNfr/Uqxd3O74WF5/8RUIJzjt+ffqy//i8xcmhqNgdQTAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A%0Avar%20menu%20%3D%20%3Cmenupopup%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20onclick%3D%22this.parentNode.menuClick%28event%29%22%3E%0A%20%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20image%3D%22chrome%3A//global/skin/dirListing/folder.png%22%0A%20%20%20%20%20%20%20label%3D%22installation%20folder%22%20%20%20%20%20%20%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.FinstallFolder%28event%29%22%7D/%3E%0A%20%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20image%3D%22chrome%3A//global/skin/dirListing/folder.png%22%0A%20%20%20%20%20%20%20label%3D%22profile%22%20%20%20%20%20%20%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.Fprofile%28event%29%22%7D/%3E%0A%20%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20image%3D%22chrome%3A//global/skin/dirListing/folder.png%22%0A%20%20%20%20%20%20%20label%3D%22chrome%22%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.Fchrome%28event%29%22%7D/%3E%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20image%3D%22chrome%3A//global/skin/dirListing/folder.png%22%0A%20%20%20%20%20%20label%3D%22custombuttons%22%0A%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.Fcustombuttons%28event%29%22%7D/%3E%0A%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20image%3D%22chrome%3A//global/skin/dirListing/folder.png%22%0A%20%20%20%20%20%20label%3D%22extensions%22%0A%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.Fextensions%28event%29%22%7D/%3E%0A%0A%3C/menupopup%3E%3B%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%0Athis.menuClick%20%3D%20function%28event%29%20%7B%0A%20%20event.preventDefault%28%29%3B%0A%20%20event.stopPropagation%28%29%3B%0A%20%20this.open%20%3D%20false%3B%0A%7D%0A%0Athis.FinstallFolder%20%3D%20function%28event%29%20%7B%0AstartProcess%28%22/usr/bin/nautilus%22%2C%5B%22/usr/lib/firefox-5.0%22%5D%29%3B%0Afunction%20startProcess%28path%2C%20args%29%20%0A%7B%0A%20%20%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20var%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20%20%20process.init%28file%29%3B%0A%20%20%20%20process.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%3B%0A%7D%0A%0Athis.Fprofile%20%3D%20function%28event%29%20%7B%0A%20%20let%20propertiesService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29%3B%0A%20%20let%20currProfD%20%3D%20propertiesService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20let%20profileDir%20%3D%20currProfD.path%3B%0A%20%20let%20nsLocalFile%20%3D%20Components.Constructor%28%22@mozilla.org/file/local%3B1%22%2C%20%22nsILocalFile%22%2C%20%22initWithPath%22%29%3B%0A%20%20new%20nsLocalFile%28profileDir%29.reveal%28%29%3B%0A%7D%0A%0Athis.Fchrome%20%3D%20function%28event%29%20%7B%0A%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%20%20file.append%28%22chrome%22%29%3B%0A%20%20var%20local%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20var%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20var%20args%20%3D%20%5B%20file.path%5D%3B%0A%20%20local.initWithPath%28%22/usr/bin/nautilus%22%29%3B%0A%20%20process.init%28local%29%3B%0A%20%20process.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%0Athis.Fcustombuttons%20%3D%20function%28event%29%20%7B%0A%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%20%20file.append%28%22custombuttons%22%29%3B%0A%20%20var%20local%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20var%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20var%20args%20%3D%20%5B%20file.path%5D%3B%0A%20%20local.initWithPath%28%22/usr/bin/nautilus%22%29%3B%0A%20%20process.init%28local%29%3B%0A%20%20process.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%0Athis.Fextensions%20%3D%20function%28event%29%20%7B%0A%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%20%20file.append%28%22extensions%22%29%3B%0A%20%20var%20local%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20var%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20var%20args%20%3D%20%5B%20file.path%5D%3B%0A%20%20local.initWithPath%28%22/usr/bin/nautilus%22%29%3B%0A%20%20process.init%28local%29%3B%0A%20%20process.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%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%5BID%3D%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/


/*Initialization Code*/


var menu = <menupopup
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  onclick="this.parentNode.menuClick(event)">
     <menuitem
       class="menuitem-iconic"
       image="chrome://global/skin/dirListing/folder.png"
       label="installation folder"      
       onclick={"document.getElementById('" + this.id + "').FinstallFolder(event)"}/>
     <menuitem
       class="menuitem-iconic"
       image="chrome://global/skin/dirListing/folder.png"
       label="profile"      
       onclick={"document.getElementById('" + this.id + "').Fprofile(event)"}/>
     <menuitem
       class="menuitem-iconic"
       image="chrome://global/skin/dirListing/folder.png"
       label="chrome"
       onclick={"document.getElementById('" + this.id + "').Fchrome(event)"}/>            
    <menuitem
      class="menuitem-iconic"
      image="chrome://global/skin/dirListing/folder.png"
      label="custombuttons"
      onclick={"document.getElementById('" + this.id + "').Fcustombuttons(event)"}/>
    <menuitem
      class="menuitem-iconic"
      image="chrome://global/skin/dirListing/folder.png"
      label="extensions"
      onclick={"document.getElementById('" + this.id + "').Fextensions(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.menuClick = function(event) {
  event.preventDefault();
  event.stopPropagation();
  this.open = false;
}

this.FinstallFolder = function(event) {
startProcess("/usr/bin/nautilus",["/usr/lib/firefox-5.0"]);
function startProcess(path, args) 
{
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(path);
    var process = Components.classes["@mozilla.org/process/util;1"]
        .createInstance(Components.interfaces.nsIProcess);
    process.init(file);
    process.run(false, args, args.length);
};
}

this.Fprofile = function(event) {
  let propertiesService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
  let currProfD = propertiesService.get("ProfD", Ci.nsIFile);
  let profileDir = currProfD.path;
  let nsLocalFile = Components.Constructor("@mozilla.org/file/local;1", "nsILocalFile", "initWithPath");
  new nsLocalFile(profileDir).reveal();
}

this.Fchrome = function(event) {
  var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
  file.append("chrome");
  var local = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
  var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
  var args = [ file.path];
  local.initWithPath("/usr/bin/nautilus");
  process.init(local);
  process.run(false, args, args.length);
}

this.Fcustombuttons = function(event) {
  var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
  file.append("custombuttons");
  var local = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
  var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
  var args = [ file.path];
  local.initWithPath("/usr/bin/nautilus");
  process.init(local);
  process.run(false, args, args.length);
}

this.Fextensions = function(event) {
  var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
  file.append("extensions");
  var local = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
  var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
  var args = [ file.path];
  local.initWithPath("/usr/bin/nautilus");
  process.init(local);
  process.run(false, args, args.length);
}

Отредактировано imyax (27-06-2011 23:18:38)

Отсутствует

 

№6017-06-2011 16:37:25

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Open userCSS+JS(Ubuntu)(Firefox4.0-5.0)
При нажатии кнопки появляется меню из которого можно открыть для просмотра и редактирования userChrome.css, userContent.css, pref.js, user.js. Предварительно эти файлы(кроме pref.js) должны быть созданы пользователем.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EOpen%20userCSS+JS%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAACsElEQVQ4jWWSTWhdVRDHf3POufc177WJsU9NoljyStoqLpqi0YAilO50UbdFuxB10WWh1IUbxY1k70roRgRXQpGuFI2r8mj8oFBptVTaxEcDaZ/v4+bm3ntmXPiatHFgmMXMf5iPn7DLRMR776OZHVt4+ZULExMTaqY45xAE552WRTG+vPzDR3lefL2tAxzgRCQFJtM0/eTylZ+tl+VVtz+0vChNVc3MyuEws+npmSWAIOC8R0FcFS02m80P333v/Y9brVZ8otnUqqykXgvqTOkNS+pjewgpHGxxotOhJSJgxpRz7llVvTd3aG7pyi+/nqyKoqoqDfv31bje6bK8Htk7uY9453dOtjqa6Fn35qnbK8F7OX3+NJ/Pz9Uaa8k5m5o9Qb/vTaQW6nsD2r1F9sU7vNB4nMsvnuO3+w2yPy+6M6+t6usLzIdTr7L06RvWWK8qi4tNIb1lml0TzUAab7N19ypTG206+QI31yOXLrbxs89w5jl1dLEwM25N5t+yiSePS/D3EPlHZDyFXoes/w3dv+tsrMENy5nSb5Efb3Jk/13Y8LAZJdSOHBZmz0rIx/Bu9BOv8NQYezoXqI+1mflgmgPJHf7qf8XiS3WOHjCGtwOb3UgQ8UL1Ewxz8LIDxFDw9ceYPLYIyXFAOBoMJBI3a/j5VZJLXxLYug/DqzBU8A8jZaPgMTPAYQhmisVNGB+QNlMCZQa9P6Bvuxo84MsQFDRHdACxRywHsKVYBoEih/4aDOw/FrcHULAKrADNweJOToHEQTSCFYXR2xAGI5ixUbFtb8FDp9lu4BUrsSAAW6Y6APEPFP5Roe3SR/ApCFHc921ZGayKS0SQyjkXnXNRnIs4V4087rhUuERgsIr7ri0rAhw8PM1nzz/NoVIp5f8DP2IGljiSa2vcuN7h/L/gDz/PEZXJ2QAAAABJRU5ErkJggg%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%20menu%20%3D%20%3Cmenupopup%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20onclick%3D%22this.parentNode.menuClick%28event%29%22%3E%0A%20%20%20%20%20%3Cmenuitem%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%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%3D%3D%22%0A%20%20%20%20%20%20%20label%3D%22userChrome.css%22%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.userChrome%28event%29%22%7D/%3E%0A%20%20%20%20%20%3Cmenuitem%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%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%3D%3D%22%0A%20%20%20%20%20%20%20label%3D%22userContent.css%22%0A%20%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.userContent%28event%29%22%7D/%3E%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABx0lEQVQ4ja2UMUgbURjHf3ckJzjcWSyRRgOhoe2SaOCc29JRHIt0DEVXlzp07yKULo5FmqlQwUWQzBYyemTIVrsUqiURkbTqae7O18V75j1y12r7hw++//e+97//e+/eg/8MQ+MOUATGEvot4BD4DhwD0Z8+MNPpdERSNBoNIYQQtVptBbg7xBCmxscMwyApYtTr9bflcvnZ1YqMNEFM00yMMAxlX7vd3qhWq4+B0VTBNIeO4yi9rVZrC7g3WMsMc5iEYrFIs9mk1+thWVZcngK+JgoO7pUOx3GoVCp6WaQ6TBP8G1zPfrUrDC5vJSIw4d2sAZrD9y8eKY2Ls7bM13d/KrWYAyx92pO5IugHEXtHfcmXt33W5idY3u4AKHmMB+OWwpUj9fsRJ+ehEoDMX27uszY/oYz7/ShFMIg4uQiVABS+8PEbH55PSu4HqqC65H7E/TtZyVfn8rxuHMja6lweQKnpDpVT5l9wdcr6T/ckDMOdm+hkMpmnwGfJAVzXfQjku93udNrVG4ZCoTCTy+UM4MDzvC/xHv4CsG37tFQqvQmCYDRZ4hrZbPbMtu3TQY2h98x13fgFGQHGteEj4ALA87wf+tzfFUXLs9H3dmQAAAAASUVORK5CYII%3D%22%0A%20%20%20%20%20%20label%3D%22prefs.js%22%0A%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.prefs%28event%29%22%7D/%3E%0A%20%20%20%20%3Cmenuitem%0A%20%20%20%20%20%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAABzUlEQVQ4ja2Uv2sUQRTHP+v+iBuCF4isGAVtYneGY1MeBuxOUloIVidimUaL9DaC2KRVvFbFRgj5K7JwcNckenJwepKTEHYlgne4zyY72ZncLkr8whfe982bL2/m7awlIvxPOIauANeB+YJ6D/gOfAEOgd+nKkQkz+UgCKSIjUZDAGm1Wk9E5KKIWMZ+zhn+82ZBnhmazebzbrd7+/hEVt7ANCRN00I6zskNVavVt+12+xYwW2pY1mEcx1ptrVb7AFzO58yhkKapmVLo9/vU63UqlQrj8ThLXwU+FRqWfUZxHNPpdE5tKe3wrN+lpQxerEwZ+l+akMLjHQuMDh+92dUKX+0kKn64ckHLZRrg5b0lFWuGvmuztOApvbnms761z+baJQAtzvDxYKxp7Yy+ZzN33tEIqPj13Susb+1r675nlxi6NnMzjkZA0+/uX+PB+69K+65uqB/Zs/l8OFF6Y3vIszuLKrexPQTQcmaH2pQ5C46nbD6vVdu25V8oIqt5DwcgiqIbwGIQBDfLnt40DAaD5dFoZAHDMAz3sjv8AZAkyVGv13vquu5sscUJJpPJzyRJjvIe1rSnFkVR9geZARaM5QPgF0AYht/MvX8AHIQZO771bscAAAAASUVORK5CYII%3D%22%0A%20%20%20%20%20%20label%3D%22user.js%22%0A%20%20%20%20%20%20onclick%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.userJS%28event%29%22%7D/%3E%0A%0A%3C/menupopup%3E%3B%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%0Athis.menuClick%20%3D%20function%28event%29%20%7B%0A%20%20event.preventDefault%28%29%3B%0A%20%20event.stopPropagation%28%29%3B%0A%20%20this.open%20%3D%20false%3B%0A%7D%0A%0Athis.userChrome%20%3D%20function%28event%29%20%7B%0Avar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0Afile.append%28%22chrome%22%29%3B%0Afile.append%28%22userChrome.css%22%29%3B%0Avar%20localFile%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0Avar%20args%20%3D%20%5Bfile.path%5D%3B%0AlocalFile.initWithPath%28%22/usr/bin/gedit%22%29%3B%0Aprocess.init%28localFile%29%3B%0Aprocess.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%0Athis.userContent%20%3D%20function%28event%29%20%7B%0Avar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0Afile.append%28%22chrome%22%29%3B%0Afile.append%28%22userContent.css%22%29%3B%0Avar%20localFile%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0Avar%20args%20%3D%20%5Bfile.path%5D%3B%0AlocalFile.initWithPath%28%22/usr/bin/gedit%22%29%3B%0Aprocess.init%28localFile%29%3B%0Aprocess.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%0Athis.prefs%20%3D%20function%28event%29%20%7B%0Avar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0Afile.append%28%22prefs.js%22%29%3B%0Avar%20localFile%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0Avar%20args%20%3D%20%5Bfile.path%5D%3B%0AlocalFile.initWithPath%28%22/usr/bin/gedit%22%29%3B%0Aprocess.init%28localFile%29%3B%0Aprocess.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%0A%0Athis.userJS%20%3D%20function%28event%29%20%7B%0Avar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIProperties%29.%0A%20%20get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0Afile.append%28%22user.js%22%29%3B%0Avar%20localFile%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20createInstance%28Components.interfaces.nsIProcess%29%3B%0Avar%20args%20%3D%20%5Bfile.path%5D%3B%0AlocalFile.initWithPath%28%22/usr/bin/gedit%22%29%3B%0Aprocess.init%28localFile%29%3B%0Aprocess.run%28false%2C%20args%2C%20args.length%29%3B%0A%7D%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%5BID%3D%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/
var menu = <menupopup
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  onclick="this.parentNode.menuClick(event)">
     <menuitem
       class="menuitem-iconic"
       image="data:image/png;base64,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"
       label="userChrome.css"
       onclick={"document.getElementById('" + this.id + "').userChrome(event)"}/>
     <menuitem
       class="menuitem-iconic"
       image="data:image/png;base64,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"
       label="userContent.css"
       onclick={"document.getElementById('" + this.id + "').userContent(event)"}/>            
    <menuitem
      class="menuitem-iconic"
      image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABx0lEQVQ4ja2UMUgbURjHf3ckJzjcWSyRRgOhoe2SaOCc29JRHIt0DEVXlzp07yKULo5FmqlQwUWQzBYyemTIVrsUqiURkbTqae7O18V75j1y12r7hw++//e+97//e+/eg/8MQ+MOUATGEvot4BD4DhwD0Z8+MNPpdERSNBoNIYQQtVptBbg7xBCmxscMwyApYtTr9bflcvnZ1YqMNEFM00yMMAxlX7vd3qhWq4+B0VTBNIeO4yi9rVZrC7g3WMsMc5iEYrFIs9mk1+thWVZcngK+JgoO7pUOx3GoVCp6WaQ6TBP8G1zPfrUrDC5vJSIw4d2sAZrD9y8eKY2Ls7bM13d/KrWYAyx92pO5IugHEXtHfcmXt33W5idY3u4AKHmMB+OWwpUj9fsRJ+ehEoDMX27uszY/oYz7/ShFMIg4uQiVABS+8PEbH55PSu4HqqC65H7E/TtZyVfn8rxuHMja6lweQKnpDpVT5l9wdcr6T/ckDMOdm+hkMpmnwGfJAVzXfQjku93udNrVG4ZCoTCTy+UM4MDzvC/xHv4CsG37tFQqvQmCYDRZ4hrZbPbMtu3TQY2h98x13fgFGQHGteEj4ALA87wf+tzfFUXLs9H3dmQAAAAASUVORK5CYII="
      label="prefs.js"
      onclick={"document.getElementById('" + this.id + "').prefs(event)"}/>
    <menuitem
      class="menuitem-iconic"
      image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAABzUlEQVQ4ja2Uv2sUQRTHP+v+iBuCF4isGAVtYneGY1MeBuxOUloIVidimUaL9DaC2KRVvFbFRgj5K7JwcNckenJwepKTEHYlgne4zyY72ZncLkr8whfe982bL2/m7awlIvxPOIauANeB+YJ6D/gOfAEOgd+nKkQkz+UgCKSIjUZDAGm1Wk9E5KKIWMZ+zhn+82ZBnhmazebzbrd7+/hEVt7ANCRN00I6zskNVavVt+12+xYwW2pY1mEcx1ptrVb7AFzO58yhkKapmVLo9/vU63UqlQrj8ThLXwU+FRqWfUZxHNPpdE5tKe3wrN+lpQxerEwZ+l+akMLjHQuMDh+92dUKX+0kKn64ckHLZRrg5b0lFWuGvmuztOApvbnms761z+baJQAtzvDxYKxp7Yy+ZzN33tEIqPj13Susb+1r675nlxi6NnMzjkZA0+/uX+PB+69K+65uqB/Zs/l8OFF6Y3vIszuLKrexPQTQcmaH2pQ5C46nbD6vVdu25V8oIqt5DwcgiqIbwGIQBDfLnt40DAaD5dFoZAHDMAz3sjv8AZAkyVGv13vquu5sscUJJpPJzyRJjvIe1rSnFkVR9geZARaM5QPgF0AYht/MvX8AHIQZO771bscAAAAASUVORK5CYII="
      label="user.js"
      onclick={"document.getElementById('" + this.id + "').userJS(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.menuClick = function(event) {
  event.preventDefault();
  event.stopPropagation();
  this.open = false;
}

this.userChrome = function(event) {
var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
file.append("chrome");
file.append("userChrome.css");
var localFile = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
var args = [file.path];
localFile.initWithPath("/usr/bin/gedit");
process.init(localFile);
process.run(false, args, args.length);
}

this.userContent = function(event) {
var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
file.append("chrome");
file.append("userContent.css");
var localFile = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
var args = [file.path];
localFile.initWithPath("/usr/bin/gedit");
process.init(localFile);
process.run(false, args, args.length);
}

this.prefs = function(event) {
var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
file.append("prefs.js");
var localFile = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
var args = [file.path];
localFile.initWithPath("/usr/bin/gedit");
process.init(localFile);
process.run(false, args, args.length);
}

this.userJS = function(event) {
var file = Components.classes["@mozilla.org/file/directory_service;1"].
  getService(Components.interfaces.nsIProperties).
  get("ProfD", Components.interfaces.nsIFile);
file.append("user.js");
var localFile = Components.classes["@mozilla.org/file/local;1"].
  createInstance(Components.interfaces.nsILocalFile);
var process = Components.classes["@mozilla.org/process/util;1"].
  createInstance(Components.interfaces.nsIProcess);
var args = [file.path];
localFile.initWithPath("/usr/bin/gedit");
process.init(localFile);
process.run(false, args, args.length);
}

   *Исправлена грамматическая ошибка в описании кнопки

Отредактировано imyax (27-06-2011 23:17:47)

Отсутствует

 

№6117-06-2011 17:10:35

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Fit to Page Width(Firefox)Подогнать страницу по ширине с возможностью отключения без обновления страницы. Это улучшенная и дополненная Fit to Width от Dark-Demon
Автор:Killy(http://forum.mozilla-russia.org/viewtop … 20#p194020)

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFit%20to%20Page%20Width%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20is_active%3D0%3B%0Avar%20rule1%3D0%3B%0Avar%20rule2%3D0%3B%0Athis.checked%3Dfalse%3B%0Athis.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%0A%20if%20%28event.button%20%3D%3D%200%29%20%7B%0A%0A%20%20if%20%28is_active%20%3D%3D%200%29%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20rule1%3Ds.insertRule%28%27div%2Ctable%2Ctbody%2Ctr%2Ctd%2Cp%2Col%2Cul%2Cdl%2Ch1%2Ch2%2Ch3%2Chr%20%7Bmax-width%3A99%25%21important%3B%7D%27%2C1%29%3B%0A%20%20%20%20rule2%3Ds.insertRule%28%27pre%20%7Bmax-width%3A99%25%21important%3B%20white-space%3Anormal%21important%3B%7D%27%2C1%29%3B%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3Dcontent.window.innerWidth/i%5Bj%5D.width*.99%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D1%3B%0A%0A%20%20%20%20this.checked%3Dtrue%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20On%22%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0A%20%20%20%20if%20%28rule2%20%21%3D%200%20%29%20%7Bs.deleteRule%28rule2%29%3B%20rule2%3D0%3B%7D%0A%20%20%20%20if%20%28rule1%20%21%3D%200%20%29%20%7Bs.deleteRule%28rule1%29%3B%20rule1%3D0%3B%7D%0A%0A%20%20%20%20var%20i%3Dcontent.document.images%3B%0A%20%20%20%20for%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20%20%20%20%20var%20k%3D%20content.window.innerWidth/i%5Bj%5D.width/.99%3B%0A%20%20%20%20%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20is_active%3D0%3B%0A%0A%20%20%20%20this.checked%3Dfalse%3B%0A%20%20%20%20this.tooltipText%3D%22Fit%20to%20Page%20Width%3A%20Off%22%0A%20%20%7D%0A%0A%20%7D%0A%7D%0A%0Athis.setAttribute%28%22onleftclick%22%2C%20%22this.onclick%28%29%22%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bhttp%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D194020%23p194020%0Aautor%20Killy%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

var is_active=0;
var rule1=0;
var rule2=0;
this.checked=false;
this.tooltipText="Fit to Page Width: Off"

this.onclick = function(event) {

 if (event.button == 0) {

  if (is_active == 0) {
    var s=content.document.styleSheets[0];
    rule1=s.insertRule('div,table,tbody,tr,td,p,ol,ul,dl,h1,h2,h3,hr {max-width:99%!important;}',1);
    rule2=s.insertRule('pre {max-width:99%!important; white-space:normal!important;}',1);

    var i=content.document.images;
    for (var j=0; j<i.length; j++) {
      var k=content.window.innerWidth/i[j].width*.99;
      if (k<1) {i[j].width*=k; i[j].height*=k;};
    }

    is_active=1;

    this.checked=true;
    this.tooltipText="Fit to Page Width: On"
  } else {
    var s=content.document.styleSheets[0];
    if (rule2 != 0 ) {s.deleteRule(rule2); rule2=0;}
    if (rule1 != 0 ) {s.deleteRule(rule1); rule1=0;}

    var i=content.document.images;
    for (var j=0; j<i.length; j++) {
      var k= content.window.innerWidth/i[j].width/.99;
      if (k<1) {i[j].width*=k; i[j].height*=k;};
    }

    is_active=0;

    this.checked=false;
    this.tooltipText="Fit to Page Width: Off"
  }

 }
}

this.setAttribute("onleftclick", "this.onclick()");

Отредактировано imyax (17-06-2011 18:51:20)

Отсутствует

 

№6217-06-2011 22:09:33

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Make bookmark button(Firefox)
кнопка, которая  из текущей страницы  создаёт рядом с собой новую кнопку(с названием и иконкой данной страницы),открывающую эту страницу.
Автор:Anton  http://forum.mozilla-russia.org/viewtop … 38#p349838

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMake%20bookmark%20button%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsSAAALEgHS3X78AAADrElEQVQ4jZXUS2/UVRzG8e/vnNPpbTrToVRwmhIJViiJ9IIrF8aIb8B3IIkudOXSsHLDS2BlggtfhELYYAxhg4jQRqlogV6m08695387/3OOKxINK5/t8yTP7gMgWmvF/4hSanJx8czKhx9duTI1XdUA8qqsVCr1hYWFs0tLS+eXl5eX19bWLtdqteLatWtfD0ej8fX19dWVldWVtdXVS8sX3llabDYXZ6rTrK5ffvfRk42/BKhcv37926tXr34yNzdXrVQq8u93a20+ZsxYZXxcETzDwYC97oCX/YSd49Lfb5cPnneTDanX629vbm7+2mw2p2OMUSC4Io9pmoq1lsyVqp/mcmALf+h07MqEHOtpSdSUZEHHw/GpzrM7t24aIIYYPcDBQYs0dzopPRmaTMZIzVS0tUns7IS2QUhzSHIIWYFYG8tiKuttPnxsACpjY/qg3WY3jVTnmohSGKUYU5AVSHbs6Xb7DA6PcO19TrR36S9cYvjmBXHHuN7Wxp8GIPiSUeHRjdN4ZXA+YJOc1ovnDPZ2MK0dmq0dltv7VHsdJl9u86I03P7yhiS1i6PjnT92jYiiLApsqbBOkbkSVTHs7OxTfPUZ7zdPIaVDuZLSB1yek3nFQms7vvfdN/Lw05uDorPfUaKEosgZlpqR0wyzyDCDfh6QrS06t26TJhnqjdNMzs9TbTSoTkwQJquxsb2Jf/pbv3A2NSKi8qKgHw02DWgfUB6GaWBcFO3EcrbXw9TrxCQhpilhOCBL0jjZOWTm8d2CGDEiIkXh6AaDDRHtQRz0k8hJV2JLz9HeHtVqlZjnhDwn7/fJkhTvCuYf/aCIAaMgFGXgKFOkEtAxICYysOBiBOAoz5lvtQgx4rOMxFqSLJPMw6nte2cAjAi4EOlZTRJBxwg6MEoENzWN6R3SFUWn0wGgLApS5xjluYzKklmlLjZCOG+A6AP0jyNp8KgQQYc4Oi5DopSaBPqliy3vlc5zyhhJvY+2LMMQfIxx6i2Rj42IjIdITKwnKctSYtBqzKgsregEifMgKi9kT4kfz7LoQZWgvNba1GroRoPa0dE5k+f5CS1S0bqGy4xxx12x3Y3+/saPv1+ww9Uu+C1X7J6p1c6JcyaZmWFUr496s7NP9kXuPet0fnqWZXcFqH3+xVffb+aXTv79+Oc7o90H92376S+hTA8aSq0UMR7YGIsPZmdvuFpt74W1tztp+jDLsjYhvGaVBv6Dm4iSV1zJa3MQECVilIgB5B8VOzFqiSqfKQAAAABJRU5ErkJggg%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*/%0Avar%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0Avar%20title%20%3D%20doc.%20title%3B%0Avar%20pageURI%20%3D%20makeURI%20%28doc.%20location.%20href%2C%20null%2C%20null%29%3B%0Avar%20iconData%20%3D%20getFaviconData%20%28pageURI%29%3B%0Acustombuttons.%20cloneButton%20%28this%29%3B%0Avar%20newButtonLink%20%3D%20custombuttons.%20makeButtonLink%20%28%22update%22%2C%20this.%20nextSibling.%20id%29%3B%0Avar%20params%20%3D%20custombuttons.%20cbService.%20getButtonParameters%20%28newButtonLink%29.%20wrappedJSObject%3B%0Aparams.%20image%20%3D%20iconData%3B%0Aparams.%20name%20%3D%20title%3B%0Aparams.%20code%20%3D%20%22getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%5C%22%22%20+%20doc.%20location.%20href%20+%20%22%5C%22%29%3B%22%3B%0Aparams.%20wrappedJSObject%20%3D%20params%3B%0Acustombuttons.%20cbService.%20installButton%20%28params%29%3B%0Afunction%20makeURI%20%28aURL%2C%20aOriginCharset%2C%20aBaseURI%29%0A%7B%0A%20%20%20%20var%20ioService%20%3D%20Components.%20classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20getService%20%28Components.%20interfaces.%20nsIIOService%29%3B%0A%20%20%20%20return%20ioService.%20newURI%20%28aURL%2C%20aOriginCharset%2C%20aBaseURI%29%3B%0A%7D%0Afunction%20getFaviconData%20%28pageURI%29%0A%7B%0A%20%20%20%20var%20fis%20%3D%20Components.%20classes%20%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20getService%28Components.interfaces.nsIFaviconService%29%3B%0A%20%20%20%20var%20iconURL%20/*%3D%20fis.%20getFaviconForPage%20%28pageURI%29*/%3B%0A%20%20%20%20%0A%20%20%20%20try%0A%20%20%20%20%7B%0A%09%20%20%20%20iconURL%20%3D%20fis.%20getFaviconForPage%20%28pageURI%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%0A%20%20%20%20if%20%28iconURL%29%0A%20%20%20%20%0A%20%20%20%20return%20fis.%20getFaviconDataAsDataURL%20%28iconURL%29%3B%0A%20%20%20%20return%20%22%22%3B%0A%7D%0A%0Avar%20elt%20%3D%20document.%20getAnonymousElementByAttribute%20%28this%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Aelt.%20style.%20height%20%3D%20%2216px%22%3B%0Aelt.%20style.%20width%20%3D%20%2216px%22%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bhttp%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D349838%23p349838%0Aautor%3A%20Anton%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

/*CODE*/
var doc = getBrowser (). contentDocument;
var title = doc. title;
var pageURI = makeURI (doc. location. href, null, null);
var iconData = getFaviconData (pageURI);
custombuttons. cloneButton (this);
var newButtonLink = custombuttons. makeButtonLink ("update", this. nextSibling. id);
var params = custombuttons. cbService. getButtonParameters (newButtonLink). wrappedJSObject;
params. image = iconData;
params. name = title;
params. code = "getBrowser (). selectedTab = getBrowser (). addTab (\"" + doc. location. href + "\");";
params. wrappedJSObject = params;
custombuttons. cbService. installButton (params);
function makeURI (aURL, aOriginCharset, aBaseURI)
{
    var ioService = Components. classes["@mozilla.org/network/io-service;1"].
            getService (Components. interfaces. nsIIOService);
    return ioService. newURI (aURL, aOriginCharset, aBaseURI);
}
function getFaviconData (pageURI)
{
    var fis = Components. classes ["@mozilla.org/browser/favicon-service;1"].
          getService(Components.interfaces.nsIFaviconService);
    var iconURL ;
    
    try
    {
        iconURL = fis. getFaviconForPage (pageURI);
    } catch (e) {}
    if (iconURL)
    
    return fis. getFaviconDataAsDataURL (iconURL);
    return "";
}

Отредактировано imyax (20-06-2011 01:04:48)

Отсутствует

 

№6319-06-2011 22:21:11

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

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

Fit to width 2 ( Firefox 3.6 и выше, SeaMonkey )
Выравнивает страницу по ширине окна.
Автор: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%3EFit%20to%20width%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhDQAQAPcAAAAAAAAAzgAI1gAY1gAx3gBC3gBK5wBS5wBj5wBr7wBr9wCM7wCc/wCl/wCt/wC1/wDO/wgh1hgp1hgxxhiE3hit5yFSziGU1iGt/yG11ikpISkpKSm1/zExKTExMTExlDF7rTGlxjGlzjk5MTk5OUJre0JrhEJ7hEqcrUrW91JSSlJSUlJSlGuEhGuEjHt7c3t7e3ucnHve75zn75zn99b399739+/39/f39///9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAADQAQAAAIlwADCBwYQIKMGzgSBjCAIEECBAQicJhRA2GABA0cZDwQgUEKijguOoBAEkFHCB9DJhhZcgCDlxhksKDAEgICAQRyWoixAkQFkhAWFBg64YMKACtQAF2K4igAAB5aLIXQosNTACROZJia4cQIABtMhJhKMkSJDTAu1Fzq4MILkWQhOEggEKNGB3jxMqC7sOFDh34NEBw8OCAAOw%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%0A%0A//%20%3D%3DUserScript%3D%3D%0A//%20@name%20Custom%20Buttons%0A//%20@namespace%20http%3A//www.greasespot.net/%0A//%20@include%20http%3A//custombuttons.mozdev.org/drupal/content/*%0A//%20@exclude%20http%3A//custombuttons.mozdev.org/drupal/content/main-page%0A//%20@exclude%20http%3A//custombuttons.mozdev.org/drupal/content/custom-buttons-documentation%0A//%20%3D%3D/UserScript%3D%3D%0A%20%0A%20if%28content.document.getElementById%28%22sidebar-left%22%29%29%0A%20%7B%0A%20%20%20%20content.document.getElementById%28%22sidebar-left%22%29.style.display%20%3D%20%22none%22%3B%0A%20%7D%0A%20%0A%0A%20%0Avar%20d%20%3D%20content.document%3B%0Avar%20s%20%3D%20d.createElement%28%22style%22%29%3B%0As.type%20%3D%20%22text/css%22%3B%0As.innerHTML%20%3D%20%22%23sidebar-left%20+%20td%20%7B%20padding-left%3A%200%20%7D%22%3B%0Avar%20h%20%3D%20d.getElementsByTagName%28%22head%22%29%5B0%5D%3B%0Ah.appendChild%28s%29%3B%0A%20%0Avar%20p%20%3D%20content.document.getElementsByTagName%28%22pre%22%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20p.length%3B%20i++%29%20%7B%0A%20%20p%5Bi%5D.style.overflow%20%3D%20%22auto%22%3B%0A%20%20if%20%28p%5Bi%5D.textContent.indexOf%28%22data%3Aimage%22%29%20%3D%3D%20-1%29%20%7B%0A%20%20%20%20p%5Bi%5D.style.whiteSpace%20%3D%20%22pre-wrap%22%3B%0A%20%20%20%20p%5Bi%5D.style.wordWrap%20%3D%20%22break-word%22%3B%0A%20%20%7D%0A%7D%0A%20%0A/*%20double%20click%20to%20select%20all%20*/%0A%20%0A//var%20d%20%3D%20document%3B%0A//var%20p%20%3D%20d.getElementsByTagName%28%22pre%22%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20p.length%3B%20i++%29%20%7B%0A%20%20p%5Bi%5D.addEventListener%28%22dblclick%22%2C%20function%20%28%29%20%7B%0A%20%20%20%20var%20s%20%3D%20getSelection%28%29%3B%0A%20%20%20%20var%20r%20%3D%20d.createRange%28%29%3B%0A%20%20%20%20r.selectNodeContents%28this%29%3B%0A%20%20%20%20s.removeAllRanges%28%29%3B%0A%20%20%20%20s.addRange%28r%29%3B%0A%20%20%7D%2C%20false%29%3B%0A%7D%0A%20%0A/*%20fit%20to%20width%20*/%0A%20%0Afunction%20t%28f%29%20%7B%0A%20%20var%20a%20%3D%20d.createNodeIterator%28d%2C%201%2C%20f%2C%20false%29%3B%0A%20%20while%20%28a.nextNode%28%29%29%20%7B%7D%0A%7D%0A//var%20d%20%3D%20document%3B%0At%28function%20%28e%29%20%7B%0A%20%20var%20x%20%3D%20e.offsetLeft%3B%0A%20%20var%20l%20%3D%20e.offsetParent%3B%0A%20%20while%20%28l%20%21%3D%20null%29%20%7B%0A%20%20%20%20x%20+%3D%20l.offsetLeft%3B%0A%20%20%20%20l%20%3D%20l.offsetParent%3B%0A%20%20%7D%0A%20%20var%20w%20%3D%20d.documentElement.clientWidth%20-%20x%3B%0A%20%20var%20s%20%3D%20e.style%3B%0A%20%20if%20%28s.marginLeft%29%20w%20-%3D%20s.marginLeft%3B%0A%20%20if%20%28s.marginRight%29%20w%20-%3D%20s.marginRight%3B%0A%20%20if%20%28s.paddingLeft%29%20w%20-%3D%20s.paddingLeft%3B%0A%20%20if%20%28s.paddingRight%29%20w%20-%3D%20s.paddingRight%3B%0A%20%20if%20%28s.borderWidth%29%20w%20-%3D%20s.borderWidth%3B%0A%20%20w%20-%3D%20d.defaultView.innerWidth%20-%20d.documentElement.offsetWidth%3B%0A%20%20if%20%28e.tagName%20%3D%3D%20%22IMG%22%29%20%7B%0A%20%20%20%20var%20h%20%3D%20e.clientHeight%20*%20w%20/%20e.clientWidth%3B%0A%20%20%20%20s.maxHeight%20%3D%20h%3B%0A%20%20%7D%0A%20%20s.maxWidth%20%3D%20w%20+%20%22px%22%3B%0A%7D%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

// ==UserScript==
// @name Custom Buttons
// @namespace http://www.greasespot.net/
// @include http://custombuttons.mozdev.org/drupal/content/*
// @exclude http://custombuttons.mozdev.org/drupal/content/main-page
// @exclude http://custombuttons.mozdev.org/drupal/content/custom-buttons-documentation
// ==/UserScript==
 
 if(content.document.getElementById("sidebar-left"))
 {
    content.document.getElementById("sidebar-left").style.display = "none";
 }
 

 
var d = content.document;
var s = d.createElement("style");
s.type = "text/css";
s.innerHTML = "#sidebar-left + td { padding-left: 0 }";
var h = d.getElementsByTagName("head")[0];
h.appendChild(s);
 
var p = content.document.getElementsByTagName("pre");
for (var i = 0; i < p.length; i++) {
  p[i].style.overflow = "auto";
  if (p[i].textContent.indexOf("data:image") == -1) {
    p[i].style.whiteSpace = "pre-wrap";
    p[i].style.wordWrap = "break-word";
  }
}
 
/* double click to select all */
 
//var d = document;
//var p = d.getElementsByTagName("pre");
for (var i = 0; i < p.length; i++) {
  p[i].addEventListener("dblclick", function () {
    var s = getSelection();
    var r = d.createRange();
    r.selectNodeContents(this);
    s.removeAllRanges();
    s.addRange(r);
  }, false);
}
 
/* fit to width */
 
function t(f) {
  var a = d.createNodeIterator(d, 1, f, false);
  while (a.nextNode()) {}
}
//var d = document;
t(function (e) {
  var x = e.offsetLeft;
  var l = e.offsetParent;
  while (l != null) {
    x += l.offsetLeft;
    l = l.offsetParent;
  }
  var w = d.documentElement.clientWidth - x;
  var s = e.style;
  if (s.marginLeft) w -= s.marginLeft;
  if (s.marginRight) w -= s.marginRight;
  if (s.paddingLeft) w -= s.paddingLeft;
  if (s.paddingRight) w -= s.paddingRight;
  if (s.borderWidth) w -= s.borderWidth;
  w -= d.defaultView.innerWidth - d.documentElement.offsetWidth;
  if (e.tagName == "IMG") {
    var h = e.clientHeight * w / e.clientWidth;
    s.maxHeight = h;
  }
  s.maxWidth = w + "px";
});


Fit to width 3 ( Firefox 3.6 и выше, SeaMonkey )
Выравнивает страницу по ширине окна.
Автор:Anton 
скрытый текст
Код кнопки:

Выделить код

Код:

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%3EFit%20to%20width%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhDQAQAPcAAAAAAAAAzgAI1gAY1gAx3gBC3gBK5wBS5wBj5wBr7wBr9wCM7wCc/wCl/wCt/wC1/wDO/wgh1hgp1hgxxhiE3hit5yFSziGU1iGt/yG11ikpISkpKSm1/zExKTExMTExlDF7rTGlxjGlzjk5MTk5OUJre0JrhEJ7hEqcrUrW91JSSlJSUlJSlGuEhGuEjHt7c3t7e3ucnHve75zn75zn99b399739+/39/f39///9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAADQAQAAAIlwADCBwYQIKMGzgSBjCAIEECBAQicJhRA2GABA0cZDwQgUEKijguOoBAEkFHCB9DJhhZcgCDlxhksKDAEgICAQRyWoixAkQFkhAWFBg64YMKACtQAF2K4igAAB5aLIXQosNTACROZJia4cQIABtMhJhKMkSJDTAu1Fzq4MILkWQhOEggEKNGB3jxMqC7sOFDh34NEBw8OCAAOw%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%5Btry%0A%7B%0A%20%20%20%20var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%20%20%20%20doc.%20body.%20style.%20backgroundColor%20%3D%20%22rgb%28236%2C233%2C216%29%22%3B%0A%20%20%20%20doc.%20body.%20style.%20lineHeight%20%3D%20%222%22%3B%0A%20%20%20%20doc.%20body.%20style.%20textIndent%20%3D%20%223em%22%3B%0A%20%20%20%20doc.%20body.%20style.%20textHeight%20%3D%20%223%25%22%3B%0A%20%20%20%20doc.%20body.%20style.%20textAlign%20%3D%20%22justify%22%3B%0A%20%20%20%20%0A%7D%0Acatch%20%28e%29%20%7B%7D%20%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

Код:

Выделить код

Код:

try
{
    var doc = getBrowser (). contentDocument;
    doc. body. style. backgroundColor = "rgb(236,233,216)";
    doc. body. style. lineHeight = "2";
    doc. body. style. textIndent = "3em";
    doc. body. style. textHeight = "3%";
    doc. body. style. textAlign = "justify";
    
}
catch (e) {}

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

Отсутствует

 

№6422-06-2011 01:32:53

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Firefox 4.0

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

Permanent Bookmark(Firefox4.0-5.0)
Нажатие на иконку - заносит текущую страницу в список кнопки.
Нажатие на стрелку- открывает список кнопки.
Нажатие на пункт "Save" в списке сохраняет список.
Удаление из списка - правой клавишей мыши по выбранной странице и нажать появившийся пункт "Remove Item ?".
Появится запрос на подтверждение удаления - нажать "Ок".
Открыть список, произвести сохранение нажатием на пункт "Save".
Список сохранённых страниц находится в папке custombuttons текущего профиля в файле "Bookmarks300.txt"
Авторы: deepakjoshi04, SCClockDr 
Адаптация под firefox 4.0.* : morat
Коррекция  сохранения кириллицы: Anton поправка от Infocatcher внесена.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EPermanent%20Bookmark%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADMElEQVR4Xk3RT2tcVQBA8XPve5OZ95zJTOZPk0nHTtLGJIU0WrRGLVJpUWoEwSK6sEJ3rgRBxKW46dIv4EJRF61uVGyFUhTdSCUbDRYTkzYNGSeTZCbOTF7e33uvRSjmB+cTHFH9oOmeslr7M7JDhOQgY7iQSlkXtFIXfSW5uqho7wQIDA9IrbmsNI8ADgeEscrNTA1/+OzckReSRNeFAAwYg+AAmXfl9GheXk+0+RiwAbQ25HOZt+bPjc88ceJQJZ9Lz4dBct4I8ZW0xUUjACH+yxp6/v3MZEFfyob7s0LKXqL0L4kyx8+ern8yO110Mmmb3l5yenp86PV0Wp7c6FHsNjpXtFaJjhNktxveaJJdHirnGKvl31XGPD06knvnzFytCGBJKBedwrFaIffUuMPokH0GwSRKg9ZIafT60rb++W/PUCk61blHa1888/jhS5m0BCCOoX64wO5eSPkhyeyYS8oZeAM/gDBGmiCi1fSuddJ5f3N7j+NT5aP5wfQAgNYQhpqca7HnRQwfyjFRFJRLmVcI4xJhhFRBhIria79v6fVG20fFETs7HlpDHBuSROH7CcWCix8phl2Yna4cI4rP4QdIoxUoFTda0Zeek2dldZdSMcvKWh8hBHGsSRJN1rXo/BMw8XCBsbKQdiH7ErGSMt4PUIGPtxdd+XNHx/eafQZShs2tPrHSKJVgjGG7E+BkbKoVh1pOMDE1chY/rNs6jACIonD5XmfwZq+UenF9o8/9EzQaPbJOiijWtHd9TkyWSNuSyapLverVllznOcs6+iYmUaCUvv/bGS47L7uhh+va2JagMOiwcm+XkZJLacihueNxd62NUxrk9mq/JAEApBTEXvD5D4u9r9f6gpXVbXpeSKu9jzYGISXf/3SH7368w1/bEV1fQGbgiI1l8YCdJmytd9+7kbNPVk8N1JeWN6nXy7S2+iwsNmhHKVY2YXltf/n2r4vXzW7vMyFPf8v/DDqKITGvzp+vX3ntSccScUAnSnNzoctvC83FjS3vU1rtb7CtVSyJ4LGrHIQQoBR22vpo4njl7UrR5Y9bdxc6G7uX6Xm3KOa2CCJINAj4F0IRi07s8/Z5AAAAAElFTkSuQmCC%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*/%0Alet%20mWid%20%3D%2055%3B%0Afunction%20fileName%28%29%7B%0A%09let%20dir%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Components.interfaces.nsIProperties%29.get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%09dir.append%28%22custombuttons%22%29%3B%0A%09if%20%28%21dir.exists%28%29%29%20%7B%0A%09%09try%7B%0A%09%09%09dir.create%280x01%2C%200755%29%3B%0A%09%09%7D%20catch%28e%29%7B%0A%09%09%09let%20msg%3D%27Custom%20Buttons%20error.%5D%27+%27%5B%20Event%3A%20Creating%20custombuttons%20directory%5D%27+%27%5B%20%27+e%3BComponents.utils.reportError%28msg%29%3B%0A%09%09%7D%0A%09%7D%0A%09return%20dir.path%3B%0A%7D%0A%0Afunction%20writeFile%20%28sFilePath%2C%20sFileContent%29%0A%7B%0A%20%20%20%20var%20suc%20%3D%20Cc%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%20createInstance%20%28Ci.%20nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20suc.%20charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20cbu.%20writeFile%20%28sFilePath%2C%20suc.%20ConvertFromUnicode%20%28sFileContent%29%29%3B%0A%7D%0A%0Afunction%20readFile%20%28sFilePath%29%0A%7B%0A%20%20%20%20var%20suc%20%3D%20Cc%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%20createInstance%20%28Ci.%20nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20suc.%20charset%20%3D%20%22UTF-8%22%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20suc.%20ConvertToUnicode%20%28cbu.%20readFile%20%28sFilePath%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%22%22%3B%0A%7D%0A//********%20%20Read%20write%20******%0Alet%20mp%3B%0Athis.removeNode%20%3D%20function%28%20aNode%20%29%7B%0A%09closeMenus%28%20aNode%20%29%3B%0A%09mp.removeChild%28%20aNode%20%29%3B%0A%09//reAssignId%28%29%3B%0A%7D%3B%0A%0Afunction%20reAssignId%28%29%7B%0A%09let%20NL%3Dmp.childNodes%3B%0A%09for%28let%20i%3D0%3Bi%3CNL.length%3Bi++%29%0A%09%7B%0A%09%09mp.removeChild%28NL%5Bi%5D.id%3Di+1%29%3B%0A%09%7D%0A%7D%0A%0Afunction%20addMenuItem%28aNode%2C%20aLabel%2CaURL%2CaImg%2C%20aContextId%2C%20aCommand%29%20%7B%0A%09let%20mi%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%09mi.setAttribute%28%22label%22%2C%20aLabel.substr%280%2CmWid%29%29%3B%0A%09mi.setAttribute%28%22value%22%2C%20aURL%29%3B%0A%09mi.setAttribute%28%22class%22%2C%22menuitem-iconic%22%29%0A%09mi.setAttribute%28%22image%22%2C%20aImg%29%3B%0A%09mi.setAttribute%28%22name%22%2C%20aImg%29%3B%0A%09mi.setAttribute%28%22id%22%2CaNode.childNodes.length%29%3B%0A%09if%28aContextId%29%20mi.setAttribute%28%22context%22%2C%20aContextId%29%3B%0A%09if%28aCommand%29%20mi.setAttribute%28%22oncommand%22%2C%20aCommand%29%3B%0A%7D%0Afunction%20donoth%28%29%7B%7D%0A%0A/*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20%20Execute%20Init%20Code%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*/%0Alet%20contextId%20%3D%20%22popup-item-bookmark%22%3B%0Alet%20test%20%3D%20document.getElementById%28contextId%29%3B%0Aif%28test%29%20test.parentNode.removeChild%28test%29%3B%0Alet%20mainPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Alet%20context%20%3D%20mainPopup.appendChild%28document.createElement%28%22popup%22%29%29%3B%0Acontext.id%20%3D%20contextId%3B%0AaddMenuItem%28context%2C%20%22Remove%20Item%3F%22%2Cnull%2Cthis.image%2C%20null%2C%20%22alert%28document.popupNode.label%29%3B%20document.popupNode.parentNode.parentNode.removeNode%28document.popupNode%29%3B%22%29%3B%0Alet%20filePath%3DfileName%28%29+%22/Bookmarks300.txt%22%3B%0Alet%20data%3DreadFile%28filePath%29%3B%0Alet%20popupItems%3Ddata.split%28%27%5Cn%27%29%3B%0Amp%20%3D%20document.createElement%28%22menupopup%22%29%3B%0AaddMenuItem%28mp%2C%20%22Save%22%2C%22Save%22%2Cthis.image%2Cnull%2C%22this.parentNode.parentNode.save%28%29%22%29%3B%0Amp.setAttribute%28%22oncommand%22%2C%20%22this.parentNode.openPage%28event%29%22%29%3B%0Afor%20%28let%20i%20in%20popupItems%29%20%7B%0A%09popupItems%5Bi%5D.replace%28/%5C%5Cs/g%2C%27%27%29%3B%0A%09if%28popupItems%5Bi%5D.length%3E1%29%7B%0A%09%20%20%20let%20pItem%3DpopupItems%5Bi%5D.split%28%22%5D%7E%5B%22%29%3B%0A%09%09if%28pItem.length%3D%3D3%29%0A%09%09%7B%0A%09%09%20%20addMenuItem%28mp%2C%20pItem%5B0%5D%2CpItem%5B1%5D%2CpItem%5B2%5D%2C%20contextId%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20/*%20End%20for*/%0Afunction%20getData%28%29%7B%0A%09let%20NL%3Dmp.childNodes%3B%0A%09let%20data%3D%22%22%3B%0Afor%28let%20i%3D1%3Bi%3CNL.length%3Bi++%29%7B%0A%09%09let%20img%3DNL%5Bi%5D.getAttribute%28%22image%22%29%3B%0A%09%09data%3Ddata+NL%5Bi%5D.label+%22%5D%7E%5B%22+NL%5Bi%5D.value+%22%5D%7E%5B%22+img+%22%5Cn%22%3B%0A%09%7D%0A%09return%20data%3B%0A%7D%0Athis.execute%3Dfunction%28evt%29%7B%0A%09if%28evt.target.value%3D%3D-1%29%20AddMenuItem%28%29%3B%0A%7D%0Afunction%20AddMenuItem%28%29%7B%0A%09let%20img%3Ddocument.getElementById%28%22page-proxy-favicon%22%29.src%3B%0A%09let%20name%3Dcontent.document.title%3B%0A%09let%20url%3Ddocument.getElementById%28%22urlbar%22%29.value%3B%0A%09addMenuItem%28mp%2Cname%2Curl%2Cimg%2CcontextId%29%3B%0A%09%0Afunction%20getChildFolder%28aFolderId%2C%20aSubFolder%29%20%7B%0A%20%20var%20htService%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.%0A%20%20%20%20getService%28Components.interfaces.nsINavHistoryService%29%3B%0A%20%20var%20query%20%3D%20htService.getNewQuery%28%29%3B%0A%20%20var%20options%20%3D%20htService.getNewQueryOptions%28%29%3B%0A%20%20query.setFolders%28%5BaFolderId%5D%2C%201%29%3B%0A%20%20var%20result%20%3D%20htService.executeQuery%28query%2C%20options%29%3B%0A%20%20var%20rootNode%20%3D%20result.root%3B%0A%20%20var%20childFolder%20%3D%200%3B%0A%20%20rootNode.containerOpen%20%3D%20true%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20rootNode.childCount%3B%20i++%29%20%7B%0A%20%20%20%20var%20node%20%3D%20rootNode.getChild%28i%29%3B%0A%20%20%20%20if%20%28node.type%20%3D%3D%20node.RESULT_TYPE_FOLDER%20%26%26%20node.title%20%3D%3D%20aSubFolder%29%20%7B%0A%20%20%20%20%20%20childFolder%20%3D%20node.itemId%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20rootNode.containerOpen%20%3D%20false%3B%0A%20%20return%20childFolder%3B%0A%7D%09%0A%09%0Avar%20bmService%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsINavBookmarksService%29%3B%0Avar%20ioService%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20getService%28Components.interfaces.nsIIOService%29%3B%0Avar%20folder%3B%0Afolder%20%3D%20bmService.bookmarksMenuFolder%3B%20//%20Bookmarks%20Menu%0Afolder%20%3D%20bmService.getChildFolder%28folder%2C%20%22Permanent%20Bookmarks%22%29%3B%0Avar%20uri%20%3D%20ioService.newURI%28content.document.location.href%2C%20null%2C%20null%29%3B%0Avar%20title%20%3D%20content.document.title%3B%0AbmService.insertBookmark%28folder%2C%20uri%2C%20bmService.DEFAULT_INDEX%2C%20title%29%3B%09%0A%09%0A%7D%0Athis.save%20%3D%20function%28%29%0A%7B%0A%09writeFile%28filePath%2CgetData%28%29%29%0A%7D%3B%0Athis.openPage%20%3D%20function%28%20e%20%29%0A%7B%0A%09let%20link%20%3D%20e.target.value%0A%09if%20%28link%20%21%3D%20%22Save%22%29%7B%0A%09%09let%20newTab%20%3D%20gBrowser.addTab%28link%29%3B%0A%09%09gBrowser.selectedTab%20%3D%20newTab%3B%0A%09%7D%0A%7D%3B%0A%0A%0A%0Athis.setAttribute%28%22onclick%22%2C%20%22this.buttonClick%28evt%29%22%29%3B%0A%0Athis.%20handleClick%20%3D%20function%20%28evt%29%0A%7B%0Avar%20menuitem%20%3D%20evt.%20target%3B%0Avar%20url%20%3D%20menuitem.%20getAttributeNS%20%28%22http%3A//xsms.nm.ru/custombuttons/%22%2C%20%22url%22%29%3B%0Aif%20%28event.%20button%20%3D%3D%200%29%0AgBrowser.%20addTab%20%28url%29%3B%0Aelse%20if%20%28event.%20button%20%3D%3D%201%29%0A%20%20gClipboard.write%28url%29%3B%0A%20%20if%20%28evt.button%20%3D%3D%201%29%20alert%28%22Copied%20to%20Clipboard%22%29%3B%0A%20%20custombuttons.alertSlide%28%22Copied%20to%20Clipboard%21%21%22%2C%20%22AWESOME%21%21%22%29%3B%28menuitem.value%29%3B%0Athis.%20open%20%3D%20false%3B%0A%7D%3B%0A%0A%0Athis.type%20%3D%20%22menu-button%22%3B%0Athis.setAttribute%28%22class%22%2C%20%22menu-iconic%22%29%3B%0Athis.setAttribute%28%22oncommand%22%2C%20%22this.execute%28event%29%3B%22%29%3B%0Athis.appendChild%28mp%29%3B%0Athis.value%3D-1%3B%0A%0Athis.setAttribute%28%22author%22%2C%20%22deepakjoshi04%2CSCClockDr%22%20%29%3B%0Athis.setAttribute%28%22status%22%2C%22Complete%22%29%3B%0Athis.setAttribute%28%22public%22%2Ctrue%29%3B%0Athis.setAttribute%28%22dependency%22%2C%22FF%202.0%2CCB%202.0.*%22%29%3B%0Athis.setAttribute%28%22version%22%2C%2220080124.01%22%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/permanent-bookmark.html%27%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BHelp%20has%20not%20been%20defined%20for%20this%20button.%0A%u041D%u0430%u0436%u0430%u0442%u0438%u0435%20%u043D%u0430%20%u0438%u043A%u043E%u043D%u043A%u0443%20-%20%u0437%u0430%u043D%u043E%u0441%u0438%u0442%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%u0441%u043F%u0438%u0441%u043E%u043A%20%u043A%u043D%u043E%u043F%u043A%u0438.%0A%u041D%u0430%u0436%u0430%u0442%u0438%u0435%20%u043D%u0430%20%u0441%u0442%u0440%u0435%u043B%u043A%u0443-%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0441%u043F%u0438%u0441%u043E%u043A%20%u043A%u043D%u043E%u043F%u043A%u0438.%20%0A%u041D%u0430%u0436%u0430%u0442%u0438%u0435%20%u043D%u0430%20%u043F%u0443%u043D%u043A%u0442%20%22Save%22%20%u0432%20%u0441%u043F%u0438%u0441%u043A%u0435%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0441%u043F%u0438%u0441%u043E%u043A.%20%0A%u0423%u0434%u0430%u043B%u0435%u043D%u0438%u0435%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%20-%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043B%u0430%u0432%u0438%u0448%u0435%u0439%20%u043C%u044B%u0448%u0438%20%u043F%u043E%20%u0432%u044B%u0431%u0440%u0430%u043D%u043D%u043E%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0438%20%u043D%u0430%u0436%u0430%u0442%u044C%20%u043F%u043E%u044F%u0432%u0438%u0432%u0448%u0438%u0439%u0441%u044F%20%u043F%u0443%u043D%u043A%u0442%20%22Remove%20Item%20%3F%22.%0A%u041F%u043E%u044F%u0432%u0438%u0442%u0441%u044F%20%u0437%u0430%u043F%u0440%u043E%u0441%20%u043D%u0430%20%u043F%u043E%u0434%u0442%u0432%u0435%u0440%u0436%u0434%u0435%u043D%u0438%u0435%20%u0443%u0434%u0430%u043B%u0435%u043D%u0438%u044F%20-%20%u043D%u0430%u0436%u0430%u0442%u044C%20%22%u041E%u043A%22.%20%0A%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u043F%u0438%u0441%u043E%u043A%2C%20%u043F%u0440%u043E%u0438%u0437%u0432%u0435%u0441%u0442%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435%20%u043D%u0430%u0436%u0430%u0442%u0438%u0435%u043C%20%u043D%u0430%20%u043F%u0443%u043D%u043A%u0442%20%22Save%22.%20%0A%u0421%u043F%u0438%u0441%u043E%u043A%20%u0441%u043E%u0445%u0440%u0430%u043D%u0451%u043D%u043D%u044B%u0445%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%20%u043D%u0430%u0445%u043E%u0434%u0438%u0442%u0441%u044F%20%u0432%20%u043F%u0430%u043F%u043A%u0435%20custombuttons%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%20%u0432%20%u0444%u0430%u0439%u043B%u0435%20%22Bookmarks300.txt%22%0A%u0410%u0432%u0442%u043E%u0440%u044B%3A%20deepakjoshi04%2C%20SCClockDr%20%20%0A%u0410%u0434%u0430%u043F%u0442%u0430%u0446%u0438%u044F%20%u043F%u043E%u0434%20firefox%204.0.*%20%3A%20morat%20%0A%u041A%u043E%u0440%u0440%u0435%u043A%u0446%u0438%u044F%20%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u044F%20%u043A%u0438%u0440%u0438%u043B%u043B%u0438%u0446%u044B%3A%20Anton%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization code*/
let mWid = 55;
function fileName(){
    let dir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
    dir.append("custombuttons");
    if (!dir.exists()) {
        try{
            dir.create(0x01, 0755);
        } catch(e){
            let msg='Custom Buttons error.]'+'[ Event: Creating custombuttons directory]'+'[ '+e;Components.utils.reportError(msg);
        }
    }
    return dir.path;
}

function writeFile (sFilePath, sFileContent)
{
    var suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
    suc. charset = "UTF-8";
    cbu. writeFile (sFilePath, suc. ConvertFromUnicode (sFileContent));
}

function readFile (sFilePath)
{
    var suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
    suc. charset = "UTF-8";
        try {
        return suc. ConvertToUnicode (cbu. readFile (sFilePath));
    }
    catch(e) {
    }
    return "";
}
//********  Read write ******
let mp;
this.removeNode = function( aNode ){
    closeMenus( aNode );
    mp.removeChild( aNode );
    //reAssignId();
};

function reAssignId(){
    let NL=mp.childNodes;
    for(let i=0;i<NL.length;i++)
    {
        mp.removeChild(NL[i].id=i+1);
    }
}

function addMenuItem(aNode, aLabel,aURL,aImg, aContextId, aCommand) {
    let mi = aNode.appendChild(document.createElement("menuitem"));
    mi.setAttribute("label", aLabel.substr(0,mWid));
    mi.setAttribute("value", aURL);
    mi.setAttribute("class","menuitem-iconic")
    mi.setAttribute("image", aImg);
    mi.setAttribute("name", aImg);
    mi.setAttribute("id",aNode.childNodes.length);
    if(aContextId) mi.setAttribute("context", aContextId);
    if(aCommand) mi.setAttribute("oncommand", aCommand);
}
function donoth(){}

/* ============  Execute Init Code ============ */
let contextId = "popup-item-bookmark";
let test = document.getElementById(contextId);
if(test) test.parentNode.removeChild(test);
let mainPopup = document.getElementById("mainPopupSet");
let context = mainPopup.appendChild(document.createElement("popup"));
context.id = contextId;
addMenuItem(context, "Remove Item?",null,this.image, null, "alert(document.popupNode.label); document.popupNode.parentNode.parentNode.removeNode(document.popupNode);");
let filePath=fileName()+"/Bookmarks300.txt";
let data=readFile(filePath);
let popupItems=data.split('\n');
mp = document.createElement("menupopup");
addMenuItem(mp, "Save","Save",this.image,null,"this.parentNode.parentNode.save()");
mp.setAttribute("oncommand", "this.parentNode.openPage(event)");
for (let i in popupItems) {
    popupItems[i].replace(/\\s/g,'');
    if(popupItems[i].length>1){
       let pItem=popupItems[i].split("]~[");
        if(pItem.length==3)
        {
          addMenuItem(mp, pItem[0],pItem[1],pItem[2], contextId);
        }
    }
} /* End for*/
function getData(){
    let NL=mp.childNodes;
    let data="";
for(let i=1;i<NL.length;i++){
        let img=NL[i].getAttribute("image");
        data=data+NL[i].label+"]~["+NL[i].value+"]~["+img+"\n";
    }
    return data;
}
this.execute=function(evt){
    if(evt.target.value==-1) AddMenuItem();
}
function AddMenuItem(){
    let img=document.getElementById("page-proxy-favicon").src;
    let name=content.document.title;
    let url=document.getElementById("urlbar").value;
    addMenuItem(mp,name,url,img,contextId);
    
function getChildFolder(aFolderId, aSubFolder) {
  var htService = Components.classes["@mozilla.org/browser/nav-history-service;1"].
    getService(Components.interfaces.nsINavHistoryService);
  var query = htService.getNewQuery();
  var options = htService.getNewQueryOptions();
  query.setFolders([aFolderId], 1);
  var result = htService.executeQuery(query, options);
  var rootNode = result.root;
  var childFolder = 0;
  rootNode.containerOpen = true;
  for (var i = 0; i < rootNode.childCount; i++) {
    var node = rootNode.getChild(i);
    if (node.type == node.RESULT_TYPE_FOLDER && node.title == aSubFolder) {
      childFolder = node.itemId;
      break;
    }
  }
  rootNode.containerOpen = false;
  return childFolder;
}    
    
var bmService = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].
  getService(Components.interfaces.nsINavBookmarksService);
var ioService = Components.classes["@mozilla.org/network/io-service;1"].
  getService(Components.interfaces.nsIIOService);
var folder;
folder = bmService.bookmarksMenuFolder; // Bookmarks Menu
folder = bmService.getChildFolder(folder, "Permanent Bookmarks");
var uri = ioService.newURI(content.document.location.href, null, null);
var title = content.document.title;
bmService.insertBookmark(folder, uri, bmService.DEFAULT_INDEX, title);    
    
}
this.save = function()
{
    writeFile(filePath,getData())
};
this.openPage = function( e )
{
    let link = e.target.value
    if (link != "Save"){
        let newTab = gBrowser.addTab(link);
        gBrowser.selectedTab = newTab;
    }
};



this.setAttribute("onclick", "this.buttonClick(evt)");

this. handleClick = function (evt)
{
var menuitem = evt. target;
var url = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "url");
if (event. button == 0)
gBrowser. addTab (url);
else if (event. button == 1)
  gClipboard.write(url);
  if (evt.button == 1) alert("Copied to Clipboard");
  custombuttons.alertSlide("Copied to Clipboard!!", "AWESOME!!");(menuitem.value);
this. open = false;
};


this.type = "menu-button";
this.setAttribute("class", "menu-iconic");
this.setAttribute("oncommand", "this.execute(event);");
this.appendChild(mp);
this.value=-1;

this.setAttribute("author", "deepakjoshi04,SCClockDr" );
this.setAttribute("status","Complete");
this.setAttribute("public",true);
this.setAttribute("dependency","FF 2.0,CB 2.0.*");
this.setAttribute("version","20080124.01");
this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/permanent-bookmark.html');

P.S.Кнопка размещена повторно. Первоначальное сообщение от 20-06-2011  почему-то отсутствует.

Отредактировано imyax (23-06-2011 22:49:54)

Отсутствует

 

№6502-07-2011 13:57:40

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 5.0

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

По просьбе из вот этой темы:
History Export(Firefox)
Экспорт журнала в текстовый файл

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

Выделить код

Код:

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%3EHistory%20Export%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20mDBConn%20%3D%20Cc%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.getService%28Ci.nsPIPlacesDatabase%29.DBConnection%3B%0Avar%20stmt%3DmDBConn.createStatement%28%22SELECT%20strftime%28%27%25d-%25m-%25Y%20%25H%3A%25M%3A%25S%27%2Cmax%28coalesce%28last_visit_date%2C0%29%29/1000000%2C%27unixepoch%27%2C%27localtime%27%29%20fd%2C%20url%2Cmax%28coalesce%28last_visit_date%2C0%29%29%20from%20moz_places%20group%20by%20url%20order%20by%203%20desc%22%29%3B%0Avar%20log%3D%5B%5D%3B%0Awhile%28stmt.step%28%29%29%20log.push%28stmt.row.fd+%22%5Ct%22+stmt.row.url%29%3B%0Astmt.finalize%28%29%3B%0Avar%20fp%3DCc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Ci.nsIFilePicker%29%3B%0Afp.init%28window%2C%20%22%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u0444%u0430%u0439%u043B%20%u0434%u043B%u044F%20%u044D%u043A%u0441%u043F%u043E%u0440%u0442%u0430%20%u0436%u0443%u0440%u043D%u0430%u043B%u0430%22%2C%20Ci.nsIFilePicker.modeSave%29%3B%0Afp.appendFilter%28%22Text%20files%22%2C%22*.txt%22%29%3B%0Avar%20res%20%3D%20fp.show%28%29%3B%0Aif%20%28res%20%3D%3D%20Ci.nsIFilePicker.returnCancel%29%0A%09return%20false%3B%0Avar%20file%20%3D%20fp.file%3B%0Aif%20%28%21%28/%5C.txt%24/i.test%28file.path%29%29%29%20file.initWithPath%28file.path+%22.txt%22%29%3B%0Avar%20foStream%20%3D%20Cc%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.createInstance%28Ci.nsIFileOutputStream%29%3B%0AfoStream.init%28file%2C%200x02%20%7C%200x08%20%7C%200x20%2C%200664%2C%200%29%3B%0Avar%20converter%20%3D%20Cc%5B%22@mozilla.org/intl/converter-output-stream%3B1%22%5D.createInstance%28Ci.nsIConverterOutputStream%29%3B%0Aconverter.init%28foStream%2C%20%22UTF-8%22%2C%200%2C%200%29%3B%0Aconverter.writeString%28log.join%28%22%5Cn%22%29%29%3B%0Aconverter.close%28%29%3B%0Aalert%28%22%u0416%u0443%u0440%u043D%u0430%u043B%20%u0443%u0441%u043F%u0435%u0448%u043D%u043E%20%u044D%u043A%u0441%u043F%u043E%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u043D%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

var mDBConn = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsPIPlacesDatabase).DBConnection;
var stmt=mDBConn.createStatement("SELECT strftime('%d-%m-%Y %H:%M:%S',max(coalesce(last_visit_date,0))/1000000,'unixepoch','localtime') fd, url,max(coalesce(last_visit_date,0)) from moz_places group by url order by 3 desc");
var log=[];
while(stmt.step()) log.push(stmt.row.fd+"\t"+stmt.row.url);
stmt.finalize();
var fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
fp.init(window, "Укажите файл для экспорта журнала", Ci.nsIFilePicker.modeSave);
fp.appendFilter("Text files","*.txt");
var res = fp.show();
if (res == Ci.nsIFilePicker.returnCancel)
    return false;
var file = fp.file;
if (!(/\.txt$/i.test(file.path))) file.initWithPath(file.path+".txt");
var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
var converter = Cc["@mozilla.org/intl/converter-output-stream;1"].createInstance(Ci.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString(log.join("\n"));
converter.close();
alert("Журнал успешно экспортирован");

Отсутствует

 

№6609-07-2011 02:35:21

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

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

Right click = Button Help(Firefox)

Кнопка заменяет на всех установленных кнопках стандартный вызов CB-меню по Правому Kлику мыши на вызов окошка Помощи (Button Help). Или добавляет вызов Button Help к другой функции, уже назначенной на Правый Клик некоторых кнопок.

Если такое всеобщее изменение поведения нежелательно для определенной кнопки,
то его можно отключить на ней путем полной очистки поля Help этой кнопки.

Код: Infocatcher
Оформление: моё
http://forum.mozilla-russia.org/viewtop … 01#p504101

:)

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041F%u0440%u0430%u0432%u0438%u0439%20K%u043Ba%u0446%20%3D%20%u0414%u043E%u043F%u043E%u043C%u043E%u0433%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/bmp%3Bbase64%2CQk02AwAABQFyYTYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAAAnAAAAJwAAAAAAAAAAAAAAzNHUzNHUzNHUzNHUxszQr6upqJCGooV4ooR3pZKJtLCvyM3QzNHUzNHUzNHUzNHUzNHUzNHUy9DTuK2smlUxwF0pzWYvzWcvzWcvzGYus1QilWNKtra3y8/TzNHUzNHUzNHUy9DTpZKIulwq0mou1Gov1Gov2IBJ03M81Gsv1Gsv0GktrFoupKGgy8/TzNHUzNLVtKKbw2Aq1Gsv020v020u25Ni/vTp+ebV1G0v1G0v020u1G0urVont7a3zNHUxcbJrVkk024u028v024v024u04tY8ufd6tK/1nAv1nAv1nAv1nAu1W4tmWFAxszQtp6O1W8u3HMv3HMv3HMv3HMv3HMv135B3HQy3HMv3HMv3HMv3HMv3HMuyWYit6yotX9b23Mu3HMu3HMu3HMv3HIn1oJG9uHQ89Cx3HYo3HYo3HYo3HYo3HYn23YnrpGAwHZD23cm3Hcm3Hcm3HYm3HYm23ku8+rh/PLo4IY+23Ym23Yn23kn23kn23knrYFhxXxC33gn33gn33on33sn33sn5Hsn3ruf/PTs/Ozi6ZJN5Xom5Xon5Xon5XonsYRiwIJN5Xsn5Xsn5Xsn5Xsn5Xsn5Xsn5X4n38a2+/f0/fPp5YQv5YAn5YAn5YAns4lrw5185IYt5YAn5YAn5YAn5YAn5YAn5H8m5IEq6uXg/fn17Z5c5YAn5YAn5HwmtqWTwbSq5JQ+5YMn5IIn5p9i/f39+u/m651S7qZm+vf3/fn265lP64Mn7IQnxGsiw8TFzNTYuoRU7JIy7YQm64gt5dfI/Pv9/v7+/f7+/Pz96s6564gm7Ycm5YUpuJyGzNLVzNHUyMrLzI5O7JYy7Ikn7Ikr37SN49TI49bJ366B7Ior7Ygm540rtoJRy8/QzNHUzNHUzNHUycrLv4VO8KJC8pEt7Ysm7Ysm7Ysm7osm844n4JI0u5Jxyc3PzNHUzNHUzNHUzNHUzNHUytHVwa2cypxt1Y4924sw2Yguz4pAw5xxwbiwzNPXzNHUzNHUzNHU%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BaddEventListener%28%22contextmenu%22%2C%20function%28e%29%20%7B%0A%20%20%20%20var%20btn%20%3D%20e.target%3B%0A%20%20%20%20if%28%0A%20%20%20%20%20%20%20%20e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%0A%20%20%20%20%20%20%20%20%7C%7C%20btn.id.substr%280%2C%2020%29%20%21%3D%20%22custombuttons-button%22%0A%20%20%20%20%20%20%20%20%7C%7C%20%21btn.hasAttribute%28%22Help%22%29%0A%20%20%20%20%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20custombuttons.uChelpButton%28btn%29%3B%0A%7D%2C%20true%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%5BRight%20click%20%3D%20Button%20Help%0A%0A%u041A%u043D%u043E%u043F%u043A%u0430%20%u0437%u043C%u0456%u043D%u044E%u0454%20%u0443%20%u0432%u0441%u0456%u0445%20%u0456%u043D%u0441%u0442%u0430%u043B%u044C%u043E%u0432%u0430%u043D%u0438%u0445%20%u043A%u043D%u043E%u043F%u043A%u0430%u0445%20Custom%20Buttons%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u0438%u0439%20%u0432%u0438%u043A%u043B%u0438%u043A%20CB-%u043C%u0435%u043D%u044E%20%u041F%u0440%u0430%u0432%u0438%u043C%20%u041A%u043B%u0430%u0446%u043E%u043C%20%u043C%u0438%u0448%u0456%20%u043D%u0430%20%u0432%u0438%u043A%u043B%u0438%u043A%20Button%20Help.%20%u0410%u0431%u043E%20%u0434%u043E%u0434%u0430%u0454%20%u0432%u0438%u043A%u043B%u0438%u043A%20Button%20Help%20%u0434%u043E%20%u0456%u043D%u0448%u043E%u0457%20%u0444%u0443%u043D%u043A%u0446%u0456%u0457%2C%20%u0432%u0436%u0435%20%u043F%u0440%u0438%u0437%u043D%u0430%u0447%u0435%u043D%u043E%u0457%20%u043D%u0430%20%u043F%u0440%u0430%u0432%u0438%u0439%20%u043A%u043B%u0430%u0446%20%u0434%u0435%u044F%u043A%u0438%u0445%20%u043A%u043D%u043E%u043F%u043E%u043A..%0A%0A%u042F%u043A%u0449%u043E%20%u0442%u0430%u043A%u0430%20%u0437%u0430%u043C%u0456%u043D%u0430%20%u0454%20%u043D%u0435%u0431%u0430%u0436%u0430%u043D%u043E%u044E%20%u0434%u043B%u044F%20%u043F%u0435%u0432%u043D%u043E%u0457%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u0442%u043E%20%u0457%u0457%20%u043C%u043E%u0436%u043D%u0430%20%u0432%u0438%u043C%u043A%u043D%u0443%u0442%u0438%20%u043D%u0430%20%u0442%u0456%u0439%20%u043A%u043D%u043E%u043F%u0446%u0456%20%u0448%u043B%u044F%u0445%u043E%u043C%20%u043F%u043E%u0432%u043D%u043E%u0433%u043E%20%u043E%u0447%u0438%u0449%u0435%u043D%u043D%u044F%20%u0457%u0457%20%u043F%u043E%u043B%u044F%20Help.%0A%0A%u0410%u0432%u0442%u043E%u0440%20%u043A%u043E%u0434%u0443%3A%20Infocatcher%0A%u041E%u0444%u043E%u0440%u043C%u043B%u0435%u043D%u043D%u044F%3A%20slbgz%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

addEventListener("contextmenu", function(e) {
    var btn = e.target;
    if(
        e.ctrlKey || e.shiftKey || e.altKey || e.metaKey
        || btn.id.substr(0, 20) != "custombuttons-button"
        || !btn.hasAttribute("Help")
    )
        return;
    e.preventDefault();
    e.stopPropagation();
    custombuttons.uChelpButton(btn);
}, true);

Отредактировано slbgz (31-07-2011 19:37:30)

Отсутствует

 

№6709-07-2011 16:43:06

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 5.0

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

History Export (Firefox) - вариант №2
Экспорт журнала в 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%3EHistory%20Export%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BComponents.utils.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0Athis.applyTransform%3Dfunction%28xsltName%2CsrcDoc%29%0A%7B%0A%20%20let%20xsltFile%3DServices.dirsvc.get%28%22ProfD%22%2C%20Ci.nsILocalFile%29%3B%0A%20%20xsltFile.append%28xsltName%29%3B%0A%20%20let%20xsltUri%3DServices.io.newFileURI%28xsltFile%29%3B%0A%20%20let%20xhr%20%3D%20Cc%5B%22@mozilla.org/xmlextras/xmlhttprequest%3B1%22%5D.createInstance%28Ci.nsIXMLHttpRequest%29%3B%0A%20%20xhr.open%28%22GET%22%2C%20xsltUri.spec%2C%20false%29%3B%0A%20%20xhr.send%28null%29%3B%0A%20%20let%20xslt%20%3D%20xhr.responseXML%3B%0A%20%20let%20xsltproc%3DCc%5B%22@mozilla.org/document-transformer%3B1%3Ftype%3Dxslt%22%5D.createInstance%28Ci.nsIXSLTProcessor%29%3B%0A%20%20xsltproc.importStylesheet%28xslt%29%3B%0A%20%20return%20xsltproc.transformToDocument%28srcDoc%29%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20mDBConn%20%3D%20Cc%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.getService%28Ci.nsPIPlacesDatabase%29.DBConnection%3B%0Avar%20stmt%3DmDBConn.createStatement%28%22SELECT%20strftime%28%27%25d-%25m-%25Y%20%25H%3A%25M%3A%25S%27%2Cmax%28coalesce%28last_visit_date%2C0%29%29/1000000%2C%27unixepoch%27%2C%27localtime%27%29%20fd%2C%20url%2Cmax%28coalesce%28last_visit_date%2C0%29%29%20from%20moz_places%20p%20where%20not%20exists%28select%20b.id%20from%20moz_bookmarks%20b%20where%20b.fk%3Dp.id%29%20group%20by%20url%20order%20by%203%20desc%22%29%3B%0Avar%20log%3D%5B%5D%3B%0Awhile%28stmt.step%28%29%29%20log.push%28%7Bfd%3Astmt.row.fd%2Curl%3Astmt.row.url%7D%29%3B%0Astmt.finalize%28%29%3B%0Avar%20xmlDoc%3Ddocument.implementation.createDocument%20%28null%2C%22%22%2Cnull%29%3B%0Avar%20pi%3DxmlDoc.createProcessingInstruction%28%27xml%27%2C%27version%3D%221.0%22%20encoding%3D%22UTF-8%22%27%29%3B%0AxmlDoc.appendChild%28pi%29%3B%0Avar%20root%3DxmlDoc.createElement%28%22root%22%29%3B%0AxmlDoc.appendChild%28root%29%3B%0Alog.forEach%28function%28elem%29%0A%7B%0A%20%20var%20item%3DxmlDoc.createElement%28%22item%22%29%3B%0A%20%20item.setAttribute%28%22last_visit%22%2Celem.fd%29%3B%0A%20%20item.setAttribute%28%22url%22%2C%20elem.url%29%3B%0A%20%20root.appendChild%28item%29%3B%0A%7D%29%3B%0Avar%20htmlDoc%3Dthis.applyTransform%28%22history.xsl%22%2C%20xmlDoc%29%3B%0AhtmlDoc%3Dthis.applyTransform%28%22decorator.xsl%22%2C%20htmlDoc%29%0Avar%20fp%3DCc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Ci.nsIFilePicker%29%3B%0Afp.init%28window%2C%20%22%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u0444%u0430%u0439%u043B%20%u0434%u043B%u044F%20%u044D%u043A%u0441%u043F%u043E%u0440%u0442%u0430%20%u0436%u0443%u0440%u043D%u0430%u043B%u0430%22%2C%20Ci.nsIFilePicker.modeSave%29%3B%0Afp.appendFilter%28%22HTML%20files%22%2C%22*.html%22%29%3B%0Avar%20res%20%3D%20fp.show%28%29%3B%0Aif%20%28res%20%3D%3D%20Ci.nsIFilePicker.returnCancel%29%0A%20%20%20%20return%20false%3B%0Avar%20file%20%3D%20fp.file%3B%0Aif%20%28%21%28/%5C.html%24/i.test%28file.path%29%29%29%20file.initWithPath%28file.path+%22.html%22%29%3B%0Avar%20foStream%20%3D%20Cc%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.createInstance%28Ci.nsIFileOutputStream%29%3B%0AfoStream.init%28file%2C%200x02%20%7C%200x08%20%7C%200x20%2C%200664%2C%200%29%3B%0Avar%20converter%20%3D%20Cc%5B%22@mozilla.org/intl/converter-output-stream%3B1%22%5D.createInstance%28Ci.nsIConverterOutputStream%29%3B%0Aconverter.init%28foStream%2C%20%22UTF-8%22%2C%200%2C%200%29%3B%0Avar%20serializer%3DCc%5B%22@mozilla.org/xmlextras/xmlserializer%3B1%22%5D.createInstance%28Ci.nsIDOMSerializer%29%3B%0Aserializer.serializeToStream%28htmlDoc%2C%20foStream%2C%20%22%22%29%3B%0Aconverter.close%28%29%3B%0Aif%20%28Services.prompt.confirmEx%28null%2C%22%u0412%u044B%u0433%u0440%u0443%u0437%u043A%u0430%20%u0436%u0443%u0440%u043D%u0430%u043B%u0430%22%2C%20%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u043E%u0437%u0434%u0430%u043D%u043D%u044B%u0439%20%u0444%u0430%u0439%u043B%3F%22%2C%0A%20%20%20%20Services.prompt.STD_YES_NO_BUTTONS%2Cnull%2Cnull%2Cnull%2Cnull%2C%7B%7D%29%21%3D%3D0%29%20return%3B%0Avar%20tab%3DgBrowser.addTab%28Services.io.newFileURI%28file%29.spec%29%3B%0AgBrowser.selectedTab%3Dtab%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 mDBConn = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsPIPlacesDatabase).DBConnection;
var stmt=mDBConn.createStatement("SELECT strftime('%d-%m-%Y %H:%M:%S',max(coalesce(last_visit_date,0))/1000000,'unixepoch','localtime') fd, url,max(coalesce(last_visit_date,0)) from moz_places p where not exists(select b.id from moz_bookmarks b where b.fk=p.id) group by url order by 3 desc");
var log=[];
while(stmt.step()) log.push({fd:stmt.row.fd,url:stmt.row.url});
stmt.finalize();
var xmlDoc=document.implementation.createDocument (null,"",null);
var pi=xmlDoc.createProcessingInstruction('xml','version="1.0" encoding="UTF-8"');
xmlDoc.appendChild(pi);
var root=xmlDoc.createElement("root");
xmlDoc.appendChild(root);
log.forEach(function(elem)
{
  var item=xmlDoc.createElement("item");
  item.setAttribute("last_visit",elem.fd);
  item.setAttribute("url", elem.url);
  root.appendChild(item);
});
var htmlDoc=this.applyTransform("history.xsl", xmlDoc);
htmlDoc=this.applyTransform("decorator.xsl", htmlDoc);
var fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
fp.init(window, "Укажите файл для экспорта журнала", Ci.nsIFilePicker.modeSave);
fp.appendFilter("HTML files","*.html");
var res = fp.show();
if (res == Ci.nsIFilePicker.returnCancel)
    return false;
var file = fp.file;
if (!(/\.html$/i.test(file.path))) file.initWithPath(file.path+".html");
var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
var converter = Cc["@mozilla.org/intl/converter-output-stream;1"].createInstance(Ci.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
var serializer=Cc["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Ci.nsIDOMSerializer);
serializer.serializeToStream(htmlDoc, foStream, "");
converter.close();
if (Services.prompt.confirmEx(null,"Выгрузка журнала", "Открыть созданный файл?",
    Services.prompt.STD_YES_NO_BUTTONS,null,null,null,null,{})!==0) return;
var tab=gBrowser.addTab(Services.io.newFileURI(file).spec);
gBrowser.selectedTab=tab;

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

Выделить код

Код:

Components.utils.import("resource://gre/modules/Services.jsm");
this.applyTransform=function(xsltName,srcDoc)
{
  let xsltFile=Services.dirsvc.get("ProfD", Ci.nsILocalFile);
  xsltFile.append(xsltName);
  let xsltUri=Services.io.newFileURI(xsltFile);
  let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
  xhr.open("GET", xsltUri.spec, false);
  xhr.send(null);
  let xslt = xhr.responseXML;
  let xsltproc=Cc["@mozilla.org/document-transformer;1?type=xslt"].createInstance(Ci.nsIXSLTProcessor);
  xsltproc.importStylesheet(xslt);
  return xsltproc.transformToDocument(srcDoc);
}

Кнопка для преобразования в html использует XSL-преобразования, поэтому необходимо в папке профиля создать 2 xsl-шаблона:
history.xsl

Выделить код

Код:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
  <hr/>
  <table>
  <xsl:for-each select="root/item">
    <tr>
      <td style="white-space: nowrap; vertical-align: top">
        <xsl:value-of select="@last_visit"/>
      </td>
      <td style="padding-left: 1em">
        <a href="{@url}"><xsl:value-of select="@url"/></a>
      </td>
    </tr>
    <tr><td colspan="2"><hr/></td></tr>
  </xsl:for-each>
  </table>
</xsl:template>
</xsl:stylesheet>

decorator.xsl

Выделить код

Код:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:param name="indent-increment" select="'&#x9;'"/>
  <xsl:template match="node()">
    <xsl:param name="indent" select="'&#xD;&#xA;'"/>
    <xsl:value-of select="$indent"/>
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates>
        <xsl:with-param name="indent" select="concat($indent,$indent-increment)"/>
      </xsl:apply-templates>
      <xsl:if test="*">
        <xsl:value-of select="$indent"/>
      </xsl:if>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

XSL-файлы с вышеприведенным кодом нужно сохранить в UTF-8 без BOM. Второй файл необязателен - с его помощью сгенеренный html просто делается читабельным. Если планируется не использовать второй файл (decorator.xsl), то в коде кнопки нужно закомментировать строку с htmlDoc=this.applyTransform("decorator.xsl", htmlDoc)


В будущем я, наверное, на основе этого кода сделаю отдельное расширение с выбором вариантов экспорта (txt/xml/html/json). И без описанной под спойлером возни с xslt.

Отсутствует

 

№6813-07-2011 20:55:08

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

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

Переключить язык интерфейса( Firefox24+ ) от 09.06.2016.
Kнопкa для переключение языка интерфейса русифицированного Firefox на русский или английский язык. Открывает страницу где можно найти все русификации Firefox и сама находит нужную русификацию.
Иконка кнопки и текст всплывающей подсказки меняются в зависимости от языка интерфейса.

ЛКМ => переключить язык интерфейса с окном подтвеждения,
СКМ => стандартное меню кнопки,
ПКМ => открыть страницу с всеми русификации Firefox.

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

Выделить код

Код:

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%u044F%u0437%u044B%u043A%20%u0438%u043D%u0442%u0435%u0440%u0444%u0435%u0439%u0441%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhEAAAEAIAA0BQAAFgAAACgAAAASAAAAIgAAAAEAIAAAAAAADAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQIAAAAAAAAAABITFiBERmaTeH26/mpwtf11er79XGCUzCMlOFgDAwADAAAAAAAAAgIAAAAAAAAAAAAAAAAAAAAAAgIDAwAAAAAWFhkgODxhjlBYre5qc9n/dn7d/4CI4/97g9/+b3je/1dhyv82PYfGHyA2WQAAAAABAQIDAAAAAAAAAAABAQECAAAAABISFiNIUJnfSlbb/2t17f+QmPj8o6r8/6eu/f+mrfz/mqL6/n2H9P5TX+j/PkjK/x8iS3wAAAAAAAABAgAAAAACAgIDHR0gJ0pPmuMuOsr/U1/j+XZ/7P5/huv/f4fp/4CH6v+Ah+n/f4fq/3uE7P9ocun9PEjc+S45wf8nKlCCAwMAAAAAAQIBAAAAZWul2hkqyf8jN+f7O0zt/0JS7P9CU+3/QlTu/0NU7/9CU+z/QlTt/0JT7P8/UO//MEPr/hEl3/kxP8P/Jyo/VgEBAQGEgX6balt6/U85gPxeSpL/YkqQ/2JLkP9jTJH/Y0yR/2NNkf9jTJH/Y0yR/2JLkP9iS5D/YEqP/1pDjv1ROnr9X1Rm0gECAgBwY1OeqGsj/8JuEvzDbxb/wm4U/8JuE//CbxL/w3AT/8FuFf/FcRX/xHAT/8FtE//BbRP/wm8V/8RwFv6+bBL+kmMt8CAeGymbgWHasGYH/9R2AP7OcwD/z3YH/9WDHf/Yhh//14Yg/9eGIf/XhR7/14Uf/9mHH//UgBf/z3UC/9F1AP/KbwD7s3Mj/2VYR4a8oHv/qWEF/890A//IdhT/3JdC/9ycTP/bnE3/3Z1P/9qaSv/cnE//25tN/9ybS//cnEz/2ZE3/8pyBv/FbQT7rW4h/ldJN3vEqov/p14B/8txAf/gnUv/569p/+KqY//jq2T/46tk/+KrZf/iq2X/46tk/+KrZP/iq2T/7LNr/9iMLf+/ZQD7rnEl/2RXSIN4a16iomsr/799LPzmvYn/5L6Q/+S9jv/kvY//5L2P/+S9j//kvY//5L2P/+S9j//lvY3/5sCS/+Gyd/+vahf7p31M/llUT2dqaWd/z8Kz/u/i0/r++PH//vfu//748P/+9+///vfv//737//+9+///vfw//737//++PD//vfv//737/3u4Mz/lY2E0gABAgAzMjIzw8XJ+8vO0vz////+/v/////////////////////////////////////////+//////////f3+PrExsn2Oz09VgEAAAEAAAAAeXh4isjHxv/Z2dj6/////v7+/v/+/f3//v7+//7+/v///v7//v79//39/P///////f38+83Lyv+xsK7wAQAAAAAAAAADAwMDAAAAAHV1dInJycr/19fW//v7+/z///////////////////////////////7x8fD6z9DR/7m5uPZUVFVdAQEBAQAAAAABAQEAAwMDBAAAAAB0dHaAwcHB8szLy//V1NP/6+rq//Dw8f/x8PD/5eXl/9TT1P/R0M//q6qr1lZVVFkAAAAAAQEBAQAAAAAAAAAAAAAAAAMDAwMAAAAAKSkpJoaFhZnMzMr+wL+//rq6u/+7urv9yMjI/6KiotJ6enyDIiIiIQAAAAAFBQUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20......................%0Athis.onclick%20%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%20var%20ru%20%3D%20getLocale%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%20custombuttons.confirmBox%28null%2C%20%28ru%20%3F%20%27%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%20en-US%27%20%3A%20%27Switch%20to%20ru%27%29%2C%20%28ru%20%3F%20%27%u0420%u0435%u0441%u0442%u0430%u0440%u0442%27%20%3A%20%27Restart%27%29%2C%20%28ru%20%3F%20%27%u041E%u0442%u043C%u0435%u043D%u0430%27%20%3A%20%27Cancel%27%29%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20cbu.setPrefs%28s%2C%20%28ru%20%3F%20%22en-US%22%20%3A%20%22ru%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20Services.startup.quit%28Services.startup.eAttemptQuit%20%7C%20Services.startup.eRestart%29%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%22http%3A//mozilla-russia.org/products/firefox/history.html%23nightly-ru%22%29%29%3B%20%0A%20%20%20%20%20%20%20%20%20tab.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%0A%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%20setTimeout%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20version%20%3D%20parseInt%28Services.appinfo.version%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gFindBar._find%28version%29%3B%20//%20%u043D%u0430%u0439%u0442%u0438%20%u0432%u0435%u0440%u0441%u0438%u044E%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u043F%u043E%u0434%u0441%u0432%u0435%u0442%u043A%u0443%20%u0432%u0435%u0440%u0441%u0438%u0438%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20goDoCommand%28%22cmd_selectNone%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20finder%20%3D%20gBrowser.finder%20%7C%7C%20gFindBar%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20lighted%20%3D%20%28finder._highlightDoc%20%7C%7C%20finder._highlight%29.bind%28finder%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lighted%28true%2C%20version%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%200%29%20%20%0A%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0Avar%20s%20%3D%20%22general.useragent.locale%22%3B%0Afunction%20getLocale%28%29%20%7B%20return%20%28cbu.getPrefs%28s%29%20%3D%3D%20%22ru%22%29%20%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%u0432%20about%3Aconfig%20......................%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.src%20%3D%20getLocale%28%29%0A%20%20%20%3F%20self.image%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADBwcIALzAyADk6OwAlJSYCCQkNAAAAAAAAAAIcAAATTQAAG2UAABFYAAABKgAAAAMBAQEABQUFAgQEBgEAAAAAT09RAMLCwgAyNDEAPkBAAxoaGQAZGB0tLSVcpTkmi+s+KJ/+Pimk/z4on/83JonxLSVXuRAREUgAAAAABQUIAQAAAAFPT1EAvb3CACYjNgMnJy0AU1RUY83N0ffo5vT/6+v0/vDw9f/x8ff+8PD2/+vr9f/o5/X/yMnN/zw8O4oAAAABAAAAAU9PUAC5tsUDDAQxAAQAQl4xGqT/OyCy/jcbsvs8H77+PiDE/z8gxf8+IMT/PB++/jcbsvw8IbP8MBij/wMBJoUAAAAAUVBUAszMzwBlZmEhtrLK7sG64v/Fv+b9ycHr/8nC7f/Kwu7/ysLv/8rC7v/Jwu3/ycLr/8W+5f7DvOT+sq/E/w4QBj9OTlAAt7PDAD8yeomLfcz/j3/S+5eF4f+Zhun/nIfx/52H9/+eiPn/nYf3/5uG8f+Yher/loTh/45+0fyNftX/HxdEqEdIRADHxdQKSjqg1lVBwP9ZQsr9XEPW/2BF5P9nSu//bE30/21O+P9sTfX/akzs/2VI3/9gRtP/XUXF/l5HxP8/MX/lUlNPG+nn5i/Y0cf39u/i///26f7/+u3///3r//z58//z7///9PD///Tw///z8P//8u////Hu/f/s6fn+6+n3/6+uvfpfX2I739DKO5ZcSf2oa1b/wIRx/8+QgP/pon3/uX6z/1gz//9lPP7/Yjr//145+/9ZN+r/VzfY/0otxf8wFLP/GgKJ/VZUZkLbycMsklZB9bF5Z//Lmoj+1p+N/+Oji//uv7T/8/T///Pv/v/z7///8u////Hv///x7/z/8O36/uzr+P+ysL71ZWRmLeLU0AaVXUnRuIl5/9Cnmf3WqJr/57KZ/9Cnvv+gj/7/p5P6/6WS+f+jkvP/opHs/56O4/+hk9z9hnXU/z0vftJcXFwI3szGAJBVQX+4joD/1bWp+tizp//juab/2LbE/7+0/v/Dtfr/wrX5/8G09v+/s/H/vbHs/7205Pusn+D/GhBKgFNQXwDfzsgAjlI9Fql6auTawbj/2r20+969sf/lz83/6+v8/+zp9//r6fj/6+n3/+rn9//p5/T76+n7/66sv+BHSj4Ug4ODAODPygOXX0wAmmVSSL6bj/rk0s3/59HF+9C8zfyvo+n+s6fo/rKl5/6ypuX8s6ji+76z6P9xX7v2BgBIQicgRQB2cYsD4M/KAJhfTQOfblwAmGFORbeRg+bgzcb/9Ovn/v////////7///////7+/v709Pj/29vc31dTaT0SA0wABwBOA1pPiADfzccAkldDAJpmVAKWXkoAkllGFKFsUneXd5LKf3DK75aHzPaFdcbuWESxxj0pmHGAfo0QRkRPAAcARgIAAEMAVk+DAPXw7gDfzcYA4dHMAN/PyQLh0c0B49LIAMm4yQSrodogsKXaLa2j2R6vpdkCuLDYANjY3gHJyMwDtLDHALKtxwDMydoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%20ru%20%3D%20getLocale%28%29%3B%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%28ru%20%3F%20%27%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u044F%u0437%u044B%u043A%20%u0438%u043D%u0442%u0435%u0440%u0444%u0435%u0439%u0441%u0430%27%20%3A%20%27Changing%20the%20interface%20language%27%29%20+%20%27%5Cn%27+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ru%20%3F%20%27%u041B%3A%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043D%u0430%20%22en-US%27%20%3A%20%27L%3A%20switch%20to%20%22ru%22%27%29%20+%20%27%5Cn%27+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ru%20%3F%20%27%u0421%3A%20%u043C%u0435%u043D%u044E%27%20%3A%20%27M%3A%20menu%27%29%20+%20%27%5Cn%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ru%20%3F%20%27%u041F%3A%20%u0432%u0441%u0435%20%u0440%u0443%u0441%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20Firefox%27%20%3A%20%27R%3A%20all%20russification%20firefox%27%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%20%20%20%20%20%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%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.onclick =e=> {
   
   // действие при клике ЛКМ ....
   if ( e.button == 0 ) {
        var ru = getLocale();
        if ( custombuttons.confirmBox(null, (ru ? 'Переключить на en-US' : 'Switch to ru'), (ru ? 'Рестарт' : 'Restart'), (ru ? 'Отмена' : 'Cancel')) ) {
             cbu.setPrefs(s, (ru ? "en-US" : "ru"));
             setTimeout(()=> Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart), 0);
             } 
        }
          
    // действие при клике СКМ ....    
    if ( e.button == 1 ) gShowPopup(this);
     
    // действие при клике ПКМ ....    
    if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
         e.preventDefault();  
          
         var tab = gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.addTab("http://mozilla-russia.org/products/firefox/history.html#nightly-ru")); 
         tab.addEventListener("pageshow", function c(e) {
            this.removeEventListener(e.type, c);
              
            setTimeout(()=> {
               var version = parseInt(Services.appinfo.version);
               gFindBar._find(version); // найти версию на странице  
               
               // запустить подсветку версии
               goDoCommand("cmd_selectNone");
               var finder = gBrowser.finder || gFindBar;
               var lighted = (finder._highlightDoc || finder._highlight).bind(finder);
               lighted(true, version);
            }, 0)  
         });
         }
};


var s = "general.useragent.locale";
function getLocale() { return (cbu.getPrefs(s) == "ru") };


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек в about:config ......................
function toggleImage() {
   self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon").src = getLocale()
   ? self.image
   : "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAADBwcIALzAyADk6OwAlJSYCCQkNAAAAAAAAAAIcAAATTQAAG2UAABFYAAABKgAAAAMBAQEABQUFAgQEBgEAAAAAT09RAMLCwgAyNDEAPkBAAxoaGQAZGB0tLSVcpTkmi+s+KJ/+Pimk/z4on/83JonxLSVXuRAREUgAAAAABQUIAQAAAAFPT1EAvb3CACYjNgMnJy0AU1RUY83N0ffo5vT/6+v0/vDw9f/x8ff+8PD2/+vr9f/o5/X/yMnN/zw8O4oAAAABAAAAAU9PUAC5tsUDDAQxAAQAQl4xGqT/OyCy/jcbsvs8H77+PiDE/z8gxf8+IMT/PB++/jcbsvw8IbP8MBij/wMBJoUAAAAAUVBUAszMzwBlZmEhtrLK7sG64v/Fv+b9ycHr/8nC7f/Kwu7/ysLv/8rC7v/Jwu3/ycLr/8W+5f7DvOT+sq/E/w4QBj9OTlAAt7PDAD8yeomLfcz/j3/S+5eF4f+Zhun/nIfx/52H9/+eiPn/nYf3/5uG8f+Yher/loTh/45+0fyNftX/HxdEqEdIRADHxdQKSjqg1lVBwP9ZQsr9XEPW/2BF5P9nSu//bE30/21O+P9sTfX/akzs/2VI3/9gRtP/XUXF/l5HxP8/MX/lUlNPG+nn5i/Y0cf39u/i///26f7/+u3///3r//z58//z7///9PD///Tw///z8P//8u////Hu/f/s6fn+6+n3/6+uvfpfX2I739DKO5ZcSf2oa1b/wIRx/8+QgP/pon3/uX6z/1gz//9lPP7/Yjr//145+/9ZN+r/VzfY/0otxf8wFLP/GgKJ/VZUZkLbycMsklZB9bF5Z//Lmoj+1p+N/+Oji//uv7T/8/T///Pv/v/z7///8u////Hv///x7/z/8O36/uzr+P+ysL71ZWRmLeLU0AaVXUnRuIl5/9Cnmf3WqJr/57KZ/9Cnvv+gj/7/p5P6/6WS+f+jkvP/opHs/56O4/+hk9z9hnXU/z0vftJcXFwI3szGAJBVQX+4joD/1bWp+tizp//juab/2LbE/7+0/v/Dtfr/wrX5/8G09v+/s/H/vbHs/7205Pusn+D/GhBKgFNQXwDfzsgAjlI9Fql6auTawbj/2r20+969sf/lz83/6+v8/+zp9//r6fj/6+n3/+rn9//p5/T76+n7/66sv+BHSj4Ug4ODAODPygOXX0wAmmVSSL6bj/rk0s3/59HF+9C8zfyvo+n+s6fo/rKl5/6ypuX8s6ji+76z6P9xX7v2BgBIQicgRQB2cYsD4M/KAJhfTQOfblwAmGFORbeRg+bgzcb/9Ovn/v////////7///////7+/v709Pj/29vc31dTaT0SA0wABwBOA1pPiADfzccAkldDAJpmVAKWXkoAkllGFKFsUneXd5LKf3DK75aHzPaFdcbuWESxxj0pmHGAfo0QRkRPAAcARgIAAEMAVk+DAPXw7gDfzcYA4dHMAN/PyQLh0c0B49LIAMm4yQSrodogsKXaLa2j2R6vpdkCuLDYANjY3gHJyMwDtLDHALKtxwDMydoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );
                      

// Подсказка для кнопки ......................
this.onmouseover =()=> {
   var ru = getLocale();     
   this.tooltipText = (ru ? 'Переключить язык интерфейса' : 'Changing the interface language') + '\n'+
                      (ru ? 'Л: переключить на "en-US' : 'L: switch to "ru"') + '\n'+
                      (ru ? 'С: меню' : 'M: menu') + '\n' +
                      (ru ? 'П: все русификации Firefox' : 'R: all russification firefox');                                                    
};

Отредактировано bunda1 (24-10-2013 18:52:48)

Отсутствует

 

№6921-07-2011 15:16:29

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

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

Button Stacker 3(Firefox)

Кнопка создает кнопку-сборку кнопок. В кнопках, объединенных в сборку, работает только левый клик,  также нельзя добавлять в сборку кнопки-меню.

Автор: squeaky
Английская версия: http://custombuttons.mozdev.org/drupal/ … -stacker-3
Версия с полным украинским переводом меню, подсказок и коротким help: slbgz

Код кнопки (Сохранить файл как... , убрать расширение .txt, оставить .7z, распаковать архив и установить согласно инструкции)

Код

Выделить код

Код:

//
// See the help tag for how to use this button
//

this.siteGo(event);


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

Отредактировано slbgz (17-10-2011 18:34:13)

Отсутствует

 

№7021-07-2011 19:08:08

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

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

ТoggleToolbars (Firefox) - Переключатель группы панелей.

Кнопка предназначена для быстрого скрытия/показа группы панелей, как стандартных, так и созданных пользователем, одним кликом левой кнопки мыши. Выбор группы панелей, которые будут скрываться/показываться кнопкой, осуществляется закомментированием соотв. строчек в «шапке» кода. Полезна, кроме прочего, для  Button Stacker 3 для скрытия кнопок, объединенных в сборки, для этого соотв. кнопки нужно перетянуть на нужные панели, а названия этих панелей добавить в «шапку» секции «код» ТoggleToolbars.
Для запоминания состояния отображения кастомных панелей после окончания сессии необходима работа «в связке» с кнопками СкрытьПоказать панель.


Автор кода: Infocatcher
http://forum.mozilla-russia.org/viewtop … 68#p505168
Оформление и украинский Help: slbgz

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

Выделить код

Код:

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%20%u2022%205%20%u0434%u043E%u0434%u0430%u0442%u043A%u043E%u0432%u0438%u0445%20%u043F%u0430%u043D%u0435%u043B%u0456%u0432%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/bmp%3Bbase64%2CQk02AwAABQFyYTYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4eHh7+/v7+/v7e3t7e3t7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw4eHhAAAAAAAA4eHh7+/v7+/v7+/v8PDw8fHx8vLy8vLy8fHx8fHx8PDw7+/v8PDw4+PjAAAAAAAA5ubm8fHx8PDw7+/v8vLy8/Pz9PT08/Pz8/Pz8/Pz8vLy8fHx8PDw5eXlAAAAAAAAmbe+1tjY1NrbpsPK7e7uw8vMrsLH8PDwu8bJusjM9PT0tsrOv83RxcXFAAAAAAAAPZarO0BBhay1Zcbfub/EMD5BZJur3t/idoiSMUlPzM3Qf8PXTpmrPDs/AAAAAAAA1NXXXkhyPUJGxcfLUURhXVte1tTaq27lv7TKTk5OVThvtrPCMDQ5ZzqPAAAAAAAAiK7JubXVSEVKLi4vOTk7nrHBmrbQxL3SqLrSeZ+1Li83Lys0QklWt67CAAAAAAAAacP62dnhkIqMAAABdW5uqrzKe67O2NbWmLXJjbPNbGprAAEDeoqX0MvLAAAAAAAA8PD0s2ZmMxQVOjs9KxUVq5iY2dbVq0lIwKiqr6qrLx8fODc5OB8hoUFBAAAAAAAAvtKaYVZOLTIdpbmEYGJcQ0U8rKyT4sfGzc61RUo/ZGNirr6SJC4PZU9MAAAAAAAAfZxJOT1JkJ2GpMZsvcDNSEtOgZFq3+L0kZuISk1KwMDXsc2GhJpnOz1SAAAAAAAA6+zuYGDwlZX36uzxWlr6pqbw2druT0/6u7vvysvuTU371NXzvb70SEjyAAAAAAAAtaCLwsDqwLnQtaCOwcHyv7XAt6WYwML4vK+wuqqlwML5uamhvLCzwsP4AAAALw4LhkEoxZGLs3twiEQsy5mVqW5gjks20KGdoWZVl1ZDz56clVRAoWNT0qSgAAAAAAAAGQYGGgUFGAUFFwUGFwUGGAUFGAUGFwUFFwYGFwUFFwUFFgUFFgUFGAUGAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.tooltipText%20%3D%20%22%20%20%20%20%20%20%20%20%20%20%20%20%20%u041F%u0435%u0440%u0435%u043C%u0438%u043A%u0430%u0447%20%u0433%u0440%u0443%u043F%u0438%20%u043F%u0430%u043D%u0435%u043B%u0456%u0432%3A%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5Cn%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5Cn%20%20%20%20%20%20%20%20%u041B%u0456%u0432%u0438%u0439%20%u043A%u043B%u0430%u0446%20%20-%3E%20%u0423%u0432%u0456%u043C%u043A%u043D%u0443%u0442%u0438/%u0432%u0438%u043C%u043A%u043D%u0443%u0442%u0438%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5Cn%20%20%20%20%20%20%20%20%u041F%u0440%u0430%u0432%u0438%u0439%20%20%20%20-%u201C-%20-%3E%20CB%20%u043C%u0435%u043D%u044E/%u0414%u043E%u043F%u043E%u043C%u043E%u0433%u0430%22+%0A%09%09%20%22%5CnShift+%u041F%u0440%u0430%u0432%u0438%u0439%20%20%20%20-%u201C-%20-%3E%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BtoggleToolbars%28%5B%0A//%20%20%20%20%22toolbar-menubar%22%2C%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%0A//%20%20%20%20%22aios-toolbar%22%2C%20%20%20%20%20%20%20%20%20%20//%20All-in-One%20Sidebar%20%28AiOS%29%0A//%20%20%20%20%22PersonalToolbar%22%2C%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0A//%20%20%20%20%22TabsToolbar%22%2C%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%0A%20%20%20%20%22nav-bar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043D%u0430%u0432%u0456%u0433%u0430%u0446%u0456%u0457%0A//%20%20%20%20%22FindToolbar%22%2C%20%20%20%20%20%20%20%20%20%20//%20%u0441%u0442%u0440%u0456%u0447%u043A%u0430%20%u043F%u043E%u0448%u0443%u043A%u0443%0A%20%20%20%20%22addon-bar%22%2C%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u0434%u0430%u0442%u043A%u0456%u0432%20%28%u0441%u0442%u0440%u0456%u0447%u043A%u0430%20%u0441%u0442%u0430%u043D%u0443%29%0A%20%20%20%20%22%u041C%u043E%u044F%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%201%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%202%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%203%22%0A//%20%20%20%20%2C%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%204%22%0A%5D/*%2C%20show*/%29%3B%0Afunction%20toggleToolbar%28tbId%2C%20show%2C%20multiple%29%20%7B%0A%20%20%20%20var%20tb%20%3D%20tbId%20%3D%3D%20%22FindToolbar%22%20%26%26%20window.gFindBar%0A%20%20%20%20%20%20%20%20%7C%7C%20document.getElementById%28%22__customToolbar_%22%20+%20tbId.replace%28/%20/%2C%20%22_%22%29%29%0A%20%20%20%20%20%20%20%20%7C%7C%20document.getElementById%28tbId%29%3B%0A%20%20%20%20if%28%21tb%29%20%7B%0A%20%20%20%20%20%20%20%20Components.utils.reportError%28%3C%3E%5BCustom%20Buttons%5D%20Toolbar%20%22%7BtbId%7D%22%20not%20found%21%3C/%3E%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20hideAttr%20%3D%20tb.getAttribute%28%22type%22%29%20%3D%3D%20%22menubar%22%0A%20%20%20%20%20%20%20%20%3F%20%22autohide%22%0A%20%20%20%20%20%20%20%20%3A%20tb.localName%20%3D%3D%20%22findbar%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22hidden%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22collapsed%22%3B%0A%20%20%20%20var%20hide%20%3D%20show%20%3D%3D%20undefined%0A%20%20%20%20%20%20%20%20%3F%20tb.getAttribute%28hideAttr%29%20%21%3D%20%22true%22%0A%20%20%20%20%20%20%20%20%3A%20%21show%3B%0A%20%20%20%20tb.setAttribute%28hideAttr%2C%20hide%29%3B%0A%20%20%20%20document.persist%28tbId%2C%20hideAttr%29%3B%0A%20%20%20%20%21multiple%20%26%26%20toggleToolbarsDone%28%29%3B%0A%7D%0Afunction%20toggleToolbarsDone%28%29%20%7B%0A%20%20%20%20if%28%22PlacesToolbarHelper%22%20in%20window%29%20%7B%20//%20Firefox%204%0A%20%20%20%20%20%20%20%20PlacesToolbarHelper.init%28%29%3B%0A%20%20%20%20%20%20%20%20BookmarksMenuButton.updatePosition%28%29%3B%0A%20%20%20%20%20%20%20%20updateAppButtonDisplay%28%29%3B%0A%20%20%20%20%7D%0A%7D%0Afunction%20toggleToolbars%28toolbars%2C%20show%29%20%7B%0A%20%20%20%20toolbars.forEach%28function%28tbId%29%20%7B%0A%20%20%20%20%20%20%20%20toggleToolbar%28tbId%2C%20show%2C%20true%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20toggleToolbarsDone%28%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%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%u2022%0A%20%20%20%u0422oggleToolbars%20-%20%u041F%u0435%u0440%u0435%u043C%u0438%u043A%u0430%u0447%20%u0433%u0440%u0443%u043F%u0438%20%u043F%u0430%u043D%u0435%u043B%u0456%u0432%0A%0A%u041F%u0440%u0438%u0437%u043D%u0430%u0447%u0435%u043D%u043D%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20-%20%u0448%u0432%u0438%u0434%u043A%u0435%20%u043F%u0440%u0438%u0445%u043E%u0432%u0443%u0432%u0430%u043D%u043D%u044F%20%u0433%u0440%u0443%u043F%u0438%20%u043F%u0430%u043D%u0435%u043B%u0456%u0432%2C%20%u044F%u043A%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u0438%u0445%2C%20%u0442%u0430%u043A%20%u0456%20%u0441%u0442%u0432%u043E%u0440%u0435%u043D%u0438%u0445%20%u043A%u043E%u0440%u0438%u0441%u0442%u0443%u0432%u0430%u0447%u0435%u043C%2C%20%u043E%u0434%u043D%u0438%u043C%20%u043A%u043B%u0430%u0446%u043E%u043C%20%u043B%u0456%u0432%u043E%u0457%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043C%u0438%u0448%u0456.%20%u041F%u0440%u0430%u0446%u044E%u0454%20%AB%u0443%20%u0437%u0432%u2019%u044F%u0437%u0446%u0456%BB%20%u0437%20%u043A%u043D%u043E%u043F%u043A%u0430%u043C%u0438%20%AB%u0421%u0445%u043E%u0432%u0430%u0442%u0438/%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u0438%20%u043F%u0430%u043D%u0435%u043B%u044C%BB%20%28%A9%20okkamas_knife%29.%20%u0417%u0430%u043F%u0430%u043C%u2019%u044F%u0442%u043E%u0432%u0443%u0454%20%u0432%u043B%u0430%u0441%u043D%u0438%u0439%20%u0441%u0442%u0430%u043D.%0A%u0412%u0438%u0431%u0456%u0440%20%u043F%u0430%u043D%u0435%u043B%u0456%u0432%2C%20%u0432%u0456%u0434%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u043D%u044F%20%u043A%u043E%u0442%u0440%u0438%u0445%20%u0432%u043C%u0438%u043A%u0430%u0454/%u0432%u0438%u043C%u0438%u043A%u0430%u0454%20%u043A%u043D%u043E%u043F%u043A%u0430%2C%20%u0437%u0434%u0456%u0439%u0441%u043D%u044E%u0454%u0442%u044C%u0441%u044F%20%u0434%u043E%u0434%u0430%u0432%u0430%u043D%u043D%u044F%u043C%20%u043F%u043E%u0442%u0440%u0456%u0431%u043D%u0438%u0445%20%u0456%20%u0437%u0430%u043A%u043E%u043C%u0435%u043D%u0442%u043E%u0432%u0443%u0432%u0430%u043D%u043D%u044F%u043C%20%u043D%u0435%u043F%u043E%u0442%u0440%u0456%u0431%u043D%u0438%u0445%20%u0441%u0442%u0440%u0456%u0447%u043E%u043A%20%u0443%20%AB%u0448%u0430%u043F%u0446%u0456%BB%20%u043A%u043E%u0434%u0443%20%28%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20Code%29%3A%0A%0A%0A%0A//%20%20%20%20%22toolbar-menubar%22%2C%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%0A//%20%20%20%20%22aios-toolbar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0456%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u0456%u0432%20%u0431%u0456%u0447%u043D%u043E%u0457%20%u043F%u0430%u043D%u0435%u043B%u0456%20%28%u0434%u043E%u0434%u0430%u0442%u043E%u043A%20All-in-One%20Sidebar%29%0A//%20%20%20%20%22PersonalToolbar%22%2C%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0A//%20%20%20%20%22TabsToolbar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%0A%20%20%20%20%22nav-bar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043D%u0430%u0432%u0456%u0433%u0430%u0446%u0456%u0457%0A//%20%20%20%20%22FindToolbar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0441%u0442%u0440%u0456%u0447%u043A%u0430%20%u043F%u043E%u0448%u0443%u043A%u0443%20%28Ctrl+f%29%0A%20%20%20%20%22addon-bar%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0434%u043E%u0434%u0430%u0442%u043A%u0456%u0432%20%28%u0441%u0442%u0440%u0456%u0447%u043A%u0430%20%u0441%u0442%u0430%u043D%u0443%29%0A//%20%20%20%20%22%u041C%u043E%u044F%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%201%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%202%22%2C%0A%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%203%22%2C%0A//%20%20%20%20%22%u041F%u0430%u043D%u0435%u043B%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%204%22%0A%0A%0A%u0410%u0432%u0442%u043E%u0440%20%u043A%u043E%u0434%u0443%3A%20Infocatcher%0A%u041E%u0444%u043E%u0440%u043C%u043B%u0435%u043D%u043D%u044F%20%u0456%20Help%3A%20slbgz%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

toggleToolbars([
//    "toolbar-menubar",      // панель меню
//    "aios-toolbar",          // All-in-One Sidebar (AiOS)
//    "PersonalToolbar",      // панель закладок
//    "TabsToolbar",          // панель вкладок
    "nav-bar",              // панель навігації
//    "FindToolbar",          // стрічка пошуку
//    "addon-bar",           // панель додатків (стрічка стану)
//    "Моя панель закладок",
    "Панель кнопок 1",
//    "Панель кнопок 2",
    "Панель кнопок 3"
//    ,"Панель кнопок 4"
]/*, show*/);
function toggleToolbar(tbId, show, multiple) {
    var tb = tbId == "FindToolbar" && window.gFindBar
        || document.getElementById("__customToolbar_" + tbId.replace(/ /, "_"))
        || document.getElementById(tbId);
    if(!tb) {
        Components.utils.reportError(<>[Custom Buttons] Toolbar "{tbId}" not found!</>);
        return;
    }
    var hideAttr = tb.getAttribute("type") == "menubar"
        ? "autohide"
        : tb.localName == "findbar"
            ? "hidden"
            : "collapsed";
    var hide = show == undefined
        ? tb.getAttribute(hideAttr) != "true"
        : !show;
    tb.setAttribute(hideAttr, hide);
    document.persist(tbId, hideAttr);
    !multiple && toggleToolbarsDone();
}
function toggleToolbarsDone() {
    if("PlacesToolbarHelper" in window) { // Firefox 4
        PlacesToolbarHelper.init();
        BookmarksMenuButton.updatePosition();
        updateAppButtonDisplay();
    }
}
function toggleToolbars(toolbars, show) {
    toolbars.forEach(function(tbId) {
        toggleToolbar(tbId, show, true);
    });
    toggleToolbarsDone();
}

Отредактировано slbgz (13-08-2011 17:24:43)

Отсутствует

 

№7124-07-2011 22:59:37

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

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

ProfileManager (для расширения ProfileSwitcher( Firefox 2.0-5.* - Thunderbird 2.0-5.*)/ссылка на дом. страницу автора).

Быстрый вызов менеджера профилей, создание, переименование, удаление, добавление профилей, запуск и работа с несколькими профилями одновременно.
Оригинальное расширение не содержит кнопки, а только иконку в строке состояния и подменю в меню «Файл».
Иконка кнопки - «родная» из расширения.

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

Выделить код

Код:

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%3EProfileManager%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6IQ0oiVUrc6uCXaS7mXq/waGFxsOhgsW7l3SyqH5ei1pBMEkAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAACjbDiE4biI+fnkv//+8M3///TW///23v//9df//vDO//vnwv/20KT+vY1jyCcbEhoAAAAAAAAAAAAAAAAAAAAC3ahv+/XPnP/316T/++Ky//3qvv/+7cL//eu+//vjtP/42KX/9dCc//DCjP+ncUlQAAAAAAAAAAAAAAAAAAAAANaaW9Xxw4n/9c6X//fXo//53az/+uCv//nerP/42KT/9c+Y//LEiv/qsXX+gVY2JgAAAAAAAAAAAAAAAAAAAADGgD6M77t9//HDiP/0y5L/9dCZ//bSnP/10Jr/9MuT//HEif/vu33/2Jpf1gAAAAMAAAAAAAAAAAAAAAAAAAAAqlYOLOCiYf7vvYL/8cSN//LHkP/yx5D/8seQ//HEjf/vv4b/67Bv/8F/R3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGezas7r2H//PNov/zz6X/9NCn//PPpv/zzaP/8ceZ/9mUU+d+TicPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqVUMHNSOTOzz0rH/8cyo//HIo//xyqb/9Ne6/+SpcP61bjFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdVBVs4653//vpyP//+OX//vHT//TKnP+tbzm9AAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByOQkV1J1i6Pjbrf/85rj//uu///znuv/53K3/7L2H/W5DIGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsWYkd+66ff/zyZD/9tSf//jYpf/31aD/9MuT/++9gf+6f0fOAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZ7NqfrrWv/77t+//HDiP/yxo3/8cOK/++8gP/rr27/zopK8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEdCyf6att/+69if/wwo//8MOS//DCkP/uvor/67J4/8mAPOgAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsV0UV+ewfP/xyqX/8syn//LNqf/yzaj/8cul/+/CmP+3aSWiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKFPCgLJhUq79dzG//fizv/34s//9+LO//fhzf/VnW3nkUkNHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqVQMCsSAR5Les4716cit/+G6mP3MkV61oVAMIwAAAAAAAAAAAAAAAAAAAAAAAAAAwAesQcADrEGAA6xBwAOsQcADrEHAB6xB4AesQeAPrEHwD6xB4A+sQeAHrEHgB6xB4AesQeAPrEHgD6xB8B+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%5BprofileLauncher.runScript%28this%29%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%u041A%u043D%u043E%u043F%u043A%u0430%20%u0432%u0438%u043A%u043B%u0438%u043A%u0443%20%u041C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%u0430%20%u043F%u0440%u043E%u0444%u0456%u043B%u0456%u0432%20%u0434%u043B%u044F%20%u0434%u043E%u0434%u0430%u0442%u043A%u0443%20ProfileSwitcher%0Ahttps%3A//nic-nac-project.org/%7Ekaosmos/profileswitcher-en.html%0A%0A%u0410%u0432%u0442%u043E%u0440%20%u0434%u043E%u0434%u0430%u0442%u043A%u0443%3A%20Paolo%20Kaosmos%0Ahttps%3A//addons.mozilla.org/en-US/firefox/user/235043/%0A%0A%u041A%u043D%u043E%u043F%u043A%u0430%3A%20slbgz%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

profileLauncher.runScript(this)

Отредактировано slbgz (09-10-2011 05:08:54)

Отсутствует

 

№7201-09-2011 17:27:21

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

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

Find( Firefox )
Поиск на странице без панели поиска.

ЛКМ => Если есть выделенный текст на текущей странице, то искать выделенный текст, если нет выделенного, искать на странице текст из буфера обмена. Искать дальше.
СКМ => Стандартное меню кнопки,
ПКМ => Искать назад выделенный текст.

Код кнопки и инициализаци и для Firefox 3.6 - 26
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20str%20%29%20gFindBar._find%28%20str%20%29%3D%3D%200%20%3F%20gFindBar.%20_findAgain%28%20false%20%29%20%3A%20disableIcon%28%29%3B%20%0A%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%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20str%20%29%20gFindBar._find%28%20str%20%29%3D%3D%200%20%3F%20gFindBar.%20_findAgain%28%20true%20%29%20%3A%20disableIcon%28%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%20%0Athis.oncontextmenu%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%20%20%20%20%20%20%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%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%20....................%20%20%0Avar%20button%20%3D%20this%3B%20%0A%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20button.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20button.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A%0A/*%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%20%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20...................................%20*/%0Afunction%20getSelect%28%29%20%7B%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%0A%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%20%29%20%7B%0A%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20....%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%20%29%20var%20selection%20%3D%20gClipboard.read%28%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043E%u0431%u043E%u0438%u0445%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%20....%0A%20%20if%20%28%20selection%20%21%3D%3D%20%27%27%20%29%20var%20selection%20%3D%20selection.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%0A%20%20%0A%20%20if%20%28%20selection%20%3D%3D%20%27%27%29%20%7B%20%0A%20%20%20%20%20%20%20var%20notification%20%3D%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%0A%20%20%20%20%20%20%20Components.classes%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Components.interfaces.nsIAlertsService%29%0A%20%20%20%20%20%20%20.showAlertNotification%28%20button.image%2C%20button.label%2C%20notification%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          var str = getSelect();
          if ( str ) gFindBar._find( str )== 0 ? gFindBar. _findAgain( false ) : disableIcon(); 
          }
                    
     // действие при клике СКМ ....  
     if ( e.button == 1 ) gShowPopup(this);
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 ) { 
          var str = getSelect();
          if ( str ) gFindBar._find( str )== 0 ? gFindBar. _findAgain( true ) : disableIcon(); 
          }
};

// Блокируем контекстное меню при клике ПКМ без модификаторов .................... 
this.oncontextmenu = function(e) {
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {        
          e.preventDefault();
          e.stopPropagation();
          }
};



// Объявляем переменные для этой вкладки  ....................  
var button = this; 



// Временно отключить иконку кнопки ....................  
function disableIcon() {
   button.style.filter = 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")';
   setTimeout(function() { button.style.filter = '' }, 500)
};



/* Функция отдаст выделенный текст из страницы или текстового поля, 
   если текст не выделен из буфера обмена, если нет текста отдаст 'false' ................................... */
function getSelect() {
  // выделенный текст из страницы ....
  var selection = document.commandDispatcher.focusedWindow.getSelection().toString();

  // выделенный текст из текстового поля ....
  if ( selection == '' ) {
       var theBox = document.commandDispatcher.focusedElement;
       if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { 
            var startPos = theBox.selectionStart;
        var endPos = theBox.selectionEnd;
        var selection = theBox.value.substring(startPos, endPos);  
            }
       };
       
  // текст из буфера обмена ....
  if ( selection == '' ) var selection = gClipboard.read();
         
  // убираем пробелы с обоих концов текста ....
  if ( selection !== '' ) var selection = selection.toString().replace(/^\s+|\s+$/g,"");
  
  if ( selection == '') { 
       var notification = "Выделите или скопируйте текст!"
       Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService)
       .showAlertNotification( button.image, button.label, notification, false, "", null, "");
       };
    
  return ( selection == '')? false: selection;
};



// Подсказка для кнопки ....................
this.tooltipText = "Л: Искать выделенный текста/из буфера далее \nС: CB Меню \nП: Искать выделенный текста/из буфера назад";


Код кнопки для Firefox 27+
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExMAAAEAIAAYBgAAFgAAACgAAAATAAAAJgAAAAEAIAAAAAAA8AUAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAAdUOucBYUD/AF09/QBcPP8BYkD/AF8//wBePf8AWTn/AE0y/wBLMf8AWTn/AWNC/wBbO/0BXj3/B1E45wAAAAAAAAACAAAAAAVZO9sCek3/AX5O/wB+T/8Afk//An9P/wB9TP8PhFf/No1r/yZqUf8AUDL/A3BF/wGBUP8AfU7/AH5O/wN6Tf8FWTvbAAAAAAhWPOcBgVH9AIpU/wSKVf8BiVT/AIlU/wSLV/8Ag0z/N6F3/9Xw5P+Wsaj/AEot/wN1S/8BiFX/AIlU/wCJVP8AilT/AH1P/QdTOucBaET/CIxY/giRWv8JkFn/CI9Z/wiPWf8MkV3/AIhR/0Cpgv/y//r/qb63/wBQMP8He07/BoxX/wiPWf8Ij1n/CJFa/wiMVv4CZUP/AWhF/QmVXf8Hml7/CJde/wmcYP8JmV//Dptj/wCUWP9GrYP/8f74/6zDuv8AWjX/CYJR/waWXP8ImV//CJdf/wmaYP8Ill3/AGlE/QNtRv8InF7/CKFk/wifYP8JoGP/Cp9j/wudZP8Ag0f/MpNp/9vw5/+cu67/AE4o/wtzSP8Lilf/CZlf/wueX/8JoGH/CJxe/wNuRv8GcEj/DaJi/w2oZ/8NpWT/D6dm/wejY/8LlV3/PZl1/5zEtP/5+/j/xtvS/z2GaP8LaUP/BW5E/weJVP8IoGH/C6hl/w2iYv8GcEj/BXNL/wyqZv8OsGn/D65o/w6uaf8ap2z/gcWn/9vn4P/L5dn/ruDK/87r3v/Y6OD/fbSc/xh0S/8IdEb/B5he/xKtaP8Mqmb/BXNK/wd3Sv8QsGv/DrZs/xC0bf8BrWP/f86r/9jn4P+OyK//OLN//ym6fP9FxIz/m+LC/9vy6P97s5n/AGc4/wmKU/8Qrmb/D7Fr/wd3Sv8JfEz/Fblx/yfDfv8rwoD/QsSK/9n16f+jxrf/IpRj/xevbv8nxH//HL11/zPCg/+07NP/1+ng/zSJY/8djFz/Ird1/xi4cv8JfEz/CX5P/yvFgP9F05L/Q9CQ/4vgt//V7uP/ZKKF/zGaaf9PypP/T9OV/1HRlf9BzY3/feCx/9fu4/92rJX/MJRo/0LHi/8tw3//CH5P/xKBVP9C0JD/S9qa/0DVkv+L5bv/xunY/12egP8ojV//Qb2E/0fUk/9L2Jb/QdGN/3Xbq//H5dj/dq6U/y+ea/9L05T/Qc+P/xKCVP8giV3/RtaU/0zfm/9E25X/fOWz/+H67v+AuZ//J4ZY/zedbP9Hw4v/Rc+R/znAgv+K1bH/2enh/2ivj/87uYH/TNyZ/0bWlf8giVz/IYxf/0vblv9Q5Zz/T+Ka/1Xjn//S++f/yeXY/1+qhv8vi13/LJVk/zelcv9ktY3/x9/T/8nl1/9Ht4L/S9WV/0/knf9L25b/IYte/yCLXv1N4Zr/Ueuh/1HooP9H6Zv/g+68/9v67P/R7OH/iMOp/2OoiP+Etp7/0OLZ/9fw5P931Kn/Q9WP/1Hmnv9S7aL/TeGa/yCLXv0lkmT/T+ed/lTyo/9T76D/Vu+l/1Dvof968bf/w/fc/+n98//v//j/7P/1/8D22/9x5a7/S+Ob/1Tuo/9T76L/VfKm/0/onP4kkWL/K35b51Hfmv1Y+Kb/WPel/1j3pP9a9qf/VfWl/1v2p/9m96z/afat/2b3rP9c9qj/Vvel/1n4pv9Y96T/V/em/1f4pv9Q3pn9K35b5wAAAABAnXPbUuef/1T0ov9X9aH/VvSh/1X0o/9X9aL/VvWi/1X0ov9V9KL/VfSj/1b0o/9V9KL/VfSi/1T0o/9S5p7/PZZu2wAAAAAAAgICAAAAAD2NaudFr4H/Q6x8/UStfP9ErXz/RK18/0StfP9ErXz/RK18/0StfP9ErXz/RK18/0Ose/1Eq33/Popr5wAAAAAAAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%0A%20%20%20%20if%20%28e.button%20%3D%3D%201%29%20%7B%20gShowPopup%28this%29%3B%20return%3B%20%7D%0A%0A%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20%u0438%u043B%u0438%20%u041F%u041A%u041C%20....%0A%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20var%20fastFind%20%3D%20gBrowser.finder._fastFind%3B%0A%0A%20%20%20%20fastFind.find%28str%2C%20false%29%20%3D%3D%20fastFind.FIND_FOUND%0A%20%20%20%20%3F%20fastFind.findAgain%28e.button%2C%20false%29%0A%20%20%20%20%3A%20disableIcon%28%29%3B%0A%7D%3B%0Athis.ondblclick%20%3D%20function%28e%29%20e.button%20%21%3D%202%3B%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20self.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20self.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%27false%27%20................................%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%20//%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%20%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20var%20sel%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20var%20sel%20%3D%20gClipboard.read%28%29%3B%20//%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.showAlertNotification%28%20self.image%2C%20self.label%2C%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%20%29%3B%0A%20%20%0A%20%20return%20%28%20sel%20%3D%3D%20%27%27%20%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано bunda1 (07-02-2014 22:32:08)

Отсутствует

 

№7301-09-2011 18:39:05

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

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

Поиск по сайту в Google( Firefox24+ ) от 07.03.2017.
Даёт возможность искать текст( выделенный, введённый или из буфера обмена ) по текущему сайту в Google.

ЛКМ => Поиск по сайту(выделенного или введённого текста),
СКМ => Поиск по сайту текста из буфера обмена,
ПКМ => 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%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%20%u0432%20Google%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAFhYAAAEAIAAQCAAAFgAAACgAAAAWAAAALAAAAAEAIAAAAAAA6AcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQMAAgAAAAALOAMeHIEKYR19C2USUwYsAAAAAAABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAwMLAAsAAAAAF2MIXi/wDewv+gvxKKsPmAILAAABBAAHAgcABQACAAEAAAAAAAAAAAAAAAABAQEDAQEBBQAAAAQAAAADAAAAAAAAAAAAAAAAAAEAAAAAAAABBgAHAAAAABVXCWMp7wr+Jv8F/yWmDqUAAAAAAAEAAgAAAAAAAAAAAAAAAAEBAQACAgIEAAAAAwcHBwAODg4AAQEBAAAAAAAAAAAAAAEAAAAAAAAFFQMNDzcHKQ0rBhQcbg1yI9cK9x7jBf0mohCoDzcGGQ81BygNMwYdAgoCAwAAAAACAgIHAAAAABQUFBErKyt5GxsbmQwMDCYAAAAAAAAAAwACAAMAAAAAFmgKYhunCLMXoAWuGqsFyxXGAv0SyAD/G7gF4hiiB68YowW2IKUOpQ0vCBkDAQIAAAAAARUVFQ8qKip9HBwc9icnJ/IzMzN4AAAAAAEBAQYAAQAEAAcAADGqH7FH6jb/Q941/jzPLv40wCf/M74m/znHLP8/1jD+Qt4y/0fiNf8WRg80AAAAABQUEwYwMTB8FRUV8BkZGf9FRUXDJiYmQAAAAAABAQEDAQEBAgAEAAAwgiV3W7tQylivUcZbtlLcb8Zo/3LIbf5jwVnlWLRPulitUb5OqUSuDCkHIAgFCQAuLi5wFxkX6RsbG/9KSkrDMTExQwAAAAACAgICAQEBAAAAAAEAAAAADCkHEBZBECkLMAYSK28hdnbHcPuCxoD7RJQ4vx5TFmQeRBllGTsUOgMMAQA8PDtIOjo63ikpKf9JSUi8MDAwPgAAAAADAwMIAQEBAQAAAAAAAAAAAAAAAAAAAAIDBQQHAAAAACVRH2GG0YL6k8uV/TptM/ABAAHiGxkc5R0bHskaGxphW1xarYOCgvFkZGSuHR0dLAAAAAADAwMIAQEBAQAAAAAAAAAAAAAAAAAAAAABBAEFBgYGBAAAAAArWSSCltCU/6naqfxHij63AA4ALw8TD1AYGhiuICAg/GVlZdtZWVk8ExMTAAAAAAUCAgICAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYJBgAEBgVSFC0Q2U+KSNlruGSeNHIsYQABAAAAAQAEAAEAAxcXF3grKyv1FRUVVgAAAAAAAAAEAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAUDBAMAAQEBrhAUEcgSGhEmAQkACggNBwwFBAUCBAQEAwQEBAIFBQUAICAgzCcnJ68LCwsaAAAAAAEBAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABwcHEAAAAM9jY2SjrKutAD46PgMGAwcBAQEBAAAAAAEAAAAEAAAAAB0dHZEkJCTTCQkJPwAAAAACAgIHAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEAAAAAA0ODRsUFBTQlpaWpv///xLa3Nsotra1GJSUlA+YmJgMj4+PFbGxsQB+fn6GNzc31gkJCUUAAAAAAgICCAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAwAAAAMUFBQBLy8vvYWFhc3o6OhD////SP39/Uz///9A////Pf7+/jj///8TjIyMvE9PT8UaGhotAAAAAAMDAwcAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAHCAgIAFBQUH1ra2v0n5+fo////1b9/f1n/v7+Zf///1z///9JqqqqdW1tbf5aWlqDHBwcAgAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAwMDBQAAAABCQkIcfHx8toODg/+qqqqz0dHRkdbW1ojU1NSMuLi4pnh4ePqAgIDOPT09KgICAgAAAAAEAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwABAQEFAwMDAF1dXTKSkpK1cXFx9oaGhueRkZHajY2N6nl5efuVlZXNXFxcOw0NDQAAAAACAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAAAAAUHBwcARUVFFYaGhm+Li4u3jY2Nx46OjruRkZGAXFxcFgsLCwAAAAACAgICAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAAwMDAwAAAAMFBQUALS0tAFJSUgA6OjoACAgIAAAAAAMEBAQDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgADAwMDAQEBBQAAAAIAAAABAAAAAgEBAQUEBAQDAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20text%20%3D%20getSelect%28%29%20%7C%7C%20custombuttons.promptBox%28%27%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%20%u0432%20Google%27%2C%20%27B%u0432%u0435%u0434%u0438%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%20....%27%29%5B1%5D%3B%0A%20%20%20%20%20%20%20%20text%20%21%3D%3D%20%27%27%20%26%26%20searchInWebsite%28text%29%3B%0A%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%0A%20%20%20e.button%20%3D%3D%201%20%26%26%20searchInWebsite%28gClipboard.read%28%29%29%3B%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%20%u0432%20Google%20..................%0Afunction%20searchInWebsite%28text%29%20%7B%20%0A%20%20%20var%20text%20%3D%20escape%28%20convertFromUnicode%28%22UTF-8%22%2C%20text%29%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//var%20domain%20%3D%20Services.eTLD.getBaseDomain%28%20gBrowser.currentURI%20%29%3B%0A%20%20%20var%20domain%20%3D%20encodeURIComponent%28content.document.domain%29%3B%0A%20%20%20var%20url%20%3D%20%22http%3A//www.google.com/search%3Fas_q%3D%22%20+%20text%20+%20%22%26as_sitesearch%3D%22%20+%20domain%3B%0A%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%3B%20%0A%7D%3B%0A%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%20sel%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.toString%28%29%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%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..................%0Athis.tooltipText%20%3D%20%22%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%20%5Cn%u041B%3A%20%u041F%u043E%u0438%u0441%u043A%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0438%u043B%u0438%20%u0432%u0432%u0435%u0434%u0451%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%5Cn%u0421%3A%20%u041F%u043E%u0438%u0441%u043A%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ..................
this.onclick =e=> {
   if ( e.button == 0 ) {
        var text = getSelect() || custombuttons.promptBox('Поиск по сайту в Google', 'Bведите текст ....')[1];
        text !== '' && searchInWebsite(text);
        } 
               
   e.button == 1 && searchInWebsite(gClipboard.read());
};


// Поиск по сайту в Google ..................
function searchInWebsite(text) { 
   var text = escape( convertFromUnicode("UTF-8", text) );           
   //var domain = Services.eTLD.getBaseDomain( gBrowser.currentURI );
   var domain = encodeURIComponent(content.document.domain);
   var url = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + domain;
   gBrowser.selectedTab = gBrowser.addTab(url); 
};


// Конвертировать текст в юникод ..................
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 sel = gBrowser.contentDocument.defaultView.getSelection().toString()
   return (sel == '') ? false : sel.toString().replace(/^\s+|\s+$/g,"");
};


// Подсказка для кнопки ..................
this.tooltipText = "Поиск по сайту \nЛ: Поиск выделенного или введённого текста \nС: Поиск текста из буфера обмена \nП: CB меню";

Отредактировано bunda1 (04-06-2013 19:20:00)

Отсутствует

 

№7427-09-2011 20:03:39

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

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

Select Search Engine (Firefox)
Кнопка предназначена для управления поисковыми плагинами скрытой панели(строки) поиска.  Иконка кнопки изменяется автоматически на иконку "текущего" поисковика после каждого его переключения.

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

Выделить код

Код:

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%3ESelect%20Search%20Engine%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABEElEQVQ4jaWSPU7DQBCF3wGo7DZp4qtEQqJJlSu4jLgBNS0dRDR0QARSumyPRJogkIJiWiToYhrSEPJR7Hptx/kDRhrNm93nb3ZXFsD4psPRwR4AzbjHxd0ru4a8kEgvbf1NePfzbQdJfro52UcS8fHQDyjWCuDz7QpJTOYLZk5nH0zmi/8Dzg/DEqgCmL1fW/PXNwADf4V7AMbuis24txrw1xBJAlHgMizoLdkI4CVBREEZWTKGK9bKqa3G3QDO2G7Z2ljqAYyxPmPgI4XHpw2A7ES+d/unZzlwM2BNnwEKb1QFGJNPabdg9GB1v2993W71BNOamNZEWpfXy5nW8/3U9UQBkqTyy677F6rrkvQDptjzJ/PSbekAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20searchService%28%29%20%7B%0Areturn%20Components.classes%5B%22@mozilla.org/browser/search-service%3B1%22%5D%0A.getService%28Components.interfaces.nsIBrowserSearchService%29%3B%0A%7D%0A%0A%20this.selectEngine%20%3D%20function%28aNode%2C%20aEvent%29%20%7B%0A%20%20var%20engine%20%3D%20aEvent.target.engine%3B%0A%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20ss.currentEngine%20%3D%20ss.getEngineByName%28engine.name%29%3B%0A%20%20aNode.engine%20%3D%20engine%3B%0A%20%20aNode.image%20%3D%20aEvent.target.getAttribute%28%22src%22%29%3B%0A%7D%0A%0Athis.populateMenu%20%3D%20function%28aNode%29%20%7B%0A%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20var%20engines%20%3D%20ss.getVisibleEngines%28%7B%20%7D%29%3B%0A%20%20const%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20while%28aNode.firstChild%20%26%26%20aNode.firstChild.localName%20%21%3D%20%22menuseparator%22%29%20%7B%0A%20%20%20%20aNode.removeChild%28aNode.firstChild%29%3B%0A%20%20%7D%0A%0A%20%20for%28var%20i%20%3D%20engines.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%20%7B%0A%20%20%20%20var%20mi%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20mi.id%20%3D%20%22cb-search-%22%20+%20engines%5Bi%5D.name%3B%0A%20%20%20%20mi.className%20%3D%20%22menuitem-iconic%20searchbar-engine-menuitem%22%3B%0A%20%20%20%20mi.setAttribute%28%22label%22%2C%20engines%5Bi%5D.name%29%3B%0A%20%20%20%20if%28engines%5Bi%5D.iconURI%29%0A%20%20%20%20%20%20mi.setAttribute%28%22src%22%2C%20engines%5Bi%5D.iconURI.spec%29%3B%0A%20%20%20%20mi.engine%20%3D%20engines%5Bi%5D%3B%0A%20%20%20%20if%28mi.engine%20%3D%3D%20ss.currentEngine%29%0A%20%20%20%20%20%20mi.style.fontWeight%20%3D%20%22bold%22%3B%0A%20%20%20%20mi.setAttribute%28%22onclick%22%2C%0A%20%20%20%20%20%20%22event.preventDefault%28%29%3Bevent.stopPropagation%28%29%3BparentNode.parentNode.selectEngine%28parentNode.parentNode%2C%20event%29%3B%22%29%3B%0A%20%20%20%20aNode.insertBefore%28mi%2C%20aNode.firstChild%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.currentEngine%20%3D%20searchService%28%29.currentEngine%3B%0A%0Avar%20ss%20%3D%20searchService%28%29%3B%0Athis.engine%20%3D%20ss.currentEngine%3B%0Athis.image%20%3D%20this.engine.iconURI.spec%3B%0A%0Avar%20mp%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amp.setAttribute%28%22onpopupshowing%22%2C%20%22parentNode.populateMenu%28this%29%22%29%3B%0Amp.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0Avar%20managerSeparator%20%3D%20mp.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0AmanagerSeparator.id%20%3D%20%22cb-searchbutton-separator%22%0Avar%20managerItem%20%3D%20mp.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AmanagerItem.setAttribute%28%22label%22%2C%20%22Manage%20Search%20Engines%22%29%3B%0AmanagerItem.setAttribute%28%22oncommand%22%2C%0A%20%20%22openDialog%28%27chrome%3A//browser/content/search/engineManager.xul%27%2C%20%22%20+%0A%20%20%22%27engineManager%27%2C%20%27chrome%2C%20dialog%3Dno%27%29%22%29%3B%0A%20%20%0Athis.type%20%3D%20%22menu%22%3B%0A%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

function searchService() {
return Components.classes["@mozilla.org/browser/search-service;1"]
.getService(Components.interfaces.nsIBrowserSearchService);
}

 this.selectEngine = function(aNode, aEvent) {
  var engine = aEvent.target.engine;
  var ss = searchService();
  ss.currentEngine = ss.getEngineByName(engine.name);
  aNode.engine = engine;
  aNode.image = aEvent.target.getAttribute("src");
}

this.populateMenu = function(aNode) {
  var ss = searchService();
  var engines = ss.getVisibleEngines({ });
  const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

  while(aNode.firstChild && aNode.firstChild.localName != "menuseparator") {
    aNode.removeChild(aNode.firstChild);
  }

  for(var i = engines.length - 1; i >= 0; i--) {
    var mi = document.createElementNS(kXULNS, "menuitem");
    mi.id = "cb-search-" + engines[i].name;
    mi.className = "menuitem-iconic searchbar-engine-menuitem";
    mi.setAttribute("label", engines[i].name);
    if(engines[i].iconURI)
      mi.setAttribute("src", engines[i].iconURI.spec);
    mi.engine = engines[i];
    if(mi.engine == ss.currentEngine)
      mi.style.fontWeight = "bold";
    mi.setAttribute("onclick",
      "event.preventDefault();event.stopPropagation();parentNode.parentNode.selectEngine(parentNode.parentNode, event);");
    aNode.insertBefore(mi, aNode.firstChild);
  }
}

this.currentEngine = searchService().currentEngine;

var ss = searchService();
this.engine = ss.currentEngine;
this.image = this.engine.iconURI.spec;

var mp = this.appendChild(document.createElement("menupopup"));
mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)");
mp.setAttribute("oncommand", "event.stopPropagation()");

var managerSeparator = mp.appendChild(document.createElement("menuseparator"));
managerSeparator.id = "cb-searchbutton-separator"
var managerItem = mp.appendChild(document.createElement("menuitem"));
managerItem.setAttribute("label", "Manage Search Engines");
managerItem.setAttribute("oncommand",
  "openDialog('chrome://browser/content/search/engineManager.xul', " +
  "'engineManager', 'chrome, dialog=no')");
  
this.type = "menu";

Кнопка является оформленной в отдельную кнопку частью кода из кнопки Search and open +  .
Изменен тип кнопки на кнопку без бокового дропмейкера как более удобный в пользовании и более компактный, за помощь и код спасибо bunda1.

Отредактировано ignorecheats (29-09-2011 12:08:17)

Отсутствует

 

№7528-09-2011 17:36:51

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

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

Go plus! (Firefox)
Кнопка вместе с кнопкой Select Search Engine(постом выше) и адресной строкой полностью заменяют собой 3 элемента Панели навигации: кнопку Go("Перейти"), плюс кнопку Reload("Обновить страницу"), плюс стандартную панель(строку) поиска со всеми их стандартными функциями, плюс добавляет дополнительные функции:
- переход по "текстовой", выделенной на странице, ссылке (линкификация), переход по ссылке из буфера обмена(Paste and Go),
- поиск текста, выделенного на странице, или текста из буфера обмена "текущим" поисковиком.

ЛКМ => функция Go(Перейти) - открыть URL из строки адреса или Reload(Обновить страницу).
СКМ => открыть "текстовую" ссылку, выделенную на странице или, при отсутствии выделенного, - ссылку из буфера.
ПКМ  => искать текущим поисковиком текст, набранный в строке адреса, или - выделенный на странице или - из буфера.
Shift+ЛКМ => Hard Reload ("Обновить из сети", "Ctrl+F5").
Shift/Ctrl/Alt + ПКМ  => CB меню.

Примечания

скрытый текст

            1. Логика поиска текста "текущим" поисковиком по ПКМ.
                Поиск текста, набранного в адресной строке, имеет приоритет перед другими поисками (выделенного текста,
                текста из буфера обмена). Для того, чтобы осуществялся поиск выделенного на странице или из буфера обмена, - не
                изменять содержимое адресной строки (в строке должен оставаться URL).
                Поиск текста из буфера обмена происходит при отсутствии выделенного на странице текста, иначе производится поиск
                выделенного. От местоположения курсора (фокуса) поиск независим.

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

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

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

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

Выделить код

Код:

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%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWJFY/97e3v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAABsAP8AHQD/oK2g/97e3v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAABZtFn/AHgA/wBBAP8ANwD/3t7e/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAbrhu/xKaEv8AkwD/AHsA/wBXAP8PXA//3t7e/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAHLGcv8TohP/BaQF/xixGP8RqxH/AIQA/wBeAP8+hT7/3t7e/wAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAB5xnn/GKIY/wqeCv8ZpRn/GK8Y/xq+Gv8SthL/AJIA/wBzAP+AuoD/3t7e/wAAAP8AAAD/AAAAAAAAAAAAAAAAbrRu/xCIEP8Lhgv/FosW/xaKFv8Wjxb/GJwY/xurG/8OpA7/AIoA/wCIAP/K/cr/3t7e/wAAAAAAAAAAAAAAAIDGgP8ZnRn/EJgQ/xycHP8bmxv/Gpga/xuUG/8ckhz/HJgc/w2YCv8AhgD/AHQA/wByAP/e3t7/AAAAAAAAAACBzIH/HaUd/xWjFP8ipyH/Iacg/yKnIf8ipyL/FKQU/wWcB/8apBr/Q7ZC/064UP/F7MX/3t7e/wAAAAAAAAAAjdaN/yKvIv8YrBr/JrAo/yivKf8drB//CqgL/xSrFv82tjb/UsRU/8Hsw//e3t7/AAAAAAAAAAAAAAAAAAAAAI7cjv8mtyb/IrUh/yi5J/8SshL/FrMW/zK8NP9XzVf/k+GT/97e3v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY4Zj/Kr8q/xK6Ev8Xuhf/LMEs/0jJSP9o1mf/3t7e/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkeOR/xnEGf8dwx3/QdBB/17aXv/T9tP/3t7e/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIjliP850Tn/W9tb/6nuqf/e3t7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl4WX/RNtE/97e3v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3t7e/+z/7P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn/OsQYfzrEGDwKxBgMCsQYAzrEGAA6xBgAOsQYABrEGAAaxBgAesQYAfrEGAf6xBgP+sQYP/rEGP/6xBn/+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%5Bthis.tooltipText%20%3D%20%22L%3DGO/RELOAD%20%7C%20M%3DOPEN%20select./clipb.%7C%20R%3DSEARCH%20typed/sel/clipb.%7C%20Sh+L%3DH.RELOAD%22%3B%0A//this.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%22%29%3B%0A//this.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%20padding-right%3A%202px%20%21important%3B%22%29%3B%0Aconst%20IN_NEW_TAB%20%3D%20true%3B%0Aconst%20IN_BACKGROUND%20%3D%20false%3B%0A%0Athis.onclick%20%3D%20function%28event%29%0A%7B%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%0A%20%20%20%7B%20%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20goDoCommand%28%22cmd_copy%22%29%3B%0A%20%20%20%20%20%20var%20strokaadresa%20%3D%20gURLBar.value%3B%0A%20%20%20%20%20%20var%20nsa%3Dstrokaadresa.substring%280%2C4%29%3B%0A%20%20%20%20%20%20if%20%28nsa%3D%3D%22http%22%29%20%7Bvar%20str%3DreadFromClipboard%28%29%3B%7D%0A%20%20%20%20%20%20%20%20else%20%7B%20if%20%28nsa%3D%3D%22ftp%3A%22%29%20%7Bvar%20str%3DreadFromClipboard%28%29%3B%7D%20else%20%7Bvar%20str%3DgURLBar.value%3B%7D%20%7D%3B%0A%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%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20%20getBrowser%28%29.selectedTab%3DgetBrowser%28%29.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%0A%20%20%20%7D%3B%20%20%0A%20%20%20if%28event.button%20%3D%3D%201%29%0A%20%20%20%7B%20%20goDoCommand%28%22cmd_copy%22%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20str%20%3D%20readFromClipboard%28%29%3B%0A%20%20%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20%20%20if%20%28IN_NEW_TAB%29%20getBrowser%28%29.selectedTab%3DgetBrowser%28%29.addTab%28str%2C%20null%2C%20null%2C%20null%2C%20IN_BACKGROUND%2C%20false%29%3B%20else%20gBrowser.loadURI%28str%29%3B%0A%20%20%20%7D%3B%20%20%0A%20%20%20if%28event.button%20%3D%3D%200%29%0A%20%20%20%7B%20%20if%28%21event.shiftKey%29%0A%20%20%20%20%20%20%7B%20%20var%20str%20%3D%20gURLBar.value%3B%0A%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20gBrowser.mCurrentTab%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.duplicateTab%28tab%29%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.mTabContainer.selectedIndex++%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.removeTab%28tab%29%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28str%29%3B%0A%20%20%20%20%20%20%7D%20%20else%20BrowserReloadSkipCache%28%29%3B%0A%20%20%20%7D%3B%20%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=GO/RELOAD | M=OPEN select./clipb.| R=SEARCH typed/sel/clipb.| Sh+L=H.RELOAD";
//this.setAttribute("style", "padding-left: 0px !important;");
//this.setAttribute("style", "padding-left: 0px !important; padding-right: 2px !important;");
const IN_NEW_TAB = true;
const IN_BACKGROUND = false;

this.onclick = function(event)
{  if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
   {  event.preventDefault(); event.stopPropagation();
      goDoCommand("cmd_copy");
      var strokaadresa = gURLBar.value;
      var nsa=strokaadresa.substring(0,4);
      if (nsa=="http") {var str=readFromClipboard();}
        else { if (nsa=="ftp:") {var str=readFromClipboard();} else {var str=gURLBar.value;} };
      var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
      var submission = ss.currentEngine.getSubmission(str, null);
      getBrowser().selectedTab=getBrowser().addTab(submission.uri.spec, null, null, submission.postData, IN_BACKGROUND, false);
   };  
   if(event.button == 1)
   {  goDoCommand("cmd_copy");        
      var str = readFromClipboard();
      if (!str) return;
      if (IN_NEW_TAB) getBrowser().selectedTab=getBrowser().addTab(str, null, null, null, IN_BACKGROUND, false); else gBrowser.loadURI(str);
   };  
   if(event.button == 0)
   {  if(!event.shiftKey)
      {  var str = gURLBar.value;
         var tab = gBrowser.mCurrentTab;
         gBrowser.duplicateTab(tab);
         gBrowser.mTabContainer.selectedIndex++;
         gBrowser.removeTab(tab);
         gBrowser.loadURI(str);
      }  else BrowserReloadSkipCache();
   }; 
};

Использована большая часть кода кнопки Search and open. За помощь большое спасибо okkamas_knife и bunda1.

9282e771e719.jpg
На скрине: слева от адресной строки - кнопка Select Search Engine, справа - кнопка Go plus!

Update.
Исправил и дополнил описание и примечания. Заменил tooltipText. 30.09.2011

Заменил код (ЛКМ) на более корректный. Заменил варианты стилей. 01.10.2011

Отредактировано ignorecheats (01-10-2011 11:02:17)

Отсутствует

 

№7629-09-2011 11:09:58

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

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

Go plus focus (Firefox)
Вариант кнопки Go plus!, имеет полностью идентичные функции и интерфейс.
Отличие - в ее поведении при поиске(ПКМ), - зависимости источника текста для поиска от текущего фокуса.
Кнопка:
- ищет текст из адресной строки если адресная строка - в фокусе,
- если в фокусе страница, то ищет выделенный текст, а при отсутствии выделенного, - текст из буфера.

Примечание

скрытый текст
Кнопка требует большей внимательности для того, чтобы получить в результате поиска именно то, чего хотелось, зато не зависит от состояния адресной строки - можно, например, начать набирать в адресной строке текст для поиска, затем передумать )) и выделить другой текст на странице или скопировать в буфер и осуществить его поиск. (Кнопка Go plus! в такой ситуации требует сначала восстановить адрес, например, по контекстному меню ПКМ в поле адреса, а затем уже искать выделенное/из буфера, иначе будет флегматично искать то, что было набрано в адресной строке, не обращая внимание на фокус (движения мыши, жесты, клики по странице и т.п. суету )) )).

Остальные подробности см. в Примечаниях к кнопке Go plus!, пп. 2, 3.

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

Выделить код

Код:

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%20focus%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALlC//8zT6P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAx1P8ALcL/VG2//561//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAANN7/ADPb/wAwz/8ALL3/gpTR/wAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAADXj/////////////////wAy1v8ALsT/qLbj/wAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAA37f//////////////////////ADfr/wAz2/8AMMz/zNTt/wAAAAAAAAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAANuj/ADny/wA69////////////wA8//8AO/z/ADny/wA14/8nUNn/5Oj3/wAAAP8AAAD/AAAAAAAAAAAAAAAAADXj/wA25v8ANuj///////////8AN+3/ADn1/wA6+v8AOvf/ADny/wA26P9Wd+P/nrX//wAAAAAAAAAAAAAAAAU66/8AOPD///////////8AOPD/ADjw/wA36/8AN+v/ADjw/wA58v8AN+3/ADft/wA58v+1xPX/AAAAAAAAAAAFPPD///////////8AOvf/ADr3/wA69/8AOvf/ADr6/wA6+v8AOvf/ADn1/wA08v9ykff/nrX//wAAAAAAAAAAD0X3//////////////////////8APP//ADz//wA8//8AOvr/ADb6/2SE+v+etf//AAAAAAAAAAAAAAAAAAAAAApD//8APP//////////////////ADz//wA8//8APP//M2P//9Td/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUS///ADz//wA8//8APP//ADz//wA8//8KQ///rcD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEv//wA8//8APP//ADz//wA8//91lf//nrX//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRL//8APP//ADz//0dy///m6///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPR///ADz//73M//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuMj//561//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn/OsQYfzrEGDwKxBgMCsQYAzrEGAA6xBgAOsQYABrEGAAaxBgAesQYAfrEGAf6xBgP+sQYP/rEGP/6xBn/+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%5Bthis.tooltipText%20%3D%20%22L%3DGO/RELOAD%20%7C%20M%3DOPEN%20select./clipb.%7C%20R%3DSEARCH%20typed/sel/clipb.%7C%20Sh+L%3DH.RELOAD%22%3B%0A//this.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%22%29%3B%0A//this.setAttribute%28%22style%22%2C%20%22padding-left%3A%200px%20%21important%3B%20padding-right%3A%202px%20%21important%3B%22%29%3B%0Aconst%20IN_NEW_TAB%20%3D%20true%3B%0Aconst%20IN_BACKGROUND%20%3D%20false%3B%0A%0Athis.onclick%20%3D%20function%28event%29%0A%7B%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%0A%20%20%20%7B%20%20event.preventDefault%28%29%3B%20event.stopPropagation%28%29%3B%0A%20%20%20%20%20%20goDoCommand%28%22cmd_copy%22%29%3B%0A%20%20%20%20%20%20if%28gURLBar.focused%29%20%7Bvar%20str%20%3D%20gURLBar.value%3B%7D%20%20else%20%7Bvar%20str%20%3D%20readFromClipboard%28%29%3B%7D%0A%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%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28str%2C%20null%29%3B%0A%20%20%20%20%20%20getBrowser%28%29.selectedTab%3DgetBrowser%28%29.addTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20IN_BACKGROUND%2C%20false%29%3B%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20if%28event.button%20%3D%3D%201%29%0A%20%20%20%7B%20%20goDoCommand%28%22cmd_copy%22%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20str%20%3D%20readFromClipboard%28%29%3B%0A%20%20%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20%20%20if%20%28IN_NEW_TAB%29%20getBrowser%28%29.selectedTab%3DgetBrowser%28%29.addTab%28str%2C%20null%2C%20null%2C%20null%2C%20IN_BACKGROUND%2C%20false%29%3B%20else%20gBrowser.loadURI%28str%29%3B%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20if%28event.button%20%3D%3D%200%29%0A%20%20%20%7B%20%20if%28%21event.shiftKey%29%0A%20%20%20%20%20%20%7B%20%20var%20str%20%3D%20gURLBar.value%3B%0A%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20gBrowser.mCurrentTab%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.duplicateTab%28tab%29%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.mTabContainer.selectedIndex++%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.removeTab%28tab%29%3B%0A%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28str%29%3B%0A%20%20%20%20%20%20%7D%20%20else%20BrowserReloadSkipCache%28%29%3B%0A%20%20%20%7D%3B%20%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.tooltipText = "L=GO/RELOAD | M=OPEN select./clipb.| R=SEARCH typed/sel/clipb.| Sh+L=H.RELOAD";
//this.setAttribute("style", "padding-left: 0px !important;");
//this.setAttribute("style", "padding-left: 0px !important; padding-right: 2px !important;");
const IN_NEW_TAB = true;
const IN_BACKGROUND = false;

this.onclick = function(event)
{  if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
   {  event.preventDefault(); event.stopPropagation();
      goDoCommand("cmd_copy");
      if(gURLBar.focused) {var str = gURLBar.value;}  else {var str = readFromClipboard();}
      var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
      var submission = ss.currentEngine.getSubmission(str, null);
      getBrowser().selectedTab=getBrowser().addTab(submission.uri.spec, null, null, submission.postData, IN_BACKGROUND, false);
   };
   
   if(event.button == 1)
   {  goDoCommand("cmd_copy");        
      var str = readFromClipboard();
      if (!str) return;
      if (IN_NEW_TAB) getBrowser().selectedTab=getBrowser().addTab(str, null, null, null, IN_BACKGROUND, false); else gBrowser.loadURI(str);
   };
   
   if(event.button == 0)
   {  if(!event.shiftKey)
      {  var str = gURLBar.value;
         var tab = gBrowser.mCurrentTab;
         gBrowser.duplicateTab(tab);
         gBrowser.mTabContainer.selectedIndex++;
         gBrowser.removeTab(tab);
         gBrowser.loadURI(str);
      }  else BrowserReloadSkipCache();
   }; 
};

За вариант поведения (кода блока ПКМ) спасибо bunda1.

Update. Заменил код (ЛКМ) на более корректный. Заменил иконку. 01.10.2011

Отредактировано ignorecheats (01-10-2011 11:04:27)

Отсутствует

 

Board footer

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