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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№122-11-2009 13:29:00

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

Готовые кнопки для 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)

Отсутствует

 

№222-11-2009 14:34:26

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

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

ВСЕ КНОПКИ В МОЁМ СООБЩЕНИИ ДЛЯ FIREFOX

-------------------------------------------------------------------------------------------------------------------------
Qick About:Config

Иконка

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAAlZJREFUeJx9kd9LU2EYxz9n50zc2abbcbl+6XTahRYhlKFC2EVEFIFSUEIgRKt/oMsu6qIrvepGEOyqsItAQoisMJJAyX5oUzeGuinlXE63/DU3z87poiWb077w8ry8PN/P8z7PI5DR4OBgUtO0bfaQwWAQI5HIl7a2tmvAYl6CxWJpVVVV3+8kEgk9EAjoPT09n4CiHHgm6ntVztbGxgbt7e31XV1drwHHbsB/JUkSqqoSjUbxeDyNHR0d/cBBACHTQks8Hu/7ZxgemWBiehOzRUGQRJLrK5AKUneymnQ6jd1up7m5+W44HO6Wsivpus7zF0OUuU9w++YBossJ1hMqir2S+R/V+LxjXLl8BpPJhCAIIkAOwOebIRIv4bQi09s/jUEAo2igqjyFrVhmIVZCMBimttadN0QAup+O4J/bYuBjiNGxCP3vZvEGlnG7itjcTCLLRfT2fcuZTw5gaibOyzcTjE8tcelcBbLJSHJL5fETL7Pz68wtrPF1MrI/QC4Q2E5peH2/0NLQcqEau01m4EOISX+MtbUkBca/G9c0LR/QUKcgigI/F1eRTRL+mRXeDoWQJAPvR+bwBZdoqLPv/4MbVxtxlSxT4TpEfDWFKAhUlhVjsxWSRGTrt5/rrU35gHQ6DYDVaqXzfhPOwhCj3yOUH1U4f7aKU8dLcRhDPLpXj9VqRdf1HU/OGjVNo6bmGJ0PD/NqYJjJz+OgQ2lpIZ0PLmI2m9F1faf/PIDD4UDTNBRFwXPrSA44W6Io7tyFTHQ5nc47WlbmblPWuwAQi8WeAb4/5F0JMc+AnhQAAAAASUVORK5CYII=


Код "ссылка"

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%0D%0A%20%20%3Cname%3Eabout%3Aconfig%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAAlZJREFUeJx9kd9LU2EYxz9n50zc2abbcbl+6XTahRYhlKFC2EVEFIFSUEIgRKt/oMsu6qIrvepGEOyqsItAQoisMJJAyX5oUzeGuinlXE63/DU3z87poiWb077w8ry8PN/P8z7PI5DR4OBgUtO0bfaQwWAQI5HIl7a2tmvAYl6CxWJpVVVV3+8kEgk9EAjoPT09n4CiHHgm6ntVztbGxgbt7e31XV1drwHHbsB/JUkSqqoSjUbxeDyNHR0d/cBBACHTQks8Hu/7ZxgemWBiehOzRUGQRJLrK5AKUneymnQ6jd1up7m5+W44HO6Wsivpus7zF0OUuU9w++YBossJ1hMqir2S+R/V+LxjXLl8BpPJhCAIIkAOwOebIRIv4bQi09s/jUEAo2igqjyFrVhmIVZCMBimttadN0QAup+O4J/bYuBjiNGxCP3vZvEGlnG7itjcTCLLRfT2fcuZTw5gaibOyzcTjE8tcelcBbLJSHJL5fETL7Pz68wtrPF1MrI/QC4Q2E5peH2/0NLQcqEau01m4EOISX+MtbUkBca/G9c0LR/QUKcgigI/F1eRTRL+mRXeDoWQJAPvR+bwBZdoqLPv/4MbVxtxlSxT4TpEfDWFKAhUlhVjsxWSRGTrt5/rrU35gHQ6DYDVaqXzfhPOwhCj3yOUH1U4f7aKU8dLcRhDPLpXj9VqRdf1HU/OGjVNo6bmGJ0PD/NqYJjJz+OgQ2lpIZ0PLmI2m9F1faf/PIDD4UDTNBRFwXPrSA44W6Io7tyFTHQ5nc47WlbmblPWuwAQi8WeAb4/5F0JMc+AnhQAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aconfig%22%29%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E


Код кнопки

getBrowser (). selectedTab = getBrowser (). addTab ("about:config")


-------------------------------------------------------------------------------------------------------------------------
Block Site Button
Кнопка для дополнения BlockSite. Данная кнопка выводит запрос на добавление текущей страницы в список блокировки и вносит её туда в случае подтверждения.
Иконка

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuMzap5+IlAAACu0lEQVQ4T21Ta0hTYRg+23GbOm+TdFZejrk5L6hked3QJkIr9YdYQRA2QrcpZqbRn6SICEN/RBT9EIJWoNSPLiKUIizDa1OPHqeZIGhBRqKzpsVZ1tPZEYdzO/D+ON/3Ps/zPe9FQOz5egOj9U7h1vl/gj/HAsESTuFfYklMEKxw6x13br76DY/3Yvj/YUkC1e8fR9vOVmGj8xl+FxbBLpRgjZTgl4DEF7EAHeEE7kQRNBeUB8m4KJEaizxsX3/+Gmut9zEWfQQjKjXGj5+BVXcKlpRsDAbIsEKKwATwJHYPElqkoje7e7FyrQW0shA3CAKcgkdY8ovQJ5WBO9whoflX2MgU/deaZqzfbAOjPOYFdBFNGi9hOK8Qm0ISPUEhnC1yx46emCFTLM5HZtjkWT6VGWMDRnO1YA1G9EXsx1tNAfqlUnCFdVmxEPMx3GVdA2yKIi91m+EyxnKKeHC/Kg1WUx2f8zQslLdyV87ZXDyQCwensFBR60EwW92IidxiOGtqMZCYjnHTRfd9T2kJlv22bRCLwalwhB/EfPE5d8JcdRMm83RgG5swnJQJ2ljvQd5TdhKrpHCb4COpAisQYVqh5ZPmq65gOr8EbPN1DMWmYoor4N6OPJGF8Ba4GoBgyGSLQyjFnCQOTFYpZtRlYG/dxgiVgWlDgxfY1eJBWSiWAsjtIk75Jek/SSj8lMdhVqUBq78Aa0w6ZgyNPlv66lA8HFx0yEUuAj0/C1axkv4emwxotZjYlwRrjs6ncleCEguZmWCSKX6k3eM8KlZQA/7x9uWjGjjKT4NJU4NbKozqKjB0ohwvgyPwIU+DjcpKMAVZ3qPsYnrvT1F9gdH0iCIdKwYT0N6O1ZY2/HjwEDCb8bnehI6MGN/LtHuzuoOi9C9CIiydYTK8UeegqyAb9yJFaI0SWNyedwH+A+D1pJXWZfRiAAAAAElFTkSuQmCC


Код "ссылка"

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%0D%0A%20%20%3Cname%3EBlockSite%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuMzap5+IlAAACu0lEQVQ4T21Ta0hTYRg+23GbOm+TdFZejrk5L6hked3QJkIr9YdYQRA2QrcpZqbRn6SICEN/RBT9EIJWoNSPLiKUIizDa1OPHqeZIGhBRqKzpsVZ1tPZEYdzO/D+ON/3Ps/zPe9FQOz5egOj9U7h1vl/gj/HAsESTuFfYklMEKxw6x13br76DY/3Yvj/YUkC1e8fR9vOVmGj8xl+FxbBLpRgjZTgl4DEF7EAHeEE7kQRNBeUB8m4KJEaizxsX3/+Gmut9zEWfQQjKjXGj5+BVXcKlpRsDAbIsEKKwATwJHYPElqkoje7e7FyrQW0shA3CAKcgkdY8ovQJ5WBO9whoflX2MgU/deaZqzfbAOjPOYFdBFNGi9hOK8Qm0ISPUEhnC1yx46emCFTLM5HZtjkWT6VGWMDRnO1YA1G9EXsx1tNAfqlUnCFdVmxEPMx3GVdA2yKIi91m+EyxnKKeHC/Kg1WUx2f8zQslLdyV87ZXDyQCwensFBR60EwW92IidxiOGtqMZCYjnHTRfd9T2kJlv22bRCLwalwhB/EfPE5d8JcdRMm83RgG5swnJQJ2ljvQd5TdhKrpHCb4COpAisQYVqh5ZPmq65gOr8EbPN1DMWmYoor4N6OPJGF8Ba4GoBgyGSLQyjFnCQOTFYpZtRlYG/dxgiVgWlDgxfY1eJBWSiWAsjtIk75Jek/SSj8lMdhVqUBq78Aa0w6ZgyNPlv66lA8HFx0yEUuAj0/C1axkv4emwxotZjYlwRrjs6ncleCEguZmWCSKX6k3eM8KlZQA/7x9uWjGjjKT4NJU4NbKozqKjB0ohwvgyPwIU+DjcpKMAVZ3qPsYnrvT1F9gdH0iCIdKwYT0N6O1ZY2/HjwEDCb8bnehI6MGN/LtHuzuoOi9C9CIiydYTK8UeegqyAb9yJFaI0SWNyedwH+A+D1pJXWZfRiAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Avar%20Cc%20%3D%20Components.%20classes%3B%0Avar%20Ci%20%3D%20Components.%20interfaces%3B%0Avar%20NSISSI%20%3D%20Ci.%20nsISupportsString%3B%0Avar%20newLocation%20%3D%20prompt%20%28%22%u0414%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0447%u0451%u0440%u043D%u044B%u0439%20%u043B%u0438%u0441%u0442%22%2C%20getBrowser%20%28%29.%20contentDocument.%20location.%20href%29%3B%0Aif%20%28%21newLocation%29%20return%3B%0Avar%20blockedWebsitesArray%3B%0Avar%20BlockSitePrefBranch%20%3D%20Cc%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Ci.%20nsIPrefService%29.%20getBranch%28%22BlockSite.%22%29%3B%0Aif%20%28BlockSitePrefBranch.%20prefHasUserValue%20%28%22locations%22%29%29%0A%7B%0A%20%20%20%20blockedWebsitesString%20%3D%20BlockSitePrefBranch.%20getComplexValue%20%28%22locations%22%2C%20NSISSI%29.%20data%3B%0A%20%20%20%20blockedWebsitesArray%20%3D%20blockedWebsitesString.%20split%20%28%22%7C%7C%7C%22%29%3B%0A%7D%0Aelse%0A%7B%0A%20%20%20%20blockedWebsitesArray%20%3D%20new%20Array%28%29%3B%0A%7D%0AblockedWebsitesArray.%20push%20%28newLocation%29%3B%0Avar%20locationNsIString%20%3D%20Cc%20%5B%22@mozilla.org/supports-string%3B1%22%5D.%20createInstance%20%28NSISSI%29%3B%0AlocationNsIString.%20data%20%3D%20blockedWebsitesArray.%20join%20%28%22%7C%7C%7C%22%29%3B%0ABlockSitePrefBranch.%20setComplexValue%20%28%22locations%22%2C%20NSISSI%2C%20locationNsIString%29%3B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u041A%u043D%u043E%u043F%u043A%u0430%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0441%u0430%u0439%u0442%20%u0432%20%u0441%u043F%u0438%u0441%u043E%u043A%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%20BlockSite%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E


Код кнопки

var Cc = Components. classes;
var Ci = Components. interfaces;
var NSISSI = Ci. nsISupportsString;
var newLocation = prompt ("Добавление сайта в чёрный лист", getBrowser (). contentDocument. location. href);
if (!newLocation) return;
var blockedWebsitesArray;
var BlockSitePrefBranch = Cc ["@mozilla.org/preferences-service;1"]. getService (Ci. nsIPrefService). getBranch("BlockSite.");
if (BlockSitePrefBranch. prefHasUserValue ("locations"))
{
    blockedWebsitesString = BlockSitePrefBranch. getComplexValue ("locations", NSISSI). data;
    blockedWebsitesArray = blockedWebsitesString. split ("|||");
}
else
{
    blockedWebsitesArray = new Array();
}
blockedWebsitesArray. push (newLocation);
var locationNsIString = Cc ["@mozilla.org/supports-string;1"]. createInstance (NSISSI);
locationNsIString. data = blockedWebsitesArray. join ("|||");
BlockSitePrefBranch. setComplexValue ("locations", NSISSI, locationNsIString);


-------------------------------------------------------------------------------------------------------------------------
DownloadFolder
С помощью данной кнопки открывается папка, куда сохраняются загрузки.
Иконка

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAACBjSFJNAACHCAAAjBsAAPxxAACE0wAAeY0AAO8KAAA8/QAAIDcIc+hqAAABu2lDQ1BJQ0MgUHJvZmlsZQAAOMuVks8rRFEUx7/viSkhycxCqZckC6aXsbBisPAji2lSfmQz8+YZamZc973xY8fGkrJgQxEb5Q+QlLEkOyWyHbKSUiKm59x3MaWGnHq9z/l2z733fM8FirQIYwkVQDJl83BPlzY8Mqp5rlCKGnhRj8qIYbHOUGgABeP5Eor4XzSLve5KVk6zr5nc0ol/yzdwcIvfo5zTgYCiEVfHJbcKjkruFTxrM5t4TLAxEYkRM+ImPhjuJt4grohL3hcclXwkeMaIi9pzYj0Vm0wRvxO3xUzLAFRx1qLBOK1RD4iDyeQU7a++EDcKL+Q15x6Ajm3S1/Pa0Bqw3w549/JaQ5iuSNphNq89+Vx/FN+ZNR5ocSWljAPFL47zVAt4DoEcd5y3TcfJ7QJF10Bm2kjzmU+PFDUA/JXLPmUu5+ESCrH0wg0d2MlQP4T9QWBzgfqgpOoGCJE2GIQaCHx90jc5O0s8mGgibTKufw8UFsLoQRc0RJFAGiYYOPSCFf8P25xze+2eYvN8Mj5ha5308kytL2X4m7QWXW/7vV7OWERJJbBapy6ULR+n7x9/rvsAMCGEevwX0AsAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My4zNqnn4iUAAAJKSURBVDhPrZPtS1NhGMbnQMTo5Wuf+mYf+hCtKVYQqymZ86WVklGtgTJFG9KWmyT0ZpiZzDWrOZ3bmqAxQ526OXtZFEhZrG26qWtlIsFDLehfuLrPqYWHxCA6cPFc58D9u1/O/YhE/+kR52rdM7lNI2yPfpTt1o+wHO0j/hR4HX1v8LBdGucM5RWvzZ1VcmOSqVxRlNuiUFijkFvC/Cnw9yM4bHqLfOMYo+CstYDssjYfq3BEUGSbQwEFSk0h/hR4AkjaZ5Hf7OUA2QLAsZt+Vj0Uh9IRQ2l/DIU9c/y51pf0zfOVrQs43u5ntZ4FVDjj/wao7Jhi6sEYlM4YiilTnvkdXwUnaddPz7Wz99ab9Ss41RlgF70JqAeXcNK9CIU9hnKHsJoNWzhjmmYtviRqPe+hIoiSWjnhivOQ9Dw2BKjvPGHNE0nUDXOABI72zvMQrpI8c/jvLdR0P2WdwRU0Ty5DO/oBqqEEzlElVQOL/ExK7fNQ2MKQm2kGxtE/f2PdvWes++UqrgZW0DSxDA21UkM6S5AyCi66/RgHDC5ILzghaej/Qnu0SbAH561BZnmxiuvTKzCMf+SzVz9cwumBBcjvhiC75EZv6DuujcdRbOx5RcGZAkCj7Tl78PozuoKraJ36BP1IEo00Dw2BKvtoQy8PoXWCgg3WWVFm5jYKzkgDOLO1yOgOqU2Br1Ud/pSyzZcquOJNFZJkLWMpiW44Jam3fzuis0REYvGOX2v8+zJxZgsph7SPdJAkIx0SKmM/ve8kbSdtTt/GH8YgtdZVWZNAAAAAAElFTkSuQmCC


Код "ссылка"

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%0D%0A%20%20%3Cname%3EDownloadFolder%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGeYUxB9wAAACBjSFJNAACHCAAAjBsAAPxxAACE0wAAeY0AAO8KAAA8/QAAIDcIc+hqAAABu2lDQ1BJQ0MgUHJvZmlsZQAAOMuVks8rRFEUx7/viSkhycxCqZckC6aXsbBisPAji2lSfmQz8+YZamZc973xY8fGkrJgQxEb5Q+QlLEkOyWyHbKSUiKm59x3MaWGnHq9z/l2z733fM8FirQIYwkVQDJl83BPlzY8Mqp5rlCKGnhRj8qIYbHOUGgABeP5Eor4XzSLve5KVk6zr5nc0ol/yzdwcIvfo5zTgYCiEVfHJbcKjkruFTxrM5t4TLAxEYkRM+ImPhjuJt4grohL3hcclXwkeMaIi9pzYj0Vm0wRvxO3xUzLAFRx1qLBOK1RD4iDyeQU7a++EDcKL+Q15x6Ajm3S1/Pa0Bqw3w549/JaQ5iuSNphNq89+Vx/FN+ZNR5ocSWljAPFL47zVAt4DoEcd5y3TcfJ7QJF10Bm2kjzmU+PFDUA/JXLPmUu5+ESCrH0wg0d2MlQP4T9QWBzgfqgpOoGCJE2GIQaCHx90jc5O0s8mGgibTKufw8UFsLoQRc0RJFAGiYYOPSCFf8P25xze+2eYvN8Mj5ha5308kytL2X4m7QWXW/7vV7OWERJJbBapy6ULR+n7x9/rvsAMCGEevwX0AsAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My4zNqnn4iUAAAJKSURBVDhPrZPtS1NhGMbnQMTo5Wuf+mYf+hCtKVYQqymZ86WVklGtgTJFG9KWmyT0ZpiZzDWrOZ3bmqAxQ526OXtZFEhZrG26qWtlIsFDLehfuLrPqYWHxCA6cPFc58D9u1/O/YhE/+kR52rdM7lNI2yPfpTt1o+wHO0j/hR4HX1v8LBdGucM5RWvzZ1VcmOSqVxRlNuiUFijkFvC/Cnw9yM4bHqLfOMYo+CstYDssjYfq3BEUGSbQwEFSk0h/hR4AkjaZ5Hf7OUA2QLAsZt+Vj0Uh9IRQ2l/DIU9c/y51pf0zfOVrQs43u5ntZ4FVDjj/wao7Jhi6sEYlM4YiilTnvkdXwUnaddPz7Wz99ab9Ss41RlgF70JqAeXcNK9CIU9hnKHsJoNWzhjmmYtviRqPe+hIoiSWjnhivOQ9Dw2BKjvPGHNE0nUDXOABI72zvMQrpI8c/jvLdR0P2WdwRU0Ty5DO/oBqqEEzlElVQOL/ExK7fNQ2MKQm2kGxtE/f2PdvWes++UqrgZW0DSxDA21UkM6S5AyCi66/RgHDC5ILzghaej/Qnu0SbAH561BZnmxiuvTKzCMf+SzVz9cwumBBcjvhiC75EZv6DuujcdRbOx5RcGZAkCj7Tl78PozuoKraJ36BP1IEo00Dw2BKvtoQy8PoXWCgg3WWVFm5jYKzkgDOLO1yOgOqU2Br1Ud/pSyzZcquOJNFZJkLWMpiW44Jam3fzuis0REYvGOX2v8+zJxZgsph7SPdJAkIx0SKmM/ve8kbSdtTt/GH8YgtdZVWZNAAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Afunction%20startProcess%20%28path%2C%20args%29%0A%7B%0Avar%20file%20%3D%20Components.%20classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%20%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20var%20process%20%3D%20Components.%20classes%20%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%20createInstance%20%28Components.%20interfaces.%20nsIProcess%29%3B%0A%20%20%20%20file.%20initWithPath%20%28path%29%3B%0A%20%20%20%20if%20%28args%20%3D%3D%20%22%22%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20file.%20launch%20%28%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20process.%20init%20%28file%29%3B%0A%20%20%20%20if%20%28%21this.%20pid%29%0A%20%20%20%20%20%20%20%20this.%20pid%20%3D%20%5B%5D%3B%0A%20%20%20%20this.%20pid.%20push%20%28process.%20run%20%28false%2C%20%5Bargs%5D%2C%201%29%29%3B%20%0A%7D%0Afunction%20getPref%20%28pName%29%0A%7B%0A%20%20%20%20var%20prefs%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20getService%20%28Components.%20interfaces.%20nsIPrefBranch%29%3B%0A%20%20%20%20var%20res%20%3D%20%22%22%3B%0A%20%20%20%20try%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20res%20%3D%20prefs.%20getComplexValue%20%28%22browser.download.%22%20+%20pName%2C%20Components.%20interfaces.%20nsILocalFile%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%3B%0A%20%20%20%20return%20res%3B%0A%7D%0Avar%20folderList%20%3D%20custombuttonsUtils.%20getPrefs%20%28%22browser.download.folderList%22%29%3B%0Avar%20fileLoc%20%3D%20Components.%20classes%20%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20getService%20%28Components.%20interfaces.%20nsIProperties%29%3B%0Avar%20desk%20%3D%20fileLoc.%20get%20%28%22Desk%22%2C%20Components.%20interfaces.%20nsILocalFile%29%3B%0Avar%20dnldMgr%20%3D%20Components.%20classes%5B%22@mozilla.org/download-manager%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20getService%28Components.interfaces.nsIDownloadManager%29%3B%0Avar%20ddd%20%3D%20dnldMgr.%20defaultDownloadsDirectory%3B%0Avar%20dir%20%3D%20%22%22%3B%0Aif%20%28folderList%20%3D%3D%200%29%20//%20desktop%0A%20%20%20%20dir%20%3D%20desk.%20path%3B%0Aelse%20if%20%28folderList%20%3D%3D%201%29%20//%20default%20downloads%20directory%0A%20%20%20%20dir%20%3D%20ddd.%20path%3B%0Aelse%0A%7B%0A%20%20%20%20dir%20%3D%20getPref%20%28%22dir%22%29%20%7C%7C%20getPref%20%28%22downloadDir%22%29%20%7C%7C%20getPref%20%28%22lastDir%22%29%20%7C%7C%20getPref%20%28%22defaultFolder%22%29%20%7C%7C%20%22%22%3B%0A%20%20%20%20if%20%28%21dir%29%0A%20%20%20%20%20%20%20%20dir%20%3D%20fileLoc.%20get%20%28%22DfltDwnld%22%2C%20Components.%20interfaces.%20nsILocalFile%29%3B%0A%20%20%20%20dir%20%3D%20dir.%20path%3B%0A%7D%0AstartProcess%20%28dir%2C%20%22%22%29%3B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E


Код кнопки

function startProcess (path, args)
{
var file = Components. classes["@mozilla.org/file/local;1"].
               createInstance (Components.interfaces.nsILocalFile);
    var process = Components. classes ["@mozilla.org/process/util;1"].
                  createInstance (Components. interfaces. nsIProcess);
    file. initWithPath (path);
    if (args == "")
    {
        file. launch ();
        return;
    }
    process. init (file);
    if (!this. pid)
        this. pid = [];
    this. pid. push (process. run (false, [args], 1));
}
function getPref (pName)
{
    var prefs = Components. classes ["@mozilla.org/preferences-service;1"].
            getService (Components. interfaces. nsIPrefBranch);
    var res = "";
    try
    {
        res = prefs. getComplexValue ("browser.download." + pName, Components. interfaces. nsILocalFile);
    } catch (e) {};
    return res;
}
var folderList = custombuttonsUtils. getPrefs ("browser.download.folderList");
var fileLoc = Components. classes ["@mozilla.org/file/directory_service;1"].
          getService (Components. interfaces. nsIProperties);
var desk = fileLoc. get ("Desk", Components. interfaces. nsILocalFile);
var dnldMgr = Components. classes["@mozilla.org/download-manager;1"].
          getService(Components.interfaces.nsIDownloadManager);
var ddd = dnldMgr. defaultDownloadsDirectory;
var dir = "";
if (folderList == 0) // desktop
    dir = desk. path;
else if (folderList == 1) // default downloads directory
    dir = ddd. path;
else
{
    dir = getPref ("dir") || getPref ("downloadDir") || getPref ("lastDir") || getPref ("defaultFolder") || "";
    if (!dir)
        dir = fileLoc. get ("DfltDwnld", Components. interfaces. nsILocalFile);
    dir = dir. path;
}
startProcess (dir, "");


--------------------------------------------------------------------------------------------------------
Qick Bookmarks
Кнопка для "одноразового" хранения закладок. Для того чтобы сохранить закладку: достаточно перетащить вкладку на кнопку. При этом вкладка закроется а закладка на неё появится в списке кнопки. При открытии закладки она убирается из списка. Открытые страницы проматываются к тому месту, где они были сохранены. Удалить закладку можно щёлкнув на неё правой кнопкой мыши. Для того чтобы открыть все закладки из кнопки нужно нажать на кнопку средней кнопкой мыши.
Иконка
Тёмный вариант

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAA7dJREFUOE+tlF1Im3cUxpOgOBE/5khxGPCzZiaamaiJXzFq/DbqmyCa4CdoNEr8SFBnTRs76CZ2sq5IhxM1Y5OpMMQLdzE2GELvdreb7WIvnevawZBmbBc2lvns/P+gtOzN3QKHvLwJP55znnMeueylj8PhsB0fH7/WU61W+O262MjjnxQ4+0t+++E/zx/9HXOhUChk5+fnskgkgouLC1lMTAxiY2NlhYWFP+zs7Pz8Mos/19XViWazGaEPFnD27fs4/XwM4S99eC/gg9/vx8jICKxWK2pra9HY2Ii2tjZ0dnaChKz8B8ZeNDQ0iOXl5fj4phunn7kR3p/Ei4f3sDTvRVdXF0wmE6qqqjiwqakJvb29mJ+fx/DwsDSQ/iQajUbc87sQ/sKD8++W8eJ4BcPODhQVFYH9VllZyVW63W4EAgEEg0H2LA1sbm4W9Xo97k478fzrJUS+eRfhkAstRjUHlpaWcuDQ0BB8Ph9Xt7i4GB3IFBYUFOCOtxtnX91A+NNenLyTic2VG9ja2sL29jb29/dxdHTE6xI6OjoqrZBaEdVqNW6NtCO87cRvt3V4cisPn9wNYmNjg0MPDg5weHjIa3Jykps1NjYmDSSHxaysLPjsJjxdLsfTJQ3+fFCP+3cWsLa2hs3NTezu7vLa29uDx+PhUPqWBpKLYlJSEjxNWvy+bMSzj8x4dt+ClcA0VldXsb6+zttmFQqFmLsYHx+PDiRDRFpeOMtUOP2wCqerpDKoxpBgxcDAAFfEWpydncXc3BwGBwe521EVajQakW2/w3ANfywb+PweTSth1mXxHbRYLGhtbYXdbkd3dzffQ+Y4qZRuOScnR6RTgkOvxJOb1/GLPw2/zqlQUZhztTJsqS+hPT096Ovrw8TEhDQwPT1djIuLg/3tVJzMpuOEYEylUZMJUn+13Oxa6ExBe4v29vboLSuVSjE+Ph4OAjJljxcyeTEgBQAMBsMr53d5z1FbTk5OFhMSEkjhG/h+PA0+yzX86FXCpM28upSKigo+y/r6erS0tKCjowNer1e6ZVInJiYmwpT9Okqup4FmClvRm9C/lY3i4mKUlZWBpRFrl4WDzWbjBk1NTUkDyRCRVEKlUoEteF5eHrRa7SvBUFNTA0olbgyLLpZCdILSQLlcLqakpCAjIwO5ubnIz8+HTqdDSUkJWKxVV1fzpLk0g3IQTqcTMzMz0kCKRGtqamonqRNInUBBIRDMTnNz0NzsBLOTOoHUCaROIHWCy+US+vv7syUD9v94+S8Q4DBE9A8P2gAAAABJRU5ErkJggg==

Светлый вариант

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAABJ0QAASdEBBfyrlQAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAA6xJREFUOE+llHtMW2UYxl0hzZjxNl22JZt/q/9o3JwUilVijE7HyOyMEJlOZC1YIolpFuKMW+aSaaKyjRDYcGioYYNlJUxIh6w3DmVt6WXtWUsZdEgLpZfTewuFo4/nFDBZNsDML3mSNyfv98vzfO+bk/PIQ5z6dx8reSKPk7jjpxMPcf3eK88+w93oaNs/3ntid+P/hm3kcnJbpS99+fdoM0Kao5mSwq3PMVDOfwGzTSuNnO8P7Th96+I71rHuT6mE5du/4LkETMng00gzjiuHJvVNAuVHgs377gNzntyybdsnx+T8b1q8rx1v8Ww//LWc8/jT29/etXmrqb3UgImfgJl2wN8JzF4GvL8gQ55E58nCM089mpv7L/Dg+wfeGrje52hsanLzmgcg7SdxlFFBixINZ8+4BxS9jr6eq3dvq44DnkYGehGYbmXqc2j/8cBpBrThHnc1oiphOhmHyXoLvOYb+EJBoo4R77wKhE6HVCKKZCwM51ADELgKRNRAWMm4vISu81XS+6KywFQ8ihGzBfmMK1GvHeI+EvkXNMvAGAI+L/40n8PoyGXoNL2Q/fzd735XZ3qw55jsgcBEjILBZEJhqxofX7Oj9IoFuy6oQQwNIRYOwOWwYlgth8/jxvTUBHj5r768983dO7+q2yd6IDAeCcIwYsR7HVoIOvR4sW0Ihb+qoFT+AcrvBRWYRjirGfi8k1ngqutSI64SRik/9EY9Dso1KOkxYD+jD68RUKtvIBL0IRKaRTTkB9vn93lQwMtfC3hkCWi4iTqVDhK1EdXXByEl9BjUqrKRY+Eg4pFQVkH/DAPkrQ78vFokjDIO9Pph/GA14JSsHWc7ZGiwGUEQGsSjFBLMlNlJJ+MRUEE/+AXrANlIw8METvzWhqnJcQRnp3GKqXW6wSyEXZ10MsYojggVAp9fsLpDSY1YyAJJmxlWs3EpXjQEp8OOUSeZBc2lEphLJzGfTiEWDaOIz18bGF55eCqQfSc2IrubrCMWNj+XQmZ+DguZeSTiMRQVFa0FrBaGgzPMFGeX3VHLMZecrcAWFzKgFxeQSibWBn5WefgDm8W4aLeaaNJmoW/brbSDtNFOB0m7nA56zDVKj98Zoycmxum7bjftcrkWi4uLX1l1DysrK/MqKip21tbWviASifeUl5e/sZc5AoGglBVbM99eF4vFeyQSyfNlZWU76uvruev+B81m8waCIHIUCgVXLpfndXV1bWLV3d2d19/fz9VqtTnrQf4BL3nIboFXhZoAAAAASUVORK5CYII=


Код "ссылка" (тёмный вариант)

Код "ссылка" (светлый вариант)

Код кнопки - Инициализация!!!

/*Initialization Code*/
var profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
    .getService(Components.interfaces.nsIProperties)
    .get("ProfD", Components.interfaces.nsILocalFile)
    .path;
var path = profileDir + "/tabbookmarks.xml";
this. loadInBackground = true;
this. reload = true;

this. handleDragOver = function (event)
{
    var dt = event. dataTransfer;
    var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
    if (!tab)
        return;
    event. preventDefault ();
    event. stopPropagation ();
    return dt. effectAllowed = dt. dropEffect = "link";
}

this. handleDrop = function (event)
{
    var dt = event. dataTransfer;
    var url = dt. mozGetDataAt ("text/x-moz-text-internal", 0);
    var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
    this. addMenuitem (tab, url);
};

this. __defineGetter__
(
    "ss",
    function ()
    {
        delete this.ss;
        return this.ss = Components.classes["@mozilla.org/browser/sessionstore;1"]
            .getService(Components.interfaces.nsISessionStore);
    }
);

this. __defineGetter__
(
    "ios",
    function ()
    {
        delete this.ios;
        return this.ios = Components.classes["@mozilla.org/network/io-service;1"]
            .getService(Components.interfaces.nsIIOService);
    }
);

this. addMenuitem = function (tab, url)
{
    var label = tab. label;
    var image = tab. image;

    var menu = this. menu;
    var mi = document. createElement ("menuitem");
    mi. setAttribute ("label", label);
    mi. setAttribute ("tab_data", this.ss.getTabState(tab));
    mi. setAttribute ("tooltiptext", url);
    mi. className = "menuitem-iconic bookmark-item";
    image && mi. setAttribute ("image", "moz-anno:favicon:" + image.replace(/#-moz-resolution=16,16$/, ""));
    menu. appendChild (mi);
    this. type = "menu";
    this. flushMenu (menu);

    var br = gBrowser;
    //if (br. tabContainer. childNodes. length > 1)
        //br. removeTab (tab);
        setTimeout(function() {
            br. removeTab (tab);
        }, 0);
};

this. deleteMenuitem = function (menuitem, dontFlush)
{
    var menu = this. menu;
    menu. removeChild (menuitem);
    this. checkEmpty (menu);
    !dontFlush && this. flushMenu (menu);
};

this. checkEmpty = function (menu)
{
    if (menu. getElementsByTagName ("menuitem"). length > 0)
        return;
    menu. hidePopup ();
    this. type = "";
};

this. flushMenu = function (menu)
{
    menu = menu || this. menu;
    var xs = new XMLSerializer ();
    var xmenu = xs. serializeToString (menu);
    var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
              createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
    suc. charset = "UTF-8";
    xmenu = suc. ConvertFromUnicode (xmenu);
    custombuttons. writeFile (path, xmenu);
};

this. getMenu = function (event)
{
    var menu = this. menu;
    if (menu)
        this. removeChild (menu);
    menu = "";
    try
    {
        file = Components. classes ["@mozilla.org/file/local;1"].
               createInstance (Components. interfaces. nsILocalFile);
        file. initWithPath (path);
        var fis = Components. classes ["@mozilla.org/network/file-input-stream;1"].
                  createInstance (Components. interfaces. nsIFileInputStream);
        fis.init (file, 0x01, 00004, null);
        var sis = Components. classes ["@mozilla.org/scriptableinputstream;1"].
                  createInstance (Components. interfaces. nsIScriptableInputStream);
        sis. init (fis);
        menu = sis. read (sis. available ());
        sis. close ();
        var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
                  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
        suc. charset = "UTF-8";
        menu = suc. ConvertToUnicode (menu);
        //menu = new XML (menu) || "";
        menu = new DOMParser (). parseFromString (menu, "application/xml"). documentElement;
    }
    catch (e)
    {
        menu = "";
    }
    if (!menu)
    {
        //menu =
        //<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        //       onclick="this. parentNode. openTab (event);"/>
        menu = document.createElement("menupopup");
        menu.setAttribute("onclick", "this. parentNode. openTab (event);");
    }
    //menu = new DOMParser (). parseFromString (menu. toXMLString (), "application/xml"). documentElement;
    this. appendChild (menu);
    if (menu. getElementsByTagName ("menuitem"). length > 0)
        this. type = "menu";
    this. orient = "horizontal";
    return menu;
};

this. __defineGetter__
(
    "menu",
    function ()
    {
        return this. getElementsByTagName("menupopup") [0] || null;
    }
);

this. openTab = function (event, mi)
{
    mi = mi || event. target;
    var bg = event ? this. loadInBackground : true;
    var menu = mi. parentNode;
    if (!event || event. button < 2)
    {
        var tab;
        if (event && event. button == 0)
            tab = gBrowser. mCurrentTab;
        else
            tab = gBrowser. loadOneTab("about:blank", null, null, null, bg, false);
        menu. hidePopup ();
        var tabData = mi. getAttribute ("tab_data");
        if(this.reload && !this.ios.offline) {
            //var wn = Components.interfaces.nsIWebNavigation;
            //gBrowser.getBrowserForTab(tab).reloadWithFlags(wn.LOAD_FLAGS_BYPASS_PROXY | wn.LOAD_FLAGS_BYPASS_CACHE);
            tab.linkedBrowser.addProgressListener(this.progressListener);
        }
        this.ss.setTabState(tab, tabData);

        // Following is part of Session Bookmarks 0.2.1pre - 2013-04-01
        // https://github.com/Infocatcher/Custom_Buttons/tree/master/Session_Bookmarks
        if(
            tab != gBrowser.selectedTab // Should be loaded automatically in this case
            && (
                tab.getAttribute("pending") == "true" // Gecko >= 9.0
                || tab.linkedBrowser.contentDocument.readyState == "uninitialized"
                // || tab.linkedBrowser.__SS_restoreState == 1
            )
        ) {
            tab.linkedBrowser.reload();
            // Show "Connecting…" instead of "New Tab"
            // (disable browser.sessionstore.restore_on_demand to see this bug)
            gBrowser.setTabTitleLoading && gBrowser.setTabTitleLoading(tab);
        }
    }
    else
        event. stopPropagation ();
    //this. deleteMenuitem (mi, !event);
    setTimeout(function() {
        this. deleteMenuitem (mi, !event);
    }.bind(this), 0);
};

this.progressListener = {
    // Part of Session Bookmarks 0.2.1pre - 2013-04-01
    // https://github.com/Infocatcher/Custom_Buttons/tree/master/Session_Bookmarks
    // Based on code of Session Manager 0.7.5
    QueryInterface: function(aIID) {
        if(
            aIID.equals(Components.interfaces.nsIWebProgressListener)
            || aIID.equals(Components.interfaces.nsISupportsWeakReference)
            || aIID.equals(Components.interfaces.nsISupports)
        )
            return this;
        throw Components.results.NS_NOINTERFACE;
    },
    onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) {
        try {
            if(aRequest.name == "about:blank")
                return;
        }
        catch(e) { // view-source: protocol
            if(e.name != "NS_ERROR_NOT_IMPLEMENTED")
                Components.utils.reportError(e);
        }
        var wpl = Components.interfaces.nsIWebProgressListener;
        if(aFlag & wpl.STATE_START) // Force load to bypass cache
            aRequest.loadFlags |= aRequest.LOAD_BYPASS_CACHE;
        else if(aFlag & wpl.STATE_STOP && aFlag & wpl.STATE_IS_NETWORK)
            aWebProgress.chromeEventHandler.removeProgressListener(this);
    },
    onLocationChange: function(aProgress, aRequest, aURI) {},
    onProgressChange: function(aWebProgress, aRequest, curSelf, maxSelf, curTot, maxTot) {},
    onStatusChange:   function(aWebProgress, aRequest, aStatus, aMessage) {},
    onSecurityChange: function(aWebProgress, aRequest, aState) {}
};

this. onclick = function (event)
{
    if (event. button != 1 || event. target != this)
        return;
    var menu = this. menu;
    var mis = menu. getElementsByTagName ("menuitem");
    while (mis. length)
        this. openTab (null, mis[0]);
    this. flushMenu (menu);
};
this.oncontextmenu = function(e) {
    if(
        !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey
        && e.target.localName == "menuitem"
    )
        e.preventDefault();
};

this. setAttribute ("ondragdrop", "return this. handleDrop (event);");
this. setAttribute ("ondragover", "return this. handleDragOver (event);");
this. setAttribute ("onmouseover", "if (event. target == this) this. getMenu (event);");
this. getMenu ();

Отредактировано Najlus (04-04-2013 17:26:17)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№324-11-2009 20:52:38

Jarichek
Member I
 
Группа: Members
Откуда: Минск
Зарегистрирован: 09-04-2009
Сообщений: 306
UA: Firefox 3.5

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

Bookmarks Menu (Firefox)
Немного более функциональная кнопка для доступа к закладкам.
По левому клику мышкой - открывается меню закладок.
По среднему клику мышкой - открытие диалога добавления в закладки.
По правому клику мышкой - открывается слева боковая панель закладок.
Shift+правый клик - меню кнопки.

Bookmarks Menu
Код кнопки

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0D%0A%20%20%3Cname%3EBookmarks%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20menu%20%3D%20document.%20getElementById%20%28%22bookmarksMenuPopup%22%29.%20cloneNode%20%28true%29%3B%0Afunction%20delId%28node%29%20%7B%0A%20%20%20%20node.removeAttribute%28%22id%22%29%3B%0A%20%20%20%20Array.forEach%28node.childNodes%2C%20delId%29%3B%0A%7D%0AdelId%28menu%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0A//this.%20type%20%3D%20%22menu-button%22%3B%0A//this.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20setAttribute%20%28%22popup%22%2C%20menu.%20id%20%3D%20%22cbBookmarks-%22%20+%20this.%20id%29%3B%0A%0Athis.%20onclick%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%201%29%0A%20%20%20%20%7B%0A%20%20%20%20%09if%20%28event.%20originalTarget.%20nodeName%20%21%3D%20%22toolbarbutton%22%29%0A%20%20%20%20%09%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20PlacesCommandHook.bookmarkCurrentPage%28true%2C%20PlacesUtils.bookmarksMenuFolderId%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%202%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28event.%20shiftKey%20%7C%7C%20%28event.%20originalTarget.%20nodeName%20%21%3D%20%22toolbarbutton%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20toggleSidebar%28%27viewBookmarksSidebar%27%29%3B%0A%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20event.%20stopPropagation%20%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

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

Выделить код

Код:

var menu = document. getElementById ("bookmarksMenuPopup"). cloneNode (true);
function delId(node) {
    node.removeAttribute("id");
    Array.forEach(node.childNodes, delId);
}
delId(menu);
this. appendChild (menu);
//this. type = "menu-button";
//this. orient = "horizontal";
this. setAttribute ("popup", menu. id = "cbBookmarks-" + this. id);

this. onclick = function (event)
{
    if (event. button == 1)
    {
        if (event. originalTarget. nodeName != "toolbarbutton")
            return;
        PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId);
    }
    else if (event. button == 2)
    {
        if (event. shiftKey || (event. originalTarget. nodeName != "toolbarbutton"))
            return;
        toggleSidebar('viewBookmarksSidebar');
        event. preventDefault ();
        event. stopPropagation ();
    }
};

Иконка (взята из расширения Personal Menu)

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgZJREFUeNqMkztoVEEUhv+7m2sgChJsFLXIFpqAUUyRRsS10UIhTToLAzaWWrvg2tnZCCJYBGwUJCgSbSMqoo2yplgbH0ExnSDmzsydl/+cfUjCLmbg3JnDzPnOf87MzWKMaDQapwDUrbVzeZ4f54zvu6ZgSgdNU6XlbGVtrENJcz7g84NmNoLOqNOa5xau4ujEXmxnzCw0Ze4BxFtevIW728i8eP1yHySAarWKGAMqWYba5DRK5xnguxAnQMOyjLFor76XwFR6H2DLUhzvPaohIjCLJ8TRD95xzczOir91VNKnJMDaZJYyPSwDLAFHDu5hYPItvO1Aepk3AbRR0FpToqZ8KyUk2PyJSYxkkQqt+CnJQAVGaWhFiCpQsk5DRWdnahgbzXHh9DR2sNCSAE/Q1iE9UAzMuj2oT+3H+dlD/QOzhw+IPXrRwtM3q/j5YwCgKP4QUJH6lt+28erjV9y8dKZ/6Nq9Z3jX/iYNHViCLgqRr4oNKG2weyyXzaWXLZkn9o3DpSY7N6QENjCVEEKAI2B85yiu3H6MT2vrWFr5gJPHarwBJ/sDAUmB9IBvwCqDJ69b7Djvn5LXqOr+83UJHgowWnVfF+B4lV4eTwrwHfPddRwCcLyiJEH2eVUhuH9BzBpT9ug5dx7RxeadzQAeXCGgDu5v/P713z/xy8MbWW/9V4ABABX3fg9RweLRAAAAAElFTkSuQmCC


Кнопка истории (Firefox)
Кнопка служит для быстрого доступа к истории посещения (не путать с закрытыми вкладами - здесь выводятся посещенные адреса)
Левый клик мышью - выводит список последних 37-и последних адресов
Средний клик мышью - Открывается весь журнал посещений в отдельном окне.
Правый клик мышью - Открывается история посещений слева в боковой панели.
Shift+правый клик - меню кнопки.
[spoiler=Кнопка истории]Код кнопки

Выделить код

Код:

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%0D%0A%20%20%3Cname%3EHistory%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20menu%20%3D%20document.%20getElementById%20%28%22goPopup%22%29.%20cloneNode%20%28true%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20menu.%20childNodes.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20if%20%28menu.%20childNodes%20%5Bi%5D.%20hasAttribute%20%28%22id%22%29%29%0A%20%20%20%20%20%20%20%20menu.%20childNodes%20%5Bi%5D.%20setAttribute%20%28%22hidden%22%2C%20%22true%22%29%3B%0A%7D%0Amenu.%20setAttribute%20%28%22place%22%2C%20%22type%3D0%26sort%3D4%26maxResults%3D37%22%29%3B%0Afunction%20delId%28node%29%20%7B%0A%20%20%20%20node.removeAttribute%28%22id%22%29%3B%0A%20%20%20%20Array.forEach%28node.childNodes%2C%20delId%29%3B%0A%7D%0AdelId%28menu%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0A//this.%20type%20%3D%20%22menu%22%3B%0A//this.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20setAttribute%20%28%22popup%22%2C%20menu.%20id%20%3D%20%22cbHistory-%22%20+%20this.%20id%29%3B%0A%0Athis.%20onclick%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20var%20node%20%3D%20event.%20originalTarget.%20node%3B%0A%20%20%20%20if%20%28%28event.%20button%20%3C%202%29%20%26%26%20node%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20PlacesUIUtils.%20markPageAsTyped%20%28node.%20uri%29%3B%0A%20%20%20%20%20%20%20%20openUILink%20%28node.%20uri%2C%20event%2C%20false%2C%20true%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%201%29%0A%20%20%20%20%20%20%20%20PlacesCommandHook.showPlacesOrganizer%28%27History%27%29%3B%0A%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%202%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28event.%20shiftKey%20%7C%7C%20%28event.%20originalTarget.%20nodeName%20%21%3D%20%22toolbarbutton%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20toggleSidebar%20%28%22viewHistorySidebar%22%29%3B%0A%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20event.%20stopPropagation%20%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

Инициализация
(количество выводимых последних адресов посещений настраивается путем редактирования строки - menu. setAttribute ("place", "type=0&sort=4&maxResults=37");)

Выделить код

Код:

var menu = document. getElementById ("goPopup"). cloneNode (true);
for (var i = 0; i < menu. childNodes. length; i++)
{
    if (menu. childNodes [i]. hasAttribute ("id"))
        menu. childNodes [i]. setAttribute ("hidden", "true");
}
menu. setAttribute ("place", "type=0&sort=4&maxResults=37");
function delId(node) {
    node.removeAttribute("id");
    Array.forEach(node.childNodes, delId);
}
delId(menu);
this. appendChild (menu);
//this. type = "menu";
//this. orient = "horizontal";
this. setAttribute ("popup", menu. id = "cbHistory-" + this. id);

this. onclick = function (event)
{
    var node = event. originalTarget. node;
    if ((event. button < 2) && node)
    {
        PlacesUIUtils. markPageAsTyped (node. uri);
        openUILink (node. uri, event, false, true);
    }
    else if (event. button == 1)
        PlacesCommandHook.showPlacesOrganizer('History');
    else if (event. button == 2)
    {
        if (event. shiftKey || (event. originalTarget. nodeName != "toolbarbutton"))
            return;
        toggleSidebar ("viewHistorySidebar");
        event. preventDefault ();
        event. stopPropagation ();
    }
};

Иконка (также позаимствована из расширения Personal Menu)

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwlJREFUeNpUk99LFFEUx79zZ2dnRncdd13dpEJtWX/3UKBFPx6Cgt6i8KGXoKKHLIKK8r0XISN705fAf0ACI3qIXiKJskj6QRIlmVhCurq/dGfmzp3p3EkXugwz3Ln3fM85n3OOEgQBtte9B+Oq7wdHa2rMM/FYbb9h6Bl5btvOfKm8MWPb9iNFUV7evjEotm2UbYG798eao1FtqK1194W6eMzinEP4W+J0hzEVpVK5sPR7eYLORoZuXlmuCkjjeLx2vCO755QQApwMrYYE4rqGTYfDFQHWV9fAfCmk4MfPxalKpTIoRdRaK61qmnanpyt73nE5ahIWevftxY4daQwPj+LA8ZNoaW1GKp0GpYFysYSEZXUWikV1+tXMc0Y5H2lr2XVJCB+xZD26e7ugqmqVy9zsO3Duww8UdHR3Ip5sAPcEmhqbLlH0RxgBG7Csupjr+8h2ZuliAI/EBO3l8oUHKe64Hhn6aO9sh1AYTMOMRaPRAUa0+ziFnkglwcizoHwpKogtuCyihf8k0I0Kh2lqxIeiIMiGbvQxQ9czHnnTAgmPPCtB1UCuF8+eQlGVUJQHPgwtAlVGRXtil2HhtSCsVLj+hU9pULiplIXFhQW8fzNL9VLoUcI78lxWT9pEqDnmCUHKDhgCOvD5vwgcV+Di1WvYf/Ajnj15jM2Kg8OHDoQCHCz0yD0+z6g0b2WTrK/k4DkiVJWUZSSViof2nm4cPnYCG8U80vU1yBds5HO5kBc5f8voNVkql8tUT3z/+g2ayqBTnpRuyERWRXo+d/Y0HC7w4dMXMGLguk7Z8/gko7yml34tP5T55VdWMfd5TrYnGhMmMmkLbY11aKw3sVrYxPTrWRRXV8CojGtrOWkzHbbyyOhYs2ma47t37jzFyYugdq1LJom2IPo+XKgorOWgeB5USncl92fKceywlavDJEUikcgQddgF0zAsl3rDD6sTQLJnjMF2nML6em5C+GKEJnL5v2ncHmfaH9V1/Ywe1fsjES0TUifajm3P0Dcc51vXL1fH+a8AAwBdk7sH+MV5ZQAAAABJRU5ErkJggg==

Отредактировано Jarichek (25-11-2009 00:51:48)

Отсутствует

 

№425-11-2009 01:12:12

Jarichek
Member I
 
Группа: Members
Откуда: Минск
Зарегистрирован: 09-04-2009
Сообщений: 306
UA: Firefox 3.5

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

Add-on's (Firefox)
для быстрого доступа к пункту меню Инструменты - дополнения (Расширенный вариант) (работает только в Firefox 3.*)
Левый клик мышью - открывает окно дополнений.
Средний клик мышью - открывает дополнения слева в боковой панели.
Crtl+Средний клик мышью - открывает дополнения в новой вкладке.
Правый клик мышью - отображается меню в виде списка всех дополнений и быстрым доступом к настройкам выбранного дополнения.

Add-on's
Код кнопки

Выделить код

Код:

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%0D%0A%20%20%3Cname%3E%u0414%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.url2xul%20%3D%20%27chrome%3A//mozapps/content/extensions/extensions.xul%27%3B%0Athis.onClick%20%3D%20function%20%28e%29%20%7B%0A%20%20%20%20switch%20%28e.button%29%20%7B%0A%20%20%20%20case%200%3A%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BrowserOpenAddonsMgr%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BrowserOpenExtensions%28%27extensions%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20t%20%3D%20gBrowser.mTabs%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20current%20%3D%20content.document.location.href%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20i%20%3D%20t.length%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28current%20%3D%3D%20this.url2xul%29%20gBrowser.removeCurrentTab%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20while%20%28true%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28--i%20%3C%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28current%20%3D%3D%20%27about%3Ablank%27%29%20//%20replace%20blank%20tab%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20loadURI%28this.url2xul%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20//%20add%20new%20tab%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28this.url2xul%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28t%5Bi%5D.linkedBrowser.currentURI.spec%20%3D%3D%20this.url2xul%29%20//%20popup%20loaded%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.tabContainer.childNodes%5Bi%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%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20openWebPanel%28this.tooltipText%2C%20this.url2xul%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%20%27this.onClick%28event%29%3B%27%29%3B%0A%0Aconst%20Cb%20%3D%20custombuttons%3B%0Aconst%20EXTENSION%20%3D%20Ci.nsIUpdateItem.TYPE_EXTENSION%3B%0A%0A%0A%0Afunction%20prop%28aElement%2C%20aString%29%20%7B%0A%20%20%20%20var%20emRDF%20%3D%20%22http%3A//www.mozilla.org/2004/em-rdf%23%22%3B%0A%20%20%20%20var%20arc%20%3D%20RDFService.GetResource%28emRDF%20+%20aString%29%3B%0A%20%20%20%20var%20target%20%3D%20extensionDS.GetTarget%28aElement%2C%20arc%2C%20true%29%3B%0A%20%20%20%20if%20%28target%20instanceof%20Ci.nsIRDFLiteral%29%20return%20target.Value%3B%0A%20%20%20%20if%20%28target%20instanceof%20Ci.nsIRDFInt%29%20return%20target.Value%3B%0A%20%20%20%20return%20null%3B%0A%7D%0A%0Avar%20cloneCBcontext%20%3D%20%7B%0A%20%20%20%20cloneItems%3A%20function%20%28aNode%2C%20aID%2C%20aSeparate%29%20%7B%0A%20%20%20%20%20%20%20%20var%20menupopup%20%3D%20document.getElementById%28aID%29.cloneNode%28true%29%3B%0A%20%20%20%20%20%20%20%20var%20menuitems%20%3D%20menupopup.childNodes.length%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20menuitems%3B%20i++%29%0A%20%20%20%20%20%20%20%20aNode.appendChild%28menupopup.firstChild%29%3B%0A%20%20%20%20%20%20%20%20if%20%28aSeparate%29%20aNode.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20makeMenu%3A%20function%20%28aNode%29%20%7B%0A%20%20%20%20%20%20%20%20var%20m%20%3D%20aNode.appendChild%28document.createElement%28%22menu%22%29%29%3B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%22label%22%2C%20%22Custom%20Button%22%29%3B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20%20%20%20%20%20%20var%20mp%20%3D%20m.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20%20%20%20%20%20%20cloneCBcontext.cloneItems%28mp%2C%20%22custombuttons-contextpopup%22%29%3B%0A%20%20%20%20%20%20%20%20aNode.insertBefore%28document.createElement%28%22menuseparator%22%29%2C%20m%29%3B%0A%20%20%20%20%7D%0A%7D%0A%0Aconst%20popupID%20%3D%20%22cbContext-extensionsButton%22%3B%0A%0Avar%20test%20%3D%20document.getElementById%28popupID%29%3B%0Aif%20%28test%29%20test.parentNode.removeChild%28test%29%3B%0A%0Avar%20main%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20cPopup%20%3D%20main.appendChild%28document.createElement%28%22popup%22%29%29%3B%0AcPopup.id%20%3D%20popupID%3B%0AcPopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%3B%20document.popupNode.openPrefs%28event%29%3B%22%29%0A%0Avar%20RDFService%20%3D%20Cc%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.getService%28Ci.nsIRDFService%29%3B%0Avar%20Container%20%3D%20Cc%5B%22@mozilla.org/rdf/container%3B1%22%5D.getService%28Ci.nsIRDFContainer%29%3B%0Avar%20extensionDS%20%3D%20Cc%5B%22@mozilla.org/extensions/manager%3B1%22%5D.getService%28Ci.nsIExtensionManager%29.datasource%3B%0A%0Avar%20root%3B%0Atry%20%7B%0A%20%20%20%20root%20%3D%20RDFService.GetResource%28%22urn%3Amozilla%3Aitem%3Aroot%22%29%3B%0A%7D%20catch%28err%29%20%7B%0A%20%20%20%20root%20%3D%20RDFService.GetResource%28%22urn%3Amozilla%3Aextension%3Aroot%22%29%3B%0A%7D%0A%0AContainer.Init%28extensionDS%2C%20root%29%3B%0A%0Avar%20elements%20%3D%20Container.GetElements%28%29%3B%0Avar%20extensionArray%20%3D%20%5B%5D%3B%0Avar%20i%20%3D%20-1%3B%0Awhile%20%28elements.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20i++%3B%0A%20%20%20%20var%20element%20%3D%20elements.getNext%28%29%3B%0A%20%20%20%20element.QueryInterface%28Components.interfaces.nsIRDFResource%29%3B%0A%20%20%20%20var%20prop_OptionsURL%20%3D%20prop%28element%2C%20%22optionsURL%22%29%3B%0A%20%20%20%20if%20%28prop%28element%2C%20%22type%22%29%20%3D%3D%20EXTENSION%20%26%26%20prop_OptionsURL%29%20%7B%0A%20%20%20%20%20%20%20%20var%20prop_name%20%3D%20prop%28element%2C%20%22name%22%29%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%5B0%5D%20%3D%20prop_name.charAt%280%29.toUpperCase%28%29%20+%20prop_name.substr%281%29%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%5B1%5D%20%3D%20prop_OptionsURL%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%5B2%5D%20%3D%20prop%28element%2C%20%22userDisabled%22%29%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%5B3%5D%20%3D%20prop%28element%2C%20%22version%22%29%3B%0A%20%20%20%20%20%20%20%20extensionArray%5Bi%5D%5B4%5D%20%3D%20prop%28element%2C%20%22iconURL%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21extensionArray%5Bi%5D%5B4%5D%29%20extensionArray%5Bi%5D%5B4%5D%20%3D%20%22chrome%3A//mozapps/skin/xpinstall/xpinstallItemGeneric.png%22%3B%0A%20%20%20%20%7D%0A%7D%0A%0AextensionArray.sort%28%29%3B%0A%0Avar%20features%20%3D%20%22chrome%2C%20dialog%20%3D%200%2C%20resizable%2C%20titlebar%2C%20toolbar%2C%20centerscreen%22%3B%0A%0Avar%20extCommand%20%3D%20%22window.openDialog%28%27ZZZ%27%2C%20%27%27%2C%20%27%22%20+%20features%20+%20%22%27%29%3B%22%3B%0A%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20extensionArray.length%3B%20i++%29%20%7B%0A%20%20%20%20var%20extArray%20%3D%20extensionArray%5Bi%5D%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%22label%22%2C%20extArray%5B0%5D%20+%20%22%20%22%20+%20extArray%5B3%5D%29%3B%0A%20%20%20%20%20%20%20%20if%20%28extArray%5B4%5D%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%20bookmark-item%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20mItem.setAttribute%28%22image%22%2C%20extArray%5B4%5D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28extArray%5B1%5D%29%20mItem.setAttribute%28%22oncommand%22%2C%20extCommand.replace%28%22ZZZ%22%2C%20extArray%5B1%5D%29%29%3B%0A%20%20%20%20%20%20%20%20if%20%28extArray%5B2%5D%29%20mItem.setAttribute%28%22disabled%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20cPopup.appendChild%28mItem%29%3B%0A%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%7D%0A%0AcloneCBcontext.makeMenu%28cPopup%29%3B%0Athis.setAttribute%28%22context%22%2C%20popupID%29%3B%0A%0Aif%20%28typeof%20Local_Install%20%21%3D%20%22object%22%29%20return%3B%0A%0Avar%20test%20%3D%20document.getElementById%28%22cbContext-extensions%22%29%3B%0Aif%20%28test%29%20test.parentNode.removeChild%28test%29%3B%0A%0Avar%20cbPopup%20%3D%20document.getElementById%28%22custombuttons-contextpopup-subCall%22%29.cloneNode%28true%29%3B%20//%20Cb%20context%0Avar%20subMenu%20%3D%20document.createElement%28%22menu%22%29%3B%0AsubMenu.setAttribute%28%22label%22%2C%20%22Custom%20Button%22%29%3B%0AsubMenu.appendChild%28cbPopup.lastChild%29%3B%0A%0Avar%20extensionsPopup%20%3D%20document.getElementById%28%22emb-context%22%29%3B%0Avar%20popup%20%3D%20extensionsPopup.cloneNode%28true%29%3B%0Apopup.id%20%3D%20%22cbContext-extensions%22%3B%0Apopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0Apopup.appendChild%28subMenu%29%3B%0AextensionsPopup.parentNode.appendChild%28popup%29%3B%0A%0Athis.setAttribute%28%22context%22%2C%20popup.id%29%3B%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

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

Выделить код

Код:

this.url2xul = 'chrome://mozapps/content/extensions/extensions.xul';
this.onClick = function (e) {
    switch (e.button) {
    case 0:
        try {
            BrowserOpenAddonsMgr();
        }
        catch(e) {
            BrowserOpenExtensions('extensions');
        }
        break;
    case 1:
        {
            if (e.ctrlKey) {
                var t = gBrowser.mTabs;
                var current = content.document.location.href;
                var i = t.length;
                if (current == this.url2xul) gBrowser.removeCurrentTab();
                else while (true) {
                    if (--i < 0) {
                        if (current == 'about:blank') // replace blank tab
                        loadURI(this.url2xul);
                        else // add new tab 
                        gBrowser.selectedTab = gBrowser.addTab(this.url2xul);
                        break;
                    };
                    if (t[i].linkedBrowser.currentURI.spec == this.url2xul) // popup loaded
                    {
                        gBrowser.selectedTab = gBrowser.tabContainer.childNodes[i];
                        break;
                    };
                };
            } else openWebPanel(this.tooltipText, this.url2xul);
        };
        break;
    };
};
this.setAttribute('onclick', 'this.onClick(event);');

const Cb = custombuttons;
const EXTENSION = Ci.nsIUpdateItem.TYPE_EXTENSION;



function prop(aElement, aString) {
    var emRDF = "http://www.mozilla.org/2004/em-rdf#";
    var arc = RDFService.GetResource(emRDF + aString);
    var target = extensionDS.GetTarget(aElement, arc, true);
    if (target instanceof Ci.nsIRDFLiteral) return target.Value;
    if (target instanceof Ci.nsIRDFInt) return target.Value;
    return null;
}

var cloneCBcontext = {
    cloneItems: function (aNode, aID, aSeparate) {
        var menupopup = document.getElementById(aID).cloneNode(true);
        var menuitems = menupopup.childNodes.length;
        for (var i = 0; i < menuitems; i++)
        aNode.appendChild(menupopup.firstChild);
        if (aSeparate) aNode.appendChild(document.createElement("menuseparator"));
    },
    makeMenu: function (aNode) {
        var m = aNode.appendChild(document.createElement("menu"));
        m.setAttribute("label", "Custom Button");
        m.setAttribute("oncommand", "event.stopPropagation()");
        var mp = m.appendChild(document.createElement("menupopup"));
        cloneCBcontext.cloneItems(mp, "custombuttons-contextpopup");
        aNode.insertBefore(document.createElement("menuseparator"), m);
    }
}

const popupID = "cbContext-extensionsButton";

var test = document.getElementById(popupID);
if (test) test.parentNode.removeChild(test);

var main = document.getElementById("mainPopupSet");
var cPopup = main.appendChild(document.createElement("popup"));
cPopup.id = popupID;
cPopup.setAttribute("oncommand", "event.stopPropagation(); document.popupNode.openPrefs(event);")

var RDFService = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
var Container = Cc["@mozilla.org/rdf/container;1"].getService(Ci.nsIRDFContainer);
var extensionDS = Cc["@mozilla.org/extensions/manager;1"].getService(Ci.nsIExtensionManager).datasource;

var root;
try {
    root = RDFService.GetResource("urn:mozilla:item:root");
} catch(err) {
    root = RDFService.GetResource("urn:mozilla:extension:root");
}

Container.Init(extensionDS, root);

var elements = Container.GetElements();
var extensionArray = [];
var i = -1;
while (elements.hasMoreElements()) {
    i++;
    var element = elements.getNext();
    element.QueryInterface(Components.interfaces.nsIRDFResource);
    var prop_OptionsURL = prop(element, "optionsURL");
    if (prop(element, "type") == EXTENSION && prop_OptionsURL) {
        var prop_name = prop(element, "name");
        extensionArray[i] = [];
        extensionArray[i][0] = prop_name.charAt(0).toUpperCase() + prop_name.substr(1);
        extensionArray[i][1] = prop_OptionsURL;
        extensionArray[i][2] = prop(element, "userDisabled");
        extensionArray[i][3] = prop(element, "version");
        extensionArray[i][4] = prop(element, "iconURL");
        if (!extensionArray[i][4]) extensionArray[i][4] = "chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png";
    }
}

extensionArray.sort();

var features = "chrome, dialog = 0, resizable, titlebar, toolbar, centerscreen";

var extCommand = "window.openDialog('ZZZ', '', '" + features + "');";

for (var i = 0; i < extensionArray.length; i++) {
    var extArray = extensionArray[i];
    try {
        var mItem = document.createElement("menuitem");
        mItem.setAttribute("label", extArray[0] + " " + extArray[3]);
        if (extArray[4]) {
            mItem.setAttribute("class", "menuitem-iconic bookmark-item");
            mItem.setAttribute("image", extArray[4]);
        }
        if (extArray[1]) mItem.setAttribute("oncommand", extCommand.replace("ZZZ", extArray[1]));
        if (extArray[2]) mItem.setAttribute("disabled", true);
        cPopup.appendChild(mItem);
    } catch(e) {}
}

cloneCBcontext.makeMenu(cPopup);
this.setAttribute("context", popupID);

if (typeof Local_Install != "object") return;

var test = document.getElementById("cbContext-extensions");
if (test) test.parentNode.removeChild(test);

var cbPopup = document.getElementById("custombuttons-contextpopup-subCall").cloneNode(true); // Cb context
var subMenu = document.createElement("menu");
subMenu.setAttribute("label", "Custom Button");
subMenu.appendChild(cbPopup.lastChild);

var extensionsPopup = document.getElementById("emb-context");
var popup = extensionsPopup.cloneNode(true);
popup.id = "cbContext-extensions";
popup.appendChild(document.createElement("menuseparator"));
popup.appendChild(subMenu);
extensionsPopup.parentNode.appendChild(popup);

this.setAttribute("context", popup.id);

Иконка

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAFfKj/FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAMAUExURf///wIBAQAAAAECB21yoAAAAAAAAG1yoFVloQAAAwAAAAEBAwAAAFJkoWV1rQAAAAAAAEthonN4pHJ5pmtzoxUMBwAAAEUmEyQVDF9vphAVIZObvxAUIJWewZxaMKWv0AhVAHF+sBcdKDwjE5NXNI2Tt2F1rl52sCQuSFp1tmZ5sYaMspdaOzghE5edwAxdAYKazi84T1BnmWF8t7S50omdzG6CsJpkPm+JwHSNwniOwH+YzHiQw5pkT5FYL49tcHaUyY6KoLO30HtIKKq63n2Yyrm81AhVAApYABdrARtxAR10AUiWMFifQbe60YGe0GB4oJer0qZfJ5Wz3qi52pCz5b/Dz9LW54ir3ZljPrWckcnQ45Z7mqFlMIyp0pzD9L7Z+d/k9wAAABBlARt5Ax58Bh5/AyKGBCOIBCiBDyiSBC2VCi6cBTKKGDOlBjSoBjqrDT6oFUCrFkGOKkGWJkKuF0yF00yyI06WN1e3MF2vQF6hSGCkSmOV12O8P2SpTWWX12/BT3S3WnW6W3bBWXiza3mo6XzAYn3HX3+eyYWy54nGcou26YvNcIy26JG57JKy2ZfPiZnTgp1+lJ7G9p7MmqO/56PWjqaNnKqbuqrS+7LW2bLa/7Te/7Xe/7aGcbbZ/bdLJLjX+Lje/7rX97rb6LrewLrf/7zb/7zg/72Ve73a0L58PsA+BcDf/MLe58O6vMPi/8WLU8WSaMXp0Mbk/8e9v8fe+Mji88jk/8nl/8qLVcqmSsrl/8vY5Mvl/8yDQcyZZ8yolMzn/83p/86CN87q/8+bONFfKNOIa9TRz9WHOtaZWNePSNzS0t3u9d30/9/y/+L08+PDs+Po8Obz/+fQyefv/em/rer1/+zArOzaifLo6fP2+vX2+fbXMvbyxvf///jrovv///z///36+P/0mP//8v///+np6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///y0MWcAAAAABdFJOUwBA5thmAAABFUlEQVR42mJgYGBgqAQAAAD//2JgYGBufgcAAAD//2Jk8LZ4xcSgtIYJAAAA//9iYGBgYGBkqPl3jqmC9fcNRobSXeYAAAAA//9iZmBgYKgwP87AyMBQI/jlx5+PjAzF7P///DrwkZnhODfb5pv2LAAxoIBuBgYGRgaGahbWD1+nMzEwiHP+YmZnYPFi/vbt55epDEz//3/7+fM/AwPT9i0/v0xgyGdgYWB494/h5y8GAJljbIMwDEXBw3akUEQUtJkoLUNkgRRILBKE2IwtUID4+X+liSteedKdXqyJ4dK9AEIF8RT3c8Ctl7SaXO9HAkgfrSbPuTgHrudiZnLXb67K1HjOFoJbeSaA5ejfO4xtMv62DQBrzlvofJ5duQAAAABJRU5ErkJggg==

Поиск по текущему сайту (Firefox)
Позволяет произвести поиск по текущему сайту в Google или Яндексе.
Ctrl+Левый клик мышью - поиск произвольной фразы в Google на текущем сайте.
Ctrl+Правый клик мышью - поиск произвольной фразы в Яндексе на текущем сайте.
Если на странице есть выделенный текст, то:
- Левый клик мышью - поиск выделенного фрагмента по текущему сайту в Google, результаты в фоновой вкладке.
- Правый клик мышью - поиск выделенного фрагмента по текущему сайту в Яндексе, результаты в фоновой вкладке.
При отсутствии выделения - правый клик мышью вызывает меню кнопки.

Поиск по текущему сайту
Код кнопки

Выделить код

Код:

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%0D%0A%20%20%3Cname%3E%u041F%u043E%u0438%u0441%u043A%20%u043F%u043E%20%u0441%u0430%u0439%u0442%u0443%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3Ethis.%20searchGoogle%20%3D%20function%20%28text%2C%20url%2C%20encode%29%0D%0A%7B%0D%0A%20%20%20%20if%20%28encode%29%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%0D%0A%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//www.google.com/search%3Fas_q%3D%22%20+%20text%20+%20%22%26amp%3Bas_sitesearch%3D%22%20+%20url%3B%0D%0A%20%20%20%20getBrowser%20%28%29.%20addTab%20%28searchUrl%29%3B%0D%0A%7D%3B%0D%0A%0D%0Athis.%20searchYandex%20%3D%20function%20%28text%2C%20url%2C%20encode%29%0D%0A%7B%0D%0A%20%20%20%20if%20%28encode%29%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28%22UTF-8%22%2C%20text%29%29%3B%0D%0A%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20var%20searchUrl%20%3D%20%22http%3A//yandex.ru/yandsearch%3Frpt%3Drad%26amp%3Btext%3D%22%20+%20text%20+%20%22%26amp%3Bserverurl%3D%22%20+%20url%3B%0D%0A%20%20%20%20getBrowser%20%28%29.%20addTab%20%28searchUrl%29%3B%0D%0A%7D%3B%0D%0A%0D%0Athis.%20showSearchDialog%20%3D%20function%20%28callback%2C%20url%29%0D%0A%7B%0D%0A%20%20%20%20XML.%20ignoreProcessingInstructions%20%3D%20false%3B%0D%0A%20%20%20%20var%20dialog%20%3D%20%26lt%3B%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%26lt%3B%3Fxml-stylesheet%20href%3D%22resource%3A//gre/res/html.css%22%3F%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%26lt%3Bdialog%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20id%3D%22dlg02%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Custom%20Buttons%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onload%3D%22windowController.init%28%29%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ondialogaccept%3D%22return%20windowController.accept%28%29%3B%22%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%21%5BCDATA%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20windowController%20%3D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20init%3A%20function%20%28%29%0D%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%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20stb%20%3D%20document.%20getElementById%20%28%22sitetb%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stb.%20value%20%3D%20window.%20arguments%20%5B1%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20sizeToContent%20%28%29%3B%0D%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%7D%2C%0D%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%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20accept%3A%20function%20%28%29%0D%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%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20text%20%3D%20document.%20getElementById%20%28%22texttb%22%29.%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20document.%20getElementById%20%28%22sitetb%22%29.%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.%20arguments%20%5B0%5D%20%28text%2C%20url%2C%20true%29%3B%0D%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%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%5D%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/script%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bvbox%20flex%3D%221%22%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bgrid%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bcolumns%26gt%3B%0D%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%26lt%3Bcolumn/%26gt%3B%0D%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%26lt%3Bcolumn%20flex%3D%221%22/%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/columns%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Brows%26gt%3B%0D%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%26lt%3Brow%20align%3D%22center%22%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Blabel%20value%3D%22%u0418%u0441%u043A%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%22/%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Btextbox%20id%3D%22texttb%22%20flex%3D%221%22/%26gt%3B%0D%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%26lt%3B/row%26gt%3B%0D%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%26lt%3Brow%20align%3D%22center%22%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Blabel%20value%3D%22%u0421%u0430%u0439%u0442%22/%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Btextbox%20id%3D%22sitetb%22%20flex%3D%221%22/%26gt%3B%0D%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%26lt%3B/row%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/rows%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/grid%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/vbox%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%26lt%3B/dialog%26gt%3B%0D%0A%20%20%20%20%26lt%3B/%26gt%3B%3B%0D%0A%20%20%20%20window.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog.%20toXMLString%20%28%29%2C%20%22%22%2C%20%22chrome%2Cdependent%2Cminimizable%2Cresizable%3Dyes%2Ccenterscreen%2Cdialog%3Dyes%22%2C%20callback%2C%20url%29%3B%0D%0A%7D%3B%0D%0A%0D%0Athis.%20onclick%20%3D%20function%20%28event%29%0D%0A%7B%0D%0A%20%20%20%20var%20focusedWindow%20%3D%20document.%20commandDispatcher.%20focusedWindow%3B%0D%0A%20%20%20%20var%20text%20%3D%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0D%0A%20%20%20%20var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0D%0A%20%20%20%20try%20%7B%20var%20url%20%3D%20doc.%20location.%20hostname%3B%20%7D%0D%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20url%20%3D%20%22%22%3B%20%7D%0D%0A%20%20%20%20if%20%28event.%20ctrlKey%29%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20%28event.%20button%20%3D%3D%200%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20showSearchDialog%20%28this.%20searchGoogle%2C%20url%29%3B%0D%0A%20%20%20%20%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%202%29%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20event.%20stopPropagation%20%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20showSearchDialog%20%28this.%20searchYandex%2C%20url%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20return%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20if%20%28%21text%20%7C%7C%20event.%20shiftKey%29%0D%0A%20%20%20%20%20%20%20%20return%3B%0D%0A%20%20%20%20var%20charset%20%3D%20doc.%20characterSet%3B%0D%0A%20%20%20%20try%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20charset%20%3D%20PlacesUtils.%20history.%20getCharsetForURI%20%28makeURI%20%28doc.%20location.%20href%29%29%3B%0D%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%7D%0D%0A%20%20%20%20if%20%28charset%29%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20text%20%3D%20escape%20%28convertFromUnicode%20%28charset%2C%20text%29%29%3B%0D%0A%20%20%20%20%20%20%20%20url%20%3D%20escape%20%28convertFromUnicode%20%28charset%2C%20url%29%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20else%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20text%20%3D%20encodeURIComponent%20%28text%29%3B%0D%0A%20%20%20%20%20%20%20%20url%20%3D%20encodeURIComponent%20%28url%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20var%20searchURL%20%3D%20%22%22%3B%0D%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%202%29%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0D%0A%20%20%20%20%20%20%20%20event.%20stopPropagation%20%28%29%3B%0D%0A%20%20%20%20%20%20%20%20this.%20searchYandex%20%28text%2C%20url%2C%20false%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20else%20if%20%28event.%20button%20%3D%3D%200%29%0D%0A%20%20%20%20%20%20%20%20this.%20searchGoogle%20%28text%2C%20url%2C%20false%29%3B%0D%0A%7D%3B%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

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

Выделить код

Код:

this. searchGoogle = function (text, url, encode)
{
    if (encode)
    {
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
    }
    var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;
    getBrowser (). addTab (searchUrl);
};

this. searchYandex = function (text, url, encode)
{
    if (encode)
    {
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
    }
    var searchUrl = "http://yandex.ru/yandsearch?rpt=rad&text=" + text + "&serverurl=" + url;
    getBrowser (). addTab (searchUrl);
};

this. showSearchDialog = function (callback, url)
{
    XML. ignoreProcessingInstructions = false;
    var dialog = <>
        <?xml-stylesheet href="chrome://global/skin/"?>
        <?xml-stylesheet href="resource://gre/res/html.css"?>
        <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
                id="dlg02"
                title="Custom Buttons"
                onload="windowController.init()"
                ondialogaccept="return windowController.accept();">
            <script type="application/x-javascript">
                <![CDATA[
                    var windowController =
                    {
                        init: function ()
                        {
                            var stb = document. getElementById ("sitetb");
                            stb. value = window. arguments [1];
                            window. sizeToContent ();
                        },
                        
                        accept: function ()
                        {
                            var text = document. getElementById ("texttb"). value;
                            var url = document. getElementById ("sitetb"). value;
                            window. arguments [0] (text, url, true);
                        }
                    };
                ]]>
            </script>
            <vbox flex="1">
                <grid>
                    <columns>
                        <column/>
                        <column flex="1"/>
                    </columns>
                    <rows>
                        <row align="center">
                            <label value="Искать текст"/>
                            <textbox id="texttb" flex="1"/>
                        </row>
                        <row align="center">
                            <label value="Сайт"/>
                            <textbox id="sitetb" flex="1"/>
                        </row>
                    </rows>
                </grid>
            </vbox>
        </dialog>
    </>;
    window. openDialog ("data:application/vnd.mozilla.xul+xml," + dialog. toXMLString (), "", "chrome,dependent,minimizable,resizable=yes,centerscreen,dialog=yes", callback, url);
};

this. onclick = function (event)
{
    var focusedWindow = document. commandDispatcher. focusedWindow;
    var text = focusedWindow. getSelection (). toString ();
    var doc = getBrowser (). contentDocument;
    try { var url = doc. location. hostname; }
      catch(e) { var url = ""; }
    if (event. ctrlKey)
    {
        if (event. button == 0)
            this. showSearchDialog (this. searchGoogle, url);
        else if (event. button == 2)
        {
            event. preventDefault ();
            event. stopPropagation ();
            this. showSearchDialog (this. searchYandex, url);
        }
        return;
    }
    if (!text || event. shiftKey)
        return;
    var charset = doc. characterSet;
    try
    {
        charset = PlacesUtils. history. getCharsetForURI (makeURI (doc. location. href));
    } catch (e) {}
    if (charset)
    {
        text = escape (convertFromUnicode (charset, text));
        url = escape (convertFromUnicode (charset, url));
    }
    else
    {
        text = encodeURIComponent (text);
        url = encodeURIComponent (url);
    }
    var searchURL = "";
    if (event. button == 2)
    {
        event. preventDefault ();
        event. stopPropagation ();
        this. searchYandex (text, url, false);
    }
    else if (event. button == 0)
        this. searchGoogle (text, url, false);
};

Иконка

Выделить код

Код:

data:image/png;base64,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

Отсутствует

 

№525-11-2009 11:59:21

Jarichek
Member I
 
Группа: Members
Откуда: Минск
Зарегистрирован: 09-04-2009
Сообщений: 306
UA: Firefox 3.5

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

Преобразование из латиницы в кириллицу и наоборот
Кнопка служит для преобразования набранного текста в другой раскладке клавиатуры. Например, набранное "ащкгьюьщяшддф-кгыышфющкп" преобразуется "forum.mozilla-russia.org".
Для преобразования необходимо поставить курсор в нужное поле ввода. При наличии выделения - преобразовывается только выделенная часть.

Преобразование из латиницы в кириллицу
Код кнопки

Выделить код

Код:

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%0D%0A%20%20%3Cname%3EURLCorrector%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.noSelUseFullText%20%3D%20true%3B%0Athis.convTableForward%20%3D%20%7B%0A%20%20%20%20%22%5C%22%22%3A%20%22@%22%2C%0A%20%20%20%20%22%3A%22%3A%20%22%5E%22%2C%0A%20%20%20%20%22%3B%22%3A%20%22%24%22%2C%0A%20%20%20%20%22%3F%22%3A%20%22%26%22%2C%0A%20%20%20%20%22%2C%22%3A%20%22%3F%22%2C%0A%20%20%20%20%22/%22%3A%20%22%7C%22%2C%0A%20%20%20%20%22.%22%3A%20%22/%22%2C%0A%20%20%20%20%22%u044D%22%3A%20%22%27%22%2C%0A%20%20%20%20%22%u0431%22%3A%20%22%2C%22%2C%0A%20%20%20%20%22%u044E%22%3A%20%22.%22%2C%0A%20%20%20%20%22%u0416%22%3A%20%22%3A%22%2C%0A%20%20%20%20%22%u0436%22%3A%20%22%3B%22%2C%0A%20%20%20%20%22%u0411%22%3A%20%22%3C%22%2C%0A%20%20%20%20%22%u042E%22%3A%20%22%3E%22%2C%0A%20%20%20%20%22%u042D%22%3A%20%22%5C%22%22%2C%0A%20%20%20%20%22%u0445%22%3A%20%22%5B%22%2C%0A%20%20%20%20%22%u044A%22%3A%20%22%5D%22%2C%0A%20%20%20%20%22%u0451%22%3A%20%22%60%22%2C%0A%20%20%20%20%22%u0425%22%3A%20%22%7B%22%2C%0A%20%20%20%20%22%u042A%22%3A%20%22%7D%22%2C%0A%20%20%20%20%22%u0401%22%3A%20%22%7E%22%2C%0A%20%20%20%20%22%u2116%22%3A%20%22%23%22%2C%0A%20%20%20%20%22%u0424%22%3A%20%22A%22%2C%0A%20%20%20%20%22%u0444%22%3A%20%22a%22%2C%0A%20%20%20%20%22%u0418%22%3A%20%22B%22%2C%0A%20%20%20%20%22%u0438%22%3A%20%22b%22%2C%0A%20%20%20%20%22%u0421%22%3A%20%22C%22%2C%0A%20%20%20%20%22%u0441%22%3A%20%22c%22%2C%0A%20%20%20%20%22%u0412%22%3A%20%22D%22%2C%0A%20%20%20%20%22%u0432%22%3A%20%22d%22%2C%0A%20%20%20%20%22%u0423%22%3A%20%22E%22%2C%0A%20%20%20%20%22%u0443%22%3A%20%22e%22%2C%0A%20%20%20%20%22%u0410%22%3A%20%22F%22%2C%0A%20%20%20%20%22%u0430%22%3A%20%22f%22%2C%0A%20%20%20%20%22%u041F%22%3A%20%22G%22%2C%0A%20%20%20%20%22%u043F%22%3A%20%22g%22%2C%0A%20%20%20%20%22%u0420%22%3A%20%22H%22%2C%0A%20%20%20%20%22%u0440%22%3A%20%22h%22%2C%0A%20%20%20%20%22%u0428%22%3A%20%22I%22%2C%0A%20%20%20%20%22%u0448%22%3A%20%22i%22%2C%0A%20%20%20%20%22%u041E%22%3A%20%22J%22%2C%0A%20%20%20%20%22%u043E%22%3A%20%22j%22%2C%0A%20%20%20%20%22%u041B%22%3A%20%22K%22%2C%0A%20%20%20%20%22%u043B%22%3A%20%22k%22%2C%0A%20%20%20%20%22%u0414%22%3A%20%22L%22%2C%0A%20%20%20%20%22%u0434%22%3A%20%22l%22%2C%0A%20%20%20%20%22%u042C%22%3A%20%22M%22%2C%0A%20%20%20%20%22%u044C%22%3A%20%22m%22%2C%0A%20%20%20%20%22%u0422%22%3A%20%22N%22%2C%0A%20%20%20%20%22%u0442%22%3A%20%22n%22%2C%0A%20%20%20%20%22%u0429%22%3A%20%22O%22%2C%0A%20%20%20%20%22%u0449%22%3A%20%22o%22%2C%0A%20%20%20%20%22%u0417%22%3A%20%22P%22%2C%0A%20%20%20%20%22%u0437%22%3A%20%22p%22%2C%0A%20%20%20%20%22%u0419%22%3A%20%22Q%22%2C%0A%20%20%20%20%22%u0439%22%3A%20%22q%22%2C%0A%20%20%20%20%22%u041A%22%3A%20%22R%22%2C%0A%20%20%20%20%22%u043A%22%3A%20%22r%22%2C%0A%20%20%20%20%22%u042B%22%3A%20%22S%22%2C%0A%20%20%20%20%22%u044B%22%3A%20%22s%22%2C%0A%20%20%20%20%22%u0415%22%3A%20%22T%22%2C%0A%20%20%20%20%22%u0435%22%3A%20%22t%22%2C%0A%20%20%20%20%22%u0413%22%3A%20%22U%22%2C%0A%20%20%20%20%22%u0433%22%3A%20%22u%22%2C%0A%20%20%20%20%22%u041C%22%3A%20%22V%22%2C%0A%20%20%20%20%22%u043C%22%3A%20%22v%22%2C%0A%20%20%20%20%22%u0426%22%3A%20%22W%22%2C%0A%20%20%20%20%22%u0446%22%3A%20%22w%22%2C%0A%20%20%20%20%22%u0427%22%3A%20%22X%22%2C%0A%20%20%20%20%22%u0447%22%3A%20%22x%22%2C%0A%20%20%20%20%22%u041D%22%3A%20%22Y%22%2C%0A%20%20%20%20%22%u043D%22%3A%20%22y%22%2C%0A%20%20%20%20%22%u042F%22%3A%20%22Z%22%2C%0A%20%20%20%20%22%u044F%22%3A%20%22z%22%2C%0A%20%20%20%20__proto__%3A%20null%0A%7D%3B%0A%0Athis.convTableBackward%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0Afor%28var%20c%20in%20this.convTableForward%29%0A%20%20%20%20this.convTableBackward%5Bthis.convTableForward%5Bc%5D%5D%20%3D%20c%3B%0A%0Athis.insertText%20%3D%20function%28ta%2C%20text%2C%20noFocus%29%20%7B%0A%20%20%20%20var%20editor%20%3D%20ta.QueryInterface%28Components.interfaces.nsIDOMNSEditableElement%29%0A%20%20%20%20%20%20%20%20.editor%0A%20%20%20%20%20%20%20%20.QueryInterface%28Components.interfaces.nsIPlaintextEditor%29%3B%0A%20%20%20%20if%28editor.flags%20%26%20editor.eEditorReadonlyMask%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20sTop%20%3D%20ta.scrollTop%3B%0A%20%20%20%20var%20sHeight%20%3D%20ta.scrollHeight%3B%0A%20%20%20%20var%20sLeft%20%3D%20ta.scrollLeft%3B%0A%20%20%20%20//%20var%20sWidth%20%3D%20ta.scrollWidth%3B%0A%0A%20%20%20%20if%28noFocus%29%20%7B%0A%20%20%20%20%20%20%20%20var%20val%20%3D%20ta.value%3B%0A%20%20%20%20%20%20%20%20var%20ss%20%3D%20ta.selectionStart%3B%0A%20%20%20%20%20%20%20%20ta.value%20%3D%20val.substring%280%2C%20ss%29%20+%20text%20+%20val.substring%28ta.selectionEnd%29%3B%0A%20%20%20%20%20%20%20%20var%20se%20%3D%20ss%20+%20text.length%3B%0A%20%20%20%20%20%20%20%20ta.selectionStart%20%3D%20se%3B%0A%20%20%20%20%20%20%20%20ta.selectionEnd%20%3D%20se%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20%7B%0A%0A%20%20%20%20%20%20%20%20if%28text%29%0A%20%20%20%20%20%20%20%20%20%20%20%20editor.insertText%28text%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20editor.deleteSelection%280%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20ta.scrollTop%20%3D%20sTop%20+%20%28ta.scrollHeight%20-%20sHeight%29%3B%0A%20%20%20%20ta.scrollLeft%20%3D%20sLeft%3B%20//%20+%20%28ta.scrollWidth%20-%20sWidth%29%3B%0A%7D%3B%0Athis.inPrimaryLayout%20%3D%20function%28s%29%20%7B%0A%20%20%20%20var%20c%3B%0A%20%20%20%20for%28var%20i%20%3D%200%2C%20l%20%3D%20s.length%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20c%20%3D%20s.charAt%28i%29%3B%0A%20%20%20%20%20%20%20%20if%28c%20in%20this.convTableForward%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20if%28c%20in%20this.convTableBackward%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%7D%3B%0Athis.switchKeybLayout%20%3D%20function%28convTable%2C%20s%29%20%7B%0A%20%20%20%20var%20r%20%3D%20%22%22%2C%20c%3B%0A%20%20%20%20for%28var%20i%20%3D%200%2C%20l%20%3D%20s.length%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20c%20%3D%20s.charAt%28i%29%3B%0A%20%20%20%20%20%20%20%20r%20+%3D%20c%20in%20convTable%20%3F%20convTable%5Bc%5D%20%3A%20c%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20r%3B%0A%7D%3B%0Athis.switchSelKeybLayout%20%3D%20function%28s%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20ta%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20var%20val%20%3D%20ta.value%3B%0A%20%20%20%20%20%20%20%20var%20sel%20%3D%20val.substring%28ta.selectionStart%2C%20ta.selectionEnd%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%28this.noSelUseFullText%20%26%26%20%21sel%29%20%7B%0A%20%20%20%20%20%20%20%20ta.selectionStart%20%3D%200%3B%0A%20%20%20%20%20%20%20%20ta.selectionEnd%20%3D%20val.length%3B%0A%20%20%20%20%20%20%20%20sel%20%3D%20val%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%28%21sel%29%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20sel%20%3D%20this.switchKeybLayout%28%0A%20%20%20%20%20%20%20%20this.inPrimaryLayout%28sel%29%20%3F%20this.convTableForward%20%3A%20this.convTableBackward%2C%0A%20%20%20%20%20%20%20%20sel%0A%20%20%20%20%29%3B%0A%20%20%20%20this.insertText%28ta%2C%20sel%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.switchSelKeybLayout%28%29%3B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5BAlt+z%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

Код

Выделить код

Код:

this.switchSelKeybLayout();

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

Выделить код

Код:

this.noSelUseFullText = true;
this.convTableForward = {
    "\"": "@",
    ":": "^",
    ";": "$",
    "?": "&",
    ",": "?",
    "/": "|",
    ".": "/",
    "э": "'",
    "б": ",",
    "ю": ".",
    "Ж": ":",
    "ж": ";",
    "Б": "<",
    "Ю": ">",
    "Э": "\"",
    "х": "[",
    "ъ": "]",
    "ё": "`",
    "Х": "{",
    "Ъ": "}",
    "Ё": "~",
    "№": "#",
    "Ф": "A",
    "ф": "a",
    "И": "B",
    "и": "b",
    "С": "C",
    "с": "c",
    "В": "D",
    "в": "d",
    "У": "E",
    "у": "e",
    "А": "F",
    "а": "f",
    "П": "G",
    "п": "g",
    "Р": "H",
    "р": "h",
    "Ш": "I",
    "ш": "i",
    "О": "J",
    "о": "j",
    "Л": "K",
    "л": "k",
    "Д": "L",
    "д": "l",
    "Ь": "M",
    "ь": "m",
    "Т": "N",
    "т": "n",
    "Щ": "O",
    "щ": "o",
    "З": "P",
    "з": "p",
    "Й": "Q",
    "й": "q",
    "К": "R",
    "к": "r",
    "Ы": "S",
    "ы": "s",
    "Е": "T",
    "е": "t",
    "Г": "U",
    "г": "u",
    "М": "V",
    "м": "v",
    "Ц": "W",
    "ц": "w",
    "Ч": "X",
    "ч": "x",
    "Н": "Y",
    "н": "y",
    "Я": "Z",
    "я": "z",
    __proto__: null
};

this.convTableBackward = { __proto__: null };
for(var c in this.convTableForward)
    this.convTableBackward[this.convTableForward[c]] = c;

this.insertText = function(ta, text, noFocus) {
    var editor = ta.QueryInterface(Components.interfaces.nsIDOMNSEditableElement)
        .editor
        .QueryInterface(Components.interfaces.nsIPlaintextEditor);
    if(editor.flags & editor.eEditorReadonlyMask)
        return;

    var sTop = ta.scrollTop;
    var sHeight = ta.scrollHeight;
    var sLeft = ta.scrollLeft;
    // var sWidth = ta.scrollWidth;

    if(noFocus) {
        var val = ta.value;
        var ss = ta.selectionStart;
        ta.value = val.substring(0, ss) + text + val.substring(ta.selectionEnd);
        var se = ss + text.length;
        ta.selectionStart = se;
        ta.selectionEnd = se;
    }
    else {

        if(text)
            editor.insertText(text);
        else
            editor.deleteSelection(0);
    }

    ta.scrollTop = sTop + (ta.scrollHeight - sHeight);
    ta.scrollLeft = sLeft; // + (ta.scrollWidth - sWidth);
};
this.inPrimaryLayout = function(s) {
    var c;
    for(var i = 0, l = s.length; i < l; i++) {
        c = s.charAt(i);
        if(c in this.convTableForward)
            return true;
        if(c in this.convTableBackward)
            return false;
    }
    return false;
};
this.switchKeybLayout = function(convTable, s) {
    var r = "", c;
    for(var i = 0, l = s.length; i < l; i++) {
        c = s.charAt(i);
        r += c in convTable ? convTable[c] : c;
    }
    return r;
};
this.switchSelKeybLayout = function(s) {
    try {
        var ta = document.commandDispatcher.focusedElement;
        var val = ta.value;
        var sel = val.substring(ta.selectionStart, ta.selectionEnd);
    }
    catch(e) {
        return;
    }
    if(this.noSelUseFullText && !sel) {
        ta.selectionStart = 0;
        ta.selectionEnd = val.length;
        sel = val;
    }
    if(!sel)
        return;

    sel = this.switchKeybLayout(
        this.inPrimaryLayout(sel) ? this.convTableForward : this.convTableBackward,
        sel
    );
    this.insertText(ta, sel);
};

Иконка

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADaSURBVHja7FXRDYIwEL1nGEBdBTaQDQyMQEcARymughOAIzDL+VEu9CoYE2Pxw/fzcrTkvbteryCylpmZNkKiQyCuPPOONkby7KmqYggDbUtEtHkFPAPGAEQAMPPQO2Z2XJR6fY3TTP8XsrULBnykmeauc1yc38vrsNexMbrJJV41IEIi3F6n7+UkcPzCEfiQRuxu2ki4Po7SujoOISWXfXWjFudBJBlKvMZD/zqvPNf7l26W0w0qkJ8c3wd9ZsLNZblHPriOugJA3DnwA5PwbyAJXwKZ0bHwGAAE21lZASOQtgAAAABJRU5ErkJggg==


Рестарт (Firefox, TB)
Левый клик - рестарт с окном подтвеждения
Alt+левый клик - рестарт без подтверждения

Рестарт
Код кнопки

Выделить код

Код:

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%0D%0A%20%20%3Cname%3ERestart%20%28with%20confirmation%29%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20*****%20VARS%20*****%20//%0A%0Avar%20prompts%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/prompt-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPromptService%29%3B%0A%0A%0A%0A%0A//%20*****%20FUNCTIONS%20*****%20//%0A%0Afunction%20createBrandingBundle%28%29%20%7B%0A%20%20%20%20var%20myBrandingPath%20%3D%20null%3B%0A%20%20%20%20var%20myStringBundleService%20%3D%20Components.classes%5B%22@mozilla.org/intl/stringbundle%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.getService%28Components.interfaces.nsIStringBundleService%29%3B%0A%20%20%20%20%0A%20%20%20%20myBrandingPath%20%3D%20%22chrome%3A//branding/locale/brand.properties%22%0A%20%20%20%20return%20myStringBundleService.createBundle%28myBrandingPath%29%3B%0A%7D%0A%0A%0Afunction%20getWindowType%28%29%20%7B%0A%20%20%20%20//%20Relies%20on%20Branding%20Code%20so%20can%20not%20be%20run%20on%20startup%0A%20%20%20%20var%20myBrandStrings%20%3D%20createBrandingBundle%28%29%3B%0A%20%20%20%20var%20thisBrandShortName%20%3D%20myBrandStrings.GetStringFromName%28%22brandShortName%22%29%0A%20%20%20%20switch%20%28thisBrandShortName%29%20%7B%0A%20%20%20%20%20%20case%20%22Mozilla%20Thunderbird%22%3A%0A%20%20%20%20%20%20case%20%22Shredder%22%3A%0A%20%20%20%20%20%20case%20%22Thunderbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22mail%3A3pane%22%3B%0A%20%20%20%20%20%20case%20%22Nvu%22%3A%0A%20%20%20%20%20%20%20%20return%20%22composer%3Ahtml%22%3B%0A%20%20%20%20%20%20case%20%22Calendar%22%3A%0A%20%20%20%20%20%20case%20%22Sunbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22calendarMainWindow%22%3B%0A%20%20%20%20%20%20case%20%22eMusic%20Download%20Manager%22%3A%0A%20%20%20%20%20%20case%20%22eMusic%20Remote%22%3A%0A%20%20%20%20%20%20%20%20return%20%22emusic%3Awindow%22%3B%0A%20%20%20%20%20%20case%20%22Songbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22Songbird%3AMain%22%3B%0A%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20return%20%22navigator%3Abrowser%22%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%0Afunction%20Restart%28%29%0A%7B%0A%20%20%20%20//%20Notify%20all%20windows%20that%20an%20application%20quit%20has%20been%20requested.%0A%20%20%20%20var%20os%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0A%20%20%20%20var%20cancelQuit%20%3D%20Components.classes%5B%22@mozilla.org/supports-PRBool%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsPRBool%29%3B%0A%20%20%20%20os.notifyObservers%28cancelQuit%2C%20%22quit-application-requested%22%2C%20%22restart%22%29%3B%0A%0A%20%20%20%20//%20Something%20aborted%20the%20quit%20process.%0A%20%20%20%20if%20%28cancelQuit.data%29%0A%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20var%20wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%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.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%20%20%20%20var%20windows%20%3D%20wm.getEnumerator%28%22%22%29%3B%0A%0A%20%20%20%20var%20windowType%20%3D%20getWindowType%28%29%3B%0A%0A%20%20%20%20while%20%28windows.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20%20%20var%20myConfigWindow%20%3D%20windows.getNext%28%29.QueryInterface%28Components.interfaces.nsIDOMWindowInternal%29%3B%0A%20%20%20%20%20%20if%20%28myConfigWindow.document.documentElement.getAttribute%28%22windowtype%22%29%20%21%3D%20windowType%29%20%7B%0A%20%20%20%20%20%20%20%20%20myConfigWindow.close%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28%22@zeniko/crashrecoveryservice%3B1%22%20in%20Components.classes%29%20%7B%0A%20%20%20%20%20%20nsPreferences.setBoolPref%28%22extensions.crashrecovery.resume_session_once%22%2C%20true%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20appStartup%20%3D%20Components.interfaces.nsIAppStartup%3B%0A%20%20%20%20Components.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D%0A%20%20%20%20%20%20.getService%28appStartup%29.quit%28appStartup.eRestart%20%7C%20appStartup.eAttemptQuit%29%3B%0A%0A%20%20%20%20return%20true%3B%0A%7D%0A%0A%0A%0A%0A//%20*****%20MOUSE%20HANDLING%20*****%20//%0A%0Athis.leftclick%20%3D%20function%28evt%29%20%7B%0A%20%20var%20RestartProceed%20%3D%20prompts.confirm%28null%2C%20%22Restart%20Firefox%22%2C%20%22%u041F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u0435%3F%22%29%3B%0A%20%20if%20%28RestartProceed%29%20%7B%0A%20%20%20%20Restart%28%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.aleftclick%20%3D%20function%28evt%29%20%7B%0A%20%20Restart%28%29%3B%0A%7D%0A%0A%0A%0A%0A//%20*****%20INITIALISATION%20*****%20//%0A%0Athis.tooltipText%20%3D%20%22Restart%22%3B%0Athis.style.opacity%20%3D%20%27.85%27%3B%0A%0Athis.setAttribute%28%22onclick%22%2C%22custombuttons.gQuot.mHandler%28event%2C%20this%29%22%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0A%0A%0A%0A%0A//%20*****%20ATTRIBUTES%20*****%20//%0A%0Athis.setAttribute%28%27author%27%2C%27Rawny%2C%20zooot%27%29%3B%0Athis.setAttribute%28%27version%27%2C%274%27%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/restart-session-restore.html%27%29%3B%0Athis.setAttribute%28%27dependency%27%2C%27FF2.0*%2C%20FL1.0*%2C%20TB2.0*%2C%20CB2%202.0.5*%27%29%3B%0Athis.setAttribute%28%27status%27%2C%27Complete%27%29%3B%0Athis.setAttribute%28%27public%27%2Ctrue%29%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BLeft%20%20%20%20%20%20%20%20%3D%20Restart%20application%20with%20confirmation%20dialogue%0AAlt+Left%20%3D%20Restart%20application%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

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

Выделить код

Код:

// ***** VARS ***** //

var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                        .getService(Components.interfaces.nsIPromptService);




// ***** FUNCTIONS ***** //

function createBrandingBundle() {
    var myBrandingPath = null;
    var myStringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
                        .getService(Components.interfaces.nsIStringBundleService);
    
    myBrandingPath = "chrome://branding/locale/brand.properties"
    return myStringBundleService.createBundle(myBrandingPath);
}


function getWindowType() {
    // Relies on Branding Code so can not be run on startup
    var myBrandStrings = createBrandingBundle();
    var thisBrandShortName = myBrandStrings.GetStringFromName("brandShortName")
    switch (thisBrandShortName) {
      case "Mozilla Thunderbird":
      case "Shredder":
      case "Thunderbird":
        return "mail:3pane";
      case "Nvu":
        return "composer:html";
      case "Calendar":
      case "Sunbird":
        return "calendarMainWindow";
      case "eMusic Download Manager":
      case "eMusic Remote":
        return "emusic:window";
      case "Songbird":
        return "Songbird:Main";
      default:
        return "navigator:browser";
    }
}


function Restart()
{
    // Notify all windows that an application quit has been requested.
    var os = Components.classes["@mozilla.org/observer-service;1"]
                     .getService(Components.interfaces.nsIObserverService);
    var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
                              .createInstance(Components.interfaces.nsISupportsPRBool);
    os.notifyObservers(cancelQuit, "quit-application-requested", "restart");

    // Something aborted the quit process.
    if (cancelQuit.data)
     return false;

    var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                     .getService(Components.interfaces.nsIWindowMediator);
    var windows = wm.getEnumerator("");

    var windowType = getWindowType();

    while (windows.hasMoreElements()) {
      var myConfigWindow = windows.getNext().QueryInterface(Components.interfaces.nsIDOMWindowInternal);
      if (myConfigWindow.document.documentElement.getAttribute("windowtype") != windowType) {
         myConfigWindow.close();
      }
    }

    if ("@zeniko/crashrecoveryservice;1" in Components.classes) {
      nsPreferences.setBoolPref("extensions.crashrecovery.resume_session_once", true);
    }

    var appStartup = Components.interfaces.nsIAppStartup;
    Components.classes["@mozilla.org/toolkit/app-startup;1"]
      .getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit);

    return true;
}




// ***** MOUSE HANDLING ***** //

this.leftclick = function(evt) {
  var RestartProceed = prompts.confirm(null, "Restart Firefox", "Перезапустить приложение?");
  if (RestartProceed) {
    Restart();
  }
}

this.aleftclick = function(evt) {
  Restart();
}




// ***** INITIALISATION ***** //

this.tooltipText = "Restart";
this.style.opacity = '.85';

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




// ***** ATTRIBUTES ***** //

this.setAttribute('author','Rawny, zooot');
this.setAttribute('version','4');
this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/restart-session-restore.html');
this.setAttribute('dependency','FF2.0*, FL1.0*, TB2.0*, CB2 2.0.5*');
this.setAttribute('status','Complete');
this.setAttribute('public',true)

Иконка

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAA6hJREFUOE9VkwtMU1cYx/+9tYAKWAYixWXjIQpYBGEF3AZoNKEyLeCiDQ+dBidjQHj4qHEoyLYw0KCTQUarqLQisGRmG+CCo0zEGljXAI0dr0InJpDNER/Lqin026GajJ3kl3Puyf1+93+/nMPD4pGpFYLHSbxErnJ3Hr3HA3lbbXa71U6WpzbSzv9tU8NORvB5TzFPfmyu/688XStakae7LFWO/pXcYqF930/RwbYpkn8zSYnqMYqq+438ywzTyOr5Ghndb7nk3/uO/2Gv7aUgXesrKuzvKPrpj7lDHQ9pd+sEpTSbKXURu1rMlNJkpo01921LP+p9kHx9cm79CT0BaV2eHvn3mg53/Wk/1P6QZOylheL3WyZIdt3sYGG9sOfYZ/JtjWN0Vj9LkScNTHDgduKOhvEn+bdmSKoepyTNOIs8Tn4Vg+Sr6HewpmqIpEycxARJTLaT/VZ53yxFnPyV4F3Y25bWNk2bNWaKaRijmEujtLyw5wmSGlQIzZQiJEPKkzXdWHpYZxOrRknSOEFvt/xOBXdnab2ij+D/cdczWdsM+dWN0Ju1I+R2VEdI+KqGdcaLwWHLpQDsbG1Dds8cFCxy2RCtrB0n2a1HFJj/M0F05A6FaaZI8IWJBBX3iZP/YEVQntjR3PgrTth6rRMZP9pQzL52jDXtExb71AAFXZ4k770dBHn7MqqyeFDeIOhgH2iTGtaQGvg6BJLzexBZ1YzwzzXYwAj9VIOQ8pesO61BRGUL4tUuzz+zuFG2ASS/DYprBvlXI+fVAVnGZk/Gax6pEItzESnJhTh8H4LWJsN/hQRvIKx6SX+JyYmy9Bzt6gbtYYTW4YFPBT7wLIe3sBRebB0XW++cd84YvP+CMSJZadoUd6QzKNzvBEvqnoucvTfdX5QYRQ5BRi8oS4f5ba14HK3CgETFv7P7hmsnK26sN8VUKI1xRXWGd9KTVT5bndNYOucdCAwo57ouDL9rLzAIKVMHytFjvsiAZ0cNmC4bdB86P7xGqxyOblaZ4quVxoTjxe1r93vlI5ZLgDMgAMelYsu6SlfjGVO4/ZRxFRUYOLvCiOenTdyjs8O+IxfNUXevmjd/ywS1xzqDS18vdpIjAsLF91DAbUdiYKlz94H2gBcKvZAqx1bO1Vh8HistoWaVOeaXMl3IzZQrqy+uLuZnIwyrWDHvfzeZPQgEsdiwPA3Hgytd9NEqNyvjH0m928zGL90HAkqWnHPaDik/CiLHAXs1/gU8lc1wSyvYVQAAAABJRU5ErkJggg==

Отредактировано Jarichek (01-12-2009 21:56:55)

Отсутствует

 

№627-03-2010 23:22:20

MySh
Кактусогрыз
 
Группа: Extensions
Зарегистрирован: 17-12-2006
Сообщений: 4623
UA: Firefox 3.6

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

Stop All Tabs (Firefox)
Автор: Yan.
Останавливает загрузку текущей вкладки + дополнительно позволяет останавливать фоновую загрузку всех вкладок.

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

Выделить код

Код:

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%3EStop%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gkPDzESY3gWcgAAAqFJREFUeNplkz1sE0kYhp9dZzfBXq8HYpQUBxjOinQUVhBQRKIB3XFSjkgIAlQUAV1/6VPS5yip0FFCwU8kBxSJSG7QFXBgCayDIEwgQPjd7Np79s7uDIWDiXOfNBppPj2v3u9nDDbEpdzAqOtkFp1MWmx8x4BGM/RW/ebPf/itB4DekPoO57dtXTw2dULYfQriBJK4c8cxkWExd/WO//D9p/ELjegeoLoCXfj8KWF/eQuvlkFKiNaPlDA8TLTrR+auLfSIpLrw76eFHXxg6e8aq6GJSMWk0Mh2zNPWFtZWPpA32hQPHej3l99NjsioUomSFdN1MovHzk0K21tl6d4Ttl/8i+L1BapBmjCMqMbbKM5X2H7lBs+erGDUakycOOzuFdkykDGdTFrYtobXy0jTJl0oYAlB6WaZ2q4xSrfmsYQgXSggtzjIF3VSzYCsk3aBnAl0GiUlxWxM9fg40vOwhGD/5ctYQiA9j0fjRynITyil0bo7BKsjkMQQxVhofur7QnV6umeK1elpRoKXmIBSCrTq5r47iCQybFGTgtLsbI9AaXaWf7M7acsYlSi00t0FMDHWHUjJUtOmdHO+a/v+1FS3nNHyAi/tPEmyyUGjGXqR7oOhIaymT1ivd2r+7Sgj98s8Gv8F6XmE9TpmsIa9ewfazRE0Qh/A+NMd2P9DfuvdiTO/uvbzpzx7/Ao54FCIP5NC04pi6lYeM/Ao7Bmkf1+JuRsV/9bKx7NX/pMPUrfb8bsRGVX8+pvJ4qGD/YO6Re7zW3SiSJIEnSiybZ/B3cOb4X+AtW9/wZxx7LHRocHyxMkjbioMQOtOs7RCK4V2c5thD2gaG5ptzjj22F6RLa8vSc93Cxqhf/uj3wMDyqA3TCAD5ACL/4cE1r7BAF8BBX1jYyT/fJkAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.StopAll%3Dfunction%28%29%7B%0A%20try%7B%0A%20%20for%20%28var%20i%3D0%3Bi%3CgBrowser.browsers.length%3Bi++%29%7B%0A%20%20%20%20gBrowser.browsers%5Bi%5D.stop%28%29%3B%0A%20%20%7D%0A%20%7Dcatch%28ex%29%20%7B%7D%0A%7D%0A%20var%20nMItem%3Dfunction%28label%2Cimg%2Cobj%29%7B%0A%20%20%20var%20m%3Ddocument.createElement%28%27menuitem%27%29%3B%0A%20%20%20m.setAttribute%28%27label%27%2Clabel%29%3B%0A%20%20%20m.f%3Dobj.StopAll.bind%28obj%29%3B%0A%20%20%20m.setAttribute%28%27oncommand%27%2C%27this.f%28%29%27%29%3B%0A%20%20%20m.setAttribute%28%27image%27%2Cimg%29%3B%0A%20%20%20m.setAttribute%28%27class%27%2C%27menuitem-iconic%27%29%3B%0A%20%20%20return%20m%3B%0A%20%7D%0A%0A%20var%20mP%3Ddocument.createElement%28%27menupopup%27%29%3B%0A%20mP.appendChild%28nMItem%28%27Stop%20All%20Tabs%27%2Cthis.image%2Cthis%29%29%3B%0A%0A%20this.appendChild%28mP%29%3B%0A%20this.type%3D%22menu-button%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BBrowserStop%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Пиктограмма:

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gkPDzESY3gWcgAAAqFJREFUeNplkz1sE0kYhp9dZzfBXq8HYpQUBxjOinQUVhBQRKIB3XFSjkgIAlQUAV1/6VPS5yip0FFCwU8kBxSJSG7QFXBgCayDIEwgQPjd7Np79s7uDIWDiXOfNBppPj2v3u9nDDbEpdzAqOtkFp1MWmx8x4BGM/RW/ebPf/itB4DekPoO57dtXTw2dULYfQriBJK4c8cxkWExd/WO//D9p/ELjegeoLoCXfj8KWF/eQuvlkFKiNaPlDA8TLTrR+auLfSIpLrw76eFHXxg6e8aq6GJSMWk0Mh2zNPWFtZWPpA32hQPHej3l99NjsioUomSFdN1MovHzk0K21tl6d4Ttl/8i+L1BapBmjCMqMbbKM5X2H7lBs+erGDUakycOOzuFdkykDGdTFrYtobXy0jTJl0oYAlB6WaZ2q4xSrfmsYQgXSggtzjIF3VSzYCsk3aBnAl0GiUlxWxM9fg40vOwhGD/5ctYQiA9j0fjRynITyil0bo7BKsjkMQQxVhofur7QnV6umeK1elpRoKXmIBSCrTq5r47iCQybFGTgtLsbI9AaXaWf7M7acsYlSi00t0FMDHWHUjJUtOmdHO+a/v+1FS3nNHyAi/tPEmyyUGjGXqR7oOhIaymT1ivd2r+7Sgj98s8Gv8F6XmE9TpmsIa9ewfazRE0Qh/A+NMd2P9DfuvdiTO/uvbzpzx7/Ao54FCIP5NC04pi6lYeM/Ao7Bmkf1+JuRsV/9bKx7NX/pMPUrfb8bsRGVX8+pvJ4qGD/YO6Re7zW3SiSJIEnSiybZ/B3cOb4X+AtW9/wZxx7LHRocHyxMkjbioMQOtOs7RCK4V2c5thD2gaG5ptzjj22F6RLa8vSc93Cxqhf/uj3wMDyqA3TCAD5ACL/4cE1r7BAF8BBX1jYyT/fJkAAAAASUVORK5CYII=

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

Выделить код

Код:

this.StopAll=function(){
 try{
  for (var i=0;i<gBrowser.browsers.length;i++){
    gBrowser.browsers[i].stop();
  }
 }catch(ex) {}
}
 var nMItem=function(label,img,obj){
   var m=document.createElement('menuitem');
   m.setAttribute('label',label);
   m.f=obj.StopAll.bind(obj);
   m.setAttribute('oncommand','this.f()');
   m.setAttribute('image',img);
   m.setAttribute('class','menuitem-iconic');
   return m;
 }

 var mP=document.createElement('menupopup');
 mP.appendChild(nMItem('Stop All Tabs',this.image,this));

 this.appendChild(mP);
 this.type="menu-button";

Код:

Выделить код

Код:

BrowserStop();


Добавлено 27-03-2010 23:32:57
Инвертировать выделение (Firefox)
Автор: Anton.
Позволяет инвертировать выделение (менять местами выделенные области). Незаменимая вещь для пользователей расширений типа Scrapbook (обсуждение функционала, обсуждение кнопки).
скрытый текст
Код кнопки:

Выделить код

Код:

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%u0418%u043D%u0432%u0435%u0440%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%0Afunction%20notNull%20%28x%29%20x%20%21%3D%20null%3B%0Afunction%20compareRanges%20%28r1%2C%20r2%29%0A%7B%0A%20%20%20%20return%20r1.%20compareBoundaryPoints%20%28Range.%20START_TO_START%2C%20r2%29%3B%0A%7D%0Avar%20doc%20%3D%20gBrowser.%20contentDocument%3B%0Avar%20win%20%3D%20document.%20commandDispatcher.%20focusedWindow%3B%0Avar%20sel%20%3D%20win.%20getSelection%20%28%29.%20QueryInterface%20%28Components.%20interfaces.%20nsISelectionPrivate%29%3B%0Avar%20ranges%20%3D%20%5B%5D%3B%0Avar%20i%2C%20j%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20sel.%20rangeCount%3B%20i++%29%0A%20%20%20%20ranges.%20push%20%28sel.%20getRangeAt%20%28i%29.%20cloneRange%20%28%29%29%3B%0Aranges.%20sort%20%28compareRanges%29%3B%0Avar%20range1%2C%20range2%3B%0Avar%20css%2C%20cse%2C%20ces%2C%20cee%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20ranges.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20range1%20%3D%20ranges%20%5Bi%5D%3B%0A%20%20%20%20if%20%28%21range1%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20if%20%28range1.%20collapsed%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20ranges%20%5Bi%5D%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28j%20%3D%20i%20+%201%3B%20j%20%3C%20ranges.%20length%3B%20j++%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20range2%20%3D%20ranges%20%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28%21range2%29%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20css%20%3D%20range1.%20compareBoundaryPoints%20%28Range.%20START_TO_START%2C%20range2%29%3B%0A%20%20%20%20%20%20%20%20cse%20%3D%20range1.%20compareBoundaryPoints%20%28Range.%20START_TO_END%2C%20range2%29%3B%0A%20%20%20%20%20%20%20%20ces%20%3D%20range1.%20compareBoundaryPoints%20%28Range.%20END_TO_START%2C%20range2%29%3B%0A%20%20%20%20%20%20%20%20cee%20%3D%20range1.%20compareBoundaryPoints%20%28Range.%20END_TO_END%2C%20range2%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%28css%20%3C%3D%200%29%20%26%26%20%28cee%20%3E%3D%200%29%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ranges%20%5Bj%5D%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%28css%20%3C%3D%200%29%20%26%26%20%28cse%20%3E%3D%200%29%20%26%26%20%28cee%20%3C%3D%200%29%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20range1.%20setEnd%20%28range2.%20endContainer%2C%20range2.%20endOffset%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20ranges%20%5Bj%5D%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28range1.%20collapsed%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20ranges%20%5Bi%5D%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%7D%0A%7D%0Aranges%20%3D%20ranges.%20filter%20%28notNull%29%3B%0Asel.%20startBatchChanges%20%28%29%3B%0Asel.%20removeAllRanges%20%28%29%3B%0Avar%20range%20%3D%20doc.%20createRange%20%28%29%3B%0Asel.%20addRange%20%28range%29%3B%0Arange.%20setStartBefore%20%28doc.%20body.%20firstChild%29%3B%0Afor%20%28i%20%3D%200%3B%20i%20%3C%20ranges.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20range.%20setEnd%20%28ranges%20%5Bi%5D.%20startContainer%2C%20ranges%20%5Bi%5D.%20startOffset%29%3B%0A%20%20%20%20if%20%28range.%20collapsed%29%0A%20%20%20%20%20%20%20%20sel.%20removeRange%20%28range%29%3B%0A%20%20%20%20range%20%3D%20doc.%20createRange%20%28%29%3B%0A%20%20%20%20sel.%20addRange%20%28range%29%3B%0A%20%20%20%20range.%20setStart%20%28ranges%20%5Bi%5D.%20endContainer%2C%20ranges%20%5Bi%5D.%20endOffset%29%3B%0A%7D%0Arange.%20setEndAfter%20%28doc.%20body.%20lastChild%29%3B%0Aif%20%28range.%20collapsed%29%0A%20%20%20%20sel.%20removeRange%20%28range%29%3B%0Aif%20%28sel.%20rangeCount%20%3D%3D%200%29%0A%20%20%20%20sel.%20addRange%20%28doc.%20createRange%20%28%29%29%3B%0Asel.%20endBatchChanges%20%28%29%3B%0Awin.%20blur%20%28%29%3B%0Awin.%20focus%20%28%29%3B%0A//sel.%20deleteFromDocument%20%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Пиктограмма:

Выделить код

Код:

data:image/png;base64,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

Код:

Выделить код

Код:

function notNull (x) x != null;
function compareRanges (r1, r2)
{
    return r1. compareBoundaryPoints (Range. START_TO_START, r2);
}
var doc = gBrowser. contentDocument;
var win = document. commandDispatcher. focusedWindow;
var sel = win. getSelection (). QueryInterface (Components. interfaces. nsISelectionPrivate);
var ranges = [];
var i, j;
for (i = 0; i < sel. rangeCount; i++)
    ranges. push (sel. getRangeAt (i). cloneRange ());
ranges. sort (compareRanges);
var range1, range2;
var css, cse, ces, cee;
for (i = 0; i < ranges. length; i++)
{
    range1 = ranges [i];
    if (!range1)
        continue;
    if (range1. collapsed)
    {
        ranges [i] = null;
        continue;
    }
    for (j = i + 1; j < ranges. length; j++)
    {
        range2 = ranges [j];
        if (!range2)
            continue;
        css = range1. compareBoundaryPoints (Range. START_TO_START, range2);
        cse = range1. compareBoundaryPoints (Range. START_TO_END, range2);
        ces = range1. compareBoundaryPoints (Range. END_TO_START, range2);
        cee = range1. compareBoundaryPoints (Range. END_TO_END, range2);
        if ((css <= 0) && (cee >= 0))
        {
            ranges [j] = null;
            continue;
        }
        if ((css <= 0) && (cse >= 0) && (cee <= 0))
        {
            range1. setEnd (range2. endContainer, range2. endOffset);
            ranges [j] = null;
            continue;
        }
    }
    if (range1. collapsed)
    {
        ranges [i] = null;
        continue;
    }
}
ranges = ranges. filter (notNull);
sel. startBatchChanges ();
sel. removeAllRanges ();
var range = doc. createRange ();
sel. addRange (range);
range. setStartBefore (doc. body. firstChild);
for (i = 0; i < ranges. length; i++)
{
    range. setEnd (ranges [i]. startContainer, ranges [i]. startOffset);
    if (range. collapsed)
        sel. removeRange (range);
    range = doc. createRange ();
    sel. addRange (range);
    range. setStart (ranges [i]. endContainer, ranges [i]. endOffset);
}
range. setEndAfter (doc. body. lastChild);
if (range. collapsed)
    sel. removeRange (range);
if (sel. rangeCount == 0)
    sel. addRange (doc. createRange ());
sel. endBatchChanges ();
win. blur ();
win. focus ();
//sel. deleteFromDocument ();

Отредактировано MySh (27-03-2010 23:34:25)

Отсутствует

 

№716-05-2010 17:57:29

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Minefield 3.7

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

Disable/enable windows titlebar with drag ability (кроме панели вкладок) (Firefox)
При добавлении кнопки окно Firefox потеряет виндовый тайтлбар и рамки (все, даже общая вокруг окна, что я думаю мог бы кто-нибудь исправить) по бокам и снизу, но его станет можно перетаскивать за любую панель кроме таббара и персональных панелей (это можно исправить добавив id нужных тулбаров в строку, где они все перечислены).

скрытый текст
Установка кнопки

Выделить код

Код:

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%u0441%u0442%u043E%u044F%u043D%u043D%u043E%20%u0432%u044B%u043A%u043B%u044E%u0447%u0435%u043D%u043D%u044B%u0439%20Chrome-%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043E%u043A%20-%20%u043F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqkUz1PwzAQPUedmBCDw8pEg1IJdiREV/4H8Bf4GcnGxsKEQGKDlXYrIgtF7Bk8gQqUJG6wD9tJ81UhIL3Ivvh09+75WUcQEZaxju/7h8qftqw/As/zsGpCLSklpl9qCYHJLMXjE6/wD49j49nLO+raPwHo9RZxnHwm+DqNkU0+CoDOnMvF5fW/uO/2+5kGelNdYWVtFQ7294qE0X0AO9u9WhFRn7abwbAUsYnMGAP9Ms3XIYTUzjwVxlt6qybTdQq2bQNKUem8aELKCkAeNEAqHoYhjJ+ei2QkPzPJriDzRCEMMqUUoiguC3QHK/MIuAgw5TNziDmHIAigyb1oaumQVQPINcgoCBTgui44TreGgPM/dZemuIZBkis6GJXdN7Y24fZu+PssGAkkQtfptRsmPRBX52eth4ksO87fAgwAwhDaXBPgKF4AAAAASUVORK5CYII%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%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%0Awindow.restore%28%29%3B%0Awindow.maximize%28%29%3B%0Awindow.restore%28%29%3B%0A%0Athis.drag%3D%20function%28%29%20%7B%0A%20%20if%28window%5B%22bDragW%22%5D%20%29%0A%20%20%20%20return%3B%0Avar%20Ctrls%20%3D%20%5B%27PersonalToolbar%27%2C%20%27toolbar-menubar%27%2C%27nav-bar%27%2C%20%27status-bar%27%2C%20%27FindToolbar%27%5D%3B%0A%20%20try%20%7B%0A%20%20%20%20%20Components.utils.import%28%27resource%3A//gre/modules/WindowDraggingUtils.jsm%27%29%3B%0A%0A%20%20%20%20%20for%28i%3D0%3B%20i%3CCtrls.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20ctrlW%20%3D%20document.getElementById%28Ctrls%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20if%20%28%21ctrlW%29%20continue%3B%0A%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20bDragW%20%3D%20new%20WindowDraggingElement%28ctrlW%2C%20window%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20DragW.mouseDownCheck%3Dfunction%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%20WinState%3D%3D0%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%7Dcatch%28e%29%7B%7D%0Awindow%5B%22bDragW%22%5D%3Dtrue%0A%7D%0Athis.drag%28%29%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20mainWindow%20%3D%20document.getElementById%28%22main-window%22%29%3B%0Avar%20chromeattrib%3DmainWindow.getAttribute%28%27hidechrome%27%29%0A%0A%0Athis.togglechrome%20%3D%20function%28%29%20%7B%0A%20%20if%28chromeattrib%3D%3D%27true%27%29%20%7B%0A%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27false%27%29%3B%0Awindow.restore%28%29%3B%0Awindow.maximize%28%29%3B%0Awindow.restore%28%29%3B%0A%20%20%20%20%20%20this.checked%3Dtrue%3B%0A%20this.image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqkUz1PwzAQPUedmBCDw8pEg1IJdiREV/4H8Bf4GcnGxsKEQGKDlXYrIgtF7Bk8gQqUJG6wD9tJ81UhIL3Ivvh09+75WUcQEZaxju/7h8qftqw/As/zsGpCLSklpl9qCYHJLMXjE6/wD49j49nLO+raPwHo9RZxnHwm+DqNkU0+CoDOnMvF5fW/uO/2+5kGelNdYWVtFQ7294qE0X0AO9u9WhFRn7abwbAUsYnMGAP9Ms3XIYTUzjwVxlt6qybTdQq2bQNKUem8aELKCkAeNEAqHoYhjJ+ei2QkPzPJriDzRCEMMqUUoiguC3QHK/MIuAgw5TNziDmHIAigyb1oaumQVQPINcgoCBTgui44TreGgPM/dZemuIZBkis6GJXdN7Y24fZu+PssGAkkQtfptRsmPRBX52eth4ksO87fAgwAwhDaXBPgKF4AAAAASUVORK5CYII%3D%22%3B%20%0A%20%20%7D%0A%20%20else%20%7B%20%20%0A%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%20%0Awindow.restore%28%29%3B%0Awindow.maximize%28%29%3B%0Awindow.restore%28%29%3B%0A%20%20%20%20%20this.image%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNpi/P//PwMlgImBQsCyc+/eGiDdTIbes0C8mYWDg6PZztqafBeAiDffsUuGxkeBaWnvcAy5CWH+EAM+fvpE0BYpfWMU/rOLZzED8dyxvWCMDYA0dBvIgDGyZrALPgFd8P/fPwZ3Z2ewwMuv/xkYgfR/BvzR++8fRJ7l569fDH///mPYuXc/WEDP1B6ighFVQ0xVI4ShbgCm/v/9iwjEf38QLnj67hfYdjT9DP+hGmHgD8iA/4wQA/4COcD0AJbQ0LdiYCQicf7985eBkRHqApBpVmZGYIk3X//CFcmoqEMYNy9ghoG7MyigIAaA/PPqEyxC/oI9wAgkG7ILoAHKiBYs/xn+AcMNJqY0Z9Giu+QmZcYBz40AAQYAXyBzO2qih9QAAAAASUVORK5CYII%3D%22%3B%0A%20%20%20%20this.checked%3Dfalse%3B%0A%20%20%7D%0A%7D%0Athis.togglechrome%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********************************************************************%20%20%20%20%20%20%20%20%0A%0A%20Toggles%20window%20chrome%20for%20your%20browser.%20%20%20%20%20%20%20%20%20%0A%20Makes%20the%20window%20almost%20chromeless%20meaning%20no%20titlebar%20%20%20%20%20%20%20%20%20%0A%20but%20taskbar%20should%20still%20be%20accessible.%20%20%20%20%20%20%20%20%20%0A%0A%20Convenient%20for%20going%20fullscreen%20without%20losing%20all%20%20%20%20%20%20%20%20%20%0A%20those%20useful%20toolbars%20and%20the%20windows%20taskbar.%20%20%20%20%20%20%20%20%0A%0A%20By%20default%20this%20button%20makes%20the%20browser%20startup%20chromeless%20%20%20%20%20%20%20%20%20%0A%20you%20can%20change%20this%20by%20commenting%20out%20the%20appropriately%20marked%20%20%20%20%20%20%20%20%20%0A%20line%20of%20code%20in%20the%20button%27s%20initialization%20tab.%20%20%20%20%20%20%20%20%20%0A%0A********************************************************************%20%20%20%20%20%20%20%20%0A%0A%20Directly%20Clicking%20on%20the%20Button%20does%20the%20following%3A%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20L%20%3D%20Toggles%20Chrome%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20Any%20Other%20Click%20%3D%20Custom%20Buttons%20Context%20Menu%20%20%20%20%20%20%20%20%0A%0A********************************************************************%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

var mainWindow = document.getElementById("main-window");
var chromeattrib=mainWindow.getAttribute('hidechrome')


this.togglechrome = function() {
  if(chromeattrib=='true') {
  document.getElementById("main-window").setAttribute('hidechrome','false');
window.restore();
window.maximize();
window.restore();
      this.checked=true;
 this.image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqkUz1PwzAQPUedmBCDw8pEg1IJdiREV/4H8Bf4GcnGxsKEQGKDlXYrIgtF7Bk8gQqUJG6wD9tJ81UhIL3Ivvh09+75WUcQEZaxju/7h8qftqw/As/zsGpCLSklpl9qCYHJLMXjE6/wD49j49nLO+raPwHo9RZxnHwm+DqNkU0+CoDOnMvF5fW/uO/2+5kGelNdYWVtFQ7294qE0X0AO9u9WhFRn7abwbAUsYnMGAP9Ms3XIYTUzjwVxlt6qybTdQq2bQNKUem8aELKCkAeNEAqHoYhjJ+ei2QkPzPJriDzRCEMMqUUoiguC3QHK/MIuAgw5TNziDmHIAigyb1oaumQVQPINcgoCBTgui44TreGgPM/dZemuIZBkis6GJXdN7Y24fZu+PssGAkkQtfptRsmPRBX52eth4ksO87fAgwAwhDaXBPgKF4AAAAASUVORK5CYII="; 
  }
  else {  
   document.getElementById("main-window").setAttribute('hidechrome','true');
  
window.restore();
window.maximize();
window.restore();
     this.image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAR5JREFUeNpi/P//PwMlgImBQsCyc+/eGiDdTIbes0C8mYWDg6PZztqafBeAiDffsUuGxkeBaWnvcAy5CWH+EAM+fvpE0BYpfWMU/rOLZzED8dyxvWCMDYA0dBvIgDGyZrALPgFd8P/fPwZ3Z2ewwMuv/xkYgfR/BvzR++8fRJ7l569fDH///mPYuXc/WEDP1B6ighFVQ0xVI4ShbgCm/v/9iwjEf38QLnj67hfYdjT9DP+hGmHgD8iA/4wQA/4COcD0AJbQ0LdiYCQicf7985eBkRHqApBpVmZGYIk3X//CFcmoqEMYNy9ghoG7MyigIAaA/PPqEyxC/oI9wAgkG7ILoAHKiBYs/xn+AcMNJqY0Z9Giu+QmZcYBz40AAQYAXyBzO2qih9QAAAAASUVORK5CYII=";
    this.checked=false;
  }
}
this.togglechrome();

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

Выделить код

Код:

document.getElementById("main-window").setAttribute('hidechrome','true');
 
window.restore();
window.maximize();
window.restore();

this.drag= function() {
  if(window["bDragW"] )
    return;
var Ctrls = ['PersonalToolbar', 'toolbar-menubar','nav-bar', 'status-bar', 'FindToolbar'];
  try {
     Components.utils.import('resource://gre/modules/WindowDraggingUtils.jsm');

     for(i=0; i<Ctrls.length; i++) {
       ctrlW = document.getElementById(Ctrls[i]);
       if (!ctrlW) continue;
       try {
           var bDragW = new WindowDraggingElement(ctrlW, window);
           DragW.mouseDownCheck=function(e) {
             return  WinState==0
           }
      }catch(e){}
      }
   }catch(e){}
window["bDragW"]=true
}
this.drag()


p.s.: код кнопки основан на коде 4-ой кнопки из этого поста + доработан автором foxiFrame basic'а (добавленный код - одна из функций которое выполняет это же дополнение, возможно вам стоит посмотреть и его (там больше функций))
p.p.s.: если использовать эту кнопку в сочетании с
1. 4-ой кнопкой этого поста (Меню делает иконкой)
+ 2. кнопку из этого поста (титульник страницы на панель)
+ 3. первые 3 кнопки из этого поста (скрыть, развернуть и закрыть окно) (их ещё бы можно переделать сделав их похожими на дефолтные виндовые (как в вин висте и вин 7)
= то можно разместить все эти кнопки на 1 панели меню: лого кнопку - слева (клик по ней - вызывает меню), потом титульник страницы, потом изменяемый интервал, потом кнопки "свернуть", "развернуть" и "закрыть" (они будут справа) - то получится хорошо сэкономить место на экране, за счёт убирания виндовой рамки и тайтлбара + функциональность вся остаётся, и можно ещё на свободное место перетащить другие КБ кнопки (между тайтлбаром и кнопками свернуть-развернуть-закрыть).

Отредактировано iDev.Pi (20-07-2010 20:41:50)


mzfx

Отсутствует

 

№803-06-2010 23:25:57

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Minefield 3.7

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

Minimize/Maximize/Close window (win7 aero style) (Firefox)
Тут уже эти кнопки были выложены (на 1-ой странице), но мне захотелось прикрутить к ним другие иконки, стилизованные под win7 aero, разница только в этом.

Свернуть окно (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%u0421%u0432%u0435%u0440%u043D%u0443%u0442%u044C%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3Evar%20cssStr%20%3D%20%26lt%3B%21%5BCDATA%5B%0A%09%09%25button%25%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB0AAAATCAYAAABsmQZ/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAAESUlEQVRIS42VWU9bVxDH7zcCRYqagmNsyEPf2+apjRS1SgMGQonAJixp8G5sMAQCMSGRmtKGhMV4t8GkEomxDV4wUOOVpdBHvsK/c861ARM/cKWfZs42/zn3nntGODw6QmPTHZye/oed3T3s7l2wR/7e3j+XKI2V5zFbBRangp1Sm+zR0TGEsujJ6akoWuaS+Hkil8a/CFxNiIldgYseHLKdNoGLVpnE+yhgqjRWtuLcXeqv5HIMNvfquCh6cAh5YxPfdiyeQJxgtkw8nqxox2KV45fb8QStTySrQ3HYWKF4AKFQPIRM1oh8oYhQKHLBRjU/jM8hkVCZjTA2GOEIwoxIFBGC2TKRyCb1MaLI5fIQ8vkipFI5HZZ9+P1BkUA1u0pjlQQCqwisrGKFsRrEanANQcbaR6yd8zf5F7AzI2QyBdTXNyCZ3MHysreE58J3sD7WZrgJF8fhIJxuOF0euAiPxwuv1wefzw+fP0AJlgis0CYYlDCxvZ2CkE7nceuWFJubSczN2b/g/Xs7RJY4c3OLZBfw4cMi5ueXML+whMVFO+z2ZSw7nJSEi5Jww+X2wM3xilBSbo+PnxlhdzeHmzclFMSJzs4BPH78FF1dIt3dvxHMH8CP99rw7d0H1+L+Tx0wGEwwmoZg4phLWCg5B4Tt7Qxu3KjD7OwSWlpUUBCtCrIKJVpblWhrUxFKLnbdh81Vq7XQaHTQaHXQ6vTQcQxYoDcjJBP7qK39Gm/fLuCXB11obu4muigBEYWimxLp4qJnZ2fXoiyqZqIaPUerNXC4aCKeRk3NLRJdwsOHSrQ0K0mktEu2U6K1tZuLnpycXAsuqmEiRtqlkXZogl7PGMICfX8hkUijtuYrvHvnpNfYj/ZHfXjE6OjDr50X/HBPca3vyQTv/9wBrcECvXEYBuMIYeUYTVYs2V30epNpfpAW5t3o6dFDqdRAqWKooSLb06NGzxMNVGRVqkHqf0b+IJ70qtHbr0XfgA5PnxkxqB6CVs9ERmEyj2OIMFsmYBl+QUye43D6IaRS+5DLv6H/zg+zeYoOwAh9fEIjWi3ztcPUFhlUmzkarQUa3TB0erYLUYgFt47aMPZ8BmPjM3g+8RrjL95wJkp4fWsQ1tejdHA60N7eQf9WELbpWb7IOjqNEcI6RjDf+hKWkSke2Mwhn7WtUzTPhtHxVxiffINJ2++Ymv4DL1/NwjbzJ6Zf/wUbwSwj+PETBPasr4cgl92hk9rOr7NYLEX3ZOyccDhGd+sWQhtRunej+PQ5Ugn1hTY26a6lNdEEoltJbDJi20QKW0TZMp+LsodVk/7eAXz/3V00yhspCYJbORUEORqkMty+LYVEIqFrU4K6uvoK6qlfQuNSmtfQIONrWCGRUYyrnIsyJ53O4Pj4XxEqdQxW8o6o5rISWCwWkc8XeKXIZnOcTCaLTDaLbC6HHI2xalUoHPASVqQKVmTrrvA/8KJW0ZMmlNcAAAAASUVORK5CYII%3D%22%29%20%21important%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-moz-box-shadow%3A%20none%20%21important%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%20background%3A%20none%20%21important%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%20border%3A%200%20%21important%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%20padding%3A%200%20%21important%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%20margin%3A%200%20%21important%3B%0A%09%09%7D%0A%09%09%25button%25%3Ahover%2C%20%25button%25%3A-moz-window-inactive%3Ahover%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%3D%22%29%20%21important%3B%0A%09%09%7D%0A%09%09%25button%25%3Aactive%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%3D%3D%22%29%20%21important%3B%0A%09%09%7D%0A%09%09%25button%25%3A-moz-window-inactive%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB0AAAATCAYAAABsmQZ/AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAAB90RVh0U29mdHdhcmUAUGFpbnQuTkVUID8/Pz8/PyAzLjUuNefKA2EAAASTSURBVEhLjZV5UxNZFMX7E47LUDJWqSMuKMqIUzpCICFrJ+mkO+l0d/aQhcgeCGZYZFVAdGY+h3/7Fc6c+xLQ8i+66lf3Lfe9c959L6AdHBxiZOQh1jrryDnegDwjyeXhDKJte8hmXeIo7KyNnO0wx4GTc5nnwnUL8PIl5AtlFIoVFEs1lMpzKFXqKFcbirX1TWg7u+9x5+49LCwuI21mFKaZhWkRxnSaYxekLKQEw2RMI50yYaYtWFxjWRlkLBu2MkLzNOB6RWXCowmvWKWRKpZX16H1elsYHr6NZmseup6EHjcQj6eQSBqKuPT1FPRYkpHzjHosoZB+Ii4YSDJXzKRpQsxaVg4ZqQwrZEu13CJyXgkLS2vQ1je6GBq6hVqtjmAoQqIIhWIIh/UBbLMvYyHOhUkkHOFchJHtSBTRiI5oVFemxWQimaIJE0mpSpoVyziwaCCT9dB+uwRN7vL69ZusfxXTM7OKGX8Q/kCoj7T9gzgTQoBjfcIIzIYxq4jQkEBTykACURqIqYqlYaQySjzF8jfnF6GtrHbwy7Ub6vInp/yY8s0QiX74pmcZA31kjvimA5ieDtJcH3+gb1AZoQGpVijEKkXiiESTSlxPiLhF8SwazTa05RURvUnRCt5M+vGGApMCBd6QyamAihcoAyLMUytYBWGGJ/fL6YMRzPIqghQO8dR9YQM6y50wLMw1KLra2cC1G0PqeU/yBBdM+dgWZMw3+32cfZ8IUWCGZRX8FPIHoxQkFAwMBEMsczhmUDSFOE+aMDKYk5N2uj3cHBpGpdbkBlESo+MoN/2Oj+1791/g11ujV+L3BxOXYrGEyVNaiLO0RtpGQ+50s7eDW7/dQb21gFA0pQhGjJ9IKrGrfpKr81RxI8sXbMMwHT4iF6mMh1Z7GdrW7j5u37mP1sIq3eQUOpP1pK2IJTMK2ejbt29XQnJT2bzCzBZg5YrIOCVknTLaix1o7w8+4O7IYyytbsLkpGmX+LsqcEEB6cFCcSgbff369UpIbtatwPZIvoJcvgYnPwe3WMcidbTDj2cYeTyGTncbTqEOuzCnkmyvhqxXHVDBo6evrnSfIjg69hfcUh1eqXFJvtxEodzCSqcH7ePZFzwd/xMb73ZQmmsjX2mRJvKlJlwmuuUGHG4gmwiqzbFLmOtJfrWFwgW1ebbbiqJivh9rbaxtbEE7/fIfXr72ocsH1WivotxYoDhhQoEU1QY0UqVTFX+G8yr3LdcRiUL9BzheFji2xoqyvOdIWg6K/PfT/fs9WrzoanMJlcYiF4qBtyiyAkqc5OlaomoPojInOSIqa0h5wEVfTIhohxXV5NvdP8b4xGveYxGdzW1s7R2jt3OAd9v76G7tKTMbPWGX7KiF6xLJOsf69HO6gqz5iU32hXfbe31R+Q6OT9Xv6BX/FD55PoEnzybweOwF+YOPaBwPnzzHg1HhGR+eMPYD/bH+/HOV+0gxrtbKHheMsn0pqoQ/nOHk/F98/PQP5IF9OP2C45PPODo5h7xymRdz+0cn2Dv8AekfcZxzB8dnOGSe5B+dfFIcC6fnAz7jf77nyyVS9zSnAAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%5D%5D%26gt%3B%0A%09.toString%28%29%0A%09.replace%28/%25button%25/g%2C%20%22%23%22%20+%20this.id%29%3B%0Avar%20cssURI%20%3D%20this._cssURI%20%3D%20makeURI%28%20//%20chrome%3A//global/content/contentAreaUtils.js%0A%09%22data%3Atext/css%2C%22%0A%09+%20encodeURIComponent%28cssStr%29%0A%29%3B%0Athis.setSheet%20%3D%20function%28cssURI%2C%20addFlag%29%20%7B%0A%09var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%09%09.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%09if%28sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%20%26amp%3B%26amp%3B%20%21addFlag%29%0A%09%09sss.unregisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%09if%28addFlag%29%0A%09%09sss.loadAndRegisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%7D%0Athis.setSheet%28cssURI%2C%20true%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%09this.setSheet%28this._cssURI%2C%20false%29%3B%0A%7D%3B%20%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bwindow.minimize%28%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код

Выделить код

Код:

window.minimize()

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

Выделить код

Код:

var cssStr = <![CDATA[
        %button% {
            list-style-image: url("1pic") !important;
                        -moz-box-shadow: none !important;
                        background: none !important;
                        border: 0 !important;
                        padding: 0 !important;
                        margin: 0 !important;
        }
        %button%:hover, %button%:-moz-window-inactive:hover {
            list-style-image: url("2pic") !important;
        }
        %button%:active {
            list-style-image: url("3pic") !important;
        }
        %button%:-moz-window-inactive {
                        list-style-image: url("4pic") !important;
                }
    ]]>
    .toString()
    .replace(/%button%/g, "#" + this.id);
var cssURI = this._cssURI = makeURI( // chrome://global/content/contentAreaUtils.js
    "data:text/css,"
    + encodeURIComponent(cssStr)
);
this.setSheet = function(cssURI, addFlag) {
    var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    if(sss.sheetRegistered(cssURI, sss.USER_SHEET) && !addFlag)
        sss.unregisterSheet(cssURI, sss.USER_SHEET);
    if(addFlag)
        sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);
}
this.setSheet(cssURI, true);
this.onDestroy = function() {
    this.setSheet(this._cssURI, false);
};

Развернуть/восстановить окно (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%u0420%u0430%u0437%u0432%u0435%u0440%u043D%u0443%u0442%u044C%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%3Evar%20sId%20%3D%20%22__customButtonsStyle__%22%20+%20this.id%3B%20//%20Unique%20style%20%22id%22%0Avar%20cssStr%20%3D%20%26lt%3B%26gt%3B%26lt%3B%21%5BCDATA%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25button%25%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAADeElEQVQ4T43U/1PaZhwH8Pxd3beiod2Prnrurnfbfpp33bqz7qQKCCEQQgJJgCRY+aKzTrer3e1LLVrYJu02IgExAsGVL4Far3abv+w/2D4JGpzecXvudbmH557PO58nR4LgXu/JyUm1qhpqF9XUmlo3qWpdrZsO1PqBvnIGth2+PEI8Hvws8VIc3OMssV+pJxpZPUaceUs90eVy/6X3eDmupseZif3WzMTT7vqHqNUPD48Qh8N5/Pr13p7SUzbAhKQio+MTA5B0VNmvKErfnrKvdbrIzMzsq1fHBblYKABZnxgg65+BAzYUiyW5R9avBbnUbLWRO1NT3e6L7e3cBf8nMZd7tq17asj9vJ2rqSoyOTmpaZ1s9scMyPSZiZcP3msd1rPZn/SqbPaJYSuTUSr7yO3bn7Va7XR66wIo+NsYMNl6kjGdX09vbj5Ob26k0xvpx4/SGz+kN0rlXWR0dGxnpxAMMueEYA6VfxgDJgzDmc6vB2iapCmCIr0U4Q34wPq3D5GRkffyecnvD5BkAK5+goQrQZBQeWSMy6c213Ev7sY9LtzlxJ123D6L21fXVyHxRi+RIP4DgjoDB2xwezAnNmfHHDPYzF3MZsOmVx7cR0ZujOWlAkkGDTTpp/0GKGgOHLDB5XFD4qzbftdts7mnp7HPlx8sw3MclySZoiMUHdZR4QDFgVuf2gb/wyduTWE4Poe7HJgTerTpPdpW1u8jY+M3ZbnMcvdYbp7h5kNsjAGMGAKsyLAiywGeYaMMGwkxXDDEUEEmQNF+MgDPHPf73D5szutyep0On2PtmzXk/ZsflcvV2PwXQIwtCeISLywK4iKvSwliUhATQizBiwu8EOMFMcoL4WiEC4cZlgsxDBWiA0GSoAiC8vpo78Pv15EPPvxYqRwkF78GidRXidRaHCTBaiL1pWElnlqOp5biyeRCMr6QWIjdi4nzohATeDEaFcJhnuWiISYSZKL0o83vkImJT46P/yztVs7ZL5aAUtxVSrq94m65WCrBuyvDu1uUCnJ+p5CXdn7VSb/kpWf5/NPfeqQcYr32ruG61dqHWq+j6DWDFbUCFEWHhlHLMPrO8PDbQ0NvAYvlTd1V8MYpy5WrlitIp/ui0wFdAN8iTQOdM1pbA+221mprjVb791b7oNlSm80aaDSqjeenms+rTfjZqIB/AUBg8dI6uaMqAAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%09%09%09-moz-box-shadow%3A%20none%20%21important%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%20background%3A%20none%20%21important%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%20border%3A%200%20%21important%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%20padding%3A%200%20%21important%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%20margin%3A%200%20%21important%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%09%25button%25%3Ahover%2C%20%25button%25%3A-moz-window-inactive%3Ahover%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAAEV0lEQVQ4T61Sa0xadxy9n/Zhn7ZlbmnX2laxDgVBrTNK26Vdui9LmiVLmmVJF5M+nMV1VSuiDGNx6BSk+ACFaFVUVBAQlJdQUJha54OHl6eCFkTro6XOR0H3+k8716SJ2YeenPxz7vmf37n3l1woo0ZgD/zWORHonlwUmpZEphUJvCqF16T2Z3JnUOkCfK5yv6Tcvb6vgalwBvvtwT74aS+8CqYE5qXuqUWDdw26Wit+w43fsCRvuPHr2l6rP/jg0XzLmI83vtA+udhpWhJYV4iVjV9duXkIC2lNInhNYF3tMj3pmFxsH/eDBr17GbpSLTH5njUMergGT5NxrnnkceuYv208ALr+OhQg0GVa7pgI8MYWmkcfNw7PgYYBeBn6kiEc8axUKu10lZ2hcTG1s3WDs2zD3P9p5A776o3zdUOe6oezTK2brnZIJhegy3ShcWaZKp0uk9kqFPZKpZsx4GbqPAeNry++/+nAZw15a3RehmaWpnZXKhxl/baecR/0BU2gdy6RhFNkkblEar0ns5fJHT+r3WDg+R6AqDHO7bN6aP5Vv0o7U6meKVM4KX12itRKFls6RuagpAJutWr66C3e8e87TuZ0xhAEcSQJliwDk0/2AMR5un6f5+iDr/opVFVSiRxFksQWiKJy+JG3O65xdRD2bkOV3PLu9ab3M1s+xPOO3eFHEYQfE8Vg0r+H17c+8NEl8jiSNJogjMzpPoLnRWS2XmVrIGw+BzS+d+MBeD6a3XY8ryuK2IMgS0GR91CAAJqijCPLogk9J3K7P8K3RWTyvmVroUQCl6GcjviuGbwkMod/giSOKpdHMdVgwH0oQCCOoYkrV8QWyU7lCU/9wD+Cb8to0EHJBE6tGj6e3X4S7FsojqYqYmrUiEb9pwX0w//wi3er0PWGhCoN6p4CWSiNAaV3Oq83GqAzBE79gA2R232aKI6nKpD3tSiuIZ4/huw1xSrNCK0VoYMRetsBYx7CyAErWmZGC6eS28aS2cZEmhZLUaKJUmS+GN86CqUUcLg6F6aoN7FUlczUJXN+SeJPJsksWI09YdCFGpmNG3cjJ2f2CTRwsEPuMzpHigJO7bGkt07gWMZ0mi6Nokwi9+d2/ArhyC2Nxvm0Ug2ONojjjpzlT6X1wWm6mdRhb8qUDwv7MY4AxvkvHQHgpJp86Y/mcQbvBbXrosj2WavpAmv0fIX+HFVLFE1Dl1tGBd6tetsyx7PK9gfpKxv5wS3c1ouYUOjY7k7E7zvv/LH79p8v+daeAM4HuzuR4fDp7dDZ9W3i6gYzsM6ef8pyrlAtQehSdd/nbE0KgRV/rRidRcHklGMK6Jii+5hiJqakJqG0DvVTHYr6H4EDfHCL/ZGZSKxKzKvA4KkJN0pQGaRP8usu1aogrnOjxrFJs29RbS+Kp0OF06E8a+i2OZxtCePN4VumMN60k2XZASfQWeZ/TuCDW5ABSZAvhkNglm7frnVscl2bfwMRUdfJvwX5CQAAAABJRU5ErkJggg%3D%3D%22%29%20%21important%3B%0A%0A%0A%09%09%7D%0A%09%09%25button%25%3Aactive%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAAEaklEQVQ4T2PIn7vl1I2H/WsOTlh3cPKGQ9M2HZ2x+eisbSfm7jg1b+fphbvPANGi3WehaM/ZRUC0+yxQcP6u0/N2npqz/QRQPVDX5I2HgSZsPnGVIWvuViqbmDqb2iYmzNx88PLdhkU7mpbsbF22q2P5nq6V+3rXHsip7g4OS8OD8qp7Jq473Lf2YNeqfR0r9rYu2w00YeWB8wxRUzfuPHszf9r6wukbSmZuKp+zuXLe1tqF24Fm/ccLgAoal+ysW7ijav7WijlbSmdtBpoADH2G0InrNh2/Ete5NLFreUrvyvT+VVmT1uRNW0eMicUzNgGdkj15TfqE1UC9iV0rJq0/xBAyYe3Go5dj2hbFty9J7FqW0rMifcKqrKlr4SZiehzidKB43rQN2ZPXZkxYldK7Aqg3vn3pxLUHGPy7Vq7eeyawdEpQ2dSQymlh9XPDWxdE9C4FavgABkBG5NItkUu3Qkhk8eiepZFtCyPq54bVzAqpnB5cPrVr4TYG/YzWzunLuDXceDQ9+QwDBKwjBd2ShIOygTpfgAGQIVzSAkfI4uK+WWKO8SIWYUKGgXy6vrxaXpF5TQw6KQ1tUxazKNqzKTlxaHlxmQZzO8Tw+oBi+TEYYPoaLi7ongJ0AdAdPFpeHGpu7MrOoZm1DDqpTW1Tl7AqObKruHDq+XJZhXO7JfEE5wANuocXABUI+GQIOMTxmQbz6PhwqrtzqLiEZtUx6KY2t09bxq7qzqnjw20RzuOWwhOSz5tcDdRwCy8AmRhVKuCbyQ801DiYR9uHU8MzPKeZQTeluWvmSh4tX16TMD7HJH7/PP64Kv7iNvPscvwp3CK1RDi1Xji0RNg9Tcgqht8giFfHPyq/DWRiz+y1AkZhgraJwl7ZwpGVwrltws2ThabOE1y0hH/jar5dG/j2bISiXRv4N60WWrJUeOYCkfbpYsXdYvH1Yv6Fok5pwuYxwkZhscU9DHrJzf3zN4paJYi6ZokHl4knt4pXTRKfsEBs8UrRDRuE9+8QOrFL6NReCBI+sRsoIrpxg/iy1RJTFkk1zJDO7pKOqJHyLpCwTxO3TEismMRgmNnZt2SHpGOmlE+xdGSjTH6/TNsc6TkrpdZtlNyzU+LMQfFLR8SuHYUgIBsoIrl3l/T6TbIL1sh3L5Qvnyof3y4fUCnrlidtn5HSMIfBbfLOpdde9+w803vkUtfF2y13H+c9f2Xy/r3C18+SP78J//7B//cn199fEMT27zeQ5P/zU/jXd6lvXxQ/fDR9+Tr//tPWK/e6Tl3rPnip7sAdhogVp+0612omNsn55yrF12oU9mo1ztLpW6ozY63WvI3qi7eqLN+usGqnwsqd8it3Kq7cqbx8u9qirZrzNmnNWK81YbVW21L1qgUqeTNlkyZrFi+PXH+dYeaNz5Oufem+9rXl6ve6yz8qLv8ouvQj78LPnIs/sy/8zDoPRL8yL/4CkkB25gUQCRQHygLVAFUC1ddd+QHU233t26TrX2be/AIAOtNJcCPMEfcAAAAASUVORK5CYII%3D%22%29%20%21important%3B%0A%0A%09%09%7D%0A%09%09%25button%25%3A-moz-window-inactive%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAAB90RVh0U29mdHdhcmUAUGFpbnQuTkVUID8/Pz8/PyAzLjUuNefKA2EAAAOASURBVDhPjZTbbts2GID1jgV2U2RZ29WZk9pODKfJ2qBDgcSWZUnUgaIo6uT4JCd14vrsxG6dQ5EUe4Rd7GY3u9wbbD8lI8tQwBjxgSB/kZ/In5SEvf2D8XRO3XCJlzQCm/m24xPmW9SzqG/ankFc3WIaZshwVN1WdaIgLCNTVg1AQZxavSUUdn8ejS8J9f8FRBREPqYetl2DMBBxl8lUw5F1W9ZIBVmSYkqKIcmaVEGSvKRaawj5wt5gNDWJ+0As4i6TMIMvykEmRaaj6BR0FUTKiiXKpijrYkUrSagkqWJMWVKDsCbkdgq9wVg3qY4djsVgUYblZrbfPPkutYL0q9elsloU5YRSjO8fC5lcvtsbIJ0gw4a1aCb3wrrA9ffKAgOORPVIlI9KQKVYkgDPD4WtzM55dwA5VnTC823QhP9nVA5L8mGpEiMdFSXX48bts25fhlPTuFQxaMKD8duNJ0tP1ngogjGBSxPjzll3wHWapei2YjgKHILBd/1XXKBR0aiE7DKyRBU/jhclrVhGRRGyqcTIHuTxVTZ//nG43LLpIOyomKnYhZl/xoUbdVpBXCoh8jhekg1+4gkVjl9tCJmd3W5/DJcDYbgoroY9jfjI8mHmH3H5dtcPcQluJbLgbgJyzHE9ErYL+/3RhUF8wwYCgwamA3UIot9XFhgAyYE7D8cIXxGgmbTR+iDkd98OxzPLCS1Wxew4pmaxGkz4bWWBAZrlA7rlGQD/Rlir3REK++9G08+2W+d4QCMhV3i3+oZn8wcmDTl2gG2fQ9z2SUd4/eaXyeXCCZqcEGgBNGjFEV5Tv8nf4daJ2wAst44ZUDOdKqYJsZF42GJR+4Ow9/b9dHbFwug/VKHbSnCCCNTJO2jQtP0m8ZpczWpcZ4fYDkzim5iZmLYgj/sH76fza/c4cqttxonVVehC3XKrrTjYdkLwRvEOIrDbXMqNBgkgiTp24c+g6aTRiLjx5u7X/niW0BvPe1CPoAFc9jkQnwP80Wj2ERjOuoOL8/6k0x2fng1OOr32abd9ch61O1F0KqQ2M6nNXEw2tZU0cql0dlmnsxub2Y2t3JLN3EaaP335U+ZFauvZj+n15xvf//Bybf3F2tqzp0/XAWFxe3d1e7+4vYc6aXx+1E2C11++JlwBt18XN/eL67v54svs083F7Gpy8WkyncFvezicDIaTfwBi5Z9t02GZKAAAAABJRU5ErkJggg%3D%3D%22%29%20%21important%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Aroot%5Bsizemode%3D%22maximized%22%5D%20%25button%25%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAMAAABWWYYKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURTw/OTw/Oj0/PD4/PTxAOTxAOj1BOz5BPUBAPkBBP0FBQEFCQUNDQkNDQ0JCREJDRU5OT05PUE9QUlBRUlFRVFJUWFVXXVNWZlpbYGJiZmtrbG1tbmdrc2lsd29vcGtteXV2dnl5enx8fX+AgH+IhoGBgYKDhoCEhIGEhYKEhoOEh4CGhYGGhoKGh4SEhoSEh4SGh4OGjoSFiIWFiYWGiYWGioeHi4eHjICIhoGIh4GIiIOIioGLiIKLiYKLioOKi4eIioWJjIeIjoWLjYeLj4aPjIaOjYePjoiIiomJi4iKi4iJj4iKjImKjYqKjoyMjoyOj4eJkoiKkIiKk4qLlIiPkIuPk4uMlIyNlYSQi4aQjIeRjomTj4iVjomVj4qTkYuXko2RlY+Rl4yUlI+Vl5CRmpCSmJGTmpKTm5KTnJGVmZOUnJOUnZOWnJSXnJWYnpeZn5aXoZaYoZiaoZiaoqqsrautrqqur62wsa60tLOztbS0tbS1trS1t7W2uLO5t7e4ubi5urm5vLm6vLy8vby9vr2+v76+wL6+wb/FwL/GwMDFwcHFw8DHwcHHw8PExcLGxcTExcbGxsXGx8TFyMXGyMbGycfHy8bIycfIysjJy8jKysnKy8jJzcnKzMnKzczMzczNzs3Nz83Ozs3Oz8vL0M7P0M7P0c3O09TXz9TYz9DR0tHS0tHS09LS1NLT1dPU1dTW0NbX0dfX09TY0NXZ0dbZ09jY1NjY1dnZ1tra19nZ2dvb2Nvb2dvb2tra29rb3Nvc29zc3d3e3+Hh4eHh4uHi4+Tk5eTk5+bm5urq6urq6/Pz8////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDTYekAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAABsElEQVQoU2NQPb0aCNasWbN27dp169ZtQIBjDMpgudVQqXXrkeWUTkGlAsWhIHjDhvUgcJRB8eSCBQsXLlqyRPwsFIgvX7YMiJYdZlA4PnXq1BkzDGG6xM+Kz5kzCwQOMMgdbmlpbW1D6Dor3gEC7R0bGKQPNTQ0NDYiyzWDQFPTagap/VVV1TW14mfOgEwFkmfE6+rqaoFgMYPwJAcHD09f8VOnxAP8QeQpcT9fHx8fL58KBoF+NU09fRPx48fFPRxA5HFxAwMdTR1NzTIGwYlaWvpGJuJHjoDMBJJHxHV1NTXU1TVKGYSmGBubmpmLH4ICcXEZXR1tDW1toJzINCcnJ+8g8d1QIO5obaVraaGjYlnOIDo9JCQ8PEIe5ndZF2d7W1sbG1u7CgaxpampqZmZOTk52dkZ6WlJiWGh7m6uUZFR0ZUMEisKi4qKSkpKiouLC/LzcrNSkuNj4uJi4xLqGSRPzAWC+UAwb87smTOmTp7Q093Z2dXV2zeBgZ8PAnh5eXi4ubk4OZiZGBkZWFhY2dgZDoDB/v0H9+3ds2vXzh3bN2/auHHjylVbtm4DADma44ANPgZaAAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Aroot%5Bsizemode%3D%22maximized%22%5D%20%25button%25%3Ahover%2C%20%3Aroot%5Bsizemode%3D%22maximized%22%5D%20%25button%25%3A-moz-window-inactive%3Ahover%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAAEcElEQVQ4T62SWVCaVxiG/6te9KZpOjGZqok2Lrj+uMUlTpPptL3ptL3oTDrTTDKtrYlo61JxwV3BuOFOjGgVLW4sigrKoijGolbhBwREiKiIWAXFGOtS7XaENuNF6fSi77zzzTfPme8935k50Od19AXTi6659R6JiY5sMJGtPqW5X2npV+9wNNbhReBdrnaXo31uN+iBARzSWNlq66Bym6U0MxEzTbbRI92Y0Fuge/V9/3PiZ49ZjhKziS2f3Hnwj84htjjc8dN61rxxt2V6hTJjaJ81UiWmTmSDpthizFtA1h8OBI561TtMpYWmMHcjP3VITNTZNZAwpt2E7tSyEMNOw9hSo2ipeWK5RbxKmTakPmp0tJ39GlC75eYu6SZ1dr1t2tg6tdo0qSdPLPFVm9DHlYwp/VbZsKqcqyYKNFUjuvrxZ/++nT2xeXqN/MNqw8RK/fhS9aiuWrBYzlP3SY3QR0T6U90mvl9BGFCWDKlKhxcr+dr/ktgwuUIS6WuF+kqBroy7WDakJgwq6bMG6IMK2phmI4suzWbI8ljyggEVgaMGifs2nX/7S2LnVWNLxBFdGU9H4CwUDqoKWIpspqxDvAwFpZNruPNX4ijOCd9fTeq4jqWhcL1gwGwTaG6WjUaXC88TOw8v5gXjh+G8QR8c0yONfi2xAyR8QRZCMLaxgi1/Lab5YmzrJUzbm4kdblgaGDDZBJoQAj+0WHCe2DlcMOSby/bOZLml9jgndTnFUV6Pbb1L4kNobCORI7/w5XcXYymX49udU7rcMhhgwGDT+Ve/JHYeUMzzLeB4ZYFEmktS1xVMG0i4SxKAVzdVDs+/8aD1MqbdJbnTFcd0f8QBA3oHst9xG1uOejKOIvK9CWyPTNbVlG7Xr6lOmLb7DaNQcBq5jqd0SaBeS+p0y2S644c8anlgRutA4Oh6n8S7ewbVOun3WORXwfPJH/TK6HVP7nZNpMY0iaCQdHKDQP1Wco9nRq8PnoOqGvEli97JqHL0w28X1qH4Cv8BmR9dgm6fQpNEAWU8/3y2T1qvVyodQxFDoelksnAxEMeCi4aDqoTBjZNBnZKgATl6ZCFQpPUTP/Od0/lIz6rdgMAibYhwIWRoPowhC6f8GF4/fqNUEJo/GJjNSqbOQFE5lObJlfBCQWT5WBRZHNUhjWArI4S6cPFyqNSAVhlhjQleNJ1VmwG5gRgip1ciJ5be5i7cYihutc5F1z2NKuFHFHHTGXLow7Yp+vLBE/UWWW95vGYlmvfTdg9uHhx5Hh+7nJ5c+vXkwm+nr/5++srfBj0gTqcnrr8cex4eRe8dZFheVK8/J61YSJqtYrkVeq+W/X7DSFgayTcmNwBTBKeUwOkVcFY1nFcDF9QF4kn+BJJ/sa3aGkAAPzvNqUZnVMLflgTG4wO+yve9jwtLrX+3jgvVyLbKkW2CzJqH7OGQfazs5yTZQQJyGC87wiB/+aGtj5MePbTVOOkhBjnASPa/ke6lSK1pkm3c3GbunBE/u1o6u/wn4EzJPzPchgUAAAAASUVORK5CYII%3D%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Aroot%5Bsizemode%3D%22maximized%22%5D%20%25button%25%3Aactive%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAIAAADu5eFvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAAEa0lEQVQ4T2PIn7vl1I2H/WsOTlh3cPKGQ9M2HZ2x+eisbSfm7jg1b+fphbvPANGi3WehaM/ZRUC0+yxQcP6u0/N2npqz/QRQPVDX5I2HgSZsPnGVIWvuViqbmDobp4lF9f3BYWlYUXFDP043JszcfPDy3YZFO5qW7Gxdtqtj+Z6ulft61x7oX3cIaNZ/HAAoNXnDkYnrDvetPdi1al/Hir2ty3YDTVh54DxD1NSNO8/ezJ+2vnD6hpKZm8rnbK6ctzWltA2X6yDWAMmWZXsal+ysW7ijav7WijlbSmdtBpoADH2G0InrNh2/Ete5NLFreUrvyvT+VVmT1uB3HcTEktmbi2dsAjole/Ka9AmrgXoTu1ZMWn+IIWTC2o1HL8e0LYpvX5LYtSylZ0X6hFXEmJg/a1PetA3Zk9dmTFiV0rsCqDe+fenEtQcY/LtWrt57JrB0SlDZ1JDKaWH1c8NbFwBN/AwGyH6Hi0DEoyeujO5ZGtm2MKJ+bljNrJDK6cHlU7sWbmPQz2jtnL6MW8ONR9OTzzBAwDpS0C0JqOEVGAAZwsXNwiUtyCIQcbGwfHHfLDHHeBGLMCHDQD5dX14tr8i8JgadlIa2KYtZFO3ZlJw4tLy4TIO5HWKAGp6CAZDBm1fPm9+ALAIRFwjMEnRPAboA6A4eLS8ONTd2ZefQzFoGndSmtqlLWJUc2VVcOPV8uazCucFufAgGyL6Gi0DEBcILBHwyBBzi+EyDeXR8ONXdOVRcQrPqGHRTm9unLWNXdefU8eG2COdxS+EJyQdquIsDQOwwTy3mz6wXiCoV8M3kBxpqHMyj7cOp4Rme08ygm9LcNXMlj5Yvr0kYn2MSv38ef1wVUM9NHAAoxTd9tkDnFKHKbuHUeuHQEmH3NCGrGH6DIF4d/6j8NpCJPbPXChiFCdomCntlC0dWCue2WWZW4Erh5jWNQkuWCs9cINI+Xay4Wyy+Xsy/UNQpTdg8RtgoLLa4h0Evubl//kZRqwRR1yzx4DLx5FbxqkniExaILV4pumGD8P4dQid2CZ3aC0HCJ3YDRUQ3bhBftlpiyiKphhnS2V3SETVS3gUS9mnilgmJFZMYDDM7+5bskHTMlPIplo5slMnvl2mbIz1npdS6jZJ7dkqcOSh+6YjYtaMQBGQDRST37pJev0l2wRr57oXy5VPl49vlAypl3fKk7TNSGuYwuE3eufTa656dZ3qPXOq6eLvl7uO8569M3r9X+PpZ8uc34d8/+P/+5Pr7C4LY/v0Gkvx/fgr/+i717Yvih4+mL1/n33/aeuVe16lr3Qcv1R24wxC+/KRd51rNxCY5/1yl+FqNwl6txlk6fUt1ZqzVmrdRffFWleXbFVbtVFi5U37lTsWVO5WXb1dbtFVz3iatGeu1JqzWaluqXrVAJW+mbNJkzeLl4WuvMky98q7v8oeOy5+aLn2pufit/OK3wovfc8//yLnwI+v8TwjKuIDOyL7wA6gGqLL84negLqBeoAn9lz9Mu/IeAMWpR92z3Hb3AAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Aroot%5Bsizemode%3D%22maximized%22%5D%20%25button%25%3A-moz-window-inactive%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABsAAAATCAMAAABWWYYKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURVNWZmRlaGRlaWVmaWZnamdna2hoamhoa2lpbHN1f3t7f3R3gXV5gnd6hH19gH9/gX+Agn+Ag4CBg4CCg4CChIGChZeZnpiZnpianpqan5ucn5mboJqcoJucoZudopueopydoJycoZ2dop2eoZ6fop2eo52fpJ+gop6go5+gpJ6gpZ+hpqCgo6CgpKGhpaGipKKipaGipqGip6KkpqKkp6GjqKKkqKKkqaKlqqOmqKOmqaKmqqOmq6SlqKSlqaSmqKSmqaSmqqSnq6SnrKWoq6aorKWoraaprqeqrKeqraaqrqeqr6iprKiqramqrqiqr6qsr6ersKirsKmssKuusa6usq+ws66wtK+xtbCxs7CxtLGytLKytbKytrGzt7S0trS0t7K0uLS2ubS3ura4vLe5vbi6vbq6vri8vri8v7y8v729wL6/wb6/wr7Awr/Aw8DAw8DAxMHCxcTEx9nZ2d3d3eHh4eXl5erq6vPz8////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTgHqwAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAfdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA/Pz8/Pz8gMy41LjXnygNhAAABj0lEQVQoU03Q+1vSUBzH8Y86M7WLmAoEGcQlm6FswhmYjJ25YYJCcVFDpxSlpWzgJW5/vWc8M3v/8N0Pr+d7dp6DxXY6IRIiKVTT94vFymN/sGClNxIkTTXtM6MvVZbDv0e2kVY0/RmcnjMrl7+WzvHKIonEpqrvYuiEERUKv+BiRqj2bwtDMCoUdnI/MWdliEz1x60hyiWb9CYzklG03P9Wyud3cttqEy4zm1X0IgYD+ypsDlBkS9vq1g/2P0WhzPp91Cr27COf09Wt1KfvmLcUqjLr9VCt2rMHXaOplCSNTKbaPrpd+0w2u6CbkpQUxVPMm7Isq3v46wTMkmRSWOX5I8y1iJiRKe6cIAoCz/Mr0eghXl7F19bEzOzDi03HPkRYb5ff1PDiMhpZicUFQYgL8fVYJBwKBP1+v8/nq2Dm4l0wGAp/tHsfDgZee70ej8ftXloqYebWME4M46zRaJwZhnFcr387qLEODut4OjXJcdyTKTuOm5gYe2h8HDc313ajT6fTsUyz1TJNi9W+B4ppe7qJG0ieAAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%5D%5D%26gt%3B%26lt%3B/%26gt%3B%0A%20%20%20%20.toString%28%29%0A%20%20%20%20.replace%28/%25button%25/g%2C%20%22%23%22%20+%20this.id%29%3B%0A%0Afunction%20sheet%28cssStr%2C%20removeFlag%29%20%7B%0A%20%20%20%20var%20cc%20%3D%20Components.classes%3B%0A%20%20%20%20var%20sss%20%3D%20cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20var%20ios%20%3D%20cc%5B%22@mozilla.org/network/io-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIIOService%29%3B%0A%20%20%20%20var%20data%20%3D%20%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28cssStr%29%3B%0A%20%20%20%20var%20uri%20%3D%20ios.newURI%28data%2C%20null%2C%20null%29%3B%0A%20%20%20%20if%28sss.sheetRegistered%28uri%2C%20sss.USER_SHEET%29%29%0A%20%20%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%20%20%20%20if%28removeFlag%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%20%20%20%20window%5BsId%5D%20%3D%20cssStr%3B%0A%7D%0Aif%28%21%28sId%20in%20window%29%29%0A%20%20%20%20sheet%28cssStr%29%3B%0Aelse%20if%28window%5BsId%5D%20%21%3D%20cssStr%29%20%7B%0A%20%20%20%20sheet%28window%5BsId%5D%2C%20true%29%3B%0A%20%20%20%20sheet%28cssStr%29%3B%0A%7D%20%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28window.windowState%20%3D%3D%201%29%0Awindow.restore%28%29%3B%0Aelse%20if%28window.windowState%20%3D%3D%203%29%0Awindow.maximize%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код

Выделить код

Код:

if(window.windowState == 1)
window.restore();
else if(window.windowState == 3)
window.maximize();

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

Выделить код

Код:

var sId = "__customButtonsStyle__" + this.id; // Unique style "id"
var cssStr = <><![CDATA[
                %button% {
            list-style-image: url("1pic") !important;
            -moz-box-shadow: none !important;
                        background: none !important;
                        border: 0 !important;
                        padding: 0 !important;
                        margin: 0 !important;

                }
        %button%:hover, %button%:-moz-window-inactive:hover {
            list-style-image: url("2pic") !important;


        }
        %button%:active {
            list-style-image: url("3pic") !important;

        }
        %button%:-moz-window-inactive {
                        list-style-image: url("4pic") !important;

                }
                :root[sizemode="maximized"] %button% {
                        list-style-image: url("5pic") !important;
                }
                :root[sizemode="maximized"] %button%:hover, :root[sizemode="maximized"] %button%:-moz-window-inactive:hover {
                        list-style-image: url("6pic) !important;
                }
                :root[sizemode="maximized"] %button%:active {
                        list-style-image: url("7pic") !important;
                }
                :root[sizemode="maximized"] %button%:-moz-window-inactive {
                        list-style-image: url("8pic") !important;
                }
    ]]></>
    .toString()
    .replace(/%button%/g, "#" + this.id);

function sheet(cssStr, removeFlag) {
    var cc = Components.classes;
    var sss = cc["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    var ios = cc["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
    var data = "data:text/css," + encodeURIComponent(cssStr);
    var uri = ios.newURI(data, null, null);
    if(sss.sheetRegistered(uri, sss.USER_SHEET))
        sss.unregisterSheet(uri, sss.USER_SHEET);
    if(removeFlag)
        return;
    sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
    window[sId] = cssStr;
}
if(!(sId in window))
    sheet(cssStr);
else if(window[sId] != cssStr) {
    sheet(window[sId], true);
    sheet(cssStr);
}


Закрыть Окно/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%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u041E%u043A%u043D%u043E%5CFirefox%20%28%u041B%u041A%u041C%5C%u0421%u041A%u041C%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3Ethis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20window.close%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20goQuitApplication%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26amp%3B%26amp%3B%20%21event.ctrlKey%20%26amp%3B%26amp%3B%20%21event.shiftKey%20%26amp%3B%26amp%3B%20%21event.altKey%20%26amp%3B%26amp%3B%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D%0A%7D%3B%0Avar%20cssStr%20%3D%20%26lt%3B%21%5BCDATA%5B%0A%09%09%25button%25%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%22%29%20%21important%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-moz-box-shadow%3A%20none%20%21important%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%20background%3A%20none%20%21important%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%20border%3A%200%20%21important%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%20padding%3A%200%20%21important%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%20margin%3A%200%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%09%25button%25%3Ahover%2C%20%25button%25%3A-moz-window-inactive%3Ahover%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%3D%22%29%20%21important%3B%0A%09%09%7D%0A%09%09%25button%25%3Aactive%20%7B%0A%09%09%09list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%22%29%20%21important%3B%0A%09%09%7D%0A%09%09%25button%25%3A-moz-window-inactive%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20list-style-image%3A%20url%28%22data%3Aimage/png%3Bbase64%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%3D%3D%22%29%20%21important%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%09%5D%5D%26gt%3B%0A%09.toString%28%29%0A%09.replace%28/%25button%25/g%2C%20%22%23%22%20+%20this.id%29%3B%0Avar%20cssURI%20%3D%20this._cssURI%20%3D%20makeURI%28%20//%20chrome%3A//global/content/contentAreaUtils.js%0A%09%22data%3Atext/css%2C%22%0A%09+%20encodeURIComponent%28cssStr%29%0A%29%3B%0Athis.setSheet%20%3D%20function%28cssURI%2C%20addFlag%29%20%7B%0A%09var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%09%09.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%09if%28sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%20%26amp%3B%26amp%3B%20%21addFlag%29%0A%09%09sss.unregisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%09if%28addFlag%29%0A%09%09sss.loadAndRegisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%7D%0Athis.setSheet%28cssURI%2C%20true%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%09this.setSheet%28this._cssURI%2C%20false%29%3B%0A%7D%3B%20%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 = function(event) {
    if(event.button == 0) {
        window.close();
    }
    else if(event.button == 1) {
        goQuitApplication();
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        
    }
};
var cssStr = <![CDATA[
        %button% {
            list-style-image: url("1pic") !important;
                        -moz-box-shadow: none !important;
                        background: none !important;
                        border: 0 !important;
                        padding: 0 !important;
                        margin: 0 !important;
                }
        %button%:hover, %button%:-moz-window-inactive:hover {
            list-style-image: url("2pic") !important;
        }
        %button%:active {
            list-style-image: url("3pic") !important;
        }
        %button%:-moz-window-inactive {
                        list-style-image: url("4pic") !important;
                }
    ]]>
    .toString()
    .replace(/%button%/g, "#" + this.id);
var cssURI = this._cssURI = makeURI( // chrome://global/content/contentAreaUtils.js
    "data:text/css,"
    + encodeURIComponent(cssStr)
);
this.setSheet = function(cssURI, addFlag) {
    var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    if(sss.sheetRegistered(cssURI, sss.USER_SHEET) && !addFlag)
        sss.unregisterSheet(cssURI, sss.USER_SHEET);
    if(addFlag)
        sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);
}
this.setSheet(cssURI, true);
this.onDestroy = function() {
    this.setSheet(this._cssURI, false);
};


Код кнопок был взят с предыдущей страницы этого топика + часть кода была доработана Infocatcher-ом, а картинки были сделаны мной (украдены скриншотами из винды).

Кнопка сокрытия/показа нативного Windows тайтлаба находится тут.

Отредактировано iDev.Pi (20-07-2010 20:43:20)


mzfx

Отсутствует

 

№914-06-2010 22:47:40

MySh
Кактусогрыз
 
Группа: Extensions
Зарегистрирован: 17-12-2006
Сообщений: 4623
UA: Firefox 3.6

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

Вставка символа (Firefox 1 — Firefox 19). Более новая версия кнопки — здесь.
Авторы: 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%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIie3TvyvFURzG8RfXpMggmZAyqTswGYWFbP4AkkEWkc2MktWsDCaDQRlMVovFIIuIgRSKQX4N389wh28393zHe586nfo8n/O8zzmdQ0N1qxZ0/aOvN3pr1i6u0F2lZwAP2E4BlPGMS4zjGO94xSEmcYcb9KQAYBgv+MU3znGBn6jdoz81HNrwiCcMVdRHZae5RqkIYE620/kcbz28sSKAnQjpy/FGwlsuAtiIkMEcbyK8xSKA6QjZzPH2wysXAZRwiy+soB2d2IrwsyLhsBRBHzFXjrcAz6SGz8re+x46sIYj2SdbkD3hU3zKrrJmreIAzVV6WnGCqRQANKUubKjO9AcmPDqZdHOMswAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20menu%20%3D%20%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.handleMenuCommand%28event%29%22%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%A4%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%A6%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%A7%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%A9%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%AB%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%BB%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%AC%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%AE%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%B0%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%B1%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%B5%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%B6%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2014%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2018%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2019%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u201C%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u201D%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2022%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2030%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2039%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u203A%22/%3E%0A%20%20%20%20%3Ctoolbarbutton%20value%3D%22%u2122%22/%3E%0A%3C/menupopup%3E%3B%0A%0Amenu%20%3D%20custombuttonsUtils.%20makeXML%20%28menu%29%3B%0Athis.%20appendChild%20%28menu%29%3B%0Athis.%20value%20%3D%20menu.%20firstChild.%20getAttribute%20%28%22value%22%29%3B%0A%0Athis.%20makePNG%20%3D%20function%20%28text%2C%20height%29%0A%7B%0A%20%20%20%20var%20h%20%3D%20height%3B%0A%20%20%20%20var%20cw%20%3D%2024%2C%20ch%20%3D%2024%3B%0A%20%20%20%20var%20canvas%20%3D%20%3Ccanvas%20xmlns%3D%22http%3A//www.w3.org/1999/xhtml%22%20width%3D%7Bcw%7D%20height%3D%7Bch%7D%20style%3D%22display%3Anone%3B%22%3E%3C/canvas%3E%3B%0A%20%20%20%20cw%20-%3D%202%3B%0A%20%20%20%20ch%20-%3D%202%3B%0A%20%20%20%20canvas%20%3D%20custombuttonsUtils.%20makeXML%20%28canvas%29%3B%0A%20%20%20%20this.%20appendChild%20%28canvas%29%3B%0A%20%20%20%20var%20ctxt%20%3D%20canvas.%20getContext%20%28%222d%22%29%3B%0A%20%20%20%20ctxt.%20clearRect%20%280%2C%200%2C%20cw%2C%20ch%29%3B%0A%20%20%20%20ctxt.%20font%20%3D%20h%20+%20%22pt%20times%20bold%22%0A%20%20%20%20var%20m%20%3D%20ctxt.%20measureText%20%28text%29%3B%0A%20%20%20%20m%20%3D%20%28cw%20-%20m.%20width%29%20/%202.0%3B%0A%20%20%20%20h%20%3D%20ch%20-%20%28ch%20-%20h%29%20/%202.0%3B%0A%20%20%20%20ctxt.%20fillText%20%28text%2C%20m%2C%20h%29%3B%0A%20%20%20%20var%20uri%20%3D%20canvas.%20toDataURL%20%28%22image/png%22%2C%20%22%22%29%3B%0A%20%20%20%20this.%20removeChild%20%28canvas%29%3B%0A%20%20%20%20return%20uri%3B%0A%7D%3B%0A%0Athis.%20image%20%3D%20this.%20makePNG%20%28this.%20value%2C%2016%29%3B%0A%0Avar%20mi%2C%20val%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20menu.%20childNodes.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20mi%20%3D%20menu.%20childNodes%20%5Bi%5D%3B%0A%20%20%20%20val%20%3D%20mi.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20val%20%3D%20this.%20makePNG%20%28val%2C%2012%29%3B%0A%20%20%20%20mi.%20setAttribute%20%28%22image%22%2C%20val%29%3B%0A%7D%0A%0Athis.%20insertText%20%3D%20function%20%28text%29%0A%7B%0A%20%20%20%20var%20command%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20%20var%20controller%20%3D%20document.%20commandDispatcher.%20getControllerForCommand%20%28command%29%3B%0A%20%20%20%20if%20%28controller%20%26%26%20controller.%20isCommandEnabled%20%28command%29%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.%20QueryInterface%20%28Components.%20interfaces.%20nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.%20classes%20%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%20%28Components.%20interfaces.%20nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.%20setStringValue%20%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.%20doCommandWithParams%20%28command%2C%20params%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0Athis.%20handleMenuCommand%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20event.%20stopPropagation%20%28%29%3B%0A%20%20%20%20var%20mi%20%3D%20event.%20originalTarget%3B%0A%20%20%20%20var%20text%20%3D%20mi.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20this.%20image%20%3D%20this.%20makePNG%20%28text%2C%2016%29%3B%0A%20%20%20%20this.%20value%20%3D%20text%3B%0A%20%20%20%20this.%20insertText%20%28text%29%3B%0A%7D%3B%0A%0Athis.%20type%20%3D%20%22menu-button%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.%20insertText%20%28this.%20value%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

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

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              oncommand="this.parentNode.handleMenuCommand(event)">
    <toolbarbutton value="¤"/>
    <toolbarbutton value="¦"/>
    <toolbarbutton value="§"/>
    <toolbarbutton value="©"/>
    <toolbarbutton value="«"/>
    <toolbarbutton value="»"/>
    <toolbarbutton value="¬"/>
    <toolbarbutton value="®"/>
    <toolbarbutton value="°"/>
    <toolbarbutton value="±"/>
    <toolbarbutton value="µ"/>
    <toolbarbutton value="¶"/>
    <toolbarbutton value="—"/>
    <toolbarbutton value="‘"/>
    <toolbarbutton value="’"/>
    <toolbarbutton value="“"/>
    <toolbarbutton value="”"/>
    <toolbarbutton value="•"/>
    <toolbarbutton value="‰"/>
    <toolbarbutton value="‹"/>
    <toolbarbutton value="›"/>
    <toolbarbutton value="™"/>
</menupopup>;

menu = custombuttonsUtils. makeXML (menu);
this. appendChild (menu);
this. value = menu. firstChild. getAttribute ("value");

this. makePNG = function (text, height)
{
    var h = height;
    var cw = 24, ch = 24;
    var canvas = <canvas xmlns="http://www.w3.org/1999/xhtml" width={cw} height={ch} style="display:none;"></canvas>;
    cw -= 2;
    ch -= 2;
    canvas = custombuttonsUtils. makeXML (canvas);
    this. appendChild (canvas);
    var ctxt = canvas. getContext ("2d");
    ctxt. clearRect (0, 0, cw, ch);
    ctxt. font = h + "pt times bold"
    var m = ctxt. measureText (text);
    m = (cw - m. width) / 2.0;
    h = ch - (ch - h) / 2.0;
    ctxt. fillText (text, m, h);
    var uri = canvas. toDataURL ("image/png", "");
    this. removeChild (canvas);
    return uri;
};

this. image = this. makePNG (this. value, 16);

var mi, val;
for (var i = 0; i < menu. childNodes. length; i++)
{
    mi = menu. childNodes [i];
    val = mi. getAttribute ("value");
    val = this. makePNG (val, 12);
    mi. setAttribute ("image", val);
}

this. insertText = function (text)
{
    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", text);
        controller. doCommandWithParams (command, params);
    }
};

this. handleMenuCommand = function (event)
{
    event. stopPropagation ();
    var mi = event. originalTarget;
    var text = mi. getAttribute ("value");
    this. image = this. makePNG (text, 16);
    this. value = text;
    this. insertText (text);
};

this. type = "menu-button";

Код:

Выделить код

Код:

this. insertText (this. value);

Отредактировано MySh (18-05-2013 00:38:17)

Отсутствует

 

№1024-07-2010 15:09:43

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

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

GetChkView Addons(Firefox)
ЛКМ => Открыть базу дополнений в интернете (те https://addons.mozilla.org/ru/firefox/)
СКМ => Проверить обновление дополнений
(не работает в FF 7 )
ПКМ => Открыть установленные дополнения
Shift+ПКМ => Меню настройки кнопки. Будьте аккуратны в использовании модификаторов, см. обработчик this.oncontextmenu

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

Выделить код

Код:

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%3EGetChkView%20Addons%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhJQAaAPcAAAAAAAA7KAA/ND0+ACM5LAA5UjFSBztEJwpXQwxVWwVJZBRTfiFPXzdLVj5+W38dEnooB3oxAE5aBlpmFEdkKmhWAmdAI2Z2N3h4MkNCSEFbQkRXaExhdlptZ1N/cnNYR3FdXHlqSXB/VmZiYWZ2dnRyYypugTh7pUFvkVh1iFR8lmF7kj+1K1WTM06oMWmCGnqbJmy3NVKWR12Dbk6kQGSDRX+XQWyBcG+edGSxWH6nb367bXu7dUnKNmPENlnORWrRUnbDZ3TkXXrmZUmKl1aHi1yImk+Ot0uTokiQtleMoVyOs1WWrFictmODgmeOnXeHgnCLlH2RiGWVpGKas3iXpWq/hG2yn3Osg3OivVuaw12oymaqxmy41XapyHmxy3iz0XDBh3jDmH/K6pUWCoooE4A3AIk1GpYlAIQxLqkVAaktBJBTJ5ZQNpt7FoV2NZF2J71MHKZSLrNXJrhXNq5rFLRiKLloML13Ibt2PZNbUoxpSY1uXJ50W4l0YZ1qZ6l2SaJ+Xrt2RbN6cMQ6FstHCM1XFttXDNdaG99dI9xpFsllI8dmO8hxK8lyNddpJNVyJONZKOFlGOFmIOJ9Ncx6QNV/QoOcCouUJ5aNKJmKNauCKLykILGqNru6Lo+GQ42SXJqMTYWDboKDfpWNZp6PcpS6S4mvdqaMRKqTTaqVVrabS6GNdbqMar6TcbS0VLupebSwaY7fX4nJc47vdarKTaHkfdCpKNSsM+G7Ks2DS8mPX9CAQcyefdWyTtG0VsmuZ8ygfeGffOnGPOXSLv7XMd7KacPueubPRe3EW/bXRvvSU+7Ua+jwd4KYm5iKgYSds421iI2npo6zuaGhlaGxvre7xJDEhY3ri5LjhpronJv8i5jzlLb+mq7ioo7CzY7M24TG4I7W7o/U85jM4pDR5Zvf9KTY7dubgMCwjMS3lNa0m8yzqOqyieizo9LDnN3MrtfFtd3RuOjGvcXO08ndwdXOxN3cytvb29Tj0OXHxeHYyeXZ1fLMwwAAAAAAACH5BAEAAP8ALAAAAAAlABoAAAj/AP8JHEiwoMGDCBMehJZiRYoq1egpnHgQxRIv5M6ByZKiwSh7FBPGi2eNgwovX76UMzduY5QSIdSFPNirT4YNzpxJqwJO3BguVJyQAvZr1UyC8QQJ4vOMVSlRUr412dIlXJEDb5gxU5Xu6L91dihZquQozx5q0750WcuFAQEMxnytkkcRn8BgjRTpVbSIjR8oU7hsGaxlighNuJK9qytwF6S9eu+4gmKkSZITC44oufHp1jJY/Gbqerz3ka5AJKYQUaCggIkiGmINW6ZqX8h2vCA/ctSqxBMmSBIICIDAAYVXypShinfbkV5JhtBA+EDCiBIiV8SEscLDRidlw1DB/wspbNFeNGjOgEjB3gMWbdyw2cLEqViuVHQpopvzSBGiNWvQoccIHcyAgwxAbLONC7V4QgwyodwTkjtyLCKJJIUUYggjgFywQxBB0CIiLUDEcEkzoEhIUT9txHGhJIccsoYZEnTTzTYiDiEEELTEcEwN9cw0yBqJvOhfBAPM0kI2tAwxBBA/COFDDEFcM9M8Z8SByIWKPNIIHBMY0EKTQED5Q5lAzHLUIGWsEQkiiEyiCB6bZPICiVD2oCcLaXqlRxlkELKGhnW4kQkMspT5g54/nKmmnw+QoYYaaFRgSgtoxhBDo0DkkIOVXv0zSBpkkAGBBLOU6YILLbTgAhBBeDATTagC8cPOH2lYYICZrJ5yzas80FoQP/qwU4MMNNAggw75RCODDLMKG1I+0labUEAAOw%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//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u0430%u0437%u0443%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%20%u0432%20%u0438%u043D%u0442%u0435%u0440%u043D%u0435%u0442%u0435%0Afunction%20lbMouse%28%29%7B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22https%3A//addons.mozilla.org/ru/firefox/%22%29%0A%7D%3B%0A%0A//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u044B%u0435%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%0Afunction%20rbMouse%28%29%7B%0Atry%7B%20BrowserOpenAddonsMgr%28%29%3B%20%7D%20catch%28e%29%20%7B%20BrowserOpenExtensions%28%27extensions%27%29%3B%20%7D%0A%7D%3B%0A%0A//%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0435%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0439%0Afunction%20mbMouse%28%29%7B%0AcheckForUpdates%28%29%3B%0Avar%20win%20%3D%20BrowserOpenAddonsMgr%20%28%29%3B%0A%0Avar%20doc%20%3D%20win.%20document%3B%0Acmd%20%3D%20doc.%20getElementById%20%28%22extensions-view%22%29%3B%0Aif%20%28%21cmd%29%0A%20%20%20%20win.%20addEventListener%20%28%22load%22%2C%20function%20%28event%29%20%7B%20setTimeout%20%28function%20%28%29%20%7B%20win.%20document.%20getElementById%20%28%22extensions-view%22%29.%20doCommand%20%28%29%3B%20%7D%2C%20200%29%3B%20%7D%2C%20false%29%3B%0Aelse%0A%20%20%20%20cmd.%20doCommand%20%28%29%3B%0A%09cmd2%20%3D%20doc.%20getElementById%20%28%22cmd_checkUpdatesAll%22%29%3B%0Aif%20%28%21cmd2%29%0A%20%20%20%20win.%20addEventListener%20%28%22load%22%2C%20function%20%28event%29%20%7B%20setTimeout%20%28function%20%28%29%20%7B%20win.%20document.%20getElementById%20%28%22cmd_checkUpdatesAll%22%29.%20doCommand%20%28%29%3B%20%7D%2C%20500%29%3B%20%7D%2C%20false%29%3B%0Aelse%0A%20%20%20%20cmd2.%20doCommand%20%28%29%3B%0A%7D%3B%0A%0Afunction%20BrowserOpenAddonsMgr%28aPane%29%0A%7B%0A%20%20const%20EMTYPE%20%3D%20%22Extension%3AManager%22%3B%0A%20%20var%20wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%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.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%20%20var%20theEM%20%3D%20wm.getMostRecentWindow%28EMTYPE%29%3B%0A%20%20if%20%28theEM%29%20%7B%0A%20%20%20%20theEM.focus%28%29%3B%0A%20%20%20%20return%20theEM%3B%0A%20%20%7D%0A%0A%20%20const%20EMURL%20%3D%20%22chrome%3A//mozapps/content/extensions/extensions.xul%22%3B%0A%20%20const%20EMFEATURES%20%3D%20%22chrome%2Cmenubar%2Cextra-chrome%2Ctoolbar%2Cdialog%3Dno%2Cresizable%22%3B%0A%20%20return%20window.openDialog%28EMURL%2C%20%22%22%2C%20EMFEATURES%29%3B%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u0414%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%20%u0432%20%u0438%u043D%u0442%u0435%u0440%u043D%u0435%u0442%u0435%20%5CnMiddle%20%3D%3E%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0439%20%5CnRight%20%20%20%3D%3E%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u044B%u0435%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%22%3B%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%0AlbMouse%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%0AmbMouse%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%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%0ArbMouse%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%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%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A/*%0Athis.setFlLDC%20%3D%20false%3B%0Athis.setAttribute%28%27onclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0Athis.pause%20%3D%20function%20%28ms%29%7B%0Avar%20date%20%3D%20new%20Date%28%29%3B%0Avar%20curDate%20%3D%20null%3B%0Ado%20%7B%20curDate%20%3D%20new%20Date%28%29%3B%20%7D%0Awhile%28curDate-date%20%3C%20ms%29%3B%0A%7D%3B%0A%0A//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%u043D%u044B%u0435%20%u0434%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%0Athis.leftDclick%20%3D%20function%28event%29%20%7B%0Athis.setFlLDC%20%3D%20true%3B%0Atry%7B%20BrowserOpenAddonsMgr%28%29%3B%20%7D%20catch%28e%29%20%7B%20BrowserOpenExtensions%28%27extensions%27%29%3B%20%7D%0Athis.pause%20%281000%29%3B%0Athis.setFlLDC%20%3D%20false%3B%0A%7D%3B%0A*/%0A%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%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/

//Открыть базу дополнений в интернете
function lbMouse(){
getBrowser (). selectedTab = getBrowser (). addTab ("https://addons.mozilla.org/ru/firefox/")
};

//Открыть установленные дополнения
function rbMouse(){
try{ BrowserOpenAddonsMgr(); } catch(e) { BrowserOpenExtensions('extensions'); }
};

//Проверить обновление дополнений
function mbMouse(){
checkForUpdates();
var win = BrowserOpenAddonsMgr ();

var doc = win. document;
cmd = doc. getElementById ("extensions-view");
if (!cmd)
    win. addEventListener ("load", function (event) { setTimeout (function () { win. document. getElementById ("extensions-view"). doCommand (); }, 200); }, false);
else
    cmd. doCommand ();
    cmd2 = doc. getElementById ("cmd_checkUpdatesAll");
if (!cmd2)
    win. addEventListener ("load", function (event) { setTimeout (function () { win. document. getElementById ("cmd_checkUpdatesAll"). doCommand (); }, 500); }, false);
else
    cmd2. doCommand ();
};

function BrowserOpenAddonsMgr(aPane)
{
  const EMTYPE = "Extension:Manager";
  var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                     .getService(Components.interfaces.nsIWindowMediator);
  var theEM = wm.getMostRecentWindow(EMTYPE);
  if (theEM) {
    theEM.focus();
    return theEM;
  }

  const EMURL = "chrome://mozapps/content/extensions/extensions.xul";
  const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable";
  return window.openDialog(EMURL, "", EMFEATURES);
};

this.tooltipText = "Left    => Дополнения в интернете \nMiddle => Проверить наличие обновлений \nRight   => Установленные дополнения";
this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
mbMouse();
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
rbMouse();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

/*
this.setFlLDC = false;
this.setAttribute('onclick', 'gQuot(event, this)');
this.setAttribute('ondblclick', 'gQuot(event, this)');
this.pause = function (ms){
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < ms);
};

//Открыть установленные дополнения
this.leftDclick = function(event) {
this.setFlLDC = true;
try{ BrowserOpenAddonsMgr(); } catch(e) { BrowserOpenExtensions('extensions'); }
this.pause (1000);
this.setFlLDC = false;
};
*/

Отредактировано Indomito (04-10-2011 14:50:46)


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

Отсутствует

 

№1125-07-2010 10:25:16

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

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

SaveSetOpenDocument(Firefox)
ЛКМ    => Сохранить как...
СКМ => Установить папку загрузки как текущую, те будет установлен путь который прописан в Настройках. За код спасибо  - Infocatcher
ПКМ   => Открыть файл
Shift+ПКМ => Меню настройки кнопки. Будьте аккуратны в использовании модификаторов, см. обработчик this.oncontextmenu

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

Выделить код

Код:

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%3ESaveSetOpenDocument%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A//%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u043A%u0430%u043A...%0Afunction%20lbMouse%28%29%7B%0AsaveDocument%28window.content.document%29%3B%0A%7D%3B%0A%0A//%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%20%u043A%u0430%u043A%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%0Afunction%20mbMouse%28%29%7B%0AApplication.prefs.setValue%28%22browser.download.lastDir%22%2C%20Application.prefs.getValue%28%22browser.download.dir%22%2C%20%22%22%29%29%3B%0A%7D%3B%20%20%20%20%20%20%20%20%0A%0A//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%0Afunction%20rbMouse%28%29%7B%0ABrowserOpenFileWindow%28%29%3B%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u043A%u0430%u043A...%20%5CnMiddle%20%3D%3E%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%20%u043A%u0430%u043A%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%5CnRight%20%20%20%3D%3E%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%22%3B%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%0AlbMouse%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%0AmbMouse%28%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%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%0ArbMouse%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%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%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/

//Сохранить как...
function lbMouse(){
saveDocument(window.content.document);
};

//Установить папку загрузки как текущую
function mbMouse(){
Application.prefs.setValue("browser.download.lastDir", Application.prefs.getValue("browser.download.dir", ""));
};        

//Открыть файл
function rbMouse(){
BrowserOpenFileWindow();
};

this.tooltipText = "Left    => Сохранить как... \nMiddle => Установить папку загрузки как текущую \nRight   => Открыть файл";
this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
mbMouse();        
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
rbMouse();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

Отредактировано Indomito (01-08-2010 17:01:02)


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

Отсутствует

 

№1231-07-2010 22:52:36

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

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

ToolsBookmark (Firefox)
ЛКМ    => Добавить в закладки текущую страницу (с выбором куда добавлять)
СКМ => Скрыть/Показать панель закладок (при запуске браузера в состоянии ON)
ПКМ   => Открыть менеджер закладок
Shift+ПКМ => Меню настройки кнопки. Будьте аккуратны в использовании модификаторов, см. обработчик this.oncontextmenu

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

Выделить код

Код:

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%3EToolsBookmark%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A//%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%0Afunction%20lbMouse%28%29%7B%0Atry%20%7BPlacesCommandHook.bookmarkCurrentPage%28true%2C%20PlacesUtils.bookmarksMenuFolderId%29%3B%20%7D%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20addBookmarkAs%28document.getElementById%28%27content%27%29%29%3B%20%7D%0A%7D%3B%0A%0A//%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0Afunction%20mbMouse%28%29%7B%0Aconst%20ptId%20%3D%20%22PersonalToolbar%22%3B%0Avar%20pt%20%3D%20document.getElementById%28ptId%29%3B%0Avar%20pt_hideAttr%20%3D%20pt.getAttribute%28%22type%22%29%20%3D%3D%20%22menubar%22%20%3F%20%22autohide%22%20%3A%20%22collapsed%22%3B%0Apt.setAttribute%28pt_hideAttr%2C%20pt.getAttribute%28pt_hideAttr%29%20%21%3D%20%22true%22%29%3B%0Adocument.persist%28ptId%2C%20pt_hideAttr%29%3B%0A%7D%3B%0A%0A//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0Afunction%20rbMouse%28%29%7B%0Atry%20%7BPlacesCommandHook.showPlacesOrganizer%28%27AllBookmarks%27%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7BtoOpenWindowByType%28%27bookmarks%3Amanager%27%2C%20%27chrome%3A//browser/content/bookmarks/bookmarksManager.xul%27%29%3B%20%7D%0A%7D%3B%0A%0A//%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0438%u0437%u043D%u0430%u0447%u0430%u043B%u044C%u043D%u043E%0Aconst%20ptId%20%3D%20%22PersonalToolbar%22%3B%0Avar%20pt%20%3D%20document.getElementById%28ptId%29%3B%0Avar%20pt_hideAttr%20%3D%20pt.getAttribute%28%22type%22%29%20%3D%3D%20%22menubar%22%20%3F%20%22autohide%22%20%3A%20%22collapsed%22%3B%0Apt.setAttribute%28pt_hideAttr%2C%20%22false%22%29%3B%0Adocument.persist%28ptId%2C%20pt_hideAttr%29%3B%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%5CnMiddle%20%3D%3E%20%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%5CnRight%20%20%20%3D%3E%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%0AlbMouse%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%0AmbMouse%28%29%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%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%0ArbMouse%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%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%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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

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

Выделить код

Код:

/*Initialization Code*/

//Добавить в закладки текущую страницу
function lbMouse(){
try {PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId); } 
               catch(e) { addBookmarkAs(document.getElementById('content')); }
};

//Скрыть/Показать панель закладок
function mbMouse(){
const ptId = "PersonalToolbar";
var pt = document.getElementById(ptId);
var pt_hideAttr = pt.getAttribute("type") == "menubar" ? "autohide" : "collapsed";
pt.setAttribute(pt_hideAttr, pt.getAttribute(pt_hideAttr) != "true");
document.persist(ptId, pt_hideAttr);
};

//Открыть менеджер закладок
function rbMouse(){
try {PlacesCommandHook.showPlacesOrganizer('AllBookmarks'); }
          catch(e) {toOpenWindowByType('bookmarks:manager', 'chrome://browser/content/bookmarks/bookmarksManager.xul'); }
};

//Открыть изначально
const ptId = "PersonalToolbar";
var pt = document.getElementById(ptId);
var pt_hideAttr = pt.getAttribute("type") == "menubar" ? "autohide" : "collapsed";
pt.setAttribute(pt_hideAttr, "false");
document.persist(ptId, pt_hideAttr);

this.tooltipText = "Left    => Добавить в закладки текущую страницу \nMiddle => Скрыть/Показать панель закладок \nRight   => Открыть менеджер закладок";

this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
mbMouse();        
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
rbMouse();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

Отредактировано Indomito (01-08-2010 17:00:19)


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

Отсутствует

 

№1301-08-2010 16:59:42

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

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

RestartHideQuit(Firefox 20)
ЛКМ    => Перезагрузить Mozilla FireFox
СКМ => В разработке (правка для FF 20) Показать/скрыть панель меню
ПКМ   => Выйти из Mozilla FireFox
Shift+ПКМ => Меню настройки кнопки. Будьте аккуратны в использовании модификаторов, см. обработчик this.oncontextmenu

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

Выделить код

Код:

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%3ERestartHideQuit%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A//%u0423%u0431%u0438%u0440%u0430%u0435%u043C%20%20%u0425%u0440%u043E%u043C-%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043E%u043A%0A/*%20%u0421%u043D%u044F%u0442%u044C%20%u043A%u043E%u043C%u043C%u0435%u0442%u0430%u0440%u0438%u0438%20%u0435%u0441%u043B%u0438%20%u0445%u043E%u0442%u0438%u043C%20%u0432%u044B%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0425%u0440%u043E%u043C.%0Adocument.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0Awindow.restore%28%29%3B%0Awindow.maximize%28%29%3B%0Awindow.restore%28%29%3B%0A*/%0A%0A//%u0421%u043A%u0440%u044B%u0442%u044C%20%u0438%u0437%u043D%u0430%u0447%u0430%u043B%u044C%u043D%u043E%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%20%20%20%20%20%20%20%20%0Aconst%20tbId%20%3D%20%22toolbar-menubar%22%3B%0Avar%20tb%20%3D%20document.getElementById%28tbId%29%3B%0Avar%20tb_hideAttr%20%3D%20tb.getAttribute%28%22type%22%29%20%3D%3D%20%22menubar%22%20%3F%20%22autohide%22%20%3A%20%22collapsed%22%3B%0Atb.setAttribute%28tb_hideAttr%2C%20%22true%22%29%3B%0Adocument.persist%28tbId%2C%20tb_hideAttr%29%3B%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u041F%u0435%u0440%u0435%u0437%u0430%u0433%u0440%u0443%u0437%u0438%u0442%u044C%20Mozilla%20FireFox%20%5CnMiddle%20%3D%3E%20%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C/%u0441%u043A%u0440%u044B%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%20%5CnRight%20%20%20%3D%3E%20%u0412%u044B%u0439%u0442%u0438%20%u0438%u0437%20Mozilla%20FireFox%22%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%0A%20%20var%20appStartup%20%3D%20Components.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIAppStartup%29%3B%0A%20%20appStartup.quit%28appStartup.eForceQuit%20%7C%20appStartup.eRestart%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%201%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%0A//%20%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C/%u0441%u043A%u0440%u044B%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%0Aconst%20tbId%20%3D%20%22toolbar-menubar%22%3B%0Avar%20tb%20%3D%20document.getElementById%28tbId%29%3B%0Avar%20tb_hideAttr%20%3D%20tb.getAttribute%28%22type%22%29%20%3D%3D%20%22menubar%22%20%3F%20%22autohide%22%20%3A%20%22collapsed%22%3B%0Atb.setAttribute%28tb_hideAttr%2C%20tb.getAttribute%28tb_hideAttr%29%20%21%3D%20%22true%22%29%3B%0Adocument.persist%28tbId%2C%20tb_hideAttr%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%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%0AgoQuitApplication%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%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%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/

this.tooltipText = "Left    => Перезагрузить Mozilla FireFox \nMiddle => В разработке (Показать/скрыть панель меню) \nRight   => Выйти из Mozilla FireFox";

this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
  var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
                             .getService(Components.interfaces.nsIAppStartup);
  appStartup.quit(appStartup.eForceQuit | appStartup.eRestart);
    }
    else if(event.button == 1) {
// Действие при клике СКМ
// Показать/скрыть панель меню
 
    }
    else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
goQuitApplication();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

Отредактировано Indomito (04-04-2013 16:35:47)


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

Отсутствует

 

№1407-08-2010 21:14:54

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

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

UpDownCenterPage(Firefox) Работает в FF7 и выше (Gecko 6.0)
Left    => Вверх/Вниз по странице
DLeft => Центрирование страницы
ПКМ => Меню настройки кнопки

Заменена на Page Navigation с большим функционалом и упрощена.

Отредактировано Indomito (18-05-2014 17:50:26)


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

Отсутствует

 

№1506-09-2010 00:00:54

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 4.0

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

Подключиться к Интернету (только Windows) (Firefox, Thunderbird)

скрытый текст
Ссылка:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname/%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%20credentials%20%3D%20%5B%22ConnectionName%22%2C%20%22Login%22%2C%20%22Password%22%5D%3B%0A%0Avar%20vbs%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D%0A%09%09%09%09%09.getService%28Components.interfaces.nsIProperties%29%0A%09%09%09%09%09.get%28%22TmpD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%0Avbs.append%28%22rasdial.vbs%22%29%3B%0A%0Alet%20stream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0Astream.init%28vbs%2C%20-1%2C%20-1%2C%200%29%3B%0Alet%20converter%20%3D%20Components.classes%5B%22@mozilla.org/intl/converter-output-stream%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Components.interfaces.nsIConverterOutputStream%29%3B%0Aconverter.init%28stream%2C%20%22UTF-8%22%2C%200%2C%200%29%3B%0Aconverter.writeString%0A%09%28%0A%09%22CreateObject%28%5C%22Wscript.Shell%5C%22%29.Run%20%5C%22rasdial%20%22%20+%0A%09credentials.join%28%22%20%22%29%20+%0A%09%22%5C%22%20%2C%200%2C%20True%22%0A%09%29%3B%20%0Aconverter.close%28%29%3B%0A%0Avar%20wcscript%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Awcscript.initWithPath%28%22C%3A%5C%5CWINDOWS%5C%5Csystem32%5C%5Cwscript.exe%22%29%3B%20%0A%0Avar%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Components.interfaces.nsIProcess%29%3B%0Aprocess.init%28wcscript%29%3B%20%0Aprocess.run%28false%2C%20%5Bvbs.path%5D%2C%201%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

Собственно код:

Выделить код

Код:

var credentials = ["ConnectionName", "Login", "Password"];

var vbs = Components.classes["@mozilla.org/file/directory_service;1"]
                    .getService(Components.interfaces.nsIProperties)
                    .get("TmpD", Components.interfaces.nsIFile);

vbs.append("rasdial.vbs");

let stream = Components.classes["@mozilla.org/network/file-output-stream;1"]
                    .createInstance(Components.interfaces.nsIFileOutputStream);
stream.init(vbs, -1, -1, 0);
let converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
                    .createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(stream, "UTF-8", 0, 0);
converter.writeString
    (
    "CreateObject(\"Wscript.Shell\").Run \"rasdial " +
    credentials.join(" ") +
    "\" , 0, True"
    ); 
converter.close();

var wcscript = Components.classes["@mozilla.org/file/local;1"]
                    .createInstance(Components.interfaces.nsILocalFile);
wcscript.initWithPath("C:\\WINDOWS\\system32\\wscript.exe"); 

var process = Components.classes["@mozilla.org/process/util;1"]
                    .createInstance(Components.interfaces.nsIProcess);
process.init(wcscript); 
process.run(false, [vbs.path], 1);


В первой строке кода кнопки нужно указать название подключения, логин и пароль.

Отредактировано luitzen (19-09-2010 00:40:17)

Отсутствует

 

№1618-09-2010 23:34:21

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 3.6

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

Не более десяти вкладок! (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%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%5BtabLimiter%20%3D%20new%20function%28%29%20%7B%0A%0A%20%20%20%20this.boolean%20%3D%20true%3B%0A%0A%20%20%20%20this.extIEvents%20%3D%20Application.activeWindow.events%3B%0A%0A%20%20%20%20this.extIEventListener%20%3D%20function%28event%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28event.data.index%20%3E%209%29%20event.data.close%28%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20this.addORremoveListener%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this.boolean%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20this.extIEvents.addListener%28%22TabOpen%22%2C%20this.extIEventListener%29%3B%20%7D%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20this.extIEvents.removeListener%28%22TabOpen%22%2C%20this.extIEventListener%29%3B%20%7D%0A%20%20%20%20%20%20%20%20this.boolean%20%3D%20%21this.boolean%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20this.addORremoveListener%28%29%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BtabLimiter.addORremoveListener%28%29%3B%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

tabLimiter = new function() {

    this.boolean = true;

    this.extIEvents = Application.activeWindow.events;

    this.extIEventListener = function(event) {
        if (event.data.index > 9) event.data.close();
    };

    this.addORremoveListener = function () {
        if (this.boolean)
            { this.extIEvents.addListener("TabOpen", this.extIEventListener); }
        else
            { this.extIEvents.removeListener("TabOpen", this.extIEventListener); }
        this.boolean = !this.boolean;
    };

    this.addORremoveListener();
}

Собственно код (выключающий и обратно включающий ограничение):

Выделить код

Код:

tabLimiter.addORremoveListener();

Кодом инициализации кнопка запрещает открываться новым вкладкам, если их уже открыто больше десяти. Чтобы отключить ограничение, кнопку нужно нажать, чтобы включить обратно, нажать снова и т. д. При перезапуске текущее состояние ограничения не сохраняется.

Кнопочка в основном для самодисциплины, для борьбы с другими подвластными пользователями нужно использовать иные средства.

Отредактировано luitzen (18-09-2010 23:42:06)

Отсутствует

 

№1723-09-2010 18:25:06

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

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

Открыть страницу в Internet Explorer  ( Firefox, Pale Moon )
Кнопка открывает текущую страницу в Internet Explorer.

ЛКМ => открыть текущую страницу в Internet Explorer.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20Internet%20Explorer%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAgDAgAPAgECFwAAAQ8AAAAQBgEAIRUJADAVCAAxBgEAIwAAABIAAAERAgECGAMCABAAAAAJAAAABQAAAAIAAAABAAAABAIBAAwAAAINBgEAC0QrCVCScT6nxKFt1de2g+fXtoPnw6Ft1pJxPqhEKwlSBgEADQAAAg8CAQAOAAAABgAAAAIAAAAAAgEAAQAAAQBDJQANuIc7mfjSlvz+3q3/99en//PToP/z06D/99en//7erf/40pb8uIc7mUMlAA0AAAEAAgEAAQAAAAACAgABAAABAFQwABLpq03H8s6Y/+W8gf3itnX74rZ2+uK3evzit3r84rZ2+uO2dfvlvIH98s6Y/+mrTcdUMAASAAABAAICAAEAAAIBFAoAAM2QM6zovHv/3Kle+t+sYP3frmf+6rZp/+61Yv/utWL/6rZp/9+uZ/7fq2D83Kle+ei7e//NjzKsEwkAAAAAAgEAAAAAeUwJUuyvVf/Xnkn72qBJ/t2kTv/lo0DypG0ajnxPCU58TwlOpG0ajuWjQPLepU//26JK/tigS/3tsVf/e08LWAAAAAAfEQAAwYEZt9ubMv/VlCn71pcu/9eRIt9hOgEkAAAAAAIBAAICAQACAAAAAGA5ASbQjB/N05Eo5dGPJN3blyvvrHEUlwUBAABgOgAh35QZ7dKRIP/Vkh/81pMf/8aAD8OGVwt8i1sOkZBdDY6QXQ2Oi1sOj4NVDYK4dQqVzIIMpMd/DaHLgQymu3cKjjwlABJbOQVL4Z84/9abPP/Ymzr/2Js7/9udPv/npkD/56ZB/+emQf/npkH/56ZB/+imP//dnz7/2Zw9/9mcPP/XnD7/56M5/2I+BExdPQlV565Y/9yoW/7fql3/36xg/+CtYf3bqmL42qli+NqpYvjaqWL42qli+NqpYfjfrGH836tf/d6pXP3cp1r85q1X/1w8ClVfOwQ87Lpv++O5e//luHb+5bh3/+W5ef/yw3//+MV9//bEff/2xH3/+MV9//LDf//luXn/5bh3/+W4dv7juXv/7Lpu+187BDxOLAAM6rhr2uvJl//owIX87cmT/9WfT9V6Tg5WYkYfXWxMH2VsTB9lYkYfXXpODlbVn0/V7cmT/+jAhfzryZf/6rhr2k4sAAwAAAAArIA+j/3juP/ry5j679Gh//LQm/+qeS1/HA0ABAAAAQAAAAEAHA0AA6p4LX7y0Jv/79Gh/+vLmPr+47f/rIA9jwAAAAAAAAAATi4AIvvXnvD04sH/89ip/fXdtv//5rv/8ciH6dinWrjYp1q48ciH6f/mu//13bb/89ip/fXiwf/51p7wTi4AIwAAAAACAgIDAAAAAJhoIWP/8cr/9+nQ/ffhufv34778++vM///v0P//79D/++vM//fjvvz34bn79+nQ/f/wyv+mcCFjAAAAAAECAgMBAQAAAAACAhgKAAC2fShs/+3C/P//6//98dn+++zO/Prqyvr66sr6++zO/P3x2f7//+v//+3C/LZ9KGwYCgAAAAACAgEBAAAAAAAAAQEAAAEBAgMIAQAAWDgLNMqmbbT+58H3//fd///85P///OT///fd//7nwffKpm20WDgLNAgBAAAAAQIDAQAAAAAAAAAAAAAAAAAAAAEBAAACAQIDAAABAAYBAAByRQYrpnYqZqeCSYengkmHpnYqZnJFBisGAQAAAAABAAIBAgMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20path%20%3D%20%22C%3A%5C%5CProgram%20Files%5C%5CInternet%20Explorer%5C%5Ciexplore.exe%22%3B%0A%0Avar%20uri%20%3D%20gBrowser.currentURI.spec%3B%0Avar%20uri%20%3D%20/.%u0440%u0444/.test%28uri%29%20%3F%20Services.io.newURI%28uri%2C%20null%2C%20null%29.asciiSpec%20%3A%20uri%3B%20%20%0Avar%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsIFile%29%3B%0Afile.initWithPath%28path%29%3B%0A%21file.exists%28%29%20%26%26%20custombuttons.alertSlide%28self.label%2C%20%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%22%29%3B%0Avar%20process%20%3D%20Cc%5B%22@mozilla.org/process/util%3B1%22%5D.createInstance%28Ci.nsIProcess%29%3B%0Aprocess.init%28file%29%3B%0Aprocess.run%28false%2C%20%5Buri%5D%2C%201%29%3B%0A%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

Код:

Выделить код

Код:

var path = "C:\\Program Files\\Internet Explorer\\iexplore.exe";

var uri = gBrowser.currentURI.spec;
var uri = /.рф/.test(uri) ? Services.io.newURI(uri, null, null).asciiSpec : uri;  
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
file.initWithPath(path);
!file.exists() && custombuttons.alertSlide(self.label, "Файл не существует");
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, [uri], 1);

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

Отсутствует

 

№1829-09-2010 17:42:39

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

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

Hide scrollbar ( Firefox 3.6+ ) от 26.05.2013.
Отключает или включает полосу прокрутки( scrollbar ) на новых страницах и в текущей странице.

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

Выделить код

Код:

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%3EHide%20scrollbar%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAI0OAI0OAI0OAJ0OAJ0OAJ0OAI0OAI0OAI0OAI0OAI0OEJ0OAJ0OAJ0OEI0OAI0OAI0OAI0OAIz+AIzt8Izt8Hz98I0OAI0OAI0OAI0OAIz+AIzt8Izt8Iz98I0OAI0OAI0OAAz9842uaq7/So7/Rv4+wAzt8J0OAP0eEAzd5D2+if7vOv8PVo4uwEz+AIz+AJ0OAAzd9X3+r///////+18fUAzd4J0OAT0uEAy9xw4+34/v7///+m7/QIzt8J0OAJ0OAAzd9S3+r///////+m7vQAzd4J0OAS0uEAzN1m4ezu/P3///+c7fMHzt8J0OAI0OABz98n1uRy5O1w4u1K2+gCz98J0OAM0eAAzt8u1+Rr4ux35O5G2+cGz98I0eAI0OAJ0OAEzuAAy90Ay90Czd4H0OAI0OAH0OAK0OADzt8Ay9wAy9wAzd4J0OAI0OAI0OAI0OAL0OAS0uET0uEP0eEI0OAI0OAI0OAH0OAM0eES0uET0uEP0uEI0OAI0OAI0OAI0OAI0OAJ0OAJ0OAJ0OAI0OAI0OAI0OAI0OAJ0OAJ0OAJ0OAJ0OAI0OAI0OAI0OAI0OAE0N8Azd4Azd4Czt8J0OAJ0OAI0OAJ0OADz98Azd4Azd4Azt8H0OAI0OAI0OAAzt882ua48fa08PV15e4Azt4J0OAP0uEAzd5J3Oit7/S+8vdv5OwHz98I0OEJ0OAAzd9X3+r///////+08fUAzd4J0OAT0uEAy9xw4+34/v7///+m7/QIzt8J0OAJ0OAAzd9X3+r///////+28fUAzd4J0OAT0uEAy9xx4+34/v7///+m7/QIzt8J0OAI0OAE0OAg1eNa4OpY4Os82ucDz98I0OAL0OABzt8m1uRU3upb4Oo52uYGz+AJ0OAI0OAI0OAF0OAAzd8Azd8Czt8I0OAI0OAI0OAK0OAD0N8Azd8Azd8Bz98I0OAI0OAI0OAI0OAI0OAJ0OAJ0OAJ0OAI0OAI0OAI0OAI0OAI0OAJ0OAJ0OAI0OAI0OAI0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20................................%0Avar%20css%20%3D%20%22html%20%3E%20scrollbar%5Borient%3Dvertical%5D%20%7B%20visibility%3Acollapse%20%21important%7D%5Cn%22%3B%0Acss%20%3D%20css%20+%20%22html%20%3E%20scrollbar%5Borient%3Dhorizontal%5D%20%7B%20visibility%3Acollapse%20%21important%20%7D%22%3B%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0A%0Aconst%20icon%20%3D%20this.ownerDocument.getAnonymousElementByAttribute%28this%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%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%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20enabled%20%3D%20sss.sheetRegistered%28%20uri%2C%20sss.AGENT_SHEET%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20enabled%20%3F%20sss.unregisterSheet%28%20uri%2C%20sss.AGENT_SHEET%20%29%20%3A%20sss.loadAndRegisterSheet%28%20uri%2C%20sss.AGENT_SHEET%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20this.style.filter%20%3D%20enabled%20%3F%20%22%22%20%3A%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20%20%20%20%20%20%20%20icon.style.opacity%20%3D%20enabled%20%3F%20%22%22%20%3A%200.65%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20BrowserReload%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%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

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

Выделить код

Код:

// Объявляем переменные для этой вкладки ................................
var css = "html > scrollbar[orient=vertical] { visibility:collapse !important}\n";
css = css + "html > scrollbar[orient=horizontal] { visibility:collapse !important }";
const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);  

const icon = this.ownerDocument.getAnonymousElementByAttribute(this, "class", "toolbarbutton-icon");


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

     if ( e.button == 0 ) {
          var uri = makeURI("data:text/css," + encodeURIComponent(css));
          var enabled = sss.sheetRegistered( uri, sss.AGENT_SHEET );
          enabled ? sss.unregisterSheet( uri, sss.AGENT_SHEET ) : sss.loadAndRegisterSheet( uri, sss.AGENT_SHEET );
          
          this.style.filter = enabled ? "" : 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")';
          icon.style.opacity = enabled ? "" : 0.65   
          
          BrowserReload();
          };     
};

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

Отсутствует

 

№1930-09-2010 20:52:54

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

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

Search and open( Firefox )
Ищет выделенный текст или текст из буфера обмена в текущем поисковике в новой вкладке, открывает адрес из буфера обмена или выделенный адрес на странице(например любой Код кнопки: на этой странице) в новой активной вкладке. Открывает выделенные на странице ссылки или с запросом на подтверждение все ссылки на странице в новых вкладках

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

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESearch%20and%20open%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CAAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%252BTzvb2%252B%252Fne4dFJeBw0egA%252FfAJAfAA8ewBBegAAAAD%252B%252FPtft98Mp%252BwWsfAVsvEbs%252FQeqvF8xO7%252F%252F%252F63yqkxdgM7gwE%252FggM%252BfQA%252BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%252FQvq%252Bfz%252Bf%252F%252B%252B%252FZKhR05hgBBhQI8hgBAgAI9ewD0%252B%252Fg3pswAtO8Cxf4Kw%252FsJvvYAqupKsNv%252B%252Fv7%252F%252FP5VkSU0iQA7jQA9hgBDgQU%252BfQH%252F%252Ff%252FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%252Fv%252Fg6Nc%252Fhg05kAA8jAM9iQI%252BhQA%252BgQDQu6b97uv%252F%252F%252F7V8Pqw3eiWz97q8%252Ff%252F%252F%252F%252F7%252FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%252F%252B%252F%252F39%252F%252F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%252F%252B%252Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%252BooT8%252Fv%252F7%252F%252F%252FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%252BhwGfXifWvqz%252B%252Ff%252F58u%252Fev6Dt4tr%252B%252F%252F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%252FkwBChwHt4dv%252F%252F%252F728ei1bCi7VAC5XQ7kz7n%252F%252F%252F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%252F%252F%252F9%252F%252F%252FSqYK5UwDKZAS9WALIkFn%252B%252F%252F3%252F%252BP8oKccGGcIRJrERILYFEMwAAuEAAdX%252F%252Ff7%252F%252FP%252B%252BfDvGXQLIZgLEWgLOjlf7%252F%252F%252F%252F%252F%252F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%252F%252F%252F%252F7%252B%252Fu2bCTIYwDPZgDBWQDSr4P%252F%252Fv%252F%252F%252FP5GRuABAPkAA%252FwBAfkDAPAAAesAAN%252F%252F%252B%252Fz%252F%252F%252F64g1C5VwDMYwK8Yg7y5tz8%252Fv%252FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%252F%252FPvi28ymXyChTATRrIb8%252F%252F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20//%20%u041B%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%20%20var%20text%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21%21text%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28%20text%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadOneTab%28%20submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20true%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20//%20%u0421%u041A%u041C%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%2C%20doc%20%3D%20win.document%3B%0A%20%20%20%20%20%20%20%20%20%20var%20sel%20%3D%20doc%2C%20winSel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20winSel.toString%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sel.appendChild%28%20winSel.getRangeAt%280%29.cloneContents%28%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20%27%27%2C%20links%20%3D%20sel.getElementsByTagName%28%27a%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20links.length%20%3E%2016%20%26%26%20%21confirm%28%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%27%20+%20links.length%20+%20%27%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%u0445%3F%27%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20for%28%20var%20i%20%3D%200%2C%20lnk%3B%20lnk%20%3D%20links%5Bi%5D%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20lnk.href%29%20gBrowser.addTab%28%20lnk.href%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%20%7B%20//%20%u041F%u041A%u041C%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%20var%20url%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21%21url%20%29%20gBrowser.loadOneTab%28%20url%2C%20null%2C%20null%2C%20null%2C%20false%2C%20false%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%20%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20..................................................................................................%0Avar%20_this%20%3D%20this%3B%0Avar%20alertsService%20%3D%20Components.classes%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Components.interfaces.nsIAlertsService%29%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%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%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%20window.content.focus%28%29%3B%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%20str%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%20alertsService.showAlertNotification%28_this.image%2C%20_this.label%2C%20str%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//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u043E%u0442%u0441%u0442%u0443%u043F%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................................%0Athis.tooltipText%20%3D%20%22Search%20and%20open%20%5Cn%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20/%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%5Cn%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20/%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%22%3B%0A//this.setAttribute%28%22style%22%2C%20%22margin-right%3A%2010px%3B%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

//  Настройка функций кликов мыши для кнопки ...............................................
this.onclick = function(e) {
     
     if ( e.button == 0 ) { // ЛКМ 
          var text = getSelect();
          if ( !!text) 
               var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
               var submission = ss.currentEngine.getSubmission( text, null );
               gBrowser.loadOneTab( submission.uri.spec, null, null, submission.postData, true, false );
          }; 
                  
     if ( e.button == 1 ) { // СКМ  
          var win = document.commandDispatcher.focusedWindow, doc = win.document;
          var sel = doc, winSel = win.getSelection();
          if ( winSel.toString() ) {
               var sel = doc.createElement('div');
               sel.appendChild( winSel.getRangeAt(0).cloneContents() );
               }
          var str = '', links = sel.getElementsByTagName('a');
          
          if ( links.length > 16 && !confirm('Открыть ' + links.length + ' ссылки в новых вкладках?') ) return;
          
          for( var i = 0, lnk; lnk = links[i]; i++ ) {
               if ( lnk.href) gBrowser.addTab( lnk.href );
               }    
          };
                   
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey )  { // ПКМ 
          e.preventDefault();
          var url = getSelect();
          if ( !!url ) gBrowser.loadOneTab( url, null, null, null, false, false );             
          };        
};



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



/* Функция отдаст выделенный текст из страницы или текстового поля, 
   или из буфера обмена если текст не выделен, если нет текста отдаст 'false' .............. */
function getSelect() {
  // выделенный текст из страницы ....
  window.content.focus();
  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 str = "Выделите или скопируйте текст!"
       alertsService.showAlertNotification(_this.image, _this.label, str, false, "", null, "");
       };
    
  return ( selection == '')? false: selection;
};


// Подсказка кнопки и отступ справа у кнопки ................................................
this.tooltipText = "Search and open \nЛ: Искать текст из буфера обмена / выделенный \nМ: Открыть все выделенные ссылки \nП: Открыть адрес из буфера обмена / выделенный";
//this.setAttribute("style", "margin-right: 10px;");

Отредактировано bunda1 (13-04-2013 13:26:30)

Отсутствует

 

№2017-10-2010 21:36:36

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

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

Zoom( Firefox24 ) от 07.06.2016.
Даёт возможность менять масштаб страницы кликами на кнопке или колёсиком мыши на кнопке, можно переключать: изменения масштаба страницы или только текста на странице. Стандартная сплывающая подсказка у кнопки показывает текущий масштаб, при изменении масштаба кнопкой у кнопки сплывает подсказка с новым масштабом.

Скриншот:
8eaf149098cb47e5ecb3a5df0b2ba189.png

ЛКМ => Увеличить масштаб,
СКМ => Менять масштаб страницы или только текста на странице, соответственно меняется иконка копки,
ПКМ => Уменьшить масштаб,
Ctrl+ПКМ => Контекстное меню кнопки,
Колёсиком мыши => Менять масштаб.
Код кнопки и инициализации:
Код кнопки:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EZoom%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jd3RMWpCQRSF4S/iBtyCELHW1sIV6ALiRnQH4hJ0ByF2Ym8aG1Ml8Ji3ArXRDZhUA+bx3qCWHjgw3Jn57+XcF1fq0JXQF7vUvYxw4bfKGWHO4mFA9AfLJCAjdOhG9+jPWVxDmrSSgLIGGz4jYMwEaslQCtqyLdbuAgwYxvOJM9SrHscRoUFjwLDFKwTy97Igb93CG6P4p3KCQF6sHdhPma1YJwGBvF22phLdFeKTAv6F+MP3gf2R462AP7hdbq8C1bDsAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%0A%20%20%20%20%20//%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%20FullZoom.enlarge%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%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%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20FullZoom.reduce%28%29%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%20showTooltip%28%29%3B%20%20%20%20%20%20%20%20%20%0A%7D%3B%0Athis.setAttribute%28%22ondblclick%22%2C%20%22event.preventDefault%28%29%22%29%3B%0A%0A%0A//%20%u041C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043A%u043E%u043B%u0435%u0441%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%20..............%0Athis.onwheel%20%3De%3D%3E%20%7B%0A%20%20%20e.deltaY%20%3E%200%20%3F%20FullZoom.reduce%28%29%20%3A%20FullZoom.enlarge%28%29%3B%0A%20%20%20showTooltip%28%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0443%20%u0438%20%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0432%u044B%u0437%u043E%u0432%u0435%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20..............%0Afunction%20showTooltip%28%29%20%7B%0A%20%20%20var%20tooltip%20%3D%20self.lastChild%3B%0A%20%20%20if%20%28%20%21tooltip%20%29%20%7B%0A%20%20%20%20%20%20%20%20tooltip%20%3D%20self.appendChild%28document.createElement%28%22tooltip%22%29%29%3B%0A%20%20%20%20%20%20%20%20tooltip.style.cssText%20%3D%20%22font-weight%3A%20bold%20%21important%3B%20color%3A%20red%20%21important%3B%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20self.tooltipText%20%3D%20%22%22%20%20%20%20%20%0A%20%20%20tooltip.label%20%3D%20Math.floor%28%28ZoomManager.zoom%20+%200.005%29%20*%20100%29%20+%20%22%25%22%3B%0A%20%20%20tooltip.showPopup%28self%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22topleft%22%2C%20%22topright%22%29%3B%0A%20%20%20self.onmouseleave%20%3D%28%29%3D%3E%20%7B%20tooltip.hidePopup%28self.onmouseleave%20%3D%20null%29%3B%20self.tooltipText%20%3D%20self.label%20%7D%3B%0A%7D%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%27about%3Aconfig%27%20..............%0Avar%20s%20%3D%20%22browser.zoom.full%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.image%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQklEQVQ4jaWSzUtUYRTGf+97rzM6V22YVBQJa1GbPjCiIMJFzaJNYosiiSAooV0ryWW7Nv0DiYXRJnAVtgqMaBEEFShJovmRM43jfDsfd+aO9973bWVIjBZ0ls/znIdzznPgP0vsRYxPvt/KFUqVRHLLS6RE36sXtxpqZSPwZP/A1aagdSBkRXqlGe7bTJcxgkev/LPB9ZsPxoslh0zOJpkqkUiWsLoHXzfSmo3AuhfsysYKxBNFFpezlIoFlG8DdADZfScYvv1oJpO1WVjK8PHTUj6+vpJWfhmUS0vn0Nu/rnDoyOmoXd0mnamQXH1+w9l69xAMhNGMGew5ta9B/5nLI0ppao6HXd0GJzbjVuafSLMVabQjDItg+OLTPQ0Gr41O2NVtsjmbjdiX6R3crS5PC9mMkEECbSfuNjTo7Dzc79Q98oUqyXSZaurl0A5XTU0NmaaJECZCGBjNx0Z2uN/PcX9sKleuycjc/CbLqzHUdg7QCCOENCyQAdAK7dsor0xl45mAXTEWSkS+LiRZWVnEq62h3C0QAmm0Icx2pBFCyABaK7SuA1Y/2LMC4PylsZlivScaj33HrXzDKX2+gxZ9SImUzSADKF/9DIXPTiAkWnto38k7+TcHTYB0qTOaSf/ArS5Ttxen8cuTAChQuw7m1rqGjUBHFHzQKgIgWiIXRptazz32amu4tTXcylwPsPln3jsVDA9orV3QPtqrfRBW772KcuIVt570lJtvVfX18F7NAKZ1fBbtd2vtOdKw+n4B6skL1gRzZQAAAAAASUVORK5CYII%3D%27%0A%20%20%20%3A%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jd3RMWpCQRSF4S/iBtyCELHW1sIV6ALiRnQH4hJ0ByF2Ym8aG1Ml8Ji3ArXRDZhUA+bx3qCWHjgw3Jn57+XcF1fq0JXQF7vUvYxw4bfKGWHO4mFA9AfLJCAjdOhG9+jPWVxDmrSSgLIGGz4jYMwEaslQCtqyLdbuAgwYxvOJM9SrHscRoUFjwLDFKwTy97Igb93CG6P4p3KCQF6sHdhPma1YJwGBvF22phLdFeKTAv6F+MP3gf2R462AP7hdbq8C1bDsAAAAAElFTkSuQmCC%27%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%29%3B%0A%0A%0A%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%20value%20%3D%20Math.floor%28%28ZoomManager.zoom%20+%200.005%29%20*%20100%29%20+%20%22%25%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20this.tooltipText%20%3D%20%22Zoom%3A%20%22%20+%20value%20+%20%22%5Cn%u041B%3A%20%u0443%u0432%u0435%u043B%u0438%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%5Cn%u0421%3A%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u043E%u043B%u044C%u043A%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%5Cn%u041F%3A%20%u0443%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%5Cn%u041C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0435%22%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%20%0A%7D%3B%20%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) FullZoom.enlarge();
          
     // действие при клике СКМ ....    
     if ( e.button == 1 ) cbu.setPrefs(s, !cbu.getPrefs(s));
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();
          FullZoom.reduce();           
          }
     
     showTooltip();         
};
this.setAttribute("ondblclick", "event.preventDefault()");


// Менять масштаб колесиком мыши на кнопке ..............
this.onwheel =e=> {
   e.deltaY > 0 ? FullZoom.reduce() : FullZoom.enlarge();
   showTooltip();
};


// Создать подсказку и показывать у кнопки при вызове функции ..............
function showTooltip() {
   var tooltip = self.lastChild;
   if ( !tooltip ) {
        tooltip = self.appendChild(document.createElement("tooltip"));
        tooltip.style.cssText = "font-weight: bold !important; color: red !important;";
        }
   self.tooltipText = ""     
   tooltip.label = Math.floor((ZoomManager.zoom + 0.005) * 100) + "%";
   tooltip.showPopup(self, -1, -1, "popup", "topleft", "topright");
   self.onmouseleave =()=> { tooltip.hidePopup(self.onmouseleave = null); self.tooltipText = self.label };
};


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек 'about:config' ..............
var s = "browser.zoom.full";
function toggleImage() {
   self.image = cbu.getPrefs(s)
   ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQklEQVQ4jaWSzUtUYRTGf+97rzM6V22YVBQJa1GbPjCiIMJFzaJNYosiiSAooV0ryWW7Nv0DiYXRJnAVtgqMaBEEFShJovmRM43jfDsfd+aO9973bWVIjBZ0ls/znIdzznPgP0vsRYxPvt/KFUqVRHLLS6RE36sXtxpqZSPwZP/A1aagdSBkRXqlGe7bTJcxgkev/LPB9ZsPxoslh0zOJpkqkUiWsLoHXzfSmo3AuhfsysYKxBNFFpezlIoFlG8DdADZfScYvv1oJpO1WVjK8PHTUj6+vpJWfhmUS0vn0Nu/rnDoyOmoXd0mnamQXH1+w9l69xAMhNGMGew5ta9B/5nLI0ppao6HXd0GJzbjVuafSLMVabQjDItg+OLTPQ0Gr41O2NVtsjmbjdiX6R3crS5PC9mMkEECbSfuNjTo7Dzc79Q98oUqyXSZaurl0A5XTU0NmaaJECZCGBjNx0Z2uN/PcX9sKleuycjc/CbLqzHUdg7QCCOENCyQAdAK7dsor0xl45mAXTEWSkS+LiRZWVnEq62h3C0QAmm0Icx2pBFCyABaK7SuA1Y/2LMC4PylsZlivScaj33HrXzDKX2+gxZ9SImUzSADKF/9DIXPTiAkWnto38k7+TcHTYB0qTOaSf/ArS5Ttxen8cuTAChQuw7m1rqGjUBHFHzQKgIgWiIXRptazz32amu4tTXcylwPsPln3jsVDA9orV3QPtqrfRBW772KcuIVt570lJtvVfX18F7NAKZ1fBbtd2vtOdKw+n4B6skL1gRzZQAAAAAASUVORK5CYII='
   : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwElEQVQ4jd3RMWpCQRSF4S/iBtyCELHW1sIV6ALiRnQH4hJ0ByF2Ym8aG1Ml8Ji3ArXRDZhUA+bx3qCWHjgw3Jn57+XcF1fq0JXQF7vUvYxw4bfKGWHO4mFA9AfLJCAjdOhG9+jPWVxDmrSSgLIGGz4jYMwEaslQCtqyLdbuAgwYxvOJM9SrHscRoUFjwLDFKwTy97Igb93CG6P4p3KCQF6sHdhPma1YJwGBvF22phLdFeKTAv6F+MP3gf2R462AP7hdbq8C1bDsAAAAAElFTkSuQmCC';
};
toggleImage();
gPrefService.addObserver(s, toggleImage, false);
addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );



// Подсказка для кнопки ..............
this.onmouseover =()=> {
   var value = Math.floor((ZoomManager.zoom + 0.005) * 100) + "%";                    
   this.tooltipText = "Zoom: " + value + "\nЛ: увеличить масштаб \nС: менять масштаб страницы или только текста на странице \nП: уменьшить масштаб \nМожно менять масштаб колёсиком на кнопке";                                                     
};

Отредактировано bunda1 (20-06-2013 21:54:08)

Отсутствует

 

№2122-10-2010 00:35:51

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

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

Search and open +( Firefox )
Ищет выделенный текст или текст из буфера обмена в текущем поисковике в новой вкладке, открывает адрес из буфера обмена или выделенный адрес на странице(например любой Код кнопки: на этой странице) в новой активной вкладке. Открывает выделенные на странице ссылки или с запросом на подтверждение все ссылки на странице.
Даёт возможность переключать текущий поисковик, иконка кнопки отображает текущий поисковик при изменении которого соответственно меняется иконка кнопки.

ЛКМ => искать выделенный текст или текст из буфера обмена в текущем поисковике в новой активной вкладке,
СКМ => открыть выделенные ссылки или  все ссылки на странице,
ПКМ =>  открыть адрес находящийся в буфере обмена или выделенный адрес в тексте на странице в новой активной вкладке,
Ctrl+ПКМ  => открыть контекстное меню кнопки,
Dropmarker =>  открыть меню с поисковиками.


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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESearch%20and%20open+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CAAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%252BTzvb2%252B%252Fne4dFJeBw0egA%252FfAJAfAA8ewBBegAAAAD%252B%252FPtft98Mp%252BwWsfAVsvEbs%252FQeqvF8xO7%252F%252F%252F63yqkxdgM7gwE%252FggM%252BfQA%252BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%252FQvq%252Bfz%252Bf%252F%252B%252B%252FZKhR05hgBBhQI8hgBAgAI9ewD0%252B%252Fg3pswAtO8Cxf4Kw%252FsJvvYAqupKsNv%252B%252Fv7%252F%252FP5VkSU0iQA7jQA9hgBDgQU%252BfQH%252F%252Ff%252FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%252Fv%252Fg6Nc%252Fhg05kAA8jAM9iQI%252BhQA%252BgQDQu6b97uv%252F%252F%252F7V8Pqw3eiWz97q8%252Ff%252F%252F%252F%252F7%252FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%252F%252B%252F%252F39%252F%252F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%252F%252B%252Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%252BooT8%252Fv%252F7%252F%252F%252FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%252BhwGfXifWvqz%252B%252Ff%252F58u%252Fev6Dt4tr%252B%252F%252F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%252FkwBChwHt4dv%252F%252F%252F728ei1bCi7VAC5XQ7kz7n%252F%252F%252F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%252F%252F%252F9%252F%252F%252FSqYK5UwDKZAS9WALIkFn%252B%252F%252F3%252F%252BP8oKccGGcIRJrERILYFEMwAAuEAAdX%252F%252Ff7%252F%252FP%252B%252BfDvGXQLIZgLEWgLOjlf7%252F%252F%252F%252F%252F%252F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%252F%252F%252F%252F7%252B%252Fu2bCTIYwDPZgDBWQDSr4P%252F%252Fv%252F%252F%252FP5GRuABAPkAA%252FwBAfkDAPAAAesAAN%252F%252F%252B%252Fz%252F%252F%252F64g1C5VwDMYwK8Yg7y5tz8%252Fv%252FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%252F%252FPvi28ymXyChTATRrIb8%252F%252F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20//%20%u041B%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20e.originalTarget.nodeName%20%21%3D%20%22xul%3Atoolbarbutton%22%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20text%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20%21%21text%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20ss%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20submission%20%3D%20ss.currentEngine.getSubmission%28text%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadOneTab%28submission.uri.spec%2C%20null%2C%20null%2C%20submission.postData%2C%20true%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20//%20%u0421%u041A%u041C%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%2C%20doc%20%3D%20win.document%3B%0A%20%20%20%20%20%20%20%20%20%20var%20sel%20%3D%20doc%2C%20winSel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20winSel.toString%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sel.appendChild%28%20winSel.getRangeAt%280%29.cloneContents%28%29%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20str%20%3D%20%27%27%2C%20links%20%3D%20sel.getElementsByTagName%28%27a%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20links.length%20%3E%2016%20%26%26%20%21confirm%28%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%27%20+%20links.length%20+%20%27%20%u0441%u0441%u044B%u043B%u043A%u0438%20%u0432%20%u043D%u043E%u0432%u044B%u0445%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%u0445%3F%27%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20for%28%20var%20i%20%3D%200%2C%20lnk%3B%20lnk%20%3D%20links%5Bi%5D%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20lnk.href%29%20gBrowser.addTab%28%20lnk.href%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%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%20%7B%20//%20%u041F%u041A%u041C%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%20var%20url%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21%21url%20%29%20gBrowser.loadOneTab%28%20url%2C%20null%2C%20null%2C%20null%2C%20false%2C%20false%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%20%20%20%20%20%20%20%20%0A%7D%3B%0A%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20..................................................................................................%0Avar%20_this%20%3D%20this%3B%0Avar%20alertsService%20%3D%20Components.classes%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Components.interfaces.nsIAlertsService%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u043E%u0438%u0441%u043A%u043E%u0432%u0438%u043A%u0430%u043C%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20.........................................%0Afunction%20searchService%28%29%20%7B%0A%20%20%20return%20Components.classes%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Components.interfaces.nsIBrowserSearchService%29%3B%0A%7D%0A%0Athis.selectEngine%20%3D%20function%28aNode%2C%20aEvent%29%20%7B%0A%20%20%20var%20engine%20%3D%20aEvent.target.engine%3B%0A%20%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20%20ss.currentEngine%20%3D%20ss.getEngineByName%28engine.name%29%3B%0A%20%20%20aNode.engine%20%3D%20engine%3B%0A%20%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%20%20var%20ss%20%3D%20searchService%28%29%3B%0A%20%20%20var%20engines%20%3D%20ss.getVisibleEngines%28%7B%20%7D%29%3B%0A%20%20%20const%20kXULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0A%20%20%20while%28%20aNode.firstChild%20%26%26%20aNode.firstChild.localName%20%21%3D%20%22menuseparator%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20aNode.removeChild%28%20aNode.firstChild%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20for%20%28%20var%20i%20%3D%20engines.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20mi%20%3D%20document.createElementNS%28kXULNS%2C%20%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20mi.id%20%3D%20%22cb-search-%22%20+%20engines%5Bi%5D.name%3B%0A%20%20%20%20%20%20%20%20%20mi.className%20%3D%20%22menuitem-iconic%20searchbar-engine-menuitem%22%3B%0A%20%20%20%20%20%20%20%20%20mi.setAttribute%28%22label%22%2C%20engines%5Bi%5D.name%29%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20engines%5Bi%5D.iconURI%20%29%20%20mi.setAttribute%28%22src%22%2C%20engines%5Bi%5D.iconURI.spec%20%29%3B%0A%20%20%20%20%20%20%20%20%20mi.engine%20%3D%20engines%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20mi.engine%20%3D%3D%20ss.currentEngine%20%29%0A%20%20%20%20%20%20%20%20%20mi.style.fontWeight%20%3D%20%22bold%22%3B%0A%20%20%20%20%20%20%20%20%20mi.setAttribute%28%22onclick%22%2C%20%22event.preventDefault%28%29%3Bevent.stopPropagation%28%29%3BparentNode.parentNode.selectEngine%28parentNode.parentNode%2C%20event%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20aNode.insertBefore%28mi%2C%20aNode.firstChild%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0Athis.currentEngine%20%3D%20searchService%28%29.currentEngine%3B%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%20%22openDialog%28%27chrome%3A//browser/content/search/engineManager.xul%27%2C%20%22%20+%20%22%27engineManager%27%2C%20%27chrome%2C%20dialog%3Dno%27%29%22%29%3B%0Athis.type%20%3D%20%22menu-button%22%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%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%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%20window.content.focus%28%29%3B%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%20str%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%20alertsService.showAlertNotification%28_this.image%2C%20_this.label%2C%20str%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//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%20%u043E%u0442%u0441%u0442%u0443%u043F%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................................%0Athis.tooltipText%20%3D%20%22Search%20and%20open%20%5Cn%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430/%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%5Cn%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0435%20%u0441%u0441%u044B%u043B%u043A%u0438%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430/%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%22%3B%0A//this.setAttribute%28%22style%22%2C%20%22margin-right%3A%2010px%3B%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

//  Настройка функций кликов мыши для кнопки ...............................................
this.onclick = function(e) {
     
     if ( e.button == 0 ) { // ЛКМ 
          if ( e.originalTarget.nodeName != "xul:toolbarbutton") return;
               var text = getSelect();
               if ( !!text) 
                    var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
                    var submission = ss.currentEngine.getSubmission(text, null);
                    gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, true, false);
          }; 
                  
     if ( e.button == 1 ) { // СКМ  
          var win = document.commandDispatcher.focusedWindow, doc = win.document;
          var sel = doc, winSel = win.getSelection();
          if ( winSel.toString() ) {
               var sel = doc.createElement('div');
               sel.appendChild( winSel.getRangeAt(0).cloneContents() );
               }
          var str = '', links = sel.getElementsByTagName('a');
          
          if ( links.length > 16 && !confirm('Открыть ' + links.length + ' ссылки в новых вкладках?') ) return;
          
          for( var i = 0, lnk; lnk = links[i]; i++ ) {
               if ( lnk.href) gBrowser.addTab( lnk.href );
               }    
          };
                   
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey )  { // ПКМ 
          e.preventDefault();
          var url = getSelect();
          if ( !!url ) gBrowser.loadOneTab( url, null, null, null, false, false );             
          };        
};



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



// Добавить контекстное меню с поисковиками для кнопки .........................................
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-button";



/* Функция отдаст выделенный текст из страницы или текстового поля, 
   или из буфера обмена если текст не выделен, если нет текста отдаст 'false' .............. */
function getSelect() {
  // выделенный текст из страницы ....
  window.content.focus();
  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 str = "Выделите или скопируйте текст!"
       alertsService.showAlertNotification(_this.image, _this.label, str, false, "", null, "");
       };
    
  return ( selection == '')? false: selection;
};


// Подсказка кнопки и отступ справа у кнопки ................................................
this.tooltipText = "Search and open \nЛ: Искать текст из буфера обмена/выделенный \nМ: Открыть все выделенные ссылки \nП: Открыть адрес из буфера обмена/выделенный";
//this.setAttribute("style", "margin-right: 10px;");

Отредактировано bunda1 (21-05-2013 20:00:38)

Отсутствует

 

№2227-10-2010 19:29:39

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

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

Green style( 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%3EGreen%20style%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.checked%20%3D%20%21this.checked%3B%0A%0Aif%20%28%20this.%20checked%20%29%20%0A%20%20%20%20%20this.image%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/GicS/yI1GP8hNRf/ITQW/yE0Fv8hNBb/ITQW/yE0Fv8hNBb/ITQW/yE0Fv8hNRf/IjUY/xonEv8AAAD/AAAA/3GpUP94uU//ca9K/3OwS/9zsEv/c7BL/3OwS/9zsEv/c7BL/3OwS/9zsEv/ca9K/3i5T/9xqVD/AAAA/wAAAP9rok3/XY47/1J/Mf9UgTT/VIE0/1SBNP9UgTT/VIE0/1SBNP9UgTT/VIE0/1J/Mf9djjv/a6JN/wAAAP8AAAD/calU/2qhRv9glD3/YpY//2KWP/9ilj//YpY//2KWP/9ilj//YpY//2KWP/9glD3/aqFG/3GpVP8AAAD/AAAA/3WtVv9so0f/YpU//2SYQf9kmEH/ZJhB/2SYQf9kmEH/ZJhB/2SYQf9kmEH/YpU//2yjR/91rVb/AAAA/wICAv93sVn/cKpJ/2edQf9poEP/aaBD/2mgQ/9poEP/aaBD/2mgQ/9poEP/aaBD/2edQf9wqkn/d7FZ/wICAv8AAAD/e7Vc/3SvTf9qoEP/bKRF/2ykRf9spEX/bKRF/2ykRf9spEX/bKRF/2ykRf9qoEP/dK9N/3u1XP8AAAD/Dg4O/3+6Yf95tlH/b6lI/3GsSv9xrEr/caxK/3GsSv9xrEr/caxK/3GsSv9xrEr/b6lI/3m2Uf9/umH/Dg4O/0xLTP+Hw2n/fsNX/3m8Uf96vlP/er5T/3q+U/96vlP/er5T/3q+U/96vlP/er5T/3m8Uf9+w1f/h8Np/0xLTP9cW1z/jMlu/4TMWv9/xVf/gMZX/4DGV/+Axlf/gMZX/4DGV/+Axlf/gMZX/4DGV/9/xVf/hMxa/4zJbv9cW1z/VFJU/5DNcP+I0V3/gslY/4PKWf+Dyln/g8pZ/4PKWf+Dyln/g8pZ/4PKWf+Dyln/gslY/4jRXf+QzXD/VFJU/1ZUVv+S0XP/jNZh/4bPXP+H0F3/h9Bd/4fQXf+H0F3/h9Bd/4fQXf+H0F3/h9Bd/4bPXP+M1mH/ktFz/1ZUVv9WVFb/ltZ3/5HdZv+N1WD/jtZi/47WYv+O1mL/jtZi/47WYv+O1mL/jtZi/47WYv+N1WD/kd1m/5bWd/9WVFb/VlRW/5fYef+R3mL/i9Zc/4zXXv+M117/jNde/4zXXv+M117/jNde/4zXXv+M117/i9Zc/5HeYv+X2Hn/VlRW/1ZUVv+h6X//pfl5/5/wdf+g8Xb/oPF2/6Dxdv+g8Xb/oPF2/6Dxdv+g8Xb/oPF2/5/wdf+l+Xn/oel//1ZUVv9XVlf/aXpi/2uAZf9rfWX/a35k/2t+ZP9rfmT/a35k/2t+ZP9rfmT/a35k/2t+ZP9rfWX/a4Bl/2l6Yv9XVlf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%0Aelse%20%0A%20%20%20%20%20this.image%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%0A%0A%0Avar%20css%20%3D%20%27%5C%0A@-moz-document%20url-prefix%28%22http%22%29%2C%20url-prefix%28%22https%22%29%2C%20url-prefix%28%22ftp%22%29%2C%20url-prefix%28%22file%22%29%20%7B%5C%0Ahtml%20*%2C%20html%20%7B%5C%0Abackground%3A%20%23BADBAD%20%21important%3B%20text-shadow%3A%20none%20%21important%3B%5C%0A-moz-border-top-colors%3A%20%238FBC8F%20%21important%3B%20-moz-border-bottom-colors%3A%20%238FBC8F%21important%3B%5C%0A-moz-border-left-colors%3A%20%238FBC8F%20%21important%3B%20-moz-border-right-colors%3A%20%238FBC8F%20%21important%3B%5C%0A%7D%5C%0Acode%2C%20pre%2C%20input%2C%20samp%2C%20kbd%2C%20var%2C%20dfn%2C.postright%20%7B%5C%0A-moz-appearance%3A%20none%20%21important%3B%5C%0Abackground-color%3A%20%23BADBAD%20%21important%3B%5C%0A%7D%5C%0Ainput%2C%20select%2C%20textarea%2C%20button%20%7B%5C%0A-moz-appearance%3A%20none%20%21important%3B%5C%0Aborder%3A%201px%20solid%20%23BADBAD%20%21important%3B%5C%0Abackground-color%3A%20%23BADBAD%20%21important%3B%5C%0A%7D%5C%0A.codebox%2C%20BLOCKQUOTE%2C%20TEXTAREA%2C%20.spoiler%20%7B%20-moz-border-top-colors%3A%20%23444%20%20%21important%3B%20-moz-border-bottom-colors%3A%20%23444%20%21important%3B%5C%0A-moz-border-left-colors%3A%20%23444%20%21important%3B%20-moz-border-right-colors%3A%20%23444%20%21important%3B%5C%0A%7D%5C%0Aa%3Alink%20%7B%20font-weight%3A%20bold%20%21important%3B%20text-decoration%3A%20underline%20%21important%3B%20%7D%5C%0Aa%3Avisited%20%7B%20color%3A%20%23FFB720%20%21important%3B%20%7D%5C%0Aa%3Aactive%20%7B%20color%3A%20%23ff2424%20%21important%3B%20%7D%5C%0Aa%3Ahover%20%7B%20color%3A%20red%21%20important%3B%20%7D%5C%0A%7D%27%3B%0A%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0A%0Aif%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Aelse%20%0A%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%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

Код:

Выделить код

Код:

this.checked = !this.checked;

if ( this. checked ) 
     this.image = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/GicS/yI1GP8hNRf/ITQW/yE0Fv8hNBb/ITQW/yE0Fv8hNBb/ITQW/yE0Fv8hNRf/IjUY/xonEv8AAAD/AAAA/3GpUP94uU//ca9K/3OwS/9zsEv/c7BL/3OwS/9zsEv/c7BL/3OwS/9zsEv/ca9K/3i5T/9xqVD/AAAA/wAAAP9rok3/XY47/1J/Mf9UgTT/VIE0/1SBNP9UgTT/VIE0/1SBNP9UgTT/VIE0/1J/Mf9djjv/a6JN/wAAAP8AAAD/calU/2qhRv9glD3/YpY//2KWP/9ilj//YpY//2KWP/9ilj//YpY//2KWP/9glD3/aqFG/3GpVP8AAAD/AAAA/3WtVv9so0f/YpU//2SYQf9kmEH/ZJhB/2SYQf9kmEH/ZJhB/2SYQf9kmEH/YpU//2yjR/91rVb/AAAA/wICAv93sVn/cKpJ/2edQf9poEP/aaBD/2mgQ/9poEP/aaBD/2mgQ/9poEP/aaBD/2edQf9wqkn/d7FZ/wICAv8AAAD/e7Vc/3SvTf9qoEP/bKRF/2ykRf9spEX/bKRF/2ykRf9spEX/bKRF/2ykRf9qoEP/dK9N/3u1XP8AAAD/Dg4O/3+6Yf95tlH/b6lI/3GsSv9xrEr/caxK/3GsSv9xrEr/caxK/3GsSv9xrEr/b6lI/3m2Uf9/umH/Dg4O/0xLTP+Hw2n/fsNX/3m8Uf96vlP/er5T/3q+U/96vlP/er5T/3q+U/96vlP/er5T/3m8Uf9+w1f/h8Np/0xLTP9cW1z/jMlu/4TMWv9/xVf/gMZX/4DGV/+Axlf/gMZX/4DGV/+Axlf/gMZX/4DGV/9/xVf/hMxa/4zJbv9cW1z/VFJU/5DNcP+I0V3/gslY/4PKWf+Dyln/g8pZ/4PKWf+Dyln/g8pZ/4PKWf+Dyln/gslY/4jRXf+QzXD/VFJU/1ZUVv+S0XP/jNZh/4bPXP+H0F3/h9Bd/4fQXf+H0F3/h9Bd/4fQXf+H0F3/h9Bd/4bPXP+M1mH/ktFz/1ZUVv9WVFb/ltZ3/5HdZv+N1WD/jtZi/47WYv+O1mL/jtZi/47WYv+O1mL/jtZi/47WYv+N1WD/kd1m/5bWd/9WVFb/VlRW/5fYef+R3mL/i9Zc/4zXXv+M117/jNde/4zXXv+M117/jNde/4zXXv+M117/i9Zc/5HeYv+X2Hn/VlRW/1ZUVv+h6X//pfl5/5/wdf+g8Xb/oPF2/6Dxdv+g8Xb/oPF2/6Dxdv+g8Xb/oPF2/5/wdf+l+Xn/oel//1ZUVv9XVlf/aXpi/2uAZf9rfWX/a35k/2t+ZP9rfmT/a35k/2t+ZP9rfmT/a35k/2t+ZP9rfWX/a4Bl/2l6Yv9XVlf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==";
else 
     this.image = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==";


var css = '\
@-moz-document url-prefix("http"), url-prefix("https"), url-prefix("ftp"), url-prefix("file") {\
html *, html {\
background: #BADBAD !important; text-shadow: none !important;\
-moz-border-top-colors: #8FBC8F !important; -moz-border-bottom-colors: #8FBC8F!important;\
-moz-border-left-colors: #8FBC8F !important; -moz-border-right-colors: #8FBC8F !important;\
}\
code, pre, input, samp, kbd, var, dfn,.postright {\
-moz-appearance: none !important;\
background-color: #BADBAD !important;\
}\
input, select, textarea, button {\
-moz-appearance: none !important;\
border: 1px solid #BADBAD !important;\
background-color: #BADBAD !important;\
}\
.codebox, BLOCKQUOTE, TEXTAREA, .spoiler { -moz-border-top-colors: #444  !important; -moz-border-bottom-colors: #444 !important;\
-moz-border-left-colors: #444 !important; -moz-border-right-colors: #444 !important;\
}\
a:link { font-weight: bold !important; text-decoration: underline !important; }\
a:visited { color: #FFB720 !important; }\
a:active { color: #ff2424 !important; }\
a:hover { color: red! important; }\
}';

const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);  
var uri = makeURI("data:text/css," + encodeURIComponent(css));

if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET);
else 
    sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);


Global dark style( Firefox 17+ ) от 08.11.2013.
меняет фон страниц на чёрный, своеобразный ночной режим. Css код создающий чёрный стиль находится в вкладке Справка, его можно легко редактировать или полностью поменять. Кнопку можно использовать для быстрого запуска любых других 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%3E%u0423%u043C%u0435%u043D%u044C%u0448%u0438%u0442%u044C%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u0441%u0430%u0439%u0442%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/Eykp/xgyMv8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDEx/xgxMf8YMTH/GDIy/xMpKf8AAAD/AAAA/1Cop/9Nrqv/SKKf/0mkof9JpKH/SaSh/0mkof9JpKH/SaSh/0mkof9JpKH/SKKf/02uq/9QqKf/AAAA/wAAAP9OoqH/PpSQ/zWFgf83iIT/N4iE/zeIhP83iIT/N4iE/zeIhP83iIT/N4iE/zWFgf8+lJD/TqKh/wAAAP8AAAD/U6in/0WgnP88ko3/PpWQ/z6VkP8+lZD/PpWQ/z6VkP8+lZD/PpWQ/z6VkP88ko3/RaCc/1Oop/8AAAD/AAAA/1asrP9HpKD/PpaR/0CZlP9AmZT/QJmU/0CZlP9AmZT/QJmU/0CZlP9AmZT/PpaR/0ekoP9WrKz/AAAA/wAAAP9ZsLH/SKmj/0Calf9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0KdmP9CnZj/Qp2Y/0Calf9IqaP/WbCx/wAAAP8AAAD/XLW1/0uuqP9Cn5n/RKKc/0SinP9Eopz/RKKc/0SinP9Eopz/RKKc/0SinP9Cn5n/S66o/1y1tf8AAAD/AwMD/2C4uv9OtK//RKWf/0aoov9GqKL/Rqii/0aoov9GqKL/Rqii/0aoov9GqKL/RKWf/060r/9guLr/AwMD/1NSUv9qw8T/V8XE/1O+u/9Uv73/VL+9/1S/vf9Uv73/VL+9/1S/vf9Uv73/VL+9/1O+u/9XxcT/asPE/1NSUv9XVlb/bcfI/1vLyv9XxML/WMXE/1jFxP9YxcT/WMXE/1jFxP9YxcT/WMXE/1jFxP9XxML/W8vK/23HyP9XVlb/VlVU/3DMzf9f0ND/WsnH/1vKyf9bysn/W8rJ/1vKyf9bysn/W8rJ/1vKyf9bysn/WsnH/1/Q0P9wzM3/VlVU/1ZUVP9zz9H/YtfV/13Qzf9e0c7/XtHO/17Rzv9e0c7/XtHO/17Rzv9e0c7/XtHO/13Qzf9i19X/c8/R/1ZUVP9WVFT/d9PW/2Xc2/9f1dP/YdbU/2HW1P9h1tT/YdbU/2HW1P9h1tT/YdbU/2HW1P9f1dP/Zdzb/3fT1v9WVFT/VlRU/3nV2P9j39z/XdjU/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/X9nV/1/Z1f9f2dX/XdjU/2Pf3P951dj/VlRU/1ZUVP9/4+f/ePX2/3Xu7/927/D/du/w/3bv8P927/D/du/w/3bv8P927/D/du/w/3Xu7/949fb/f+Pn/1ZUVP9XVlb/YXt8/2aBg/9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoCC/2aAgv9mgIL/ZoGD/2F7fP9XVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20setStyleForPages%28%29%3B%20//%20%u041B%u041A%u041C%0A%7D%3B%0A%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%0Avar%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28%20self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Avar%20styleImage%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD/NTU1/z8/P/89PT3/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv89PT3/Pz8//zU1Nf8AAAD/AAAA/6Ghof+YmJj/ioqK/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/ioqK/5iYmP+hoaH/AAAA/wAAAP+dnZ3/hISE/3R0dP94eHj/eHh4/3h4eP94eHj/eHh4/3h4eP94eHj/eHh4/3R0dP+EhIT/nZ2d/wAAAP8AAAD/qKio/5OTk/+CgoL/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+CgoL/k5OT/6ioqP8AAAD/AAAA/6+vr/+ampr/iYmJ/42Njf+NjY3/jY2N/42Njf+NjY3/jY2N/42Njf+NjY3/iYmJ/5qamv+vr6//AAAA/wAAAP+1tbX/oqKi/5GRkf+VlZX/lZWV/5WVlf+VlZX/lZWV/5WVlf+VlZX/lZWV/5GRkf+ioqL/tbW1/wAAAP8CAgL/vb29/6mpqf+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/qamp/729vf8CAgL/AAAA/8PDw/+xsbH/n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/7Gxsf/Dw8P/AAAA/zo6Ov/Pz8//xMTE/7a2tv+5ubn/ubm5/7m5uf+5ubn/ubm5/7m5uf+5ubn/ubm5/7a2tv/ExMT/z8/P/zo6Ov9aWlr/2dnZ/9PT0//Jycn/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Jycn/09PT/9nZ2f9aWlr/U1NT/9/f3//a2tr/z8/P/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/z8/P/9ra2v/f39//U1NT/1RUVP/m5ub/4+Pj/9jY2P/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9jY2P/j4+P/5ubm/1RUVP9UVFT/7u7u/+3t7f/i4uL/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/i4uL/7e3t/+7u7v9UVFT/VFRU/+/v7//y8vL/5+fn/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/5+fn//Ly8v/v7+//VFRU/1RUVP/8/Pz//////////////////////////////////////////////////////////////////Pz8/1RUVP9WVlb/kJCQ/5WVlf+VlZX/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aWlv+VlZX/lZWV/5CQkP9WVlb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%22%3B%0A%0A%0Afunction%20setStyleForPages%28%20reason%20%29%20%7B%20%0A%20%20%20%0A%20%20%20var%20style%20%3D%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%3B%20%20%0A%0A%20%20%20if%20%28%20style%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20self.image%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%0A%20%20%20if%20%28%20%28%21style%20%26%26%20reason%20%21%3D%3D%20%27update%27%29%20%7C%7C%20%28style%20%26%26%20reason%20%3D%3D%20%27update%27%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20icon.src%20%3D%20styleImage%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddDestructor%28function%28reason%29%20%7B%20if%20%28/update%7Cdelete/.test%28%20reason%20%29%20%29%20setStyleForPages%28reason%29%20%7D%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28about%3Ablank%29%20%7B%0A%20%20%20body%2C%20html%20%7B%20min-height%3A%20100%25%20%21important%3B%20%7D%0A%20%20%20html%2C%20body%20%7B%20background-color%3A%20%23111%20%21important%3B%20%7D%0A%20%20%20body%3E*%3Anot%28%3Aempty%29%20%7B%20background-color%3A%20%23222%20%21important%3B%20%7D%0A%20%20%20body%3E*%3E*%3Anot%28%3Aempty%29%20%7B%20background-color%3A%20%23222%20%21important%3B%20%7D%0A%20%20%20body%3E*%3E*%3E*%3Anot%28%3Aempty%29%20%7B%20background-color%3A%20%23282828%20%21important%3B%20%7D%0A%20%20%20body%3E*%3E*%3E*%3E*%3Anot%28%3Aempty%29%20%7B%20background-color%3A%20%23282828%20%21important%3B%20%7D%0A%20%20%20body%3E*%3E*%3E*%3E*%3E*%3Anot%28%3Aempty%29%20%7B%20background-color%3A%20%23383838%20%21important%3B%20%7D%0A%20%20%20body%3E*%3E*%3E*%3E*%3E*%20*%20%7B%20background-color%3A%20%23383838%20%21important%3B%20%7D%0A%20%20%20body%20table%5Bborder%3D%220%22%5D%20td%20%7B%20background-color%3A%20%23111%20%21important%3B%20%7D%0A%20%20%20body%20table%20table%5Bborder%3D%220%22%5D%20td%20%7B%20background-color%3A%20%23333%20%21important%3B%20%7D%0A%20%20%20body%20table%20table%20table%5Bborder%3D%220%22%5D%20td%20%7B%20background-color%3A%20%23222%20%21important%3B%20%7D%0A%20%20%20body%20table%20table%20table%20table%5Bborder%3D%220%22%5D%20td%20%7B%20background-color%3A%20%23444%20%21important%3B%20%7D%0A%20%20%20body%20*%3Aempty%20%7B%20background-color%3A%20%23252525%20%21important%3B%20%7D%0A%0A%20%20%20body%20p%3Anot%28%3Aempty%29%2C%20body%20p%20*%2C%20body%20h1%2C%20body%20h1%20*%2C%20body%20h2%2C%20body%20h2%20*%2C%20body%20h3%2C%20body%20h3%20*%2C%20body%20h4%2C%20body%20h4%20*%2C%20body%20h5%2C%20body%20h5%20*%2C%20body%20strong%3E*%2C%20body%20b%3E*%2C%20body%20em%3E*%2C%20body%20i%3E*%2C%20%20body%20span%3E*%3Anot%28img%29%20%7B%20background%3A%20transparent%20none%20%21important%3B%20%7D%0A%20%20%20body%20h1%2C%20body%20h1%20*%2C%20body%20h2%2C%20body%20h2%20*%2C%20p%3Estrong%3Aonly-of-type%2C%20%20p%3Eb%3Aonly-of-type%20%7B%20color%3A%20%23a98%20%21important%3B%20%7D%0A%20%20%20body%20h3%2C%20body%20h3%20*%2C%20body%20h4%2C%20body%20h4%20*%7B%20color%3A%20%23aaa%20%21important%3B%20%7D%0A%0A%20%20%20*%3Anot%28%5Bonclick%5D%29%3Anot%28input%29%3Anot%28a%29%3Anot%28img%29%3Anot%28%5Bclass%5E%3D%22UI%22%5D%29%2C%20body%20a%3Anot%28%3Aempty%29%2C%20div%3Anot%28%5Bonclick%5D%29%20%7B%20background-image%3A%20none%20%21important%3B%20text-indent%3A%200%20%21important%20%7D%0A%20%20%20*%5Bonclick%5D%20%7B%20color%3A%20%2379a%20%21important%3B%20%7D%0A%20%20%20*%5Bonclick%5D%3Ahover%20%7B%20color%3A%20%2399a8aa%20%21important%3B%20%7D%0A%20%20%20body%20hr%20%7B%20background%3A%20%23666%20none%20%21important%3B%20color%3A%20%23666%20%21important%3B%20border%3A%201px%20solid%20%23666%20%21important%3B%20height%3A%201px%20%21important%3B%20overflow%3A%20hidden%20%21important%3B%20display%3A%20block%20%21important%3B%20%7D%0A%20%20%20*%20%7B%20color%3A%20%23c0c0c0%20%21important%3B%20border-color%3A%20%23666%20%21important%3B%20%7D%0A%20%20%20*%20body%20a%2C%20body%20a%20*%7B%20color%3A%20%23B6AA7B%20%21important%3B%20%7D%0A%20%20%20body%20a%3Ahover%2C%20body%20a%3Ahover%20*%7B%20color%3A%20%23D9C077%20%21important%3B%20text-decoration%3A%20underline%20%21important%3B%20%7D%0A%20%20%20body%20img%2Ca%5Bhref%5D%20img%2C%20a%5Bhref%5D%20button%2C%20input%5Btype%3D%22image%22%5D%2C*%5Bonclick%5D%3Aempty%2C%20body%20a%3Aempty%20%7B%20opacity%3A%20.5%20%21important%3B%20%7D%0A%20%20%20body%20img%3Ahover%2Ca%5Bhref%5D%3Ahover%20img%2C%20a%5Bhref%5D%3Ahover%20button%2C%20*%5Bonclick%5D%3Aempty%3Ahover%2C%20body%20a%3Aempty%3Ahover%20%7B%20opacity%3A%201%20%21important%3B%20%7D%0A%0A%20%20%20body%20input%5Btype%5D%2C%20body%20textarea%5Bname%5D%2C%20body%20input%5Bname%5D%2C%20body%20input%5Bid%5D%2C%20body%20select%5Bname%5D%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20color%3A%20%23bbb%21important%3B%20border-radius%3A%204px%20%21important%3B%20border-width%3A%201px%20%21important%3B%20border-color%3A%20%23778%20%21important%3B%20border-style%3A%20solid%20%21important%3B%20background%3A%20%23555%20none%20%21important%3B%20%7D%0A%0A%20%20%20body%20select%5Bname%5D%20%7B%20-moz-appearance%3Anone%21important%3B%20color%3A%20%23bbb%20%21important%3B%20border-radius%3A%204px%20%21important%3B%20border-width%3A%201px%20%21important%3B%20border-color%3A%20%23778%21important%3B%20border-style%3A%20solid%20%21important%3B%20background-color%3A%20%23555%20%21important%3B%20%7D%0A%0A%20%20%20body%20input%3E*%2C%20body%20textarea%3E*%20%7B%20background%3Atransparent%20none%20%21important%3B%20color%3A%20%23bbb%21important%3B%20border-style%3A%20solid%20%21important%3B%20border-width%3A%200px%21important%3B%20%7D%0A%20%20%20body%20select%20*%20%7B%20background-color%3A%20transparent%20%21important%3B%20color%3A%20%23bbb%20%21important%3B%20border-style%3A%20solid%20%21important%3B%20border-width%3A%200px%20%21important%3B%20%7D%0A%7D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано bunda1 (08-11-2013 20:49:38)

Отсутствует

 

№2301-12-2010 20:10:16

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

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

Autocopy( Pale Moon, SeaMonkey ) от 23.04.2018.
1. Автоматически копирует выделенный текст на странице, при этом выделенный текст мигает. Кнопка будет сама выключать авто копирование при выходе из браузера, если эта возможность включена в настройках кнопки.
2. Даёт возможность копировать двойным правым кликом мыши выделенный текст на страницах и в текстовых полях и поисковых формах на страницах и также редакторе в Custom Buttons, если эти возможности включены в настройках кнопки.
3. Даёт возможность средней кнопкой мыши вставлять текст из буфера обмена с заменой выделенного текста в текстовые полях и поисковых формах на страницах и также в адресной строке и строке поиска браузера и поисковых формах браузера которые открываются как страница, например поисковой форме в about:config и также редакторе в Custom Buttons. Эту возможность надо включать в настройках кнопки.
4. Даёт возможность копировать адрес страницы если кликнуть правой клавишей мыши на значке идентификации сайта в строке адреса, при этом значок идентификации сайта мигает красным или открыть без запроса информацию о странице Разрешения если кликнуть левой клавишей мыши.
5. Даёт возможность закрывать окошко информации о странице двойным кликом мыши на нём.
6. Даёт возможность без запроса сохранять изображения на странице в папке загрузки двойным правым кликом мыши, если эта возможность включена в настройках кнопки.

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

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EAutocopy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20.................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22CB.Autocopy%22%2C%20%21cbu.getPrefs%28%22CB.Autocopy%22%29%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0Athis.oncontextmenu%20%3D%20e%20%3D%3E%20e.detail%20%3D%3D%202%20%26%26%20%21menuPopup.hidePopup%28%29%0A%20%20%20%20%20%7C%7C%20e.ctrlKey%20%7C%7C%20%21%21menuPopup.openPopup%28this%2C%20%22after_start%22%29%3B%0A%20%20%20%20%20%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20.................%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u044F%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u043F%u0440%u043E%u0431%u0435%u043B%u043E%u043C%20%u0441%u043F%u0440%u0430%u0432%u0430%27%2C%20value%3A%20%27layout.word_select.eat_space_to_next_word%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27CB.Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%27%2C%20value%3A%20%27CB.Autocopy.addToAddressBar%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27CB.Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27CB.Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27CB.Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%2C%0A%5D%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28m%3D%3E%20%7B%0A%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%29%3B%0A%20%20%20mItem.onclick%20%3De%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%7D%29%3B%0AmenuPopup.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A//%20%u0411%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u043A%u0430%20%u0434%u0432%u043E%u0439%u043D%u043E%u0439%20%u0438%u043D%u0438%u0446%u0438%u0430%u043B%u0438%u0437%u0430%u0446%u0438%u0438%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u043E%u0432%20%u0434%u043B%u044F%20SeaMonkey%20...............%0Aif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20.................%0Aconst%20s%20%3D%20%22CB.Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%20%20%0A%20%20%20document.getAnonymousNodes%28self%29%5B1%5D.src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AServices.prefs.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.prefs.removeObserver%28s%2C%20toggleImage%29%29%3B%20%20%0A%0A%20%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20.................%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20observe%3A%28subject%2C%20topic%2C%20data%29%3D%3E%20%7B%0A%20%20%20%20%20%20cbu.getPrefs%28%22CB.Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22CB.Autocopy%22%2C%20false%29%3B%20%20%0A%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%20%20%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%0A%20%20%20%20%20%20%20e.button%0A%20%20%20%20%20%20%20%7C%7C%20%21cbu.getPrefs%28%22CB.Autocopy%22%29%0A%20%20%20%20%20%20%20%7C%7C%20document.commandDispatcher.focusedWindow.getSelection%28%29.isCollapsed%0A%20%20%20%20%20%20%29%20return%3B%0A%20%20%20%0A%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20if%20%28%20%21cbu.getPrefs%28%22CB.Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20setTimeout%28%28%29%3D%3E%20window.content.focus%28%29%2C%20300%29%3B%0A%7D%3B%0AaddEventListener%28%27mouseup%27%2C%20autocopy%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20...............%0Afunction%20middleMousePaste%28e%2C%20doc%20%3D%20this.document%20%7C%7C%20document%29%20%7B%20%0A%20%20%20if%20%28%0A%20%20%20%20%20%20%20e.button%20%21%3D%3D%201%0A%20%20%20%20%20%20%20%7C%7C%20%21cbu.getPrefs%28%27middlemouse.paste%27%29%0A%20%20%20%20%20%20%20%7C%7C%20%21/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28e.target.localName%29%0A%20%20%20%20%20%20%29%20return%3B%0A%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20commandDispatcher%20%3D%20doc.commandDispatcher%3B%0A%20%20%20var%20controller%20%3D%20commandDispatcher.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%20gClipboard.read%28%29%29%3B%0A%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%29%3B%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20...............%0AaddEventListener%28%22click%22%2C%20e%3D%3E%20%7B%0A%20%20%20if%20%28%0A%20%20%20%20%20%20%20e.button%20%3D%3D%201%0A%20%20%20%20%20%20%20%7C%7C%20%21/page-proxy-favicon%7Cpage-proxy-button/.test%28e.target.id%29%0A%20%20%20%20%20%20%20%7C%7C%20%21cbu.getPrefs%28%22CB.Autocopy.addToAddressBar%22%29%0A%20%20%20%20%20%20%29%20return%3B%0A%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20e.target.setAttribute%28%22context%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28content.document%2C%20%28gURLBar.value.startsWith%28%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%29%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%21%3D%3D%202%20%29%20return%3B%0A%20%20%20gClipboard.write%28content.location%29%3B%0A%0A%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20var%20id%20%3D%20%28Services.appinfo.name%20%3D%3D%20%22SeaMonkey%22%29%20%3F%20%22page-proxy-deck%22%20%3A%20%22identity-box%22%3B%0A%20%20%20document.getElementById%28id%29.style.background%20%3D%20%22red%22%3B%0A%20%20%20setTimeout%28%28%29%3D%3E%20document.getElementById%28id%29.style.background%20%3D%20%22%22%2C%20300%29%3B%0A%20%20%20%0A%7D%2C%20true%2C%20gURLBar%29%3B%0A%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%20...............%0Afunction%20handleDblClick%28e%29%20%7B%0A%20%20%20var%20node%20%3D%20e.target%3B%0A%20%20%20var%20editor%20%3D%20node.editor%3B%0A%0A%20%20%20//%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22CB.Autocopy.saveWithDoubleClick%22%29%20%26%26%20node.localName%20%3D%3D%20%27img%27%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20run%20%3D%20cbu.getPrefs%28%22browser.download.folderList%22%29%3B%0A%20%20%20%20%20%20%20%20var%20use%20%3D%20cbu.getPrefs%28%22browser.download.useDownloadDir%22%29%3B%0A%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22browser.download.folderList%22%2C%202%29%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22browser.download.useDownloadDir%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20function%20save%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20eval%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20gContextMenu.saveMedia.toSource%28%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%28false%2C%5Cs+%29false%2C/%2C%20%22%241true%2C%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%5Es/%2C%20%220%2Cfunction%20s%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%28save%20%3D%28%29%3D%3E%20func.call%28gContextMenu%29%29%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20/Pale%20Moon%7CSeaMonkey/.test%28Services.appinfo.name%29%0A%20%20%20%20%20%20%20%20%3F%20saveImageURL%28gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%29%0A%20%20%20%20%20%20%20%20%3A%20save%28%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%2C%2020%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22browser.download.folderList%22%2C%20run%29%3B%0A%20%20%20%20%20%20%20%20cbu.setPrefs%28%22browser.download.useDownloadDir%22%2C%20use%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%0A%20%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22CB.Autocopy.copyWithDoubleClick%22%29%20%26%26%20%21/findbar%7Ctabbrowser/.test%28node.localName%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20editor%20%3F%20editor.copy%28%29%20%3A%20goDoCommand%28%22cmd_copy%22%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28node.textbox%20%7C%7C%20node%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%28e%29%20%7B%20setTimeout%28%28%29%3D%3E%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%2C%2050%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043D%u043E%u0432%u044B%u0445%20%u043E%u043A%u043E%u043D%20...............%0Afunction%20observer%28subject%29%20%7B%0A%20%20%20subject.addEventListener%28%22load%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20var%20view%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u043E%u0432%20CB%20%u043A%u043D%u043E%u043F%u043E%u043A%20....%0A%20%20%20%20%20%20if%20%28%20/custombuttons/.test%28doc.URL%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22click%22%2C%20middleMousePaste.bind%28view%29%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%27%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%20%u0438%20%27%u0411%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0438%27%20....%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20/pageInfo.xul%7Cplaces.xul/.test%28doc.URL%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22dblclick%22%2C%20function%20close%28%29%20%7B%20this.close%28%29%20%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22unload%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20view.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20view.removeEventListener%28%22dblclick%22%2C%20close%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%7D%29%3B%0A%7D%3B%0AServices.ww.registerNotification%28observer%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.ww.unregisterNotification%28observer%29%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%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20%5Cn%u0414%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%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 =e=> {
   if ( e.button == 0 ) cbu.setPrefs("CB.Autocopy", !cbu.getPrefs("CB.Autocopy")); 
       
   if ( e.button == 2 ) { 
        e.preventDefault();  
        menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
        }     
}; 
this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup()
     || e.ctrlKey || !!menuPopup.openPopup(this, "after_start");
     

// Создать меню .................
var array = [
    { label: 'Выделять текст с пробелом справа', value: 'layout.word_select.eat_space_to_next_word' },
    { label: 'Выделенный текст мигает при автокопировании', value: 'CB.Autocopy.selectingTextBlink' },
    { label: 'Дополнительные возможности для адресной строки', value: 'CB.Autocopy.addToAddressBar'},
    { label: 'Выключать автокопирование при выходе из браузера', value: 'CB.Autocopy.reset' },
    { separator: ''},
    { label: 'Двойной правый клик мыши копирует выделенный текст', value: 'CB.Autocopy.copyWithDoubleClick' },
    { label: 'Двойной правый клик мыши сохраняет изображение без запроса', value: 'CB.Autocopy.saveWithDoubleClick' }, 
    { label: 'Средним кликом вставлятъ текст с заменой выделенного текста', value: 'middlemouse.paste' },
];
var menuPopup = self.appendChild(document.createElement("menupopup"));
array.forEach(m=> {
   if ( "separator" in m ) { menuPopup.appendChild(document.createElement("menuseparator")); return };
   var mItem = menuPopup.appendChild(document.createElement("menuitem"));
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs(m.value));
   mItem.onclick =e=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
});
menuPopup.setAttribute("onclick", "event.stopPropagation()");


// Блокировка двойной инициализации обработчиков для SeaMonkey ...............
if ( this.hasAttribute("initialized") ) return;


// Установить нужную иконку кнопки при старте браузера или при изменениях настроек в 'about:config' .................
const s = "CB.Autocopy";
function toggleImage() {  
   document.getAnonymousNodes(self)[1].src = cbu.getPrefs(s)
   ? "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
   : "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
};  
toggleImage();
Services.prefs.addObserver(s, toggleImage, false);
addDestructor(()=> Services.prefs.removeObserver(s, toggleImage));  

 
// Выключать кнопку при закрытии браузера если это разрешено в 'about:config' .................
var toggleButton = {
   observe:(subject, topic, data)=> {
      cbu.getPrefs("CB.Autocopy.reset") && data == "shutdown" && cbu.setPrefs("CB.Autocopy", false);  
   }
};
Services.obs.addObserver(toggleButton, "quit-application", false);

  
// Функции автоматически копирует выделенный текст на странице, если это разрешено в 'about:config' ...............
function autocopy(e) {
   if (
       e.button
       || !cbu.getPrefs("CB.Autocopy")
       || document.commandDispatcher.focusedWindow.getSelection().isCollapsed
      ) return;
   
   goDoCommand('cmd_copy');
         
   // выделенный текст мигает ....
   if ( !cbu.getPrefs("CB.Autocopy.selectingTextBlink") ) return;
   document.activeElement.blur();  
   setTimeout(()=> window.content.focus(), 300);
};
addEventListener('mouseup', autocopy, false, gBrowser);


// Cредней кнопкой мыши вставить текст из буфера обмена в текстовые поля с заменой выделенного текста ...............
function middleMousePaste(e, doc = this.document || document) { 
   if (
       e.button !== 1
       || !cbu.getPrefs('middlemouse.paste')
       || !/input|password|textarea|textbox|searchbar|findbar|cbeditor/.test(e.target.localName)
      ) return;

   e.preventDefault();
   e.stopPropagation(); 
          
   // вставить текст ....
   var cmd = "cmd_insertText";
   var commandDispatcher = doc.commandDispatcher;
   var controller = 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", gClipboard.read());
   controller.doCommandWithParams(cmd, params);
};
addEventListener("click", middleMousePaste, true, document.documentElement);


// Дополнительные возможности для значка идентификации сайта в строке адреса ...............
addEventListener("click", e=> {
   if (
       e.button == 1
       || !/page-proxy-favicon|page-proxy-button/.test(e.target.id)
       || !cbu.getPrefs("CB.Autocopy.addToAddressBar")
      ) return;

   e.preventDefault();
   e.stopPropagation();
   e.target.setAttribute("context", "event.stopPropagation()");
   
   // ЛКМ без запроса открывает информацию о странице в вкладке 'Разрешения' ....
   if ( e.button == 0 )
        BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "permTab" : "generalTab"));
        
   // ПКМ копирует текущий адрес ....     
   if ( e.button !== 2 ) return;
   gClipboard.write(content.location);

   // значок идентификации сайта мигает красным ....
   var id = (Services.appinfo.name == "SeaMonkey") ? "page-proxy-deck" : "identity-box";
   document.getElementById(id).style.background = "red";
   setTimeout(()=> document.getElementById(id).style.background = "", 300);
   
}, true, gURLBar);

   
// Дополнительные возможности для двойного клика мыши ...............
function handleDblClick(e) {
   var node = e.target;
   var editor = node.editor;

   // Сохранить изображение в папку загрузки ....
   if ( e.button == 2 && cbu.getPrefs("CB.Autocopy.saveWithDoubleClick") && node.localName == 'img' ) {
        var run = cbu.getPrefs("browser.download.folderList");
        var use = cbu.getPrefs("browser.download.useDownloadDir");

        cbu.setPrefs("browser.download.folderList", 2);
        cbu.setPrefs("browser.download.useDownloadDir", true);
        
        function save() {
           var func = eval(
              gContextMenu.saveMedia.toSource()
              .replace(/(false,\s+)false,/, "$1true,")
              .replace(/^s/, "0,function s")
           );
           (save =()=> func.call(gContextMenu))();
        } 
        
        /Pale Moon|SeaMonkey/.test(Services.appinfo.name)
        ? saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document)
        : save();
        
        setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 20);
        
        cbu.setPrefs("browser.download.folderList", run);
        cbu.setPrefs("browser.download.useDownloadDir", use);
        };
       
   // скопировать выделенный текст ....
   if ( e.button == 2 && cbu.getPrefs("CB.Autocopy.copyWithDoubleClick") && !/findbar|tabbrowser/.test(node.localName) ) { 
        e.preventDefault();
        editor ? editor.copy() : goDoCommand("cmd_copy");      
        try {      
            var box = (node.textbox || node).inputField.parentNode;
            var popup = box.ownerDocument.getAnonymousElementByAttribute(box, "anonid", "input-box-contextmenu");
            setTimeout(()=> popup.hidePopup(), 50);
            }
        catch(e) { setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 50) }; 
        }        
};
addEventListener("dblclick", handleDblClick, false, gBrowser);


// Наблюдатель следит за открытием новых окон ...............
function observer(subject) {
   subject.addEventListener("load", e=> {
      var doc = e.target;
      var view = doc.defaultView;
      
      // добавлять обработчики клика для редакторов CB кнопок ....
      if ( /custombuttons/.test(doc.URL) ) {
           view.addEventListener("dblclick", handleDblClick, false);
           view.addEventListener("click", middleMousePaste.bind(view), true);
           };
      
      // добавлять обработчики клика для 'Информацию о странице' и 'Библиотеки' ....            
      if ( /pageInfo.xul|places.xul/.test(doc.URL) ) {
           view.addEventListener("dblclick", function close() { this.close() }, true);
                         
           view.addEventListener("unload", e=> {
              view.removeEventListener(e.type, arguments.callee, false);
              view.removeEventListener("dblclick", close, true);
           }, false);                  
           };
   });
};
Services.ww.registerNotification(observer);
addDestructor(()=> Services.ww.unregisterNotification(observer));


// Подсказка для кнопки ................................
this.tooltipText = "Autocopy \nЛ: Переключить автоматическое копирование \nП: Меню \nДП: CB меню";

Отредактировано bunda1 (07-03-2014 20:00:11)

Отсутствует

 

№2409-01-2011 13:17:32

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

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

Вкладки сверху & Вставить и перейти Firefox3.6 не требует нажатия,после установки возможно потребуется перезапуск браузера
Помещает панель вкладок вверх ,добавляет контекстный пункт меню адресной строки"Вставить и перейти"

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

Выделить код

Код:

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%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u0441%u0432%u0435%u0440%u0445%u0443%20%26amp%3B%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0438%20%u043F%u0435%u0440%u0435%u0439%u0442%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAn5JREFUeJx9U01IVFEYPfe9eW/GcoZSg6b3pME0UzIErWiVFSVEkC7bSQRBq2oTmKUGboJI0I07nwRSG2ch2aLIRX/mjGaSMFmNyow5QaM5M877ue/eFoPjPCY6u++e853v5/IRzjkKcenbzWOlwq5eGVKzBFG1GEWKZmJpeyu0yTLdUw0jnwv1pNDgSvTumAypbSozj6i5CpNbAACJuOAXylElKNCZEXzfqLU7DL7qK56HCW0xoq+ob9Kz+B+qiYK9zBs7aR2pGTjVpQsA0P1zaPRfyS3eJrR4mxxv33gcCb6uvhTCowBArkZ7j1POPo4kx4uqvT48BNgcZ2avAT6Xg6s1VFBGT7g27HTfl+z3ouSAfCBfPfBnH5Z86w5+TUyilHn6XGWirz5qruZbbiypRcDtx+U9p3c6OTcMbWMcG8jgUzaCyVQYKTEL31ZJvYsxpmxv+6Dsx+PK28XdeBV0e68DADrmuoBNCuZzgdpUESxG80Lt9zg65u8VGWyj49UdaG+fAWbu6y1GIRi2GZfIzoI0cwL9y0+KkvvnhqFFxoBDJUCFBMIJLGbFhV80ueAXyh3ixrK64jF8KrBfBiokAIBkEBgiXRA8XO6sEhSn2O0HAPRMD6B/bji/BxgsrxHTgG3RTmHi6GBIZ0awmuyYTKbCCDw9i97pAdxafoTAiwtYSsUBIze7nCKwQIPmxZkQ4ZyjZ3bQ89z+sJjg6+qKkMi5/MgCihtwC7nYYMCyDtm/G3zLjtGlTA27EdEdx1Q31T7Gbd62JiaRErNgJMcRTiAZBGIasECDVuuM85gKUfmutQE2HnCbNTPKVItRmDBjJuwQJfZ963x4vlD/F6u3LbVAOWEsAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E/*%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u0441%u0432%u0435%u0440%u0445%u0443*/%0A%20var%20cssStr%20%3D%20%26lt%3B%21%5BCDATA%5B%0A@-moz-document%20url%28%22chrome%3A//browser/content/browser.xul%22%29%0A%7B.tabbrowser-strip%7Bposition%3Afixed%3Btop%3A0px%3Bwidth%3A100%25%21important%3Bz-index%3A0%3B%7D%0Atab%7B-moz-user-select%3A-moz-none%21important%3Bz-index%3A0%21important%3B-moz-border-radius-bottomleft%3A%200px%21important%3B%7D%0A.tabbrowser-strip%20.tabbrowser-tabs%7Bwidth%3A100%25%21important%3B%7D%0A.tab-drop-indicator-bar%7Bposition%3Afixed%21important%3B%0Atop%3A0px%3Bleft%3A0px%3Bwidth%3A100%25%21important%3Bz-index%3A1%3B%7Dwindow%20%7Bpadding-top%3A20px%3B%7D%7D%0A%5D%5D%26gt%3B%0A%20%20%20%20.toString%28%29%0A%20%20%20%20.replace%28/%25button%25/g%2C%20%22%23%22%20+%20this.id%29%3B%0Avar%20cssURI%20%3D%20this._cssURI%20%3D%20makeURI%28%20//%20chrome%3A//global/content/contentAreaUtils.js%0A%20%20%20%20%22data%3Atext/css%2C%22%0A%20%20%20%20+%20encodeURIComponent%28cssStr%29%0A%29%3B%0Athis.setSheet%20%3D%20function%28cssURI%2C%20addFlag%29%20%7B%0A%20%20%20%20var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20if%28sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%20%26amp%3B%26amp%3B%20%21addFlag%29%0A%20%20%20%20%20%20%20%20sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20if%28addFlag%29%0A%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%7D%0Athis.setSheet%28cssURI%2C%20true%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7Bthis.setSheet%28this._cssURI%2C%20true%29%3B%7D%0A%0A/*%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0438%20%u043F%u0435%u0440%u0435%u0439%u0442%u0438*/%0Adocument.getElementById%28%22urlbar%22%29.addEventListener%28%22popupshowing%22%2C%20function%28event%29%20%7B%0A%09const%20eltID%20%3D%20%22pasteandgo-menuitem%22%3B%0A%09var%20menupopup%20%3D%20event.originalTarget%3B%0A%09var%20refChild%20%3D%20menupopup.getElementsByAttribute%28%22cmd%22%2C%20%22cmd_paste%22%29%5B0%5D%3B%0A%09var%20canPaste%20%3D%20refChild.getAttribute%28%22disabled%22%29%20%3D%3D%20%22true%22%3B%0A%09var%20menuitem%20%3D%20document.getElementById%28eltID%29%3B%0A%09if%20%28%21menuitem%29%20%7B%0A%09%09var%20pasteAndGo%20%3D%20function%28event%29%20%7B%0A%09%09%09goDoCommand%28%22cmd_paste%22%29%3B%0A%09%09%09if%20%28%22handleURLBarCommand%22%20in%20window%29%0A%09%09%09%09//%20%5BFirefox3.0%5D%0A%09%09%09%09handleURLBarCommand%28event%29%3B%0A%09%09%09else%0A%09%09%09%09//%20%5BFirefox3.5%5D%0A%09%09%09%09gURLBar.handleCommand%28event%29%3B%0A%09%09%09menupopup.hidePopup%28%29%3B%0A%09%09%7D%3B%0A%09%09menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%09%09menuitem.id%20%3D%20eltID%3B%0A%09%09menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0438%20%u043F%u0435%u0440%u0435%u0439%u0442%u0438%22%29%3B%0A%09%09menuitem.setAttribute%28%22accesskey%22%2C%20%22G%22%29%3B%0A%09%09menuitem.addEventListener%28%22command%22%2C%20pasteAndGo%2C%20false%29%3B%0A%09%09menupopup.insertBefore%28menuitem%2C%20refChild.nextSibling%29%3B%0A%09%7D%0A%09menuitem.setAttribute%28%22disabled%22%2C%20canPaste.toString%28%29%29%3B%0A%7D%2C%20false%29%3B%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

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

Выделить код

Код:

/*Вкладки сверху*/
 var cssStr = <![CDATA[
@-moz-document url("chrome://browser/content/browser.xul")
{.tabbrowser-strip{position:fixed;top:0px;width:100%!important;z-index:0;}
tab{-moz-user-select:-moz-none!important;z-index:0!important;-moz-border-radius-bottomleft: 0px!important;}
.tabbrowser-strip .tabbrowser-tabs{width:100%!important;}
.tab-drop-indicator-bar{position:fixed!important;
top:0px;left:0px;width:100%!important;z-index:1;}window {padding-top:20px;}}
]]>
    .toString()
    .replace(/%button%/g, "#" + this.id);
var cssURI = this._cssURI = makeURI( // chrome://global/content/contentAreaUtils.js
    "data:text/css,"
    + encodeURIComponent(cssStr)
);
this.setSheet = function(cssURI, addFlag) {
    var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    if(sss.sheetRegistered(cssURI, sss.AGENT_SHEET) && !addFlag)
        sss.unregisterSheet(cssURI, sss.AGENT_SHEET);
    if(addFlag)
        sss.loadAndRegisterSheet(cssURI, sss.AGENT_SHEET);}
this.setSheet(cssURI, true);
this.onDestroy = function() {this.setSheet(this._cssURI, true);}

/*Вставить и перейти*/
document.getElementById("urlbar").addEventListener("popupshowing", function(event) {
    const eltID = "pasteandgo-menuitem";
    var menupopup = event.originalTarget;
    var refChild = menupopup.getElementsByAttribute("cmd", "cmd_paste")[0];
    var canPaste = refChild.getAttribute("disabled") == "true";
    var menuitem = document.getElementById(eltID);
    if (!menuitem) {
        var pasteAndGo = function(event) {
            goDoCommand("cmd_paste");
            if ("handleURLBarCommand" in window)
                // [Firefox3.0]
                handleURLBarCommand(event);
            else
                // [Firefox3.5]
                gURLBar.handleCommand(event);
            menupopup.hidePopup();
        };
        menuitem = document.createElement("menuitem");
        menuitem.id = eltID;
        menuitem.setAttribute("label", "Вставить и перейти");
        menuitem.setAttribute("accesskey", "G");
        menuitem.addEventListener("command", pasteAndGo, false);
        menupopup.insertBefore(menuitem, refChild.nextSibling);
    }
    menuitem.setAttribute("disabled", canPaste.toString());
}, false);

Отредактировано imyax (09-01-2011 13:41:33)

Отсутствует

 

№2512-01-2011 00:33:44

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

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

Копировать информацию вкладки & Link Tooltips & TextLink (Firefox3.6 - 4.0.1)
Добавляет в контекстное меню вкладки пункты:"Копировать название вкладки и адрес""Копировать название вкладки и адрес(HTML)""Копировать название вкладки и адрес(BBCode)", при наведении курсора на ссылку показывает в всплывающей подсказке(как в 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%3E%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%26amp%3B%20Link%20Tooltips%20%26amp%3B%20TextLink%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAkVJREFUeJx9k71PU1EYxn/n3tuWUggfBkKkxhsQjUQJA+ooOpuIg4Mb8T9wJUbEhMVFRte6MNIRJ0h0IFgTIwhqNZRYVNrQNCmF2/txXofy0WuNT3KGk/f3nPO8b/IqESGkb3dGMNpmhOiYKCsp2kOCSp6gkiGoTFtXVj824ir0wNaDBYhOUF0BNwfiHlERtNmHbw4g2knHRlbuhR9wvraw+zyL8yXJ/lv+J88cxKczX2FsqHf0pWMA8Gt6/p/m9vH6aVAk+I6pC8m2YGm+nmDr4TXEX6X0qvm7i0sEGpy1WyTi4VJVX0Dr4LpFUJ7lcL3ZHLWhfRwTKLs2iXguXKZATVpnLTG7h5WbO40cH4WYDZ13T+DeG0vocgpDl+HwA1SWsYx9ql7bsCUS9KvjaUfPw7kXTWEiCRsS0/Xom5NwCIm4RgK/3xDtnZJ7KQ4+Tza3c6Sf7ybZXk/h+fW7aBdDdG0HFTmBWqspavm5JnMpO0c5l+JsD3S2g4hCxNsx8Aob2uwLwbGO0eY2Wm26O+pmANc3sQx3w9CqZco3B8J0zAag+OkppezcyRyOowNUHQPf96eM6OXFjGgn7ZmDp9XKMluvbYobMwTbjyi+sfGqOTzv2Gyh8NJnbuuMEhFKm49b4rXFrKkLyaj8qA+sCD1dELHqJs+H33vQ3WHh1IL87p4MDd8XJ7RMB+8vLYjWE1EKWMY+Cl2ftihc36TqGCi8dNe4/muZGnSw2n9Va54FWo/pQCdFuyjcvMLLKPwnHTf1WiP/B4PEHA5jCaq+AAAAAElFTkSuQmCC%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%28function%28%29%20%7B%0A%09var%20htmlEscape%20%3D%20function%28s%29%20%7B%0A%09%09s%20%3D%20s.replace%28/%26/g%2C%20%22%26amp%3B%22%29%3B%0A%09%09s%20%3D%20s.replace%28/%3E/g%2C%20%22%26gt%3B%22%29%3B%0A%09%09s%20%3D%20s.replace%28/%3C/g%2C%20%22%26lt%3B%22%29%3B%0A%09%09s%20%3D%20s.replace%28/%22/g%2C%20%22%26quot%3B%22%29%3B%0A%09%09return%20s%3B%0A%09%7D%3B%0A%09var%20copyTabInfo%20%3D%20function%20%28aAsHTML%29%20%7B%0A%09%09var%20tab%20%3D%20document.popupNode%3B%0A%09%09var%20title%20%3D%20tab.label%3B%0A%09%09var%20url%20%3D%20gBrowser.getBrowserForTab%28tab%29.contentWindow.location.href%3B%0A%09%09var%20txt%20%3D%20aAsHTML%20%3F%0A%09%09%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22%27%20+%20htmlEscape%28url%29%20+%20%27%22%3E%27%20+%20htmlEscape%28title%29%20+%20%27%3C/a%3E%27%20%3A%0A%09%09%20%20%20%20%20%20%20%20%20%20title%20+%20%22%5Cn%22%20+%20url%3B%0A%09%09Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D%0A%09%09.getService%28Ci.nsIClipboardHelper%29%0A%09%09.copyString%28txt%29%3B%0A%09%7D%3B%0A%09var%20copyTabBBC%20%3D%20function%20%28aAsBBC%29%20%7B%0A%20%20%20%20%20%20%20%20var%20tab%20%3D%20document.popupNode%3B%0A%20%20%20%20%20%20%20%20var%20title%20%3D%20tab.label%3B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20gBrowser.getBrowserForTab%28tab%29.contentWindow.location.href%3B%0A%20%20%20%20%20%20%20%20var%20txt%20%3D%20aAsBBC%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Burl%3D%27%20+%20htmlEscape%28url%29%20+%20%27%5D%27%20+%20htmlEscape%28title%29%20+%20%27%5B/url%5D%27%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%20+%20%22%5Cn%22%20+%20url%3B%0A%20%20%20%20%20%20%20%20Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Ci.nsIClipboardHelper%29%0A%20%20%20%20%20%20%20%20.copyString%28txt%29%3B%0A%20%20%20%20%7D%3B%0A%09var%20menuitem1%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%09menuitem1.setAttribute%28%22label%22%2C%20%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20+%20URL%22%29%3B%0A%09menuitem1.addEventListener%28%22command%22%2C%20function%28%29%20%7B%20copyTabInfo%28false%29%3B%20%7D%2C%20false%29%3B%0A%09var%20menuitem2%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%09menuitem2.setAttribute%28%22label%22%2C%20%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20+%20URL%20%28HTML%29%22%29%3B%0A%09menuitem2.addEventListener%28%22command%22%2C%20function%28%29%20%7B%20copyTabInfo%28true%29%3B%20%7D%2C%20false%29%3B%0A%09var%20menuitem3%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20menuitem3.setAttribute%28%22label%22%2C%20%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20+%20URL%20%28BBCode%29%22%29%3B%0A%20%20%20%20menuitem3.addEventListener%28%22command%22%2C%20function%28%29%20%7B%20copyTabBBC%28true%29%3B%20%7D%2C%20false%29%3B%0A%09setTimeout%28function%28%29%20%7B%0A%09%09gBrowser.mStrip.childNodes%5B1%5D.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%09%09gBrowser.mStrip.childNodes%5B1%5D.appendChild%28menuitem1%29%3B%0A%09%09gBrowser.mStrip.childNodes%5B1%5D.appendChild%28menuitem2%29%3B%0A%09%09gBrowser.mStrip.childNodes%5B1%5D.appendChild%28menuitem3%29%3B%0A%09%7D%2C%200%29%3B%0A%7D%29%28%29%3B%0A%0A/*%20%3A%3A%3A%3A%3A%3A%3A%3A%20Link%20Tooltips%20%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%3A%20*/%0A%0AgetBrowser%28%29.addEventListener%28%22DOMContentLoaded%22%2C%20function%28aEvent%29%20%7B%0A%09var%20doc%20%3D%20new%20XPCNativeWrapper%28aEvent.originalTarget%29%3B%0A%09var%20links%20%3D%20doc.evaluate%28%22//a%5B@href%20and%20@href%21%3D%27%27%5D%22%2C%20doc%2C%20null%2C%20XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%0A%09%0A%09for%20%28var%20link%2C%20i%20%3D%200%3B%20%28link%20%3D%20links.snapshotItem%28i%29%29%3B%20i++%29%0A%09%7B%0A%09%09link.title%20%3D%20link.title%20%3F%20link.title%20+%20%22%20%3C%22%20+%20link.href%20+%20%22%3E%22%20%3A%20link.href%3B%0A%09%7D%0A%7D%2C%20true%29%3B%0A%0Afunction%20ucjs_textlink%28event%29%7B%0A%0A%20%20if%28event.button%20%21%3D%200%20%26%26%20event.keyCode%20%21%3D%2013%29%20return%3B%0A%0A%0A%0A%20%20var%20Start%20%3D%20new%20Date%28%29.getTime%28%29%3B%0A%0A%0A%0A%20%20const%20relative%20%3D%20true%3B%20//%u76F8%u5BFEurl%u3092%u89E3%u6C7A%u3059%u308B%u304B%u3069%u3046%u304B%0A%0A%0A%0A%20%20const%20ioService%20%3D%20Components.classes%5B%27@mozilla.org/network/io-service%3B1%27%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIIOService%29%3B%0A%0A%0A%0A%20%20const%20urlRegex%20%3D%20/%28%28%28h%3Ft%29%3Ftps%3F%7Ch..ps%3F%7Cftp%7C%28%28%5Cuff48%29%3F%5Cuff54%29%3F%5Cuff54%5Cuff50%28%5Cuff53%29%3F%7C%5Cuff48..%5Cuff50%28%5Cuff53%29%3F%7C%5Cuff46%5Cuff54%5Cuff50%29%28%3A%5C/%5C/%7C%5Cuff1a%5C/%5C/%7C%3A%5Cuff0f%5Cuff0f%7C%5Cuff1a%5Cuff0f%5Cuff0f%29%5B-_.%21%7E*%27%28%29%7Ca-zA-Z0-9%3B%3A%5C/%3F%2C@%26%3D+%24%25%23%5C%5B%5C%5D%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff08%5Cuff09%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff1a%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5Cuff3b%5Cuff3d%5D*%5B-_.%21%7E*%29%7Ca-zA-Z0-9%3B%3A%5C/%3F@%26%3D+%24%25%23%5C%5B%5C%5D%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5Cuff3b%5Cuff3d%5D+%29/ig%3B%0A%0A%20%20const%20urlRegex1%20%3D%20/%28%5B-_.%21%7E*%27%28%29%7Ca-zA-Z0-9%3B%3A%5C/%3F%2C@%26%3D+%24%25%23%5C%5B%5C%5D%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff08%5Cuff09%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5Cuff3b%5Cuff3d%5D*%5B.%5Cuff0e%5D+%5B-_.%21%7E*%27%7Ca-zA-Z0-9%3B%3A%5C/%3F@%26%3D+%24%25%23%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff08%5Cuff09%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff1a%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5D+%5B.%5Cuff0e/%5Cuff0f%5D*%5B-_.%21%7E*%7Ca-zA-Z0-9%3B%3A%5C/%3F@%26%3D+%24%25%23%5Cuff0d%5Cuff3f%5Cu301c%5Cuffe3%5Cuff0e%5Cuff01%5Cuff5e%5Cuff0a%5Cu2019%5Cuff5c%5Cuff41-%5Cuff5a%5Cuff21-%5Cuff3a%5Cuff10-%5Cuff19%5Cuff1b%5Cuff1a%5Cuff0f%5Cuff1f%5Cuff1a%5Cuff20%5Cuff06%5Cuff1d%5Cuff0b%5Cuff04%5Cuff0c%5Cuff05%5Cuff03%5Cuff5c%5D+%29/ig%3B%0A%0A%20%20const%20urlRx%20%3D%20/%5E%28ttp%7Ctp%7Ch..p%7C%5Cuff54%5Cuff54%5Cuff50%7C%5Cuff54%5Cuff50%7C%5Cuff48..%5Cuff50%29/i%3B%0A%0A%20%20const%20urlRx1%20%3D%20/%28%3A%5C/%5C/%7C%5Cuff1a%5C/%5C/%7C%3A%5Cuff0f%5Cuff0f%7C%5Cuff1a%5Cuff0f%5Cuff0f%29/i%3B%0A%0A%20%20const%20mailRx%20%3D%20/%28%5E%28mailto%3A%7C%5Cuff4d%5Cuff41%5Cuff49%5Cuff4c%5Cuff54%5Cuff4f%5Cuff1a%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%28%3F%3A%5C.%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%29*%29%7C%28%3F%3A%22%28%3F%3A%5C%5C%5B%5E%5Cr%5Cn%5D%7C%5B%5E%5C%5C%22%5D%29*%22%29%29%29%5C@%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%28%3F%3A%5C.%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%29*%29%7C%28%3F%3A%5C%5B%28%3F%3A%5C%5C%5CS%7C%5B%5Cx21-%5Cx5a%5Cx5e-%5Cx7e%5D%29*%5C%5D%29%29%29%24%29/%3B%0A%0A%20%20const%20mailRx1%20%3D%20/%28%5E%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%28%3F%3A%5C.%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%29*%29%7C%28%3F%3A%22%28%3F%3A%5C%5C%5B%5E%5Cr%5Cn%5D%7C%5B%5E%5C%5C%22%5D%29*%22%29%29%29%5C@%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%28%3F%3A%5C.%28%3F%3A%5Ba-zA-Z0-9_%21%23%5C%24%5C%25%26%27*+/%3D%3F%5C%5E%60%7B%7D%7E%7C%5C-%5D+%29%29*%29%7C%28%3F%3A%5C%5B%28%3F%3A%5C%5C%5CS%7C%5B%5Cx21-%5Cx5a%5Cx5e-%5Cx7e%5D%29*%5C%5D%29%29%29%24%29/%3B%0A%0A%0A%0A//%u30C9%u30AD%u30E5%u30E1%u30F3%u30C8%u3068%u30B3%u30F3%u30C6%u30F3%u30C8%u30BF%u30A4%u30D7%0A%0A%20%20var%20doc%20%3D%20event.originalTarget.ownerDocument%3B%0A%0A%20%20if%28doc.contentType%20%21%3D%20%27text/plain%27%0A%0A%20%20%20%20%20%26%26%20doc.contentType%20%21%3D%20%27text/html%27%0A%0A%20%20%20%20%20%26%26%20doc.contentType%20%21%3D%20%27application/xml%27%0A%0A%20%20%20%20%20%26%26%20doc.contentType%20%21%3D%20%27application/xhtml+xml%27%29%20return%3B%0A%0A%0A%0A%20%20//designMode%u306A%u3089%u4F55%u3082%u3057%u306A%u3044%0A%0A%20%20if%20%28Components.lookupMethod%28doc%2C%20%27designMode%27%29.call%28doc%29%20%3D%3D%20%27on%27%29%20return%3B%0A%0A%0A%0A%20%20var%20win%20%3D%20doc.defaultView%3B%0A%0A%20%20if%28%21win%29return%3B%0A%0A%0A%0A%20%20var%20str1%2C%20text%2C%20str2%3B%0A%0A%0A%0A%20%20//textarea%20%u304B%u3069%u3046%u304B%0A%0A%20%20var%20node%20%3D%20isParentEditableNode%28document.commandDispatcher.focusedElement%29%3B%0A%0A%20%20if%20%28%21node%29%20%7B%0A%0A%20%20//%20%u3053%u306Eif%20%u30D6%u30ED%u30C3%u30AF%u306F%20textarea%u7B49%u4EE5%u5916%u306E%u51E6%u7406%0A%0A%20%20//%u30C0%u30D6%u30EB%u30AF%u30EA%u30C3%u30AF%u3067%u9078%u629E%u3055%u308C%u305F%u9078%u629E%u6587%u5B57%u5217%u306E%u30EC%u30F3%u30B8%u3092%u5F97%u308B%0A%0A%20%20%20%20var%20selection%20%3D%20win.getSelection%28%29%3B%0A%0A%20%20%20%20var%20selRange%3B%0A%0A%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20selRange%20%3D%20selection.getRangeAt%280%29%3B%0A%0A%20%20%20%20%7Dcatch%28e%29%7B%0A%0A%20%20%20%20%20%20selRange%20%3D%20selection%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%28%21selRange%29return%3B%0A%0A%20%20//%u30EC%u30F3%u30B8%u306E%u30CE%u30FC%u30C9%u306A%u3069%0A%0A%20%20%20%20text%20%3D%20selection.toString%28%29%3B%0A%0A%20%20%20%20if%28text%20%3D%3D%20%27%27%29%20return%3B%0A%0A%20%20//debug%28text%29%3B%0A%0A%20%20%20%20var%20sNode%20%3D%20selRange.startContainer%3B%20//debug%28sNode.nodeName%29%3B%0A%0A%20%20%20%20var%20soffset%20%3D%20selRange.startOffset%3B%0A%0A%20%20%20%20var%20eNode%20%3D%20selRange.endContainer%3B%20//debug%28eNode.nodeName%29%3B%0A%0A%20%20%20%20var%20eoffset%20%3D%20selRange.endOffset%3B%0A%0A%20%20%20%20if%20%28sNode%20%21%3D%20eNode%29%7B%0A%0A%20%20%20%20%20%20eNode%20%3D%20sNode%3B%0A%0A%20%20%20%20%20%20eoffset%20%3D%20soffset%20+%20text.length%20-%201%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20sOyaNode%20%3D%20oyaNode%28sNode%29%3B%0A%0A%20%20%20%20var%20eOyaNode%20%3D%20oyaNode%28eNode%29%3B%0A%0A%20%20%20%20var%20root%3B%0A%0A%20%20%20%20if%28sOyaNode%20%3D%3D%20eOyaNode%29%0A%0A%20%20%20%20%20%20root%20%3D%20sOyaNode%3B%0A%0A%20%20%20%20else%0A%0A%20%20%20%20%20%20root%20%3D%20doc%3B%0A%0A%20%20%20%20if%20%28%21root%29%0A%0A%20%20%20%20%20%20return%3B%0A%0A//debug%28%22eOyaNode%20%22%20+%20eOyaNode.nodeName%29%3B%0A%0A%0A%0A%20%20//%u89AA%u30D6%u30ED%u30C3%u30AF%u8981%u7D20%u306E%u6587%u5B57%u5217%u3092%u3059%u3079%u3066%u5F97%u308B%0A%0A%20%20%20%20const%20allowedParents%20%3D%20%5B%0A%0A%20%20%20%20%20%20%20%20/*%22a%22%2C*/%22abbr%22%2C%20%22acronym%22%2C%20%22address%22%2C%20%22applet%22%2C%20%22b%22%2C%20%22bdo%22%2C%20%22big%22%2C%20%22blockquote%22%2C%20%22body%22%2C%0A%0A%20%20%20%20%20%20%20%20%22caption%22%2C%20%22center%22%2C%20%22cite%22%2C%20%22code%22%2C%20%22dd%22%2C%20%22del%22%2C%20%22dir%22%2C%20%22div%22%2C%20%22dfn%22%2C%20%22dl%22%2C%20%22dt%22%2C%20%22em%22%2C%0A%0A%20%20%20%20%20%20%20%20%22fieldset%22%2C%20%22font%22%2C%20%22form%22%2C%20%22h1%22%2C%20%22h2%22%2C%20%22h3%22%2C%20%22h4%22%2C%20%22h5%22%2C%20%22h6%22%2C%20%22i%22%2C%20%22iframe%22%2C%0A%0A%20%20%20%20%20%20%20%20%22ins%22%2C%20%22kdb%22%2C%20%22li%22%2C%20%22menu%22%2C%20%22noframes%22%2C%20%22noscript%22%2C%20%22object%22%2C%20%22ol%22%2C%20%22p%22%2C%20%22pre%22%2C%20%22q%22%2C%20%22samp%22%2C%20%22small%22%2C%20%22span%22%2C%20%22strike%22%2C%0A%0A%20%20%20%20%20%20%20%20%22s%22%2C%20%22strong%22%2C%20%22sub%22%2C%20%22sup%22%2C%20%22table%22%2C%20%22td%22%2C%20%22th%22%2C%20%22thead%22%2C%20%22tt%22%2C%20%22u%22%2C%20%22var%22%0A%0A%20%20%20%20%20%20%20%20%5D%3B%0A%0A%20%20%20%20var%20xpath%20%3D%20%22.//text%28%29%5B%28parent%3A%3A%22%20+%20allowedParents.join%28%22%20or%20parent%3A%3A%22%29%20+%20%22%29%5D%22%3B%0A%0A%0A%0A%20%20%20%20var%20candidates%20%3D%20doc.evaluate%28xpath%2C%20root%2C%20null%2C%20XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE%2C%20null%29%3B%0A%0A//debug%28%22candidates.snapshotLength%20%22%20+%20candidates.snapshotLength%29%3B%0A%0A%20%20//%u30EC%u30F3%u30B8%u3088%u308A%u524D%u306B%u3042%u308B%u6587%u5B57%u5217%0A%0A%20%20%20%20var%20i1%20%3D%20-%201%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%20i1%20+%201%2C%20len%20%3D%20candidates.snapshotLength%3B%20i%20%3C%20len%3B%20i++%29%20%7B%0A%0A%20%20%20%20%20%20if%28candidates.snapshotItem%28i%29%20%21%3D%20sNode%29%20continue%3B%0A%0A%20%20%20%20%20%20i1%20%3D%20i%20-%201%3B%0A%0A%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20str1%20%3D%22%22%3B%0A%0A%20%20%20%20if%20%28i%20%3E%3D%200%29%20%7B%0A%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%20i1%3B%20i%20%3E%3D%200%20%3B%20i--%29%7B%0A%0A%20%20%20%20%20%20%20%20if%28sOyaNode%20%3D%3D%20oyaNode%28candidates.snapshotItem%28i%29%29%29%7B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28candidates.snapshotItem%28i%29.nextSibling%20%26%26%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20/%5Ebr%24/i.test%28candidates.snapshotItem%28i%29.nextSibling.nodeName%29%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20//debug%28candidates.snapshotItem%28i%29.nodeValue%20+%20%22%20%20%22%20+%20candidates.snapshotItem%28i%29.nextSibling.nodeName%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20str1%20%3D%20candidates.snapshotItem%28i%29.nodeValue%20+%20str1%3B%0A%0A//debug%28%22str1%20%22+str1%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28/%5B%20%u3000%5D/.test%28str1%29%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20str2%20%3D%20str1%3B%0A%0A%20%20%20%20if%28sNode.nodeValue%20%26%26%20soffset%20%3E%200%29%20str1%20%3D%20str1%20+%20sNode.nodeValue.substr%280%2Csoffset%29%3B%0A%0A%0A%0A%20%20//%u30EC%u30F3%u30B8%u3088%u308A%u5F8C%u308D%u306B%u3042%u308B%u6587%u5B57%u5217%0A%0A%20%20%20%20for%28var%20i%20%3D%20i1%20+%201%2C%20len%20%3D%20candidates.snapshotLength%3B%20i%20%3C%20len%3B%20i++%29%7B%0A%0A%20%20%20%20%20%20if%28sOyaNode%20%3D%3D%20oyaNode%28candidates.snapshotItem%28i%29%29%29%7B%0A%0A%20%20%20%20%20%20%20%20str2%20%3D%20str2%20+%20candidates.snapshotItem%28i%29.nodeValue%3B%0A%0A//debug%28%22str2%20%22+str2%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28i%20%3E%20i1%20+%201%20%26%26%20/%5B%20%u3000%5D/.test%28candidates.snapshotItem%28i%29.nodeValue%29%29%0A%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28candidates.snapshotItem%28i%29.nextSibling%20%26%26%0A%0A%20%20%20%20%20%20%20%20%20%20/%5Ebr%24/i.test%28candidates.snapshotItem%28i%29.nextSibling.nodeName%29%29%20%7B%0A%0A%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%0A%0A%0A%20%20%20%20str2%20%3D%20str2.substr%28str1.length%20+%20text.length%29%3B%0A%0A%20%20%7D%20else%20%7B%0A%0A%20%20%20%20//%20%u3053%u306E%20else%u30D6%u30ED%u30C3%u30AF%u306F%20textarea%u7B49%u306E%u51E6%u7406%0A%0A%20%20%20%20//%20readonly%u3067%u306A%u3044%u306A%u3089%u4F55%u3082%u3057%u306A%u3044%0A%0A%20%20%20if%20%28%21node.hasAttribute%28%22readonly%22%29%29%0A%0A%20%20%20%20%20return%3B%0A%0A%20%20%20if%20%28node%20%26%26%0A%0A%20%20%20%20%20%20%28node.type%20%3D%3D%20%22text%22%20%7C%7C%20node.type%20%3D%3D%20%22textarea%22%29%20%26%26%0A%0A%20%20%20%20%20%20%27selectionStart%27%20in%20node%20%26%26%0A%0A%20%20%20%20%20%20node.selectionStart%20%21%3D%20node.selectionEnd%29%20%7B%0A%0A%20%20%20%20%20%20var%20offsetStart%20%3D%20Math.min%28node.selectionStart%2C%20node.selectionEnd%29%3B%0A%0A%20%20%20%20%20%20var%20offsetEnd%20%20%20%3D%20Math.max%28node.selectionStart%2C%20node.selectionEnd%29%3B%0A%0A%20%20%20%20%20%20str1%20%3D%20node.value.substr%280%2C%20offsetStart%29%3B%0A%0A%20%20%20%20%20%20text%20%3D%20node.value.substr%28offsetStart%2C%20offsetEnd-offsetStart%29%3B%0A%0A%20%20%20%20%20%20str2%20%3D%20node.value.substr%28offsetEnd%29%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%7D%0A%0A//%u3059%u3079%u3066%u306E%u6587%u5B57%u5217%u306E%u4E2D%u3067%u306E%u30EC%u30F3%u30B8%u306E%u4F4D%u7F6E%u3092%u5F97%u308B%0A%0A%20%20var%20allStr%20%3D%20str1%20+%20text%20+%20str2%3B%0A%0A%20%20var%20si%20%3D%20str1.length%0A%0A%20%20var%20ei%20%3D%20si%20+%20text.length%3B%0A%0A//%u5168%u89D2%u62EC%u5F27%u8ABF%u6574%0A%0A%20%20while%28text.match%28/%5E%5B%5Cu3001%5Cu3002%5Cuff08%5Cuff5b%5Cuff3b%5Cu300c%5Cu3014%5Cu3008%5Cu300a%5Cu300e%5Cu3010%5Cu2018%5Cu201c%5Cu201d%5Cu2019%5Cu226a%5Cuff1c%5Cuff09%5Cuff5d%5Cuff3d%5Cu300d%5Cu3015%5Cu3009%5Cu300b%5Cu300f%5Cu3011%5Cu2018%5Cu201c%5Cu201d%5Cu2019%5Cu226b%5Cuff1e%5D/%29%29%7B%0A%0A%20%20%20%20si%20%3D%20si%20+%201%3B%0A%0A%20%20%20%20text%20%3D%20text.substr%281%29%3B%0A%0A%20%20%7D%0A%0A%20%20while%28text.match%28/%5B%5Cs%5Cu3001%5Cu3002%5Cuff08%5Cuff5b%5Cuff3b%5Cu300c%5Cu3014%5Cu3008%5Cu300a%5Cu300e%5Cu3010%5Cu2018%5Cu201c%5Cu201d%5Cu2019%5Cu226a%5Cuff1c%5Cuff09%5Cuff5d%5Cuff3d%5Cu300d%5Cu3015%5Cu3009%5Cu300b%5Cu300f%5Cu3011%5Cu2018%5Cu201c%5Cu201d%5Cu2019%5Cu226b%5Cuff1e%5D%24/%29%29%7B%0A%0A%20%20%20%20ei%20%3D%20ei%20-%201%3B%0A%0A%20%20%20%20text%20%3D%20text.substr%280%2Ctext.length%20-1%29%3B%0A%0A%20%20%7D%0A%0A%20%20//%u6587%u672B%u306E.%u306F%u7121%u3044%u3053%u3068%u306B%0A%0A%20%20allStr%20%3D%20allStr.replace%28/%5C.%24/%20%2C%27%27%29%3B%0A%0A%0A%0A//debug%28%222%20%22%20+%20str2%29%3B%0A%0A//debug%28%22Str%20%22%20+%20text%29%3B%0A%0A//debug%28%221%20%22%20+%20str1%29%3B%0A%0A//debug%28%22all%20%22%20+%20allStr%29%3B%0A%0A%0A%0A//%u3059%u3079%u3066%u306E%u6587%u5B57%u5217%u306E%u4E2D%u3067URL%u3068%u601D%u3057%u304D%u6587%u5B57%u5217%u3092%u914D%u5217%u3068%u3057%u3066%u5F97%u308B%0A%0A%20%20var%20i1%2C%20i2%3B%0A%0A%20%20var%20arrUrl%20%3D%20allStr.match%28urlRegex%29%3B%0A%0A%20%20if%28arrUrl%29%7B%0A%0A//%u898B%u3064%u304B%u3063%u305FURL%u3068%u601D%u3057%u304D%u6587%u5B57%u5217%u306E%u4E2D%u306B%u30EC%u30F3%u30B8%u304C%u542B%u307E%u308C%u3066%u3044%u308B%u304B%u3069%u3046%u304B%0A%0A%20%20%20%20i2%3D0%0A%0A%20%20%20%20for%28var%20i%20%3D0%2Clen%20%3D%20arrUrl.length%3B%20i%20%3C%20len%3B%20i++%29%7B%0A%0A//debug%28i%20+%20%22%5D%20%22%20+%20arrUrl%5Bi%5D%29%3B%0A%0A%20%20%20%20%20%20i1%20%3D%20allStr.indexOf%28arrUrl%5Bi%5D%2Ci2%29%3B%0A%0A%20%20%20%20%20%20i2%20%3D%20i1%20+%20arrUrl%5Bi%5D.length%3B%0A%0A//debug%28i1%20%3C%3D%20si%20%26%26%20ei%20%3C%3D%20i2%29%3B%0A%0A%20%20%20%20%20%20if%28i1%20%3C%3D%20si%20%26%26%20ei%20%3C%3D%20i2%29%7B%0A%0A%20%20%20%20%20%20%20%20//%u3053%u306EURL%u3068%u601D%u3057%u304D%u6587%u5B57%u5217%u306E%u4E2D%u306B%u30EC%u30F3%u30B8%u304C%u542B%u307E%u308C%u3066%u3044%u305F%u306E%u3067%2C%u3053%u308C%u3092URL%u3068%u3057%u3066%u65B0%u3057%u3044%u30BF%u30D6%u3067%u958B%u304D%u307E%u3057%u3087%u3046%0A%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20arrUrl%5Bi%5D%3B%0A%0A%20%20%20%20%20%20%20%20//%20%7E%u7B49%20%u3092%u534A%u89D2%u306B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5Cu301c/g%2C%27%5Cuff5e%27%29%3B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5Cuffe3/g%2C%27%5Cuff5e%27%29%3B%0A%0A%20%20%20%20%20%20%20%20//%20%u672B%u5C3E%u306E%20%29%u3084%5D%20%u306E%u8ABF%u6574%0A%0A%20%20%20%20%20%20%20%20if%20%28/%5C%29%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28url.indexOf%28%22%28%22%29%20%3D%3D%20-1%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5C%29%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28/%5C%5D%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20%20%20if%20%28url.indexOf%28%22%5B%22%29%20%3D%3D%20-1%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5C%5D%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28/%5B.%2C%5D%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5B.%2C%5D%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20//%20ttp%u7B49%u3092%20http%u7B49%u306B%20%u304A%u3088%u3073%20%20%3A//%20%u3092%20%u534A%u89D2%u306B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20/%5E%28ftp%7C%5Cuff46%5Cuff54%5Cuff50%29/i.test%28url%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20url.replace%28urlRx1%2C%27%3A//%27%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20url.replace%28urlRx%2C%27http%27%29.replace%28urlRx1%2C%27%3A//%27%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20URIFixup%20%3D%20Components.classes%5B%27@mozilla.org/docshell/urifixup%3B1%27%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIURIFixup%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20uri%20%3D%20URIFixup.createFixupURI%28%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20URIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP%20%29%3B%0A%0A%20%20%20%20%20%20%20%20if%28%21uri%29%20return%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%21isValidTld%28uri%29%29%0A%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20%20%20uri%20%3D%20ioService.newURI%28uri.spec%2C%20null%2C%20null%29%3B%0A%0A%20%20%20%20%20%20%20%20debug%28%27Parsing%20ucjs_textlink%3A%20%27+%28%28new%20Date%28%29%29.getTime%28%29-Start%29%20+%27msec%5Cn%27%29%3B%0A%0A%20%20%20%20%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20%20%20%20%20if%28event.shiftKey%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20saveAsURL%28uri%2Cdoc%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20else%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20openNewTab%28uri%29%3B%0A%0A%20%20%20%20%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%0A%20%20%7D%0A%0A%20%20if%28%20%21relative%20%29%20return%3B%0A%0A//%u3059%u3079%u3066%u306E%u6587%u5B57%u5217%u306E%u4E2D%u3067%u76F8%u5BFEURL%u3068%u601D%u3057%u304D%u6587%u5B57%u5217%u3092%u914D%u5217%u3068%u3057%u3066%u5F97%u308B%0A%0A%20%20arrUrl%20%3D%20allStr.match%28urlRegex1%29%3B%0A%0A%20%20if%28%21arrUrl%29%20return%3B%0A%0A%20%20i2%3D0%0A%0A%20%20for%28var%20i%20%3D0%2Clen%20%3D%20arrUrl.length%3B%20i%20%3C%20len%3B%20i++%29%7B%0A%0A//debug%28%22Relative%20%22%20+%20arrUrl%5Bi%5D%29%3B%0A%0A%20%20%20%20i1%20%3D%20allStr.indexOf%28arrUrl%5Bi%5D%2Ci2%29%3B%0A%0A%20%20%20%20i2%20%3D%20i1%20+%20arrUrl%5Bi%5D.length%3B%0A%0A%0A%0A//debug%28i1%20+%22%20%22+%20si%20+%22%20%22+%20ei%20+%22%20%22+%20i2%29%3B%0A%0A%20%20%20%20if%28i1%20%3C%3D%20si%20%26%26%20ei%20%3C%3D%20i2%29%7B%0A%0A//debug%28arrUrl%5Bi%5D%29%3B%0A%0A%20%20%20%20%20%20//%u3053%u306EURL%u3068%u601D%u3057%u304D%u6587%u5B57%u5217%u306E%u4E2D%u306B%u30EC%u30F3%u30B8%u304C%u542B%u307E%u308C%u3066%u3044%u305F%u306E%u3067%2C%u3053%u308C%u3092URL%u3068%u3057%u3066%u65B0%u3057%u3044%u30BF%u30D6%u3067%u958B%u304D%u307E%u3057%u3087%u3046%0A%0A%20%20%20%20%20%20var%20url%20%3D%20arrUrl%5Bi%5D%3B%0A%0A%20%20%20%20%20%20//%20%7E%u7B49%20%u3092%u534A%u89D2%u306B%0A%0A%20%20%20%20%20%20url%20%3D%20url.replace%28/%5Cu301c/g%2C%27%5Cuff5e%27%29%3B%0A%0A%20%20%20%20%20%20url%20%3D%20url.replace%28/%5Cuffe3/g%2C%27%5Cuff5e%27%29%3B%0A%0A%20%20%20%20%20%20//%20%u672B%u5C3E%u306E%20%29%u3084%5D%20%u306E%u8ABF%u6574%0A%0A%20%20%20%20%20%20if%20%28/%5C%29%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20if%20%28url.indexOf%28%22%28%22%29%20%3D%3D%20-1%29%0A%0A%20%20%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5C%29%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28/%5C%5D%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20if%20%28url.indexOf%28%22%5B%22%29%20%3D%3D%20-1%29%0A%0A%20%20%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5C%5D%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28/%5B.%2C%5D%24/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20url.replace%28/%5B.%2C%5D%24/%2C%27%27%29%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20host%u540D%u304C%20ftp%20%u3067%u59CB%u307E%u308B%u306A%u3089%20ftp%3A//%u306B%0A%0A%20%20%20%20%20%20if%20%28/%5Eftp/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20%22ftp%3A//%22%20+%20url%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20host%u540D%u304C%20irc%20%u3067%u59CB%u307E%u308B%u306A%u3089%20irc%3A%u306B%0A%0A%20%20%20%20%20%20if%20%28/%5Eirc/.test%28url%29%29%7B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20%22irc%3A//%22%20+%20url%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%u30E1%u30FC%u30EB%3F%0A%0A%20%20%20%20%20%20if%20%28mailRx1.test%28url%29%29%20%7B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20%22mailto%3A%22%20+%20url%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%u76F8%u5BFE%u30D1%u30B9%u306E%u51E6%u7406%0A%0A%20%20%20%20%20%20if%28url.match%28/%5E%5C.%7B1%2C%7D/%29%29%7B%0A%0A%20%20%20%20%20%20%20%20var%20baseURI%20%3D%20ioService.newURI%28win.document.documentURI%2C%20null%2C%20null%29%3B%0A%0A%20%20%20%20%20%20%20%20url%20%3D%20ioService.newURI%28url%2C%20null%2C%20baseURI%29.spec%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A//debug%28url.indexOf%28url.match%28urlRegex%29%29%29%3B%0A%0A%20%20%20%20%20%20if%20%28%21mailRx.test%28url%29%20%26%26%20url.indexOf%28url.match%28urlRegex%29%29%20%3E%201%29%20return%3B%0A%0A%20%20%20%20%20%20var%20URIFixup%20%3D%20Components.classes%5B%27@mozilla.org/docshell/urifixup%3B1%27%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIURIFixup%29%3B%0A%0A%20%20%20%20%20%20try%7B%0A%0A//debug%28url%29%3B%0A%0A%20%20%20%20%20%20%20%20var%20uri%20%3D%20URIFixup.createFixupURI%28%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20url%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20URIFixup.FIXUP_FLAG_NONE%20%29%3B%20//FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP%u2192FIXUP_FLAG_NONE%0A%0A%20%20%20%20%20%20%7Dcatch%28e%29%7Breturn%3B%7D%0A%0A%20%20%20%20%20%20if%28%21uri%29%20return%3B%0A%0A%0A%0A%20%20%20%20%20%20if%20%28%21isValidTld%28uri%29%29%20%7B%0A%0A%20%20%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%20%20%7D%0A%0Adebug%28url%29%3B%0A%0A%20%20%20%20%20%20uri%20%3D%20ioService.newURI%28uri.spec%2C%20null%2C%20null%29%3B%0A%0A%20%20%20%20%20%20debug%28%27Parsing%20ucjs_textlink%3A%20%27+%28%28new%20Date%28%29%29.getTime%28%29-Start%29%20+%27msec%5Cn%27+uri.spec%29%3B%0A%0A%20%20%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20%20%20if%28event.shiftKey%29%0A%0A%20%20%20%20%20%20%20%20%20%20saveAsURL%28uri%2Cdoc%29%3B%0A%0A%20%20%20%20%20%20%20%20else%0A%0A%20%20%20%20%20%20%20%20%20%20openNewTab%28uri%29%3B%0A%0A%20%20%20%20%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20activeBrowser%28%29%20%7B%0A%0A%20%20%20%20return%20%28%27SplitBrowser%27%20in%20window%20%3F%20SplitBrowser.activeBrowser%20%3A%20null%20%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7C%7C%20%20gBrowser%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20_getFocusedWindow%28%29%7B%20//%u73FE%u5728%u306E%u30A6%u30A4%u30F3%u30C9%u30A6%u3092%u5F97%u308B%0A%0A%20%20%20%20var%20focusedWindow%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%0A%20%20%20%20if%20%28%21focusedWindow%20%7C%7C%20focusedWindow%20%3D%3D%20window%29%0A%0A%20%20%20%20%20%20%20%20return%20window._content%3B%0A%0A%20%20%20%20else%0A%0A%20%20%20%20%20%20%20%20return%20focusedWindow%3B%0A%0A%20%20%7D%0A%0A%0A%0A//%u30EC%u30F3%u30B8%u306E%u8981%u7D20%u304C%u6240%u5C5E%u3059%u308B%u89AA%u30D6%u30ED%u30C3%u30AF%u8981%u7D20%u3092%u5F97%u308B%0A%0A%20%20function%20oyaNode%28aNode%29%7B%0A%0A%20%20%20%20var%20pNode%20%3D%20aNode.parentNode%3B%0A%0A%20%20%20%20while%28pNode%20%26%26%20/%5E%28a%7Cabbr%7Cacronym%7Cb%7Cbdo%7Cbig%7Cbody%7Ccode%7Cdfn%7Cem%7Cfont%7Ci%7Ckbd%7Clabel%7Cpre%7Cq%7Csamp%7Csmall%7Cspan%7Cstrong%7Csub%7Csup%7Ctt%7Cvar%7Cwbr%29%24/i.test%28pNode.nodeName%29%20%29%7B%0A%0A%20%20%20%20%20%20pNode%20%3D%20pNode.parentNode%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20pNode%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20isParentEditableNode%28node%29%7B%0A%0A%20%20%20%20//if%20%28Components.lookupMethod%28node.ownerDocument%2C%20%27designMode%27%29.call%28node.ownerDocument%29%20%3D%3D%20%27on%27%29%0A%0A%20%20%20%20//%20%20return%20node%3B%0A%0A%20%20%20%20while%20%28node%20%26%26%20node.parentNode%29%20%7B%0A%0A%20%20%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20%20%20node.QueryInterface%28Ci.nsIDOMNSEditableElement%29%3B%0A%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20catch%28e%29%20%7B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28/input%7Ctextarea/.test%28node.localName%29%29%0A%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20if%20%28node.isContentEditable%20%7C%7C%20node.contentEditable%3D%3D%27true%27%29%0A%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20node%20%3D%20node.parentNode%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20null%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20isValidTld%28aURI%29%7B%0A%0A%20%20%20%20const%20regexpTLD%20%3D%20new%20RegExp%28%22%5C%5C.%28arpa%7Cint%7Cnato%7Ccom%7Cnet%7Corg%7Cinfo%7Cbiz%7Cname%7Cpro%7Cmuseum%7Ccoop%7Caero%7Cedu%7Cgov%7Cmil%7Cac%7Cad%7Cae%7Caf%7Cag%7Cai%7Cal%7Cam%7Can%7Cao%7Caq%7Car%7Cas%7Cat%7Cau%7Caw%7Cax%7Caz%7Cba%7Cbb%7Cbd%7Cbe%7Cbf%7Cbg%7Cbh%7Cbi%7Cbj%7Cbm%7Cbn%7Cbo%7Cbr%7Cbs%7Cbt%7Cbu%7Cbv%7Cbw%7Cby%7Cbz%7Cca%7Ccc%7Ccd%7Ccf%7Ccg%7Cch%7Cci%7Cck%7Ccl%7Ccm%7Ccn%7Cco%7Ccp%7Ccr%7Ccs%7Csk%7Ccu%7Ccv%7Ccx%7Ccy%7Ccz%7Cdd%7Cde%7Cdg%7Cdj%7Cdk%7Cdm%7Cdo%7Cdz%7Cea%7Cec%7Cee%7Ceg%7Ceh%7Cer%7Ces%7Cet%7Cfi%7Cfj%7Cfk%7Cfm%7Cfo%7Cfr%7Cfx%7Cga%7Cgb%7Cgd%7Cge%7Cgf%7Cgg%7Cgh%7Cgi%7Cgl%7Cgm%7Cgn%7Cgp%7Cgq%7Cgr%7Cgs%7Cgt%7Cgu%7Cgw%7Cgy%7Chk%7Chm%7Chn%7Chr%7Cht%7Chu%7Cic%7Cid%7Cie%7Cil%7Cim%7Cin%7Cio%7Ciq%7Cir%7Cis%7Cit%7Cje%7Cjm%7Cjo%7Cjp%7Cke%7Ckg%7Ckh%7Cki%7Ckm%7Ckn%7Ckp%7Ckr%7Ckw%7Cky%7Ckz%7Cla%7Clb%7Clc%7Cli%7Clk%7Clr%7Cls%7Clt%7Clu%7Clv%7Cly%7Cma%7Cmc%7Cmd%7Cmg%7Cmh%7Cmk%7Cml%7Cmm%7Cmn%7Cmo%7Cmp%7Cmq%7Cmr%7Cms%7Cmt%7Cmu%7Cmv%7Cmw%7Cmx%7Cmy%7Cmz%7Cna%7Cnc%7Cne%7Cnf%7Cng%7Cni%7Cnl%7Cno%7Cnp%7Cnr%7Cnt%7Cnu%7Cnz%7Com%7Cpa%7Cpc%7Cpe%7Cpf%7Cpg%7Cph%7Cpk%7Cpl%7Cpm%7Cpn%7Cpr%7Cps%7Cpt%7Cpw%7Cpy%7Cqa%7Cre%7Cro%7Cru%7Crw%7Csa%7Csb%7Csc%7Csd%7Cse%7Csg%7Csh%7Csi%7Csj%7Csk%7Csl%7Csm%7Csn%7Cso%7Csr%7Cst%7Csu%7Csv%7Csy%7Csz%7Cta%7Ctc%7Ctd%7Ctf%7Ctg%7Cth%7Ctj%7Ctk%7Ctm%7Ctn%7Cto%7Ctp%7Ctr%7Ctt%7Ctv%7Ctw%7Ctz%7Cua%7Cug%7Cuk%7Cum%7Cus%7Cuy%7Cuz%7Cva%7Cvc%7Cve%7Cvg%7Cvi%7Cvn%7Cvu%7Cwf%7Cwg%7Cws%7Cyd%7Cye%7Cyt%7Cyu%7Cza%7Czm%7Czr%7Czw%29%5C%5C.%3F%24%22%2C%22%22%29%3B%0A%0A%20%20%20%20const%20regexpIP%20%3D%20new%20RegExp%28%22%5E%5B1-2%5D%3F%5B0-9%5D%3F%5B0-9%5D%5C%5C.%5B1-2%5D%3F%5B0-9%5D%3F%5B0-9%5D%5C%5C.%5B1-2%5D%3F%5B0-9%5D%3F%5B0-9%5D%5C%5C.%5B1-2%5D%3F%5B0-9%5D%3F%5B0-9%5D%24%22%2C%22%22%29%3B%0A%0A%20%20%20%20var%20host%2C%20tlds%3B%0A%0A%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20host%20%3D%20aURI.host.split%28%27/%27%29%5B0%5D%3B%0A%0A%20%20%20%20%7D%20catch%28e%29%20%7B%0A%0A%20%20%20%20%20%20if%20%28aURI.spec.match%28/%5E%28.+%3F%5C/%5C/%28%3F%3A%5B%5E%5C/%5D+@%29%3F%29%28%5B%5E%5C/%5D+%29%28%3A%5Cd+%29%3F%28%3F%3A.*%29%24/%29%29%20%7B%0A%0A%20%20%20%20%20%20%20%20host%20%3D%20RegExp.%242%3B%0A%0A%20%20%20%20%20%20%7D%20else%20if%20%28aURI.spec.match%28/%5E%28mailto%3A%28%3F%3A%5B%5E%5C/%5D+@%29%3F%29%28%5B%5E%5C/%5D+%29%28%3A%5Cd+%29%3F%28%3F%3A.*%29%24/%29%29%7B%0A%0A%20%20%20%20%20%20%20%20host%20%3D%20RegExp.%242%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%0A//debug%28%22host%20%20%22%20+%20host%29%3B%0A%0A%20%20%20%20if%20%28%21host%29%0A%0A%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20if%20%28getVer%28%29%20%3C%203.0%29%7B%0A%0A%20%20%20%20%20%20if%20%28regexpTLD.test%28host%29%29%0A%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%20%20else%0A%0A%20%20%20%20%20%20%20%20return%20%28regexpIP.test%28host%29%29%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%0A%20%20%20%20%20%20var%20eTLDService%20%3D%20Components.classes%5B%22@mozilla.org/network/effective-tld-service%3B1%22%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIEffectiveTLDService%29%3B%0A%0A%20%20%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20%20%20var%20tld%20%3D%20eTLDService.getPublicSuffixFromHost%28host%29%3B%0A%0A%20%20%20%20%20%20%20%20return%20regexpTLD.test%28%27.%27+tld%29%3B%0A%0A%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%0A%0A%20%20%20%20%20%20%20%20return%20%28regexpIP.test%28host%29%29%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7D%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20saveAsURL%28uri%2Cdoc%29%7B%0A%0A%20%20%20%20var%20linkText%20%3D%20uri.spec%3B%0A%0A%20%20%20%20//Thunderbird%0A%0A%20%20%20%20if%20%28/%5Echrome%3A%5C/%5C/messenger%5C/content%5C//.test%28window.location.href%29%29%20%7B%0A%0A%20%20%20%20%20%20//%20URL%20Loading%20Security%20Check%0A%0A%20%20%20%20%20%20var%20focusedWindow%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%0A%20%20%20%20%20%20var%20sourceURL%20%3D%20getContentFrameURI%28focusedWindow%29%3B%0A%0A%20%20%20%20%20%20const%20nsIScriptSecurityManager%20%3D%20Components.interfaces.nsIScriptSecurityManager%3B%0A%0A%20%20%20%20%20%20var%20secMan%20%3D%20Components.classes%5B%22@mozilla.org/scriptsecuritymanager%3B1%22%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28nsIScriptSecurityManager%29%3B%0A%0A%20%20%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20%20%20secMan.checkLoadURIStr%28sourceURL%2C%20uri.spec%2C%20nsIScriptSecurityManager.STANDARD%29%3B%0A%0A%20%20%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%0A%20%20%20%20%20%20%20%20throw%20%22Load%20of%20%22%20+%20url%20+%20%22%20denied.%22%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20saveURL%28%20uri.spec%2C%20linkText%2C%20null%2C%20true%20%29%3B%0A%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%7D%0A%0A%0A%0A%20%20%20%20//%20urlSecurityCheck%20wanted%20a%20URL-as-string%20for%20Fx%202.0%2C%20but%20an%20nsIPrincipal%20on%20trunk%0A%0A%20%20%20%20if%28activeBrowser%28%29.contentPrincipal%29%0A%0A%20%20%20%20%20%20urlSecurityCheck%28uri.spec%2C%20activeBrowser%28%29.contentPrincipal%2CCi.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL%29%3B%0A%0A%20%20%20%20else%0A%0A%20%20%20%20%20%20urlSecurityCheck%28uri.spec%2C%20activeBrowser%28%29.currentURI.spec%2CCi.nsIScriptSecurityManager.DISALLOW_SCRIPT%29%3B%0A%0A%0A%0A%20%20%20%20saveURL%28%20uri.spec%2C%20linkText%2C%20null%2C%20true%2C%20false%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20makeURI%28doc.location.href%2C%20doc.characterSet%29%20%29%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20openNewTab%28uri%29%7B%0A%0A%20%20%20%20//Thunderbird%0A%0A%20%20%20%20if%20%28/%5Echrome%3A%5C/%5C/messenger%5C/content%5C//.test%28window.location.href%29%29%20%7B%0A%0A%20%20%20%20%20%20//%20Make%20sure%20we%20are%20allowed%20to%20open%20this%20URL%0A%0A%20%20%20%20%20%20//%20URL%20Loading%20Security%20Check%0A%0A%20%20%20%20%20%20var%20focusedWindow%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%0A%20%20%20%20%20%20var%20sourceURL%20%3D%20getContentFrameURI%28focusedWindow%29%3B%0A%0A%20%20%20%20%20%20const%20nsIScriptSecurityManager%20%3D%20Components.interfaces.nsIScriptSecurityManager%3B%0A%0A%20%20%20%20%20%20var%20secMan%20%3D%20Components.classes%5B%22@mozilla.org/scriptsecuritymanager%3B1%22%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28nsIScriptSecurityManager%29%3B%0A%0A%20%20%20%20%20%20try%20%7B%0A%0A%20%20%20%20%20%20%20%20secMan.checkLoadURIStr%28sourceURL%2C%20uri.spec%2C%20nsIScriptSecurityManager.STANDARD%29%3B%0A%0A%20%20%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%0A%20%20%20%20%20%20%20%20throw%20%22Load%20of%20%22%20+%20url%20+%20%22%20denied.%22%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20protocolSvc%20%3D%20Components.classes%5B%22@mozilla.org/uriloader/external-protocol-service%3B1%22%5D%0A%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.getService%28Components.interfaces.nsIExternalProtocolService%29%3B%0A%0A%20%20%20%20%20%20protocolSvc.loadUrl%28uri%29%3B%0A%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20%7D%0A%0A%0A%0A%20%20%20%20//%20urlSecurityCheck%20wanted%20a%20URL-as-string%20for%20Fx%202.0%2C%20but%20an%20nsIPrincipal%20on%20trunk%0A%0A%20%20%20%20if%28activeBrowser%28%29.contentPrincipal%29%0A%0A%20%20%20%20%20%20urlSecurityCheck%28uri.spec%2C%20activeBrowser%28%29.contentPrincipal%2CCi.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL%29%3B%0A%0A%20%20%20%20else%0A%0A%20%20%20%20%20%20urlSecurityCheck%28uri.spec%2C%20activeBrowser%28%29.currentURI.spec%2CCi.nsIScriptSecurityManager.DISALLOW_SCRIPT%29%3B%0A%0A%20%20%20%20if%28%20%28event.ctrlKey%29%20%29%7B%0A%0A%20%20%20%20%20%20%20%20loadURI%28uri.spec%2C%20null%2C%20null%2C%20false%29%3B%0A%0A%20%20%20%20%7Delse%7B%0A%0A%20%20%20%20%20%20if%20%28%27TreeStyleTabService%27%20in%20window%29%0A%0A%20%20%20%20%20%20%20%20TreeStyleTabService.readyToOpenChildTab%28activeBrowser%28%29.selectedTab%29%3B%0A%0A%20%20%20%20%20%20openNewTabWith%28uri.spec%2C%20null%2C%20%20null%2C%20null%2C%20false%29%0A%0A%20%20%20%20%20%20//activeBrowser%28%29.loadOneTab%28uri.spec%2C%20null%2C%20null%2C%20null%2C%20getPref%28%22browser.tabs.loadInBackground%22%2C%20%22bool%22%2C%20false%29%2C%20false%29%3B%0A%0A%0A%0A%20%20%20%20%20%20//activeBrowser%28%29.selectedTab%20%3D%20activeBrowser%28%29.addTab%28uri.spec%29%3B%0A%0A%20%20%20%20%7D%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20getVer%28%29%7B%0A%0A%20%20%20%20const%20Cc%20%3D%20Components.classes%3B%0A%0A%20%20%20%20const%20Ci%20%3D%20Components.interfaces%3B%0A%0A%20%20%20%20var%20info%20%3D%20Cc%5B%22@mozilla.org/xre/app-info%3B1%22%5D.getService%28Ci.nsIXULAppInfo%29%3B%0A%0A%20%20%20%20//%20%u3053%u306E%u30B3%u30FC%u30C9%u3092%u5B9F%u884C%u3057%u3066%u3044%u308B%u30A2%u30D7%u30EA%u30B1%u30FC%u30B7%u30E7%u30F3%u306E%u540D%u524D%u3092%u53D6%u5F97%u3059%u308B%0A%0A%20%20%20%20var%20ver%20%3D%20parseInt%28info.version.substr%280%2C3%29%20*%2010%2C10%29%20/%2010%3B%0A%0A%20%20%20%20return%20ver%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20getPref%28aPrefString%2C%20aPrefType%2C%20aDefault%29%7B%0A%0A%20%20%20%20var%20xpPref%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefBranch2%29%3B%0A%0A%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20switch%20%28aPrefType%29%7B%0A%0A%20%20%20%20%20%20%20%20case%20%22str%22%3A%0A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getCharPref%28aPrefString%29.toString%28%29%3B%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%22int%22%3A%0A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getIntPref%28aPrefString%29%3B%20break%3B%0A%0A%20%20%20%20%20%20%20%20case%20%22bool%22%3A%0A%0A%20%20%20%20%20%20%20%20default%3A%0A%0A%20%20%20%20%20%20%20%20%20%20return%20xpPref.getBoolPref%28aPrefString%29%3B%20break%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7Dcatch%28e%29%7B%0A%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20aDefault%3B%0A%0A%20%20%7D%0A%0A%0A%0A%20%20function%20debug%28aMsg%29%7B%0A%0A%20%20%20%20const%20Cc%20%3D%20Components.classes%3B%0A%0A%20%20%20%20const%20Ci%20%3D%20Components.interfaces%3B%0A%0A%20%20%20%20Cc%5B%22@mozilla.org/consoleservice%3B1%22%5D%0A%0A%20%20%20%20%20%20.getService%28Ci.nsIConsoleService%29%0A%0A%20%20%20%20%20%20.logStringMessage%28aMsg%29%3B%0A%0A%20%20%7D%0A%0A%7D%0A%0Avar%20textLinkForSidebar%20%3D%20%7B%0A%0A%20%20init%3A%20function%28event%29%7B%0A%0A%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20var%20doc%20%3D%20event.originalTarget%3B%0A%0A%20%20%20%20%20%20if%20%28%21doc.location%29%20return%3B%0A%0A%20%20%20%20%20%20if%28doc.location.href%20%3D%3D%20%22chrome%3A//browser/content/web-panels.xul%22%29%7B%0A%0A%20%20%20%20%20%20%20%20doc.addEventListener%28%27dblclick%27%2Cfunction%28event%29%7BsetTimeout%28ucjs_textlink%2C100%2Cevent%29%3B%7D%2Cfalse%29%3B%0A%0A%20%20%20%20%20%20%20%20doc.addEventListener%28%27keypress%27%2Cfunction%28event%29%7Bucjs_textlink%28event%29%3B%7D%2Cfalse%29%3B%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%0A%20%20%7D%2C%0A%0A%20%20uninit%3A%20function%28event%29%7B%0A%0A%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20var%20doc%20%3D%20event.originalTarget%3B%0A%0A%20%20%20%20%20%20if%20%28%21doc.location%29%20return%3B%0A%0A%20%20%20%20%20%20if%28doc.location.href%20%3D%3D%20%22chrome%3A//browser/content/web-panels.xul%22%29%7B%0A%0A%20%20%20%20%20%20%20%20doc.removeEventListener%28%27dblclick%27%2Cfunction%28event%29%7BsetTimeout%28ucjs_textlink%2C100%2Cevent%29%3B%7D%2Cfalse%29%3B%0A%0A%20%20%20%20%20%20%20%20doc.removeEventListener%28%27keypress%27%2Cfunction%28event%29%7Bucjs_textlink%28event%29%3B%7D%2Cfalse%29%3B%0A%0A%0A%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%0A%20%20%7D%0A%0A%7D%0A%0A//for%20contents%20area%0A%0Aif%20%28/%5Echrome%3A%5C/%5C/messenger%5C/content%5C//.test%28window.location.href%29%29%20%7B%0A%0A%20%20var%20target%20%3D%20document.getElementById%28%22messagepane%22%29%3B%0A%0A%7D%20else%20%7B%0A%0A%20%20var%20target%20%3D%20document.getElementById%28%22appcontent%22%29%3B%0A%0A%7D%0A%0Atarget.addEventListener%28%27dblclick%27%2Cfunction%28event%29%7BsetTimeout%28ucjs_textlink%2C100%2Cevent%29%3B%7D%2Cfalse%29%3B%0A%0Atarget.addEventListener%28%27keypress%27%2Cfunction%28event%29%7Bucjs_textlink%28event%29%3B%7D%2Cfalse%29%3B%0A%0A//for%20already%20loaded%20chrome%3A//browser/content/web-panels.xul%0A%0Aif%20%28%21/%5Echrome%3A%5C/%5C/messenger%5C/content%5C//.test%28window.location.href%29%29%20%7B%0A%0A%20%20setTimeout%28function%28%29%7B%0A%0A%20%20%20%20try%7B%0A%0A%20%20%20%20%20%20var%20doc%20%3D%20document.getElementById%28%27sidebar%27%29.contentDocument%3B%0A%0A%20%20%20%20%20%20if%28doc%20%26%26%20doc.location%20%26%26%20doc.location.href%20%3D%3D%20%22chrome%3A//browser/content/web-panels.xul%22%29%0A%0A%20%20%20%20%20%20%20%20doc.addEventListener%28%27dblclick%27%2Cfunction%28event%29%7BsetTimeout%28ucjs_textlink%2C100%2Cevent%29%3B%7D%2Cfalse%29%3B%0A%0A%20%20%20%20%20%20%20%20doc.addEventListener%28%27keypress%27%2Cfunction%28event%29%7Bucjs_textlink%28event%29%3B%7D%2Cfalse%29%3B%0A%0A%20%20%20%20%7Dcatch%28e%29%7B%7D%0A%0A%20%20%7D%2C1000%29%3B%0A%0A%7D%0A%0A//for%20sidebar%20document%20onload%20event%20Listener%0A%0Awindow.document.addEventListener%28%27load%27%2C%20textLinkForSidebar.init%2C%20true%29%3B%0A%0Awindow.document.addEventListener%28%27unload%27%2C%20textLinkForSidebar.uninit%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%5B%3Clabel%3E%0AID%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Код кнопки:Custom Buttons | Форум Mozilla Россия из-за ограничения на размер сообщения.

Отредактировано imyax (24-05-2011 22:57:11)

Отсутствует

 

Board footer

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