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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№122-11-2009 13:29:00

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

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

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



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

1.1449045699.gif

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

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


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

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

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

Выделить код

Код:

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

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

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

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

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

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

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


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

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

Отсутствует

 

№2717-01-2011 00:34:33

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

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

Fit to Width (Подогнать по ширине) (Firefox)
Автор: Dark-Demon.
Выравнивает страницу по ширине окна (обсуждение кнопки).

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

Выделить код

Код:

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%3Efit%20to%20width%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC%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%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20s%3Dcontent.document.styleSheets%5B0%5D%3B%0As.insertRule%28%27*%20%7Bmin-width%3A0%21important%3B%20white-space%3Anormal%21important%3B%20margin%3A0%21important%3B%20padding%3A0%21important%3B%20float%3Anone%3B%7D%27%2C0%29%3B%0As.insertRule%28%27div%2Ctable%2Ctbody%2Ctr%2Ctd%2Cp%2Col%2Cul%2Ch1%2Ch2%2Ch3%2Chr%20%7Bmax-width%3A99%25%21important%3B%7D%27%2C0%29%3B%0As.insertRule%28%27table%2Ctbody%2Ctr%2Ctd%20%7Bdisplay%3Ablock%21important%7D%27%2C0%29%3B%0A%0Avar%20i%3D%20content.document.images%3B%0Afor%20%28var%20j%3D0%3B%20j%3Ci.length%3B%20j++%29%20%7B%0A%20%20var%20k%3D%20content.window.innerWidth/i%5Bj%5D.width*.95%3B%0A%20%20if%20%28k%3C1%29%20%7Bi%5Bj%5D.width*%3Dk%3B%20i%5Bj%5D.height*%3Dk%3B%7D%3B%0A%7D%0A%0A%0A%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

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

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAFVBMVEX///8AzP8AAAAAzP8Amf8AAMwAAACWs84cAAAAB3RSTlMAd3f/////1grLHQAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzI4LzA2GvIWfQAAAEpJREFUeJxjYMAErKGhgRCGi0uIAJjhbBxiCGO4AIUUgIzQ0AAmhiQgw9gkQI0hTRXECEpDiChAGExgXUAGxEAXlwCIFUDtWOwGAHj3ENTzyS3QAAAAAElFTkSuQmCC

Код:

Выделить код

Код:

var s=content.document.styleSheets[0];
s.insertRule('* {min-width:0!important; white-space:normal!important; margin:0!important; padding:0!important; float:none;}',0);
s.insertRule('div,table,tbody,tr,td,p,ol,ul,h1,h2,h3,hr {max-width:99%!important;}',0);
s.insertRule('table,tbody,tr,td {display:block!important}',0);

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

Отредактировано MySh (17-01-2011 00:57:30)

Отсутствует

 

№2817-01-2011 14:58:56

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

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

Cookies Permissions (Firefox)
Автор: Infocatcher
Описание: позволяет быстро открыть список исключений для куков, открыть список самих куков, в 1-2 клика добавить просматриваемый сайт в исключения, так же по таймеру удаляет все незащищённые (т.е. все которые не находятся в списке исключений как "разрешить" или "разрешить на сессию") куки.

У кнопки есть теперь своя тема, там же вы найдёте и ссылки на установку стабильной и тестовой версий кнопки и сможете почитать её changelog.

Отредактировано iDev.Pi (17-08-2012 23:26:21)


mzfx

Отсутствует

 

№2918-01-2011 13:48:48

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

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

Открыть SAVE.HTML (Mozilla Thunderbird)
Считывает и открывает HTML файл (в новой закладке) указанный в Инструменты - Настройки... - Основные (переменная из about:config - mailnews.start_page.url ).

Данная кнопка удалена и заменена на TB Exp Imp CB как на более универсальную.

Отредактировано Indomito (05-04-2012 22:32:33)


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

Отсутствует

 

№3018-01-2011 16:04:22

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

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

Tools(Mozilla Thunderbird)
Left    => Параметры учётной записи
Middle => about:config (в новом табе)
Right   => Настройки
Shift+Right => Редактирование кнопки

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

Выделить код

Код:

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%3Econfig%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAIFQTFRF////u7uImZmZMzMzRERE7u7ud3d3qqqqzMzMVVVVZmZm3d3d////iIiIu7u7zMyZ7u7dIiIizMy73d27u7uZ3d3MzMyqmZlmiIhmqqqIu8yZIiIzqqp3///dd3dmd3dVmZl3qqqZMzNEzN277v/u7u7/mapmd4hEu7uq7u7MmZmIMf7U/gAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0QwDBykHHZ47CAAAAWVJREFUeJydk1tvwyAMhRMDBptCozRN2qnqTXva//+BM9Asl7aTNt6s88X4HJOq+sMx3jnzmx4BOcS3ureAWmmyhXbRL/XWAitFGCAJHhjdXG7am+h3dMaYrBNZs9Cl/12FsWvEpV45SPeff5pappjHMmUeJ/drfah3E6BlBAPssw4QZL5ztx0JB4GEsJyBGEIgpfD2sa0L4ZLhu2bS+YrIlHS/q9PZPXSltKbsWAJkKYMkkYm+6ATWjrkLoTgNnYnjVw7UznM0EcsGetEROenLmI1/NOuPKKMpDas9TIEFJAEO7Rvd58D0Zdg2r78v/i4n8fKKKLo+nJKZdQ8frYXir+3qZ0LeB3HA4q95Joy8D07jF/9Nn4luIhxzdLLAFHgm1j0kSVN5JAXjlYWo92Od1+JYj0AmTsPQfc4GNZZo+in2XT1cru1maQRmD3VfD9c4qzcRcbFi6dEuHrZxfvVfruv/nm+NxhAKW3jK0QAAAABJRU5ErkJggg%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//%u041F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u044B%20%u0443%u0447%u0451%u0442%u043D%u043E%u0439%20%u0437%u0430%u043F%u0438%u0441%u0438%0Afunction%20lbMouse%28%29%7B%0AMsgAccountManager%28null%29%3B%0A%7D%3B%0A%0A//%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%0Afunction%20rbMouse%28%29%7B%0AopenOptionsDialog%28%29%3B%0A%7D%3B%0A%0A//about%3Aconfig%0Afunction%20mbMouse%28%29%7B%0Avar%20inBackground%20%3D%20false%3B%0Avar%20cnConf%20%3D%20%22chrome%3A//global/content/config.xul%22%0Avar%20tabmail%20%3D%20document.%20getElementById%20%28%22tabmail%22%29%3B%0Atabmail.%20openTab%0A%28%0A%09%22contentTab%22%2C%0A%09%7B%0A%09%09background%3A%20inBackground%2C%0A%09%09contentPage%3A%20cnConf%0A%09%7D%0A%29%3B%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u041F%u0430%u0440%u0430%u043C%u0435%u0442%u0440%u044B%20%u0443%u0447%u0451%u0442%u043D%u043E%u0439%20%u0437%u0430%u043F%u0438%u0441%u0438%20%5CnMiddle%20%3D%3E%20about%3Aconfig%20%5CnRight%20%20%20%3D%3E%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%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/*%0AMsgAccountManager%28null%29%3B%0AopenOptionsDialog%28%29%3B%0Avar%20inBackground%20%3D%20false%3B%0Avar%20cnConf%20%3D%20%22chrome%3A//global/content/config.xul%22%0Avar%20tabmail%20%3D%20document.%20getElementById%20%28%22tabmail%22%29%3B%0Atabmail.%20openTab%0A%28%0A%09%22contentTab%22%2C%0A%09%7B%0A%09%09background%3A%20inBackground%2C%0A%09%09contentPage%3A%20cnConf%0A%09%7D%0A%29%3B%0A//window.content.focus%28%29%3B%0A*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/

//Параметры учётной записи
function lbMouse(){
MsgAccountManager(null);
};

//Настройки
function rbMouse(){
openOptionsDialog();
};

//about:config
function mbMouse(){
var inBackground = false;
var cnConf = "chrome://global/content/config.xul"
var tabmail = document. getElementById ("tabmail");
tabmail. openTab
(
    "contentTab",
    {
        background: inBackground,
        contentPage: cnConf
    }
);
};

this.tooltipText = "Left    => Параметры учётной записи \nMiddle => about:config \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();
    }
};


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

Отсутствует

 

№3119-01-2011 02:40:56

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

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

AddonsChekUpDate(Mozilla Thunderbird)
Left    => Открыть установленные дополнения
Middle => Проверить обновление дополнений
Right   => Дополнения в интернете
Shift+Right => Редактирование кнопки

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

Выделить код

Код:

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%3EAddonsChekUpDate%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%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%20lbMouse%28%29%7B%0AopenAddonsMgr%28%29%3B%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%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%0AcheckForUpdates%28%29%3B%20%20%20%20%0A%7D%3B%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%20rbMouse%28%29%7B%0Avar%20url%20%3D%20%22https%3A//addons.mozilla.org/ru/thunderbird/%22%3B%0Avar%20inBackground%20%3D%20false%3B%0Avar%20tabmail%20%3D%20document.%20getElementById%20%28%22tabmail%22%29%3B%0Atabmail.%20openTab%0A%28%0A%09%22contentTab%22%2C%0A%09%7B%0A%09%09background%3A%20inBackground%2C%0A%09%09contentPage%3A%20url%0A%09%7D%0A%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%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%20%5CnMiddle%20%3D%3E%20%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%20%5CnRight%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%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%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

/*Initialization Code*/

//Открыть установленные дополнения
function lbMouse(){
openAddonsMgr();
};

//Проверить обновление дополнений
function mbMouse(){
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 ();
checkForUpdates();    
};

//Открыть базу дополнений в интернете
function rbMouse(){
var url = "https://addons.mozilla.org/ru/thunderbird/";
var inBackground = false;
var tabmail = document. getElementById ("tabmail");
tabmail. openTab
(
    "contentTab",
    {
        background: inBackground,
        contentPage: url
    }
);
};

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();
    }
};


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

Отсутствует

 

№3220-01-2011 03:18:56

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

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

Min&Quit&Restart(Mozilla Thunderbird)
Left    => Свернуть Mozilla Thunderbird
Middle => Выйти из Mozilla Thunderbird
Right   => Перезагрузить Mozilla Thunderbird
Shift+Right => Редактирование кнопки

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

Выделить код

Код:

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%3EMin%26amp%3BQuit%26amp%3BRestart%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAI00lEQVR4nKWXeYxV5RmHn285y72zXWZhGJZhRgdkFdChWFEEbZQCJdUMSFsbq38gkmnSKE0bE5PGpAlpGmPS22ijXdNWQ8a0rrWtC3bacQE3QJmZCoMIwyzAzF3mLmftH+feYZyi1fRLvnzn3Pue9/e873m/5Qi+YOvswgJWAAuBGsAAUsBx4K1kB9kv4k98TtEYcDNwhxTG2obKxbHq2FwMGUNJjRc4TBSHGUof8hw/+xbwBPD7ZAdn/2+Azi52Ag/MSaxpnFVzFTFjLo5fxAs8BAJDGVg6TtysptKopuCOMHDuZY4OPTXmh+7PgL3JDvJfGKCzi1rgt3UVi7Y0125mvJAjW0yhpcZQVqmbmNqOrqWJoUwMZVFpJqgw4rx76jccHX76KHBLsoPezw3Q2cUi4JmWupvaAuYxlPkILQ20sjCViaFsTGlRXzkbQ1nk3CymMtHSnAQzpEm1XU8q18tL/T866wfOtmQH+6drqYuIXyaQr7bN3N58JuswlD1RQhUIcYFXCMGtK+5hQf1KDg/9C4FAiMgOBAiB5zvEzUaWzPpq/MS5f2y/oqPw+pv7GJiqJ6eJx4Fn5tdtbewd/YjhzEe4voMbOHi+c+E6cHD9IloaKGlc+M+P7LygPLrk3SxuYLJ56UNxLe19nV0s/FQAYO/MqtULjo+NcC53Bi9wqa+YzdqWrXiBO+nYLYmEhIRh+AnhMmDLjCXEzSq8wKXo5/GxuK7tB3XAoxcF6OxipaEq73bCJk6lPiwJuqxt2cq3r7iPHSv34PnulAw4hGEIhJPCEYjL6rk3sXrejTQnFuEFDr7vkHezNFa3Mzexel1nFzsuloH76yvX6CNnDuAFLn4J4MnDSXpHD7LuklvYsfJe/MCdfBVEOcD1i5OvYG3L11g8czXD2ZO8O7h/MhAvcBkrjLJ6/l0A930CoLOLeinMG8eLmqybwg88/MDHC1yyxTH2vnwHfZMQe/BDFz9wIg9hlAEvdNjQtp3ls9ZyJnOC53t/Rc7NlGDdKHu+g6nraapZtbyzi+unZmBjInZZ5cD5o5F46OOFXgnEY8IZ5yf776B/9CDXtt7MN1beixDuZAaEcNi48DZWzV7PYPoYfz6SJO9mLhRk4ExmIVU4y6V1GwC2AugSwAatGjiX6yUIfUQQLRCBFKXpB0VvnIe67+Sedb9mbcvNFL0UI9kBpJBc33YrV869kdOpPv505EH8IEBLm0BAqpAhWxxnPH+W87khMsUxls9aAXDdVIDLnUDjB14UET5KCKQAJUAL0FLgB+M88tqd3N7+U7xggsff3oNWJte0fou+kX/y176HyTlpsk6K0dwgY7lzpArjeAF4IYRhJDav0IZALu3sCowywHzHL6cTWmoXcteavSipEEKghEQKgSyNg+kP6D72CwxpoiX0DDzGukt3csOCO3H8PEEYEkblQRBCEAY8+sYPGRjrxQ8g7+aIqQrD9TMNZYAqLwyQArSE+ng9y5vWUWEmuFiTwsMQBfwgRbaYouhNkIjVsXTWDRe1n3DGaaho4FSqFwH4gYdSJi5UlAHyWgpbSzAV9J/t5jtPzMBWAksrbK2xtMZSGkNprr2kkwUz13B48HG0hOXzvs6psdf448FteEGIG4DngxuA40PRByeIfAvAUIogdCPdEsApW4kZpoqMTAm2BlOFWNrHUmAr0NJly5KHWD1/Fx8MPUFzYhkAiVgzS5tuo7GqjaeP7Mb1Q1wZiSsJUoL0Lux8FWacQjEHcLYM8L6lwuW21mjhYWuwNCXhCMJQPluWJmlv3sVgqodX+nfyzfaDCOAPB68kEZtPe/MulIBn39+NI8NI3I+Ep267VaZBvuD1JTsolNeBniAcI2EnsFQkbiuIabANiOmQrcuStDfvZijdw/NHNqJFhtIsxZBZXvhgE2fS3ayat4utyx8mbghiuuSjFIylIa5NTOUCdE9diJ47P9FHa+3iC5GXHoxp2Lzs51wxbzfD6R7+dnQjWmWImZG4EBAzQKssL/ZuYijdzYo5d7F56SPEDTHpp+x3TqKVieJJgOcmAZIdHHf97KtVpk1MmxFtCeLq1u+xau5uhjM9vNi3ESky2IbANnR0BkBgmwa2IVEyyyv9mxhOd3P5nJ18uXXPhegVWEowp/oSxnLHRoAXpmYA4MfD6Xe5tO5KJotRwXjuPfpGfsnLk+IWMTNB3GpACoWUigqrkbhZR8yoRMoc+/+9if6Rx0gVDmGWUm8qaKpuI5U/AfBgsoMC02qDzi6eXdBwzea8008YjBAzohqwDTC1wNJxLF2DoWvQuoKrmp9EIHjj4214fgHPy+B4KYpemqLnUnSh4ELeAy+IUV+1nvdO/+U4sLQMMP1AcveHoz0jTdXtxM0KDAmGAkOCqWxsoxbbmknMaiRuNSGEQghF3JpD3JqFbTVim/VYuhpDyehZBZbStNSup3f4VRfYURaHaWfCN/eR/tL28PXRiY93LGq83oBRlCxgaoVtzMA267DNBmxzJpZZj88EE94xfCaQ0kQIUToleYShQxA6CGHRUP0V3hk8QM5JfTfZwVNTNf/rUPrmPk62b/MOnB4f2NJSd02s0goQoohtzsAy6qMIrQYso55Q+QSiiJI2UiggJAxd/NAlCIpoWUXcvJqeE93BhDN+f7KDB6frfdZ3wRLgxUWNq5qWNM5HyFEMHSdmz8Y2mzDNBrSuQQqN7+dw3HMUnWEKxUGKzhiSWj4cHeGdU6+d80Pv1mQHL11M5zO/jDq7mAF8X0tj96q562sWN11OdbwGqS20kcA0Ekhp4noZPHcc38tTKOTpGzrMgZN/D3JO+nfAA8mOTx7FPzfAFJBm4G7g9plVrU3NM5ZRV9WCbdaghEHBy3A+e5KPzx/mTKo/FYT+s0RT7e3/5Xs6gF3qGjCJZokmqhUtFPqydSyurGVFQystVQ1USIXOZ5g4/T6n8mkOHX+dQ/k0BcAHvFIPSqNT6nkg/LQMlPcONeWeEoicZle28csOS60syJTfg1Kfasd/AEdhATPfNZxGAAAAAElFTkSuQmCC%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%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%3D%3E%20%u0421%u0432%u0435%u0440%u043D%u0443%u0442%u044C%20Mozilla%20Thunderbird%20%5CnMiddle%20%3D%3E%20%u0412%u044B%u0439%u0442%u0438%20%u0438%u0437%20Mozilla%20Thunderbird%20%5CnRight%20%20%20%3D%3E%20%u041F%u0435%u0440%u0435%u0437%u0430%u0433%u0440%u0443%u0437%u0438%u0442%u044C%20Mozilla%20Thunderbird%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%0Awindow.minimize%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%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%0AgoQuitApplication%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%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%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%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*/

this.tooltipText = "Left    => Свернуть Mozilla Thunderbird \nMiddle => Выйти из Mozilla Thunderbird \nRight   => Перезагрузить Mozilla Thunderbird";

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

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

Отредактировано Indomito (01-02-2011 23:36:03)


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

Отсутствует

 

№3307-02-2011 05:29:28

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

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

Attributes Inspector (для разработчиков) (все приложения на движке gecko: [firefox] Firefox, [seamonkey] SeaMonkey, [thunderbird] Thunderbird etc.)
Показывает всплывающую подсказку со всеми атрибутами.
Использование:
   Кликните средней кнопкой мыши или левой с зажатым Ctrl (или нажмите Ctrl+Shift+I), чтобы исследовать узел в DOM Inspector
   Удерживайте Shift, чтобы показывать и не скрывать всплывающие подсказки и меню
Сочетания клавиш:
   Escape – отмена
   Ctrl+Up, Ctrl+Down – перейти к родительскому/дочернему узлу
   Ctrl+Shift+C – копировать содержимое всплывающей подсказки

У кнопки теперь есть отдельная тема.

Отредактировано Infocatcher (30-01-2013 16:16:33)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№3413-02-2011 23:44:09

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

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

Tools(Firefox)   Прим. пост с начальной версией удалён с форума

Версия от 12.02.2011

Left => Настройки Mozilla FireFox
Middle => Vacuum очистка баз places.sqlite и Brief
Ctrl+Right => Информация для решения проблем и плагины
Right => About:Config

Переустанавливает plugin.expose_full_path в true, что позволяет увидеть пути расположения плагинов.

Скачать кнопку в HTML формате Tools._html. Для установки исправить расширение файла с _html на html

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ETools%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAIFQTFRF////u7uImZmZMzMzRERE7u7ud3d3qqqqzMzMVVVVZmZm3d3d////iIiIu7u7zMyZ7u7dIiIizMy73d27u7uZ3d3MzMyqmZlmiIhmqqqIu8yZIiIzqqp3///dd3dmd3dVmZl3qqqZMzNEzN277v/u7u7/mapmd4hEu7uq7u7MmZmIMf7U/gAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0QwDBykHHZ47CAAAAWVJREFUeJydk1tvwyAMhRMDBptCozRN2qnqTXva//+BM9Asl7aTNt6s88X4HJOq+sMx3jnzmx4BOcS3ureAWmmyhXbRL/XWAitFGCAJHhjdXG7am+h3dMaYrBNZs9Cl/12FsWvEpV45SPeff5pappjHMmUeJ/drfah3E6BlBAPssw4QZL5ztx0JB4GEsJyBGEIgpfD2sa0L4ZLhu2bS+YrIlHS/q9PZPXSltKbsWAJkKYMkkYm+6ATWjrkLoTgNnYnjVw7UznM0EcsGetEROenLmI1/NOuPKKMpDas9TIEFJAEO7Rvd58D0Zdg2r78v/i4n8fKKKLo+nJKZdQ8frYXir+3qZ0LeB3HA4q95Joy8D07jF/9Nn4luIhxzdLLAFHgm1j0kSVN5JAXjlYWo92Od1+JYj0AmTsPQfc4GNZZo+in2XT1cru1maQRmD3VfD9c4qzcRcbFi6dEuHrZxfvVfruv/nm+NxhAKW3jK0QAAAABJRU5ErkJggg%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//%20%u0412%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2012.02.2011%0A//%20%28c%29%20Indomito%0A%0Athis.tooltipText%20%3D%20%22Left%20%20%20%20%20%20%20%20%20%3D%3E%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20Mozilla%20FireFox%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Middle%20%20%20%20%20%20%3D%3E%20Vacuum%20%u043E%u0447%u0438%u0441%u0442%u043A%u0430%20%u0431%u0430%u0437%20places.sqlite%20%u0438%20Brief%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Ctrl+Right%20%3D%3E%20%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u0434%u043B%u044F%20%u0440%u0435%u0448%u0435%u043D%u0438%u044F%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%20%u0438%20%u043F%u043B%u0430%u0433%u0438%u043D%u044B%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Right%20%20%20%20%20%20%20%20%3D%3E%20About%3AConfig%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A//%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20Mozilla%20FireFox%0Afunction%20lbMouse%28%29%7B%0Atry%7B%20openPreferences%28%29%3B%20%7D%20catch%28e%29%20%7B%20openOptionsDialog%28%29%3B%20%7D%0A%7D%3B%0A%0A//Quick%20About%3AConfig%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%20%u0432%20%u043D%u043E%u0432%u043E%u043C%20%u0442%u0430%u0431%u0435%0Afunction%20rbMouse%28%29%7B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aconfig%22%29%0A%7D%3B%0A%0A//Vacuum%20%u043E%u0447%u0438%u0441%u0442%u043A%u0430%20%u0431%u0430%u0437%20places.sqlite%20%u0438%20Brief%0Afunction%20mbMouse%28%29%7B%0Avar%20dBF%20%3D%20%22%20%u0438%20Brief%22%3B%0Aif%20%28typeof%20gBrief%20%3D%3D%20%27undefined%27%29%20dBF%20%3D%20%22%22%3B%0Avar%20res%3Dcustombuttons.%20confirmBox%20%28%22Vacuum%20%u043E%u0447%u0438%u0441%u0442%u043A%u0430%20places.sqlite%22%20+%20dBF%2C%20%22%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u0431%u0430%u0437%u044B%3F%22%2C%20%22%u0414%u0430%22%2C%20%22%u041D%u0435%u0442%22%29%3B%0Aif%20%28res%29%7B%0A%20%20%20%20%20Components.classes%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.getService%28Components.interfaces.nsPIPlacesDatabase%29.DBConnection.executeSimpleSQL%28%22VACUUM%22%29%3B%0A%20%20%20%20%20if%20%28%21dBF.length%29%20window.openDialog%28%27chrome%3A//brief/content/compacting-progress.xul%27%2C%20%27Brief%27%2C%27chrome%2Ctitlebar%2Ccenterscreen%27%29%3B%0A%20%20%20%20%20custombuttons.%20alertBox%20%28%22Vacuum%20%u043E%u0447%u0438%u0441%u0442%u043A%u0430%20places.sqlite%22%20+%20dBF%2C%20%22%u0411%u0430%u0437%u044B%20%u043E%u0447%u0438%u0449%u0435%u043D%u044B%22%29%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A//%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u0434%u043B%u044F%20%u0440%u0435%u0448%u0435%u043D%u0438%u044F%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%20%u0438%20%u043F%u043B%u0430%u0433%u0438%u043D%u044B%0Afunction%20cKeyrbMouse%28%29%7B%0A//%u0412%u043A%u043B%u044E%u0447%u0430%u0435%u043C%20%u0432%u0438%u0434%u0438%u043C%u043E%u0441%u0442%u044C%20%u043F%u0443%u0442%u0435%u0439%20%u0434%u043B%u044F%20%u043F%u043B%u0430%u0433%u0438%u043D%u043E%u0432%2C%20%u0442%u0435%20about%3Aplugins%0AApplication.prefs.setValue%28%22plugin.expose_full_path%22%2C%20true%29%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Aplugins%22%29%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22about%3Asupport%22%29%3B%0A%7D%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%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%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20event.ctrlKey%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20ctrl+%u041F%u041A%u041C%0AcKeyrbMouse%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.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*/
// Версия от 12.02.2011
// (c) Indomito

this.tooltipText = "Left         => Настройки Mozilla FireFox\n"+
                   "Middle      => Vacuum очистка баз places.sqlite и Brief\n"+
                   "Ctrl+Right => Информация для решения проблем и плагины\n"+
                   "Right        => About:Config";
                   
//Настройки Mozilla FireFox
function lbMouse(){
try{ openPreferences(); } catch(e) { openOptionsDialog(); }
};

//Quick About:Config открытие в новом табе
function rbMouse(){
getBrowser (). selectedTab = getBrowser (). addTab ("about:config")
};

//Vacuum очистка баз places.sqlite и Brief
function mbMouse(){
var dBF = " и Brief";
if (typeof gBrief == 'undefined') dBF = "";
var res=custombuttons. confirmBox ("Vacuum очистка places.sqlite" + dBF, "Очистить базы?", "Да", "Нет");
if (res){
     Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
     if (!dBF.length) window.openDialog('chrome://brief/content/compacting-progress.xul', 'Brief','chrome,titlebar,centerscreen');
     custombuttons. alertBox ("Vacuum очистка places.sqlite" + dBF, "Базы очищены")
        }
};
//Информация для решения проблем и плагины
function cKeyrbMouse(){
//Включаем видимость путей для плагинов, те about:plugins
Application.prefs.setValue("plugin.expose_full_path", true);
getBrowser (). selectedTab = getBrowser (). addTab ("about:plugins");
getBrowser (). selectedTab = getBrowser (). addTab ("about:support");
};

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();
    }
    else if(event.button == 2 && event.ctrlKey) {
// Действие при клике ctrl+ПКМ
cKeyrbMouse();
    }
};
this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};

Отредактировано Indomito (14-02-2011 00:08:34)


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

Отсутствует

 

№3507-03-2011 20:15:45

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

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

Highlight( Firefox 3.6 )
Выделяет одинаковые слова или фразы на открытой странице. Выделяемые слова или фразы надо выделить на странице или ввести в поле ввода каторое появляется после нажатие кнопки.

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

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EHighlight%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsSAAALEgHS3X78AAACZ0lEQVQokQXBW2/TSBQA4HPmYjtOnNiJoTHKaitUVMEDSLzww9H+DPZhhQQtW7Uh3ZKbXYfEl5nMnLPfh+Vfn7kq1eUU/LMq8uiyYR4hLAHoC32s0Sq43otZzkQoYiZFZUmbtcgA3R6mUsoD0VnACsAf+W2NRiFtpZQEJIRjUOAM2A6lQ+0YwZ1GjAMIYwDW3GtoItum/hihbDhkZOVvvvof3/Xlexw/cQ9uO2atVLED8Ae+3fH2ZXPhDtQHycoFU8WKrWHTM50ZLJAnzyAY0AOQQKFBIRF6z0TOMwlWp3hsJ5mkoT4lmGkpLQhnqwEAhWKgvHRWN1Iqi+6nd0NQ5WrZ3t4O3yWSHzhKZHZmuMDyAYAqGf7bfMn0pzuRXjT++9+8mIHSs1zPC5zkDB0PMic8iNTJHJhCmqb8RyLCmRCpgnwMWQLqqesPp04bI9HEJ+PvjI7jZfvM7G+i5fL35ipbuaaxtKjv0mGDqi/LZrs5N8+EO9cdHLeoolO3B/YHDMp+d2FOh24QkqtrPY5ZcbHgpj0PCts7yS+MNf48c7Zgpkk4z50Zu9BZG4ujDm6lCtSmqjabbbYuz9WvLJyfwIym+rFaE/ttpp5265nbllswAfzzbdf1iWIAL5AQvEAGIAJi9AREyB7AA3tyBMwskASyaqP4GCdtFLeDUYhRVQMFQV0HRAQ6wENkRuffdTOcTNMBJCGox/X6/ufq1f7FsXrk4fzXQ9tbdf/fisgJK++XyxBe3zzs3Tx6XPEwtOr6w4c0Tf+8vuqO02z+Jh6ZST7rspaYRD5PJ7NFcT1JimJ6qQwvXqX/A9G+ibxhNxZGAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.%20clickHandler%20%3D%20function%20%28event%29%0A%7B%0A%09if%20%28%28event.%20button%20%3D%3D%202%29%20%26%26%20event.%20ctrlKey%29%0A%09%09this.%20mObj.%20setPri%20%28%29%3B%0A%09else%0A%09%09this.%20mObj.%20setSub%20%28%29%3B%0A%09if%20%28event.%20ctrlKey%29%0A%09%7B%0A%09%09this.%20showPopup%20%28this%29%3B%0A%09%09return%3B%0A%09%7D%0A%09if%20%28event.%20button%20%3D%3D%200%29%0A%09%7B%0A%09this.%20innerHTML%20%3D%20this.%20innerHTML%20%7C%7C%20content.%20document.%20body.%20innerHTML%3B%0A%09this.%20searchPrompt%28%27%27%2Cfalse%29%3B%09%09%0A%09%7D%0A%09else%20if%20%28event.%20button%20%3D%3D%201%29%0A%09%7B%0A%09this.%20showPopup%20%28this%29%3B%09%0A%09%7D%0A%09else%0A%09%7B%0A%09%09content.%20document.%20body.%20innerHTML%20%3D%20this.%20innerHTML%20%7C%7C%20content.%20document.%20body.%20innerHTML%3B%0A%09%09this.%20innerHTML%20%3D%20%22%22%3B%0A%09%7D%0A%7D%3B%0Athis.showPopup%20%3D%20function%28node%29%0A%7B%0A%09var%20popup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%09var%20x%20%3D%20node.boxObject.x%3B%0A%09var%20y%20%3D%20node.boxObject.y%20+%20node.boxObject.height%3B%0A%09document.popupNode%20%3D%20node%3B%0A%09popup.showPopup%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%3B%0Athis.%20doHighlight%20%3D%20function%20%28bodyText%2C%20searchTerm%2C%20highlightStartTag%2C%20highlightEndTag%29%20%0A%7B%0A%09if%20%28%28%21highlightStartTag%29%20%7C%7C%20%28%21highlightEndTag%29%29%0A%09%7B%0A%09%09highlightStartTag%20%3D%20%22%3Cfont%20style%3D%27background-color%3A%22%20+%20this.%20highlightColor%20+%20%22%3B%27%3E%22%3B%0A%09%09highlightEndTag%20%3D%20%22%3C/font%3E%22%3B%0A%09%7D%0A%09var%20newText%20%3D%20%22%22%3B%0A%09var%20i%20%3D%20-1%3B%0A%09var%20lcSearchTerm%20%3D%20searchTerm.toLowerCase%28%29%3B%0A%09var%20lcBodyText%20%3D%20bodyText.toLowerCase%28%29%3B%0A%09while%20%28bodyText.length%20%3E%200%29%0A%09%7B%0A%09%09i%20%3D%20lcBodyText.indexOf%28lcSearchTerm%2C%20i+1%29%3B%0A%09%09if%20%28i%20%3C%200%29%0A%09%09%7B%0A%09%09%09newText%20+%3D%20bodyText%3B%0A%09%09%09bodyText%20%3D%20%22%22%3B%0A%09%09%7D%0A%09%09else%0A%09%09%7B%0A%09%09%09if%20%28bodyText.lastIndexOf%28%22%3E%22%2C%20i%29%20%3E%3D%20bodyText.lastIndexOf%28%22%3C%22%2C%20i%29%29%0A%09%09%09%7B%0A%09%09%09%09if%20%28lcBodyText.lastIndexOf%28%22/script%3E%22%2C%20i%29%20%3E%3D%20lcBodyText.lastIndexOf%28%22%3Cscript%22%2C%20i%29%29%0A%09%09%09%09%7B%0A%09%09%09%09%09newText%20+%3D%20bodyText.substring%280%2C%20i%29%20+%20highlightStartTag%20+%20bodyText.substr%28i%2C%20searchTerm.length%29%20+%20highlightEndTag%3B%0A%09%09%09%09%09bodyText%20%3D%20bodyText.substr%28i%20+%20searchTerm.length%29%3B%0A%09%09%09%09%09lcBodyText%20%3D%20bodyText.toLowerCase%28%29%3B%0A%09%09%09%09%09i%20%3D%20-1%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%09return%20newText%3B%0A%7D%0Athis.%20highlightSearchTerms%20%3D%20function%20%28searchText%2C%20treatAsPhrase%2C%20warnOnFailure%2C%20highlightStartTag%2C%20highlightEndTag%29%0A%7B%0A%09if%20%28treatAsPhrase%29%0A%09%7B%0A%09%09searchArray%20%3D%20%5BsearchText%5D%3B%0A%09%7D%0A%09else%0A%09%7B%0A%09%09searchArray%20%3D%20searchText.split%28%22%20%22%29%3B%0A%09%7D%0A%09if%20%28%21content.document.body%20%7C%7C%20typeof%28content.document.body.innerHTML%29%20%3D%3D%20%22undefined%22%29%0A%09%7B%0A%09%09if%20%28warnOnFailure%29%0A%09%09%7B%0A%09%09%09alert%28%22The%20text%20of%20this%20page%20is%20not%20available.%20Highlighting%20will%20not%20work.%22%29%3B%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%0A%09var%20bodyText%20%3D%20content.document.body.innerHTML%3B%0A%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%20searchArray.length%3B%20i++%29%0A%09%7B%0A%09%09bodyText%20%3D%20this.%20doHighlight%28bodyText%2C%20searchArray%5Bi%5D%2C%20highlightStartTag%2C%20highlightEndTag%29%3B%0A%09%7D%0A%09content.document.body.innerHTML%20%3D%20bodyText%3B%0A%09return%20true%3B%0A%7D%0Athis.%20searchPrompt%20%3D%20function%20%28%29%0A%7B%0A%20%20%20%20var%20searchText%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%20%7C%7C%20prompt%28%27Highlight%3A%27%2C%27%27%29%3B%0A%20%20%20%20searchText%20%26%26%20this.%20highlightSearchTerms%28searchText%2C%20true%29%3B%0A%7D%0A%0Athis.%20changeColor%20%3D%20function%20%28menuitem%2C%20event%29%0A%7B%0A%09var%20topmenuitem%20%3D%20document.%20getElementById%20%28document.%20popupNode.%20firstId%29%3B%0A%09topmenuitem.%20setAttribute%20%28%22label%22%2C%20%22*%20%22%20+%20menuitem.%20getAttribute%20%28%22label%22%29%29%3B%0A%09document.%20popupNode.%20highlightColor%20%3D%20menuitem.%20getAttribute%20%28%22value%22%29%3B%0A%7D%3B%0A%0Avar%20colors%20%3D%0A%7B%0A%09%22Yellow%22%3A%20%22yellow%22%2C%20%22Green%22%3A%20%22green%22%2C%20%22Blue%22%3A%20%22blue%22%2C%20%22Red%22%3A%20%22red%22%0A%7D%3B%0Avar%20mItem%20%3D%20%7B%7D%3B%0Adocument.%20getElementById%20%28CB2const.%20sCBCtxtMenu%29.%20setAttribute%20%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0Avar%20mObj%20%3D%20custombuttons.%20getCbContextObj%20%28this%29%3B%0Athis.%20mObj%20%3D%20mObj%3B%0AmObj.%20setSub%20%28%29%3B%0Avar%20mItem%20%3D%20new%20mObj.%20getItem%20%28%29%3B%0AmItem.%20id%20%3D%20%22topmenuitem%22%3B%0AmItem.%20label%20%3D%20%22*%20Yellow%22%3B%0AmItem.%20value%20%3D%20%22yellow%22%3B%0AmItem%20%3D%20mObj.%20insertBefore%20%28mItem%2C%20mObj.%20oMenu.%20lastChild%29%3B%0Athis.%20firstId%20%3D%20mItem.%20id%3B%0AmItem%20%3D%20new%20mObj.%20getItem%20%28%29%3B%0AmItem%20%3D%20mObj.%20insertBefore%20%28mItem%2C%20mObj.%20oMenu.%20lastChild%29%3B%0Afor%20%28var%20i%20in%20colors%29%0A%7B%0A%09var%20mItem%20%3D%20new%20mObj.%20getItem%20%28%29%3B%0A%09mItem.%20id%20%3D%20i%3B%0A%09mItem.%20label%20%3D%20i%3B%0A%09mItem.%20value%20%3D%20colors%20%5Bi%5D%3B%0A%09mItem.%20oncommand%20%3D%20%22document.%20popupNode.%20changeColor%20%28this%2C%20event%29%3B%22%0A%09mItem%20%3D%20mObj.%20insertBefore%20%28mItem%2C%20mObj.%20oMenu.%20lastChild%29%3B%0A%7D%0AmItem%20%3D%20new%20mObj.%20getItem%20%28%29%3B%0AmObj.%20insertBefore%20%28mItem%2C%20mObj.%20oMenu.%20lastChild%29%3B%0A%0Athis.%20innerHTML%20%3D%20%22%22%3B%0Athis.%20highlightColor%20%3D%20%22yellow%22%3B%0Athis.%20setAttribute%20%28%27onclick%27%2C%20%27this.clickHandler%28event%29%27%29%3B%0Athis.setAttribute%28%22context%22%2C%20%22%22%29%3B%0A%0Athis.tooltipText%20%3D%20%22L%3DHighlight%5CnM%3DSelect%20color%20+%20CB%20menu%20%5CnR%3DRemove%20highlight%20%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

this. clickHandler = function (event)
{
    if ((event. button == 2) && event. ctrlKey)
        this. mObj. setPri ();
    else
        this. mObj. setSub ();
    if (event. ctrlKey)
    {
        this. showPopup (this);
        return;
    }
    if (event. button == 0)
    {
    this. innerHTML = this. innerHTML || content. document. body. innerHTML;
    this. searchPrompt('',false);        
    }
    else if (event. button == 1)
    {
    this. showPopup (this);    
    }
    else
    {
        content. document. body. innerHTML = this. innerHTML || content. document. body. innerHTML;
        this. innerHTML = "";
    }
};
this.showPopup = function(node)
{
    var popup = document.getElementById("custombuttons-contextpopup");
    var x = node.boxObject.x;
    var y = node.boxObject.y + node.boxObject.height;
    document.popupNode = node;
    popup.showPopup(node, x, y, "popup", null, null);
};
this. doHighlight = function (bodyText, searchTerm, highlightStartTag, highlightEndTag) 
{
    if ((!highlightStartTag) || (!highlightEndTag))
    {
        highlightStartTag = "<font style='background-color:" + this. highlightColor + ";'>";
        highlightEndTag = "</font>";
    }
    var newText = "";
    var i = -1;
    var lcSearchTerm = searchTerm.toLowerCase();
    var lcBodyText = bodyText.toLowerCase();
    while (bodyText.length > 0)
    {
        i = lcBodyText.indexOf(lcSearchTerm, i+1);
        if (i < 0)
        {
            newText += bodyText;
            bodyText = "";
        }
        else
        {
            if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i))
            {
                if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i))
                {
                    newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
                    bodyText = bodyText.substr(i + searchTerm.length);
                    lcBodyText = bodyText.toLowerCase();
                    i = -1;
                }
            }
        }
    }
    return newText;
}
this. highlightSearchTerms = function (searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
    if (treatAsPhrase)
    {
        searchArray = [searchText];
    }
    else
    {
        searchArray = searchText.split(" ");
    }
    if (!content.document.body || typeof(content.document.body.innerHTML) == "undefined")
    {
        if (warnOnFailure)
        {
            alert("The text of this page is not available. Highlighting will not work.");
        }
        return false;
    }
    var bodyText = content.document.body.innerHTML;
    for (var i = 0; i < searchArray.length; i++)
    {
        bodyText = this. doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
    }
    content.document.body.innerHTML = bodyText;
    return true;
}
this. searchPrompt = function ()
{
    var searchText = document.commandDispatcher.focusedWindow.getSelection().toString() || prompt('Highlight:','');
    searchText && this. highlightSearchTerms(searchText, true);
}

this. changeColor = function (menuitem, event)
{
    var topmenuitem = document. getElementById (document. popupNode. firstId);
    topmenuitem. setAttribute ("label", "* " + menuitem. getAttribute ("label"));
    document. popupNode. highlightColor = menuitem. getAttribute ("value");
};

var colors =
{
    "Yellow": "yellow", "Green": "green", "Blue": "blue", "Red": "red"
};
var mItem = {};
document. getElementById (CB2const. sCBCtxtMenu). setAttribute ("oncommand", "event.stopPropagation()");
var mObj = custombuttons. getCbContextObj (this);
this. mObj = mObj;
mObj. setSub ();
var mItem = new mObj. getItem ();
mItem. id = "topmenuitem";
mItem. label = "* Yellow";
mItem. value = "yellow";
mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild);
this. firstId = mItem. id;
mItem = new mObj. getItem ();
mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild);
for (var i in colors)
{
    var mItem = new mObj. getItem ();
    mItem. id = i;
    mItem. label = i;
    mItem. value = colors [i];
    mItem. oncommand = "document. popupNode. changeColor (this, event);"
    mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild);
}
mItem = new mObj. getItem ();
mObj. insertBefore (mItem, mObj. oMenu. lastChild);

this. innerHTML = "";
this. highlightColor = "yellow";
this. setAttribute ('onclick', 'this.clickHandler(event)');
this.setAttribute("context", "");

this.tooltipText = "L=Highlight\nM=Select color + CB menu \nR=Remove highlight ";

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

Отсутствует

 

№3611-03-2011 22:23:28

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

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

Compact Menu( Firefox 4 + ) от 06.04.2016.
Удаляет панель меню и стандартную кнопку меню, показывает главное меню в виде выпадающего списка. Ненужные пункты меню можно удалить. Пример: если хотите удалить пункт Правка нужно удалить в из вкладки Код "edit-menu",

ЛКМ => показать меню.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0Aif%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%7D%0Avar%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Avar%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29.filter%28id%3D%3E%20%7Breturn%20%28id%20%21%3D%3D%20null%29%7D%29%3B%0Avar%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0Avar%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0Afunction%20appendMenus%28parent%29%20%7B%0A%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09menu._placesView.uninit%28%29%3B%0A%09%09delete%20menu._placesView%3B%0A%09%7D%0A%7D%0Athis.textContent%20%3D%20%22%22%3B%0Avar%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Apopup.position%20%3D%20%22after_start%22%3B%0Apopup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0Apopup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0Apopup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0Apopup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09appendMenus%28menubar%29%3B%0A%7D%2C%20false%29%3B%0A%0AappendMenus%28popup%29%3B%0Apopup.openPopup%28this%29%3B%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Автор кнопки: Dumby


Тут версия для seamonkey-nightly

Отредактировано bunda1 (30-05-2014 21:30:03)

Отсутствует

 

№3712-03-2011 14:47:28

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

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

Stf( Firefox, SeaMonkey )
Сохраняет выделенный текст или весь текст на странице как txt файл. При сохранение текста к названию файла добавляется текущее время так удобней сохранять несколько кусков теста из одной страницы, не надо вручную менять название файла.

ЛКМ => Сохранить выделенный текст или весь текст на странице как txt файл.


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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EStf%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFsAAABYAAAAFwAAAACISi/ml2RK9ZdjSfWUYEX1jlpA9ZdjSfWXY0r1l2NL9ZdjS/WXY0v1l2NL9ZdjS/WXY0v1lWFI9J5mSvljMR7lAAAAPgIBAQDBhmP/6cOL/+Kxcf/Fo3L/kHdV/7GNXf/esHL/3q5t/9ysbP/drWz/3a1t/92tbf/erm7/3bBz/vLKlP+FUTrtAAAAPwMCAgC4f1791qtt/tOkZv7e1Mn+jIiE/lZMPv6djHX+4860/uvWu/7p1Ln+6tS4/uvVuv7nz7L+yphV/eK1fv9/TTjsAAAAPwMCAgC5gF//3LR6/9ixff//////29nU/5CRlP9SU1X/paGd//Xr4P//8OP/+uzc//zs2v/57uH/0aRm/ue+iv+ATTftAAAAPwMCAgC5gF//4LiC/9myfv///v3/8eXW/9LPy/+Li4z/RkI7/5OIef/l077/9N/I//Texv/36dn/06Zs/urBkP9/TDbtAAAAPwMCAgC5gGD/5sab/9u1hP////7/+vPp//Pp3f/Iwbr/foCE/0VERP+Lg3r/4NG///rm0P/369v/1Klx/uvFlv9/TDXtAAAAPwMCAgC7gmP/7dS1/926jf/+/Pv/9uzg//jt4P/06dv/u7m3/5l2QP90ShH/fXVv/+DPvP/57d3/1ax0/u7JnP9/SzTtAAAAPwMCAgC8hWj/8Nu//967j////////////////v//////9vTz/9+8gP/GgRL/ckwc/4eBff/n3tH/2bB5/u/Opf9/TDbtAAAAPwMCAgC9hmr/9OPM/9qzgv/p07T/6tO2/+rTtf/p0rT/7de7/97GqP/SoVH/x4IT/2xMJP+Admr/zKRw/vXUrf9/TTjtAAAAPwMCAgC+iW7/9ufT/+rRtP/lyKX/5Mim/+THpv/kx6T/4sWh/+rLp/+9pIf/vZJP/8WCGf9iPhH/fW9c/unNrP+CTzrtAAAAPwMCAgC/inD/+OrX//Ddyv/559X//OrV//ro0//659L/+ufS//zo0v/m1cL/lod4/7iPT//Ihx//Y0ck/pSLg/95STPtAAAAPwICAgC/i3L/+Ova//fk0P/Ct6v/o52W/6uknP+qo5v/q6Sc/6qjm/+1raT/rqij/2ZhX/+wj1n/w4EZ/m1QLv89JB/zAAAASgEBAQDAjnb9+O3e//rn1P+jnpn/lZib/6eoqf+rrK7/srK0/7y9vv+0trj/oaGi/6Cho/9eXF7/w59n/8qFF/9KKgP9AAAAhQIBAAW+h2z/+PLk/P/15fusqKP+oaKi/7Kysf+3trb/vby8/8nJyf+3t7f/cnFx/6Wlpf+fmpL+dXVx+66UYfyuhUP/Ligj1QAAAFqBPSKJ2KWK//PNt/+klo78oKKk+7Cvr/u1tLX7vLu7+8jIyPu3t7b7dHNz+52ho/vHrJz+y6WP/51vX/61jVvuxo0s/z0nCsERBgMDKw8ERh4AAEFjWFS9sLKz/62srfyzs7T/urm5/8HCwv/AwMD/sbGx/cDDw/9GNC7SKgsAaSgNAkMwKSQtq4VIsks0EmcBAQACAQEBAgAAAAAjIyNKOjo6fjU1NXM2NjZ1NjY2dTY2NnU3Nzd1Ozs7czw8PH0UFBQ4AAAAAAEBAQEAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%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%20if%20%28%20e.button%20%3D%3D%200%20%29%20saveSelectionToTxt%28%29%3B%20//%20%u041B%u041A%u041C%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%20.....................%0Afunction%20saveSelectionToTxt%28%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0451%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20....%0A%20%20%20%20%20var%20all%20%3D%20%21getSelect%28%29%3B%0A%20%20%20%20%20if%20%28%20all%20%29%20document.getElementById%28%22cmd_selectAll%22%29.doCommand%28%29%3B%20%0A%0A%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20var%20docTite%20%3D%20getDocTitle%28%29%3B%0A%0A%20%20%20%20%20if%20%28%20%21sel%20%7C%7C%20%21docTite%29%20return%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0434%u043B%u044F%20%u0444%u0430%u0439%u043B%u0430%20...%0A%20%20%20%20%20var%20time%20%3D%20new%20Date%28%29.toLocaleFormat%28%22%25H%3A%25M%3A%25S%22%29%3B%0A%20%20%20%20%20var%20fileTitle%20%3D%20docTite%20+%20%27%20%20%27%20+%20time.replace%28/%3A/g%2C%20%22%u05C3%22%29%3B%0A%0A%20%20%20%20%20//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20....%0A%20%20%20%20%20saveURL%28%22data%3Atext/plain%2C%22%20+%20encodeURIComponent%28%20content.location.href%20+%20%28%22%5Cr%5Cn%5Cr%5Cn%22%20+%20getSelect%28%29%20%29%29%2C%20fileTitle%20+%20%22.txt%22%2C%20null%2C%20false%2C%20false%2C%20null%2C%20content.document%29%3B%0A%20%20%20%20%20if%20%28%20all%20%29%20goDoCommand%28%22cmd_selectNone%22%29%3B%20%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%20%u0443%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0435%u0442%0A%20%20%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0435%u0441%u043B%u0438%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u043D%u0435%u0442%20...................................................%20*/%0Afunction%20getDocTitle%28%29%20%7B%0A%20%20%20%20%20var%20protocol%20%3D%20content.location.protocol%3B%0A%20%20%20%20%20if%20%28%20%5B%22about%3A%22%2C%20%22chrome%3A%22%2C%20%22jar%3A%22%2C%20%22data%3A%22%5D.indexOf%28%20protocol%20%29%20%21%3D%20-1%20%29%20return%20false%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20docTitle%20%3D%20content.document.title%20%7C%7C%20content.document.domain%20%7C%7C%20gBrowser.mCurrentTab.label%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0435%u0434%u043E%u043F%u0443%u0441%u0442%u0438%u043C%u044B%u0435%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%0A%20%20%20%20%20%20%20%20%20%20var%20docTitle%20%3D%20docTitle.replace%28/%5B%3A.%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%22%20%22%29%0A%20%20%20%20%20%20%20%20%20%20var%20docTitle%20%3D%20docTitle.replace%28/%5Cs%5Cs+/g%2C%20%22%20%22%29%3B%20%0A%0A%20%20%20%20%20%20%20%20%20%20return%20docTitle.substring%280%2C%2050%29%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20%20%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20..........................................*/%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%20%20%20%20var%20anchor%20%3D%20%28selection.anchorNode%20%21%3D%3D%20null%29%3F%20selection.anchorNode%3A%20false%3B%0A%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%27PRE%27%20....%0A%20%20%20%20if%20%28%20anchor%20%26%26%20anchor.parentNode.tagName%20%3D%3D%20%27PRE%27%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20var%20node%20%3D%20selection.focusNode%3B%0A%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20selection.anchorOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20endPos%20%3D%20selection.focusOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20node.data.substring%28startPos%2C%20endPos%29%3B%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0438%u0441%u043F%u0440%u0430%u0432%u043B%u044F%u0435%u043C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20%u043F%u0435%u0440%u0435%u043D%u043E%u0441%u043E%u043C%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u043E%u0432%u0443%u044E%20%u0441%u0442%u0440%u043E%u043A%u0443%20%u0432%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u043C%20win%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0435%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%21%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000D%5Cu000D%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0435%u0435%20%u0432%u0440%u0435%u043C%u044F%20.................................................................%0Afunction%20getTime%28%29%20%7B%0A%20%20%20var%20now%20%3D%20new%20Date%28%29%3B%0A%20%20%20return%20now.toLocaleFormat%28%22%25H%3A%25M%3A%25S%22%29%3B%0A%7D%3B%0A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20............................................................................%0Athis.tooltipText%20%3D%20%22Stf%20%5Cn%u041B%3A%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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


// Сохранить выделенный текст или весь текст на странице как txt файл .....................
function saveSelectionToTxt() {
     
     // выделить всё если текст не выделен ....
     var all = !getSelect();
     if ( all ) document.getElementById("cmd_selectAll").doCommand(); 

     var sel = getSelect();
     var docTite = getDocTitle();

     if ( !sel || !docTite) return;
      
     // создать название для файла ...
     var time = new Date().toLocaleFormat("%H:%M:%S");
     var fileTitle = docTite + '  ' + time.replace(/:/g, "׃");

     // сохранить ....
     saveURL("data:text/plain," + encodeURIComponent( content.location.href + ("\r\n\r\n" + getSelect() )), fileTitle + ".txt", null, false, false, null, content.document);
     if ( all ) goDoCommand("cmd_selectNone"); 
};



/* Получить заголовк страницы или название домена если заголовка у страницы нет
   или название вкладки если домена нет ................................................... */
function getDocTitle() {
     var protocol = content.location.protocol;
     if ( ["about:", "chrome:", "jar:", "data:"].indexOf( protocol ) != -1 ) return false;  
          var docTitle = content.document.title || content.document.domain || gBrowser.mCurrentTab.label;       
          // заменить недопустимые символы и удалить лишние пробелы 
          var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ")
          var docTitle = docTitle.replace(/\s\s+/g, " "); 

          return docTitle.substring(0, 50);
};



/* Получить выделенный текст из страницы или текстового поля,
   если текст не выделен  функция отдаст 'false' ..........................................*/
function getSelect() {
    // выделенный текст из страницы ....
    var selection = document.commandDispatcher.focusedWindow.getSelection();
    var anchor = (selection.anchorNode !== null)? selection.anchorNode: false;

    // выделенный текст из 'PRE' ....
    if ( anchor && anchor.parentNode.tagName == 'PRE' ) { 
         var node = selection.focusNode;
         var startPos = selection.anchorOffset;
         var endPos = selection.focusOffset;
         var selection = node.data.substring(startPos, endPos); 
         }
    // выделенный текст из текстового поля ....
    if ( selection.toString().length == 0 ) {
         var theBox = document.commandDispatcher.focusedElement;
         if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { 
              var startPos = theBox.selectionStart;
          var endPos = theBox.selectionEnd;
          var selection = theBox.value.substring(startPos, endPos);  
              }
         }
    // исправляем проблему с переносом текста новую строку в стандартном win блокноте ....
    if ( selection.toString().length !== 0 ) {
         var selection = selection.toString();
         var selection = selection.replace(/\u000A/g, "\u000D\u000A");
         var selection = selection.replace(/\u000D\u000D\u000A/g, "\u000D\u000A");     
         }
    return ( selection == '')? false: selection;
};



// Получить текущее время .................................................................
function getTime() {
   var now = new Date();
   return now.toLocaleFormat("%H:%M:%S");
};


                    
// Подсказка кнопки ............................................................................
this.tooltipText = "Stf \nЛ: Сохранить выделенный текст или весь текст на странице как txt файл";


Спасибо Dumby и Infocatcher за помощь в исправление ошибок в кнопке.

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

Отсутствует

 

№3827-03-2011 19:47:07

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

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

Управление отсылкой Referer'ов(Firefox)
Управляет отсылкой заголовка Referer
ЛКМ переключает значения у параметра network.http.sendRefererHeader:
- Никогда не посылать Referer
- Посылать Referer при клике на ссылке
- Посылать Referer при клике на ссылке или загрузке изображений
!!! Отключение посылки Referer может вызвать проблемы в работе некоторых сайтов.
Для посайтовой настройки лучше использовать расширение RefControl (иконки взяты как раз из него)

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

Выделить код

Код:

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%3EToggle%20Referer%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAfklEQVR4nGL4z0AZBAgg4hQxgAk4RpYDCCCiDYABdEMAAohsA2CGAAQQyQYgGwSSAwgggn4kZABAAOH1I4qhOAwACCCCfiTkAoAAIqiAkDxAAFFsAEAAEW0ANgySAwggogzABwECiGIDAAKIYgMAAoigHwlBgAAiQgl+CBBgACTrMes8De/4AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27network.http.sendRefererHeader%27%3B%0Athis.setState%3Dfunction%28%29%7B%0A%09switch%28this.PS.getIntPref%28this.pref%29%29%0A%09%7B%0A%09case%200%3A%20%0A%09%09this.image%3D%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAwUlEQVR4nGL4z0AZBAggOAXBOBQxgAk4RlYPEEBoBmA3BKwJBtDUAgQQimNwGQI3AEkNA1QdQABh+AibIajOZoCaBVEDEEBgBQ0NDf9hGLshqJqRDQAIILgBMIBpCKZmZAMAAgirAVgNQQMwAwACCMMA7KGN2wCAAMJuAAleAAggTAMIBCJqgvrPABBAqAYgKYSEA+EoBggghAFoTsU0ALshAAGEM56xG4BpCEAAoQgiJyjcBqBmPoAAwqmEWAgQYADCy0D6wdEYNwAAAABJRU5ErkJggg%3D%3D%27%3B%0A%09%09this.tooltipText%3D%20%27%u041D%u0438%u043A%u043E%u0433%u0434%u0430%20%u043D%u0435%20%u043F%u043E%u0441%u044B%u043B%u0430%u0442%u044C%20Referer%27%3B%0A%09%09break%3B%0A%09case%201%3A%0A%09%09this.image%3D%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAj0lEQVR4nGL4z0AZBAgg4hQxgAk4RpYDCCCiDYABdEMAAohsA2CGAAQQyQYgGwSSAwggsIKGhob/yJgUAwACCG4ADCAbguJcHAYABBBOA5Bdgs8AgADCMADZIGIMAAggig0ACCCiDcCGQXIAAUSUAfggQABRbABAAFFsAEAAYU1IuBIUNggQQEQowQ8BAgwAGfZda0OWZtsAAAAASUVORK5CYII%3D%27%3B%0A%09%09this.tooltipText%3D%20%27%u041F%u043E%u0441%u044B%u043B%u0430%u0442%u044C%20Referer%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u043D%u0430%20%u0441%u0441%u044B%u043B%u043A%u0435%27%3B%0A%09%09break%3B%0A%09case%202%3A%0A%09%09this.image%3D%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAfklEQVR4nGL4z0AZBAgg4hQxgAk4RpYDCCCiDYABdEMAAohsA2CGAAQQyQYgGwSSAwgggn4kZABAAOH1I4qhOAwACCCCfiTkAoAAIqiAkDxAAFFsAEAAEW0ANgySAwggogzABwECiGIDAAKIYgMAAoigHwlBgAAiQgl+CBBgACTrMes8De/4AAAAAElFTkSuQmCC%27%3B%0A%09%09this.tooltipText%3D%20%27%u041F%u043E%u0441%u044B%u043B%u0430%u0442%u044C%20Referer%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u043D%u0430%20%u0441%u0441%u044B%u043B%u043A%u0435%20%u0438%u043B%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0435%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0439%27%3B%0A%09%20%09break%3B%0A%09%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%200%3A%20this.PS.setIntPref%28this.pref%2C2%29%3Bbreak%3B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%202%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

switch(this.PS.getIntPref(this.pref)){
    case 0: this.PS.setIntPref(this.pref,2);break;
    case 1: this.PS.setIntPref(this.pref,0);break;
    case 2: this.PS.setIntPref(this.pref,1);break;
}

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

Выделить код

Код:

this.pref='network.http.sendRefererHeader';
this.setState=function(){
    switch(this.PS.getIntPref(this.pref))
    {
    case 0: 
        this.image= 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAwUlEQVR4nGL4z0AZBAggOAXBOBQxgAk4RlYPEEBoBmA3BKwJBtDUAgQQimNwGQI3AEkNA1QdQABh+AibIajOZoCaBVEDEEBgBQ0NDf9hGLshqJqRDQAIILgBMIBpCKZmZAMAAgirAVgNQQMwAwACCMMA7KGN2wCAAMJuAAleAAggTAMIBCJqgvrPABBAqAYgKYSEA+EoBggghAFoTsU0ALshAAGEM56xG4BpCEAAoQgiJyjcBqBmPoAAwqmEWAgQYADCy0D6wdEYNwAAAABJRU5ErkJggg==';
        this.tooltipText= 'Никогда не посылать Referer';
        break;
    case 1:
        this.image= 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAj0lEQVR4nGL4z0AZBAgg4hQxgAk4RpYDCCCiDYABdEMAAohsA2CGAAQQyQYgGwSSAwggsIKGhob/yJgUAwACCG4ADCAbguJcHAYABBBOA5Bdgs8AgADCMADZIGIMAAggig0ACCCiDcCGQXIAAUSUAfggQABRbABAAFFsAEAAYU1IuBIUNggQQEQowQ8BAgwAGfZda0OWZtsAAAAASUVORK5CYII=';
        this.tooltipText= 'Посылать Referer при клике на ссылке';
        break;
    case 2:
        this.image= 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkDQtZPoQAAACBjSFJNAAB6JQAAgIMAAPQkAACEzwAAbV8AAOhqAAA8iwAAG1ep7YEWAAAAfklEQVR4nGL4z0AZBAgg4hQxgAk4RpYDCCCiDYABdEMAAohsA2CGAAQQyQYgGwSSAwgggn4kZABAAOH1I4qhOAwACCCCfiTkAoAAIqiAkDxAAFFsAEAAEW0ANgySAwggogzABwECiGIDAAKIYgMAAoigHwlBgAAiQgl+CBBgACTrMes8De/4AAAAAElFTkSuQmCC';
        this.tooltipText= 'Посылать Referer при клике на ссылке или загрузке изображений';
         break;
    }
}

this.PS=
 Components.classes['@mozilla.org/preferences-service;1']
 .getService(Components.interfaces.nsIPrefBranch);
this.ob={};
this.ob.observe=this.setState.bind(this);
this.PS.addObserver(this.pref,this.ob,false);
this.setState();

Отредактировано humnmind (16-12-2015 16:13:59)

Отсутствует

 

№3902-04-2011 22:29:28

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

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

Add-on's (Дополнения) (Firefox 4 — Firefox 19) Для более новых версий подойдёт альтернативный вариант.
Основано на кнопке Add-on's для Firefox 3. Автор исправленной версии для работы с Firefox 4: Anton.

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

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

Выделить код

Код:

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%3EAdd-on%27s%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACV0lEQVR4Xi3OT2ibZQDH8c/7msT1pZqOtlQ32ulaGJVuB0UvMiyRCbZCT14MHUIzcaCCFcZAGOiKIB3UkyCeBBU86EGYiPZanTIZwnTWScdqbdM/U/vHN1mS5jGHHD637w9+TOM1vKrTtPe8419z7njflrmWt2yb9ocpE0p4CaW2KTjVdtKgkqsnloZCMYyHQjgeHguD4YndoeBDwagZpzCKsfbmNIzjZZxF0aiS+Qd/TUJvRRjYzQcf2DPhotP6TOBJTOE5FIlVPG/NZEvRpq6Wpcp/dR1RXlcmz5pUasWOUalJDQ+3AOC83aGb/SF7TfCdMHCzJ5zYHwjKghXhwC1NXwvmBbOCgheVMI4iGSOas0MXXfWTdWU/WnBjc5kKUqpZkUGibkIFC1IdetSdwZXInB3HJS7bUNR3aCQbr67VaeAuKthGNxbxhVcccNiw8275LbZgw+dm/OUFn/h5falODjVUUUeEHfQKjrhg0OueEunUH3nGfY7akwjWvWnSjEdxG3U0UEOKCAnu4l58605Gzq4EOWRsqLWDFI22/bY6AlJ0ATHOCR6XlcgogCruRx6dgDo6BGvYQQY1cazfu3p9atUlxxT0YxnXcQ2/o4I8yvjSx+ZdsYI9ucjbNj2rx3UMY9O+ryy67bKGX3R42hEnjXnIIr4xJvE3LuH7WCqSw1HUsOAfq96QdU63j+SdUTbrBhLUHJTzg7Ki4ELsHhlNVJHBiIMOOatTnwSRYYeVHEMT2n3WMqoZizZ8pmm/BWKxLQXbHlCxjkfUDGs98yeqUluoAf8DkrzrAnZsWyMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%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%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%20%0Aconst%20Cb%20%3D%20custombuttons%3B%0A%20%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%20%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%20%0Aconst%20popupID%20%3D%20%22cbContext-extensionsButton%22%3B%0A%20%0Avar%20test%20%3D%20document.getElementById%28popupID%29%3B%0Aif%20%28test%29%20test.parentNode.removeChild%28test%29%3B%0A%20%0Avar%20main%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20cPopup%20%3D%20main.appendChild%28document.createElement%28%22menupopup%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%20%0Avar%20app%20%3D%20Cc%20%5B%22@mozilla.org/fuel/application%3B1%22%5D.%20getService%20%28Ci.%20fuelIApplication%29%3B%0Avar%20am%20%3D%20%7B%7D%3B%0ACu.%20import%20%28%22resource%3A//gre/modules/AddonManager.jsm%22%2C%20am%29%3B%0Aam.%20AddonManager.%20getAddonsByTypes%0A%28%0A%20%20%20%20%20%20%20%20%5B%22extension%22%5D%2C%0A%20%20%20%20%20%20%20%20function%20%28extensions%29%0A%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%20var%20e%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20extensions.%20length%3B%20i++%29%0A%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%20e%20%3D%20extensions%20%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%20var%20mi%20%3D%20%3Cmenuitem%20xmlns%3D%7Bxulns%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%7Be.%20name%20+%20%22%20%22%20+%20e.%20version%7D/%3E%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%20if%20%28e.%20iconURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi%20%5B%22@class%22%5D%20%3D%20%22menuitem-iconic%20bookmark-item%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi%20%5B%22@image%22%5D%20%3D%20e.%20iconURL%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%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.%20userDisabled%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi%20%5B%22@disabled%22%5D%20%3D%20%22true%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28e.%20optionsURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mi%20%5B%22@oncommand%22%5D%20%3D%20%22window.%20openDialog%20%28%27%22%20+%20e.%20optionsURL%20+%20%22%27%2C%20%27%27%2C%20%27chrome%2Cdialog%3D0%2Cresizable%2Ctitlebar%2Ctoolbar%2Ccenterscreen%27%29%3B%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cPopup.%20appendChild%20%28cbu.%20makeXML%20%28mi%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20arr%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%09for%20%28var%20j%20%3D%200%3B%20j%20%3C%20cPopup.%20childNodes.%20length%3B%20j++%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09arr%20%5Bj%5D%20%3D%20cPopup.%20childNodes%20%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20%09arr.%20sort%0A%20%20%20%20%20%20%20%20%09%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%09%09function%20%28a%2C%20b%2C%20c%2C%20d%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09%09%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09if%20%28a.%20nodeName%20%3D%3D%20%22menu%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09return%20-1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09else%20if%20%28b.%20nodeName%20%3D%3D%20%22menu%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09return%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09return%20a.%20getAttribute%20%28%22label%22%29.%20toLowerCase%20%28%29%20%3E%20b.%20getAttribute%20%28%22label%22%29.%20toLowerCase%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%09%09%7D%0A%20%20%20%20%20%20%20%20%09%29%3B%0A%20%20%20%20%20%20%20%20%09for%20%28var%20j%20%3D%200%3B%20j%20%3C%20arr.%20length%3B%20j++%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09cPopup.%20appendChild%20%28arr%20%5Bj%5D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%29%3B%0A%20%0AcloneCBcontext.makeMenu%28cPopup%29%3B%0Athis.setAttribute%28%22context%22%2C%20popupID%29%3B%0A%20%0Aif%20%28typeof%20Local_Install%20%21%3D%20%22object%22%29%20return%3B%0A%20%0Avar%20test%20%3D%20document.getElementById%28%22cbContext-extensions%22%29%3B%0Aif%20%28test%29%20test.parentNode.removeChild%28test%29%3B%0A%20%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%20%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%20%0Athis.setAttribute%28%22context%22%2C%20popup.id%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACV0lEQVR4Xi3OT2ibZQDH8c/7msT1pZqOtlQ32ulaGJVuB0UvMiyRCbZCT14MHUIzcaCCFcZAGOiKIB3UkyCeBBU86EGYiPZanTIZwnTWScdqbdM/U/vHN1mS5jGHHD637w9+TOM1vKrTtPe8419z7njflrmWt2yb9ocpE0p4CaW2KTjVdtKgkqsnloZCMYyHQjgeHguD4YndoeBDwagZpzCKsfbmNIzjZZxF0aiS+Qd/TUJvRRjYzQcf2DPhotP6TOBJTOE5FIlVPG/NZEvRpq6Wpcp/dR1RXlcmz5pUasWOUalJDQ+3AOC83aGb/SF7TfCdMHCzJ5zYHwjKghXhwC1NXwvmBbOCgheVMI4iGSOas0MXXfWTdWU/WnBjc5kKUqpZkUGibkIFC1IdetSdwZXInB3HJS7bUNR3aCQbr67VaeAuKthGNxbxhVcccNiw8275LbZgw+dm/OUFn/h5falODjVUUUeEHfQKjrhg0OueEunUH3nGfY7akwjWvWnSjEdxG3U0UEOKCAnu4l58605Gzq4EOWRsqLWDFI22/bY6AlJ0ATHOCR6XlcgogCruRx6dgDo6BGvYQQY1cazfu3p9atUlxxT0YxnXcQ2/o4I8yvjSx+ZdsYI9ucjbNj2rx3UMY9O+ryy67bKGX3R42hEnjXnIIr4xJvE3LuH7WCqSw1HUsOAfq96QdU63j+SdUTbrBhLUHJTzg7Ki4ELsHhlNVJHBiIMOOatTnwSRYYeVHEMT2n3WMqoZizZ8pmm/BWKxLQXbHlCxjkfUDGs98yeqUluoAf8DkrzrAnZsWyMAAAAASUVORK5CYII=

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

Выделить код

Код:

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;
 
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("menupopup"));
cPopup.id = popupID;
cPopup.setAttribute("oncommand", "event.stopPropagation(); document.popupNode.openPrefs(event);")
 
var app = Cc ["@mozilla.org/fuel/application;1"]. getService (Ci. fuelIApplication);
var am = {};
Cu. import ("resource://gre/modules/AddonManager.jsm", am);
am. AddonManager. getAddonsByTypes
(
        ["extension"],
        function (extensions)
        {
                var e;
                for (var i = 0; i < extensions. length; i++)
                {
                        e = extensions [i];
                        var mi = <menuitem xmlns={xulns}
                                           label={e. name + " " + e. version}/>;
                        if (e. iconURL)
                        {
                                mi ["@class"] = "menuitem-iconic bookmark-item";
                                mi ["@image"] = e. iconURL;
                        }
                        if (e. userDisabled)
                                mi ["@disabled"] = "true";
                        if (e. optionsURL)
                                mi ["@oncommand"] = "window. openDialog ('" + e. optionsURL + "', '', 'chrome,dialog=0,resizable,titlebar,toolbar,centerscreen');";
                        cPopup. appendChild (cbu. makeXML (mi));
                }
                var arr = [];
            for (var j = 0; j < cPopup. childNodes. length; j++)
                arr [j] = cPopup. childNodes [j];
            arr. sort
            (
                    function (a, b, c, d)
                    {
                        if (a. nodeName == "menu")
                            return -1;
                        else if (b. nodeName == "menu")
                            return 1;
                        return a. getAttribute ("label"). toLowerCase () > b. getAttribute ("label"). toLowerCase ();
                    }
            );
            for (var j = 0; j < arr. length; j++)
                cPopup. appendChild (arr [j]);
        }
);
 
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);


Добавлено 02-04-2011 22:39:48
FFolders (Папки Firefox) (Firefox 1 — Firefox 19). Более новая версия кнопки — здесь.
Автор: Anton.
Кнопка содержит выпадающее меню, через которое можно открыть папку с текущим профилем и папку установки 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%3EFFolders%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3GlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHja7ZZdTFNnGMf/5xxKW6CWjxap0vFaQQGxw+InCAJHEDK+0nasrQMpLZYC/fBwQAQCbhkytgluMToz5r4kWJ0yXYy6LOp0WRbGMp02tTFujCFxxDDmNjfDFnbBNsgull3MO/43z5P/8+b9v2/yu3gAsRUAaBpwOHlOuyWbGIwmIvQhCEpIEY1Qs6XeXajL1QOALocluSWbCWZFAQ+8oADgepIuh507+y+SWNwcD1AEwHprVb0FoAwAdlsdTitA3QTQbHVYrQCtB1DJGYwmgD4HQGab6YcAyCpn+mEAsp28mwfonwDIOL2WBRgRQIfY9FoWEMgAOqRSr2UBIQHoEIu5jgfESQBkjfaqnYA4E0AsX9XEAwDrcu/i7LZqnsRbEogmOTmF6MyO+ganjeTUVVl4zuW0W+oJ61InkQLeipl/AABi/zq4khSZ+QbOXEdYV52LIyWci6xSJ5N8thD/t+bkK//1oY9Ac7IFhBDyKDIMRtOf9za4gLQ3AOb1WU97Ajj9PLDMMOutUAFhfuBe66z3YwYoAFSk29LANf6N80xhIEQwwhAFggSsRhaKUAYndmM/PLiEm7hPSahEKp+yUy9SA9QNaoqOpYvpFtpD+5kgJp3hGA8zEhAdYAw4GOATKARlgrcF44EpgW2BnwkXCWuFF0QRohrRFbFS3Cz2B20I6g2mgm3BV0NSQ/olkZI9kocLnAvuSMul/tDSUG9YaZg/vDx8LMIVMSXrkivkxyI3RXoXOqJEUUcUrGJ0UefipMU3otuUCUrfY50xqTETpG9JuUqh8i09EGuIi477dtnx5Y3xbEJ4wmji2RXdSdtXZqqV6t8e/yr5o1X9mn0pzatta0rX5q3buF6zITE1Lk21cUn60ozlm9SZa7OysovZbZt35HTk9m45k3ct//snpAWawqeK2os9JV5tgG6NvvrJw6U+Q5ixyNS99WqZrHzrtiMVk5UZlh7ryPZ1tp7q72pya/scQmet68sdaVw/L2/oaPy1yblrrKWi9XZbWfvXz1ieHX+uvmO6s7sr5oXTL+Xt/aan9WXFK+f3P32AOug5pHsNvQOHzW/K3xp6Z09fdj919PKxjncLTsoHhk+dfL/9jPZs/Hl8cOvDcxdevdRyueLjvE80n5JB6RD1+YMvJq7dvX7HO+ob84/f+uH21LBoZOFo/Fj6Xf24417XxNHJwfsTP8t/yXhYM3Xo98Hp6XkW5lmYZ2GehX+yYOXtDgCYsxupZnYFgMk1H2c4k4m5eOoK+k+o8F5TEy5OmgDQfwBMZtCjN+4TcwAAACBjSFJNAABtqQAAc7QAAPq1AACAlQAAYy4AAOVvAAA3hQAAFbAnc1zwAAAC9ElEQVR42oyTu29bdRiGn9+5+Tjx8S1uajsQJ72AUkJoCl1AQpGQKlCLBKhiQVWHsjDAgJhYqi4V/0GFqiAkBoK6ICTEgIDUA23VirZpSRviOJETXxrbiVOf2Oficw5DsBS2Pts3vI8+fXo/EQQBffx6QV46fzQW/+Laexd+18jc+PZSd+wYG8NTuKZJu9UBn4sjhsu1ix/cVFW5orCP7tbW5IAh7v089yNhc4yzcp6l3DTHPzpDbXGVfH6Z8Mrt2TO7P/Hgq+/xfV75n2Du7VM3T59NMmP9woyqIilNVqpr7JRWiGQzKIkW75/c5M1Wk1phE8/yXpP64bvfHQpCEUcXEY0DR6LERxW86CAT977hyakpKrUGkhHmiZJm5N2ThA+mMHJDl6R+ePpckXhaR4tp+K6HVXdJZCYZnZog/PFnNKQUjgt3VjW2/AEyEwZex0a6cTUTTJ8rArOE4y6y6mHtONiJJCI7SMs2uZ+aYXW1xW65zPKGgtnukcwO4DkeezcwZ4EWstID16JRsfl7vs62UuJK7EOs3QLZ2jKPtiMMyW2GjQZ+x8Tr9f4TWDXWF28jjesUHYF+IsxYSiYe6Hyu3+eQ/CtdR/BH4mVeSlSwyg0eL+yA65p7ggZsLN0iefwdUtG3SKRVeicc3K6Mb7m0bcGCN8ppw2MqNsdgbIaH858S8uJ7G/h+HYDcGy/QvJWn+1QlbMgIVfDU9/EEHFP/YjjioG+u0bLn6QmF+IHoZQWgXHyArOlEskfZGtqlVimTSiromsDQJIwQENh4XSjXLQor/9CxHFrV0h0FoLm9TjSdI+iZPP9ijGbIpvmohB4ShDQBEgghcJ2AVqVN4WGJcdP6RNMQCkDXMhmffJ2eFyB1O6SeSyCCAN9xqC5WkAAPsLsB4fFXOaKkufr19T+r7aCoAAhJIjZyGB7f3aulDakEgMrwwdz+tjOf/43NxgY/rPkLACIIAq5fyQQ8I4V1uHC5Kvqz6L/z7JfPJtkfBvh3AFQgRt84GXxeAAAAAElFTkSuQmCC%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%20onclick%3D%22this.%20parentNode.%20handleClick%20%28event%29%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043F%u0430%u043F%u043A%u0443%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3D%22ProfD%22/%3E%0A%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043F%u0430%u043F%u043A%u0443%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438%20Firefox%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3D%22CurProcD%22/%3E%0A%20%20%20%20%20%20%3C/menupopup%3E%3B%0Athis.%20appendChild%20%28custombuttonsUtils.%20makeXML%20%28menu%29%29%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0A%20%0Athis.%20handleClick%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20var%20menuitem%20%3D%20event.%20target%3B%0A%20%20%20%20var%20value%20%3D%20menuitem.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20if%20%28event.%20button%20%3D%3D%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20file%20%3D%20Cc%20%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%20getService%20%28Ci.%20nsIProperties%29%3B%0A%20%20%20%20%20%20%20%20file%20%3D%20file.%20get%20%28value%2C%20Ci.%20nsIFile%29.%20QueryInterface%20%28Ci.%20nsILocalFile%29%3B%0A%20%20%20%20%20%20%20%20file.%20launch%20%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20this.%20open%20%3D%20false%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3GlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHja7ZZdTFNnGMf/5xxKW6CWjxap0vFaQQGxw+InCAJHEDK+0nasrQMpLZYC/fBwQAQCbhkytgluMToz5r4kWJ0yXYy6LOp0WRbGMp02tTFujCFxxDDmNjfDFnbBNsgull3MO/43z5P/8+b9v2/yu3gAsRUAaBpwOHlOuyWbGIwmIvQhCEpIEY1Qs6XeXajL1QOALocluSWbCWZFAQ+8oADgepIuh507+y+SWNwcD1AEwHprVb0FoAwAdlsdTitA3QTQbHVYrQCtB1DJGYwmgD4HQGab6YcAyCpn+mEAsp28mwfonwDIOL2WBRgRQIfY9FoWEMgAOqRSr2UBIQHoEIu5jgfESQBkjfaqnYA4E0AsX9XEAwDrcu/i7LZqnsRbEogmOTmF6MyO+ganjeTUVVl4zuW0W+oJ61InkQLeipl/AABi/zq4khSZ+QbOXEdYV52LIyWci6xSJ5N8thD/t+bkK//1oY9Ac7IFhBDyKDIMRtOf9za4gLQ3AOb1WU97Ajj9PLDMMOutUAFhfuBe66z3YwYoAFSk29LANf6N80xhIEQwwhAFggSsRhaKUAYndmM/PLiEm7hPSahEKp+yUy9SA9QNaoqOpYvpFtpD+5kgJp3hGA8zEhAdYAw4GOATKARlgrcF44EpgW2BnwkXCWuFF0QRohrRFbFS3Cz2B20I6g2mgm3BV0NSQ/olkZI9kocLnAvuSMul/tDSUG9YaZg/vDx8LMIVMSXrkivkxyI3RXoXOqJEUUcUrGJ0UefipMU3otuUCUrfY50xqTETpG9JuUqh8i09EGuIi477dtnx5Y3xbEJ4wmji2RXdSdtXZqqV6t8e/yr5o1X9mn0pzatta0rX5q3buF6zITE1Lk21cUn60ozlm9SZa7OysovZbZt35HTk9m45k3ct//snpAWawqeK2os9JV5tgG6NvvrJw6U+Q5ixyNS99WqZrHzrtiMVk5UZlh7ryPZ1tp7q72pya/scQmet68sdaVw/L2/oaPy1yblrrKWi9XZbWfvXz1ieHX+uvmO6s7sr5oXTL+Xt/aan9WXFK+f3P32AOug5pHsNvQOHzW/K3xp6Z09fdj919PKxjncLTsoHhk+dfL/9jPZs/Hl8cOvDcxdevdRyueLjvE80n5JB6RD1+YMvJq7dvX7HO+ob84/f+uH21LBoZOFo/Fj6Xf24417XxNHJwfsTP8t/yXhYM3Xo98Hp6XkW5lmYZ2GehX+yYOXtDgCYsxupZnYFgMk1H2c4k4m5eOoK+k+o8F5TEy5OmgDQfwBMZtCjN+4TcwAAACBjSFJNAABtqQAAc7QAAPq1AACAlQAAYy4AAOVvAAA3hQAAFbAnc1zwAAAC9ElEQVR42oyTu29bdRiGn9+5+Tjx8S1uajsQJ72AUkJoCl1AQpGQKlCLBKhiQVWHsjDAgJhYqi4V/0GFqiAkBoK6ICTEgIDUA23VirZpSRviOJETXxrbiVOf2Oficw5DsBS2Pts3vI8+fXo/EQQBffx6QV46fzQW/+Laexd+18jc+PZSd+wYG8NTuKZJu9UBn4sjhsu1ix/cVFW5orCP7tbW5IAh7v089yNhc4yzcp6l3DTHPzpDbXGVfH6Z8Mrt2TO7P/Hgq+/xfV75n2Du7VM3T59NMmP9woyqIilNVqpr7JRWiGQzKIkW75/c5M1Wk1phE8/yXpP64bvfHQpCEUcXEY0DR6LERxW86CAT977hyakpKrUGkhHmiZJm5N2ThA+mMHJDl6R+ePpckXhaR4tp+K6HVXdJZCYZnZog/PFnNKQUjgt3VjW2/AEyEwZex0a6cTUTTJ8rArOE4y6y6mHtONiJJCI7SMs2uZ+aYXW1xW65zPKGgtnukcwO4DkeezcwZ4EWstID16JRsfl7vs62UuJK7EOs3QLZ2jKPtiMMyW2GjQZ+x8Tr9f4TWDXWF28jjesUHYF+IsxYSiYe6Hyu3+eQ/CtdR/BH4mVeSlSwyg0eL+yA65p7ggZsLN0iefwdUtG3SKRVeicc3K6Mb7m0bcGCN8ppw2MqNsdgbIaH858S8uJ7G/h+HYDcGy/QvJWn+1QlbMgIVfDU9/EEHFP/YjjioG+u0bLn6QmF+IHoZQWgXHyArOlEskfZGtqlVimTSiromsDQJIwQENh4XSjXLQor/9CxHFrV0h0FoLm9TjSdI+iZPP9ijGbIpvmohB4ShDQBEgghcJ2AVqVN4WGJcdP6RNMQCkDXMhmffJ2eFyB1O6SeSyCCAN9xqC5WkAAPsLsB4fFXOaKkufr19T+r7aCoAAhJIjZyGB7f3aulDakEgMrwwdz+tjOf/43NxgY/rPkLACIIAq5fyQQ8I4V1uHC5Kvqz6L/z7JfPJtkfBvh3AFQgRt84GXxeAAAAAElFTkSuQmCC

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

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              onclick="this. parentNode. handleClick (event);">
        <menuitem label="Открыть папку текущего профиля"
              value="ProfD"/>
        <menuitem label="Открыть папку установки Firefox"
              value="CurProcD"/>
      </menupopup>;
this. appendChild (custombuttonsUtils. makeXML (menu));
this. type = "menu";
this. orient = "horizontal";
 
this. handleClick = function (event)
{
    var menuitem = event. target;
    var value = menuitem. getAttribute ("value");
    if (event. button == 0)
    {
        var file = Cc ["@mozilla.org/file/directory_service;1"]. getService (Ci. nsIProperties);
        file = file. get (value, Ci. nsIFile). QueryInterface (Ci. nsILocalFile);
        file. launch ();
        }
    this. open = false;
};

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

Отсутствует

 

№4004-04-2011 19:01:18

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

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

Quick bookmarks( Firefox 3.6 + )
Добавляет все открытие вкладки или текущую вкладку как закладки в папку закладок Новая папка или удаляет эту папку закладок. Можно в начале кода инициализации папку закладок заменить на свою.

ЛКМ => добавить все открытие вкладки в папку закладок,
СКМ => добавить текущую вкладку в папку закладок,
ПКМ => удалить папку закладок,
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%3EQuick%20bookmarks%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAEFBwcD5TTywYtQTQHAAAAAAECAgAAAAABAgEDAAAAACZKJaoakiP/K4A0ywIAAAIBAQAAAAAAAAAAAAAAAQEBAQAAAAwaIj8ZrvD9GLr382eet7eKfnt7SkI9PBgQCg4CAAUAJGYouiDSL/87r0DbCgMABwAAAQACAgICAAAAAQMDBAAXFRYjGh8mahGR2O8fx///Ic3//obh/P+s2PD/W7HZ6CKe4NcvmWr7Ercb/0+6P++PTBBXCwUAAwAAAQAAAAAABQYHAxodHzcaFBdLDHrD3ifN//8oxvf6Hsb/+xeLff0FjED/DqRQ/x+hM/8KkhX/Qb1J+nS3UOtUoUjRNHg9vw0NDgEjIiUUIBMRHBstN0sep9/pLNH//y/O+v430v//E3pB/xClAP440zf9Ps1I/zekQv9EpE7/S79j/2jQeP9dpmL/DQ0OAR4jJxAfZoJ2I73u7i/T//8y0Pz+NdT8/zrX//8yp4r/O7ps/2jXlP9/5Iz/YdRr/2KoZf51mWP/Y4JY6ERbR70AAAAAGmV6ckbo//9D5v7+ONf+/jbV/P482f3/P9z9/0Df//9x4/7/fuP//2rTm/903Hj/Zp1f++q7jP+XelyoAAAAAAEBAQEAAQEBECQkITR8h3tJx+DZTN///0Hd/P5D4P3/YOf8/670/P+l8///asiV/3fKev9xnG7778qc/5yDY6gAAAAAAAAAAAAAAAAAAQEBAAAAAAAGBwA0oMfGTOn//4fs/PzN+P//l/D8/7T8//96u5//ZZVl/4Ocfvv84Lz/nIRkqAAAAAAAAAAAAAAAAAECAgIBBgcIAAAAAESAm6Jv5///1vv9++38///u+Pr/3PDz/+Di2v/j1rr/6Ne8+//v0P+ei3KoAAAAAAAAAAAAAAAAAAAAAAIDAwMAAAAAiJiho2zT///L9/z7+f3+//77+v/u7O7/7+Ta///qzP/35Mn7//PX/6KUgagAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACuqKWijdv//87t+Pv/////+fv7/+zu8P/t5dz//OrQ//np0fv/+d//o5eGqAAAAAAAAAAAAAAAAAAAAAADAwMEAAAAAKampaL/////+vr6+////v/8/Pv/7e7v/+/n3v//79f//O3Y+//+6P+kmoqoAAAAAAAAAAAAAAAAAAAAAAMDAwQAAAAApKSkoP/////4+fj5/f39/v39/f7z9Pb/8Oni///z4P/88eD7///y/6SdkKgAAAAAAAAAAAAAAAAAAAAAAwMDBAAAAACrq6ui//////v7+/v///////////7///728ez8+vHi/Prz5fn///n/pJ6VpwAAAAAAAAAAAAAAAAAAAAACAgIDAAAAAF5eXlrGxsXE0tLS0erq6un6+vr5////////////////+/v4+/////+opZ2oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwICExMTEisrKylHR0dFaGdnZYmKi4inpqam19TP2pGOiI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20................................%0Avar%20button%20%3D%20this%3B%0Avar%20folderName%20%3D%20%22%u041D%u043E%u0432%u0430%u044F%20%u043F%u0430%u043F%u043A%u0430%22%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%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%20var%20bmsvc%20%3D%20Components.classes%20%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%20%20%20%20%20var%20rootFolder%20%3D%20bmsvc.toolbarFolder%3B%0A%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20f%20%3D%20getChildFolder%28%20rootFolder%2C%20folderName%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21f%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmsvc.createFolder%28%20rootFolder%2C%20folderName%2C%20bmsvc.%20DEFAULT_INDEX%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%20%3D%20getChildFolder%28%20rootFolder%2C%20folderName%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%20uris%20%3D%20getTabsURIs%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20ios%20%3D%20Components.%20classes%20%5B%22@mozilla.org/network/io-service%3B1%22%5D.getService%20%28Components.%20interfaces.%20nsIIOService%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20uri%3B%0A%20%20%20%20%20%20%20%20%20%20bmsvc.runInBatchMode%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20runBatched%3A%20function%28%20data%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20uris.%20length%3B%20i++%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmsvc.insertBookmark%28%20f%2C%20uris%5Bi%5D.uri%2C%20bmsvc.DEFAULT_INDEX%2C%20uris%5Bi%5D.label%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%20button.image%2C%20button.label%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3A%20%27%20+%20folderName%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%20%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%7D%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%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%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20var%20f%20%3D%20getChildFolder%28%20rootFolder%2C%20folderName%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20%21f%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmsvc.createFolder%28%20rootFolder%2C%20folderName%2C%20bmsvc.DEFAULT_INDEX%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%20%3D%20getChildFolder%28%20rootFolder%2C%20folderName%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%20br%20%3D%20gBrowser.%20getBrowserForTab%20%28gBrowser.%20mCurrentTab%29%3B%0A%20%20%20%20%20%20%20%20%20%20bmsvc.insertBookmark%28%20f%2C%20br.webNavigation.currentURI%2C%20bmsvc.DEFAULT_INDEX%2C%20gBrowser.mCurrentTab.label%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20/*%0A%20%20%20%20%20%20%20%20%20%20var%20sebp%20%3D%20StarUI.showEditBookmarkPopup%3B%0A%20%20%20%20%20%20%20%20%20%20StarUI.showEditBookmarkPopup%20%3D%20function%28%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20PlacesCommandHook.bookmarkCurrentPage%28%20false%2C%20f%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20StarUI.showEditBookmarkPopup%20%3D%20sebp%3B%0A%20%20%20%20%20%20%20%20%20%20*/%0A%20%20%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%20button.image%2C%20button.label%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3A%20%27%20+%20folderName%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20var%20bmsvc%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20f%20%3D%20getChildFolder%28%20rootFolder%2C%20folderName%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20f%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bmsvc.removeItem%28%20f%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alertsService.showAlertNotification%28%20button.image%2C%20button.label%2C%20%27%u0423%u0434%u0430%u043B%u0438%u043B%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3A%20%27%20+%20folderName%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%u043C%u0438%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%20................................%20%0Afunction%20getTabsURIs%28%29%20%7B%0A%20%20%20var%20tabList%20%3D%20%5B%5D%3B%0A%20%20%20var%20seenURIs%20%3D%20%5B%5D%3B%20%20%20%20%20%20%20%20%0A%20%20%20var%20br%2C%20webNav%2C%20uri%3B%0A%20%20%20%0A%20%20%20var%20tabs%20%3D%20getBrowser%28%29.mTabs%3B%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20tabs.%20length%3B%20++i%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20br%20%3D%20gBrowser.getBrowserForTab%28%20tabs%5Bi%5D%20%29%3B%0A%20%20%20%20%20%20%20%20%20var%20webNav%20%3D%20br.webNavigation%3B%0A%20%20%20%20%20%20%20%20%20uri%20%3D%20webNav.currentURI%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20uri.spec%20in%20seenURIs%20%29%20continue%3B%0A%20%20%20%20%20%20%20%20%20seenURIs%5Buri.spec%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20tabList.push%20%28%7B%20uri%3A%20uri%2C%20label%3A%20tabs%5Bi%5D.label%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%0A%20%20%20return%20tabList%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20................................%20%0Afunction%20getChildFolder%28%20parentId%2C%20title%20%29%20%7B%0A%20%20%20var%20res%20%3D%20null%3B%0A%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20hs%20%3D%20Cc%20%5B%22@mozilla.org/browser/nav-history-service%3B1%22%5D.getService%28Ci.nsINavHistoryService%29%3B%0A%20%20%20%20%20%20%20%20var%20options%20%3D%20hs.getNewQueryOptions%28%29%3B%0A%20%20%20%20%20%20%20%20options.excludeItems%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20var%20query%20%3D%20hs.getNewQuery%28%29%3B%0A%20%20%20%20%20%20%20%20query.setFolders%28%20%5BparentId%5D%2C%201%20%29%3B%0A%20%20%20%20%20%20%20%20var%20result%20%3D%20hs.executeQuery%28%20query%2C%20options%20%29%3B%0A%20%20%20%20%20%20%20%20var%20rn%20%3D%20result.root%3B%0A%20%20%20%20%20%20%20%20rn.containerOpen%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20var%20i%2C%20node%3B%0A%20%20%20%20%20%20%20%20for%20%28%20i%20%3D%200%3B%20i%20%3C%20rn.childCount%3B%20i++%20%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20rn.getChild%28i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20node.title%20%3D%3D%20title%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20res%20%3D%20node.itemId%3B%0A%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%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20rn.containerOpen%20%3D%20false%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28e%29%20%7B%7D%0A%20%20%20%0A%20%20%20return%20res%3B%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20............................%0Athis.tooltipText%20%3D%20%22Quick%20bookmarks%5Cn%u041B%u041A%u041C%20%3D%3E%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5Cn%u0421%u041A%u041C%20%3D%3E%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5Cn%u041F%u041A%u041C%20%3D%3E%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0430%u043F%u043A%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5CnCtrl+%u041F%u041A%u041C%20%3D%3E%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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



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

     var bmsvc = Components.classes ["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
     var rootFolder = bmsvc.toolbarFolder;

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          var f = getChildFolder( rootFolder, folderName );
          if ( !f ) {
               bmsvc.createFolder( rootFolder, folderName, bmsvc. DEFAULT_INDEX );
               f = getChildFolder( rootFolder, folderName );
               }
          var uris = getTabsURIs();
          var ios = Components. classes ["@mozilla.org/network/io-service;1"].getService (Components. interfaces. nsIIOService);
          var uri;
          bmsvc.runInBatchMode({
                runBatched: function( data ) {
                for ( var i = 0; i < uris. length; i++ )
                      bmsvc.insertBookmark( f, uris[i].uri, bmsvc.DEFAULT_INDEX, uris[i].label );
                      alertsService.showAlertNotification( button.image, button.label, 'Добавил все вкладки в папку закладок: ' + folderName, false, "", null, ""); 
                }
                }, null );
          };
          
     // действие при клике СКМ ....    
     if ( e.button == 1 ) { 
          var f = getChildFolder( rootFolder, folderName );
          if ( !f ) {
               bmsvc.createFolder( rootFolder, folderName, bmsvc.DEFAULT_INDEX );
               f = getChildFolder( rootFolder, folderName );
               }
          var br = gBrowser. getBrowserForTab (gBrowser. mCurrentTab);
          bmsvc.insertBookmark( f, br.webNavigation.currentURI, bmsvc.DEFAULT_INDEX, gBrowser.mCurrentTab.label );
          /*
          var sebp = StarUI.showEditBookmarkPopup;
          StarUI.showEditBookmarkPopup = function() {};
          PlacesCommandHook.bookmarkCurrentPage( false, f );
          StarUI.showEditBookmarkPopup = sebp;
          */
          alertsService.showAlertNotification( button.image, button.label, 'Добавил вкладку в папку закладок: ' + folderName, false, "", null, ""); 
          };
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();  
          
          var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
          var f = getChildFolder( rootFolder, folderName );
          if ( f ) {
               bmsvc.removeItem( f );
               alertsService.showAlertNotification( button.image, button.label, 'Удалил папку закладок: ' + folderName, false, "", null, ""); 
               }
          };
};



// Получить массив с адресами и названиями вкладок ................................ 
function getTabsURIs() {
   var tabList = [];
   var seenURIs = [];        
   var br, webNav, uri;
   
   var tabs = getBrowser().mTabs;
   for ( var i = 0; i < tabs. length; ++i ) {
         br = gBrowser.getBrowserForTab( tabs[i] );
         var webNav = br.webNavigation;
         uri = webNav.currentURI;
         if ( uri.spec in seenURIs ) continue;
         seenURIs[uri.spec] = true;
         tabList.push ({ uri: uri, label: tabs[i].label });
         }
   
   return tabList;
};



// Получить нужную папку закладок ................................ 
function getChildFolder( parentId, title ) {
   var res = null;
   try {
        var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
        var options = hs.getNewQueryOptions();
        options.excludeItems = true;
        var query = hs.getNewQuery();
        query.setFolders( [parentId], 1 );
        var result = hs.executeQuery( query, options );
        var rn = result.root;
        rn.containerOpen = true;
        var i, node;
        for ( i = 0; i < rn.childCount; i++ ){
              var node = rn.getChild(i);
              if ( node.title == title ) {
                   res = node.itemId;
                   break;
                   }
              }
        rn.containerOpen = false;
       } 
   catch(e) {}
   
   return res;
};


// Подсказка для кнопки ............................
this.tooltipText = "Quick bookmarks\nЛКМ => добавить все открытие вкладки в папку закладок\nСКМ => добавить текущую вкладку в папку закладок\nПКМ => удалить папку закладок\nCtrl+ПКМ => открыть контекстное меню кнопки";


Автор кода: Anton

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

Отсутствует

 

№4107-04-2011 20:10:18

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

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

Очистить кэш и удалить флэш куки( Firefox 17-45 )
кнопка очищает кэш и удаляет Flash cookie. Сплывающая подсказка у кнопки отображает в MB максимально возможное и текущее заполнение дискового кеша, оффлайн кеша и кеша в оперативной памяти.

Скриншот подсказки у кнопки:
fd4706b8dc27ec552cfa3b298ff7abb0.png

Left => очистить кэш Firefox и удалить Flash cookie.
Код кнопки для Firefox 17-26:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EClear%20Cache%20/%20Delete%20flash%20cookies%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExEAAAEAIAB4BQAAFgAAACgAAAATAAAAIgAAAAEAIAAAAAAAUAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAQEBCxMTEyElJSU/KywrWC4sLWUzMzNrPDs8a0NEQ2MsLCxKDg0PKgABAA8AAAAAAgICAAAAAAAAAAAAAAAAAQAAAAIZGhoHQ0NDUGJiYqZxcXHVcXFx6XNzc/STlJT2t7e2+NDP0Pjb3dz11tbY67GwsNtsbWy0JyYnYQICAg8CAgICAAAAAgICAgUAAAAAJykpJ5CRkM64t7f/q6ut/7m5uf/Lx8b/19bW/9nY2P7a2dz+4d/g/+rq6P/r7Or/1NTU/3V1ddkKCwo+AQEBAQEBAQQCAgIDAAABARMTEhdubmy/rq6w/snIyfbj4+H94uXn/d/l7f3W2+X9xc3R/a20u/2oqKr9paWi96Wmpf5ubW3NFRMTNgAAAA4BAQEJAQIBAQICAgUAAQUBhY6UpuDi5f7b2Nj609ng/rfB1v+ssc3/wcja/6qyx/99hqL/iZOr/rW4vfrZ2Nf+io2VuQQHDiICAgETAQEBBgIDBAIDAgEDAQoSAau8wq3/////4Oft+tzm7v7d4On/q6zJ/0tLoP9cXKb/tbXM/9Hb5v7f5/H6/////7K6wrYBDRkNAwEABQICAQECAwQCAQIBAggNEQest7+4+v7+/8rY6Pnf5u7++/r6/6OmzP9kZa//aGmu/8rN4//7+vv/3Obr+Pn9/f+/wsK7ChIWDAIBAQECAwMDAwQEBAEBAQINFhgPprXAvPb////K1OT5vcDX/6SlzP+Bg7z/5ebu/7S11P9+gbv/l5jE/7G60fj1/P7/w8TIwBYYIRcAAQEBBAQEBAQEBQQCAAAAESIsGbTGzMH5////5u70+dTW6P+Dg7//gIC//8PD3f+gocr/OTyf/3J0t/+/xd349P7//73EzsYgIy8hAAAAAAQEBAQEBAUEAAAAABoiLSLAyszH+f///9/q9vj0+Pz/2Nfp/7e32P+9vtz/ubvX/25vtP+/weD/5/D1+Pb////AytHLJSw3KwAAAAAEBAUFBAQFBQAAAAAgKzQrvsvOyvb+/v/I2e/42ef3//L19v/p6Ov//vv7//Hy8v/Jydv/1ODu/97r9Pj9/v//zdHY0C44RjgAAAAABAUFBQQFBQUAAAAAKzpJN8TV2dD4/v7/1Oj++NDq///Q6P7/4PH//+Pw/v/U5fb/xt3z/8Tc9f/X5/f4//7//9PX29c3QktFAAAAAAUFBQUEBQUFAAAAADE5Rj7G09rT8Pr7/8PV6fi60eX/q8ff/63G4P+uxt//s8vl/7PN6//F2fD/0N/r+Pr8/P/W3+TaP09aSwAAAAAFBQUFBAUFBQAAAAA4PUhRqrW/3bK6wP57gIn2cXeD/nh+gv2Rlpf9rrKz/crNz/3c4eT94uft/tDU2/bX2dr+tL3F4kJNWl0AAAAABAUGBgMDAwYAAAAAX15jfq+vsvqjpqb/mJ2f/qmyt/+vvMP+u8nT/8jT3f/R3Ob/2OTs/97l7P/N0dX+wsLE/62usP5WV1uLAAAAAAIDBAUDAwMEAAAAAEdGRkqJiYi6mZma57CztO/Q1tr20tni98PL1vettb/3maGs94uSnfeIjpL3iY2M8ZycnOmZmJfDTUtMVgAAAAACAgIDAAAAAAAAAAAEBAUBDxEQEickJCtAODtEVlFTW2RjZGljYl9yXVxadVdWVHNRUFNqR0RHXT03NkcpJyctFBUWEwgHCAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u0435%u0448%20....%0A%20%20%20%20%20var%20cacheService%20%3D%20Cc%5B%22@mozilla.org/network/cache-service%3B1%22%5D.getService%28Ci.nsICacheService%29%3B%0A%20%20%20%20%20cacheService.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20cacheService.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%0A%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20const%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%0A%7D%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0Avar%20k%20%3D%20100%2C%20mb%20%3D%201024%20*%201024%2C%20str%20%3D%20%22%22%2C%0Acs%20%3D%20Cc%5B%22@mozilla.org/network/cache-service%3B1%22%5D.getService%28Ci.nsICacheService%29%2C%0Avisitor%20%3D%20%7B%20visitDevice%3A%20addInfo%20%7D%3B%0A%0Afunction%20addInfo%28device%2C%20info%29%20%7B%0A%20%20%20//%20if%20%28device%5B0%5D%20%3D%3D%20%22o%22%29%20return%3B%0A%20%20%20str%20+%3D%20%28str%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%20+%20device%5B0%5D.toUpperCase%28%29%20+%20device.slice%281%29%20+%20%22%20Cache%3A%20%20%22%20+%0A%20%20%20%5Binfo.totalSize%2C%20info.maximumSize%5D.map%28function%28num%29%20Math.round%28k%20*%20num%20/%20mb%29%20/%20k%20+%20%22%20MB%22%29.join%28%22%20/%20%22%29%3B%0A%7D%3B%0A%0Athis.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20str%20%3D%20%22%22%3B%0A%20%20%20%20cs.visitEntries%28visitor%29%3B%0A%20%20%20%20this.tooltipText%20%3D%20str%3B%0A%7D%3B%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Код кнопки для Firefox 26-51:

Выделить код

Код:

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%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u0444%u043B%u044D%u0448%20%u043A%u0443%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExEAAAEAIAB4BQAAFgAAACgAAAATAAAAIgAAAAEAIAAAAAAAUAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAQEBCxMTEyElJSU/KywrWC4sLWUzMzNrPDs8a0NEQ2MsLCxKDg0PKgABAA8AAAAAAgICAAAAAAAAAAAAAAAAAQAAAAIZGhoHQ0NDUGJiYqZxcXHVcXFx6XNzc/STlJT2t7e2+NDP0Pjb3dz11tbY67GwsNtsbWy0JyYnYQICAg8CAgICAAAAAgICAgUAAAAAJykpJ5CRkM64t7f/q6ut/7m5uf/Lx8b/19bW/9nY2P7a2dz+4d/g/+rq6P/r7Or/1NTU/3V1ddkKCwo+AQEBAQEBAQQCAgIDAAABARMTEhdubmy/rq6w/snIyfbj4+H94uXn/d/l7f3W2+X9xc3R/a20u/2oqKr9paWi96Wmpf5ubW3NFRMTNgAAAA4BAQEJAQIBAQICAgUAAQUBhY6UpuDi5f7b2Nj609ng/rfB1v+ssc3/wcja/6qyx/99hqL/iZOr/rW4vfrZ2Nf+io2VuQQHDiICAgETAQEBBgIDBAIDAgEDAQoSAau8wq3/////4Oft+tzm7v7d4On/q6zJ/0tLoP9cXKb/tbXM/9Hb5v7f5/H6/////7K6wrYBDRkNAwEABQICAQECAwQCAQIBAggNEQest7+4+v7+/8rY6Pnf5u7++/r6/6OmzP9kZa//aGmu/8rN4//7+vv/3Obr+Pn9/f+/wsK7ChIWDAIBAQECAwMDAwQEBAEBAQINFhgPprXAvPb////K1OT5vcDX/6SlzP+Bg7z/5ebu/7S11P9+gbv/l5jE/7G60fj1/P7/w8TIwBYYIRcAAQEBBAQEBAQEBQQCAAAAESIsGbTGzMH5////5u70+dTW6P+Dg7//gIC//8PD3f+gocr/OTyf/3J0t/+/xd349P7//73EzsYgIy8hAAAAAAQEBAQEBAUEAAAAABoiLSLAyszH+f///9/q9vj0+Pz/2Nfp/7e32P+9vtz/ubvX/25vtP+/weD/5/D1+Pb////AytHLJSw3KwAAAAAEBAUFBAQFBQAAAAAgKzQrvsvOyvb+/v/I2e/42ef3//L19v/p6Ov//vv7//Hy8v/Jydv/1ODu/97r9Pj9/v//zdHY0C44RjgAAAAABAUFBQQFBQUAAAAAKzpJN8TV2dD4/v7/1Oj++NDq///Q6P7/4PH//+Pw/v/U5fb/xt3z/8Tc9f/X5/f4//7//9PX29c3QktFAAAAAAUFBQUEBQUFAAAAADE5Rj7G09rT8Pr7/8PV6fi60eX/q8ff/63G4P+uxt//s8vl/7PN6//F2fD/0N/r+Pr8/P/W3+TaP09aSwAAAAAFBQUFBAUFBQAAAAA4PUhRqrW/3bK6wP57gIn2cXeD/nh+gv2Rlpf9rrKz/crNz/3c4eT94uft/tDU2/bX2dr+tL3F4kJNWl0AAAAABAUGBgMDAwYAAAAAX15jfq+vsvqjpqb/mJ2f/qmyt/+vvMP+u8nT/8jT3f/R3Ob/2OTs/97l7P/N0dX+wsLE/62usP5WV1uLAAAAAAIDBAUDAwMEAAAAAEdGRkqJiYi6mZma57CztO/Q1tr20tni98PL1vettb/3maGs94uSnfeIjpL3iY2M8ZycnOmZmJfDTUtMVgAAAAACAgIDAAAAAAAAAAAEBAUBDxEQEickJCtAODtEVlFTW2RjZGljYl9yXVxadVdWVHNRUFNqR0RHXT03NkcpJyctFBUWEwgHCAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20%7B%0A%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20Services.cache.evictEntries%281%29%3B%0A%20%20%20%20%20%20%20Services.cache.evictEntries%282%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%3B%0A%0A%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u044B%20....%0A%20%20%20var%20dir%20%3D%20Services.dirsvc.get%28%27Home%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20dir.exists%28%29%20%26%26%20dir.remove%28true%29%3B%0A%20%20%20%21dir.exists%28%29%20%26%26%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20.showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%29%3B%0A%7D%3B%0A%0A%0A//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%u0430%20%u043E%u0442%u043E%u0431%u0440%u0430%u0436%u0430%u0435%u0442%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0434%u0438%u0441%u043A%u043E%u0432%u043E%u0433%u043E%20%u043A%u0435%u0448%u0430%20..............%0Avar%20data%20%3D%20%7B%0A%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%7D%3B%20%20%20%0Afunction%20getSize%28size%29%20%7B%0A%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%7D%0Afunction%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%7D%0Afunction%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0Avar%20types%20%3D%20Object.keys%28data%29%3B%0Avar%20ttt%20%3D%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%20%20%20%0Avar%20context%20%3D%20Cu.import%28%22resource%3A//gre/modules/LoadContextInfo.jsm%22%2C%20%7B%7D%29.LoadContextInfo.default%3B%0Aself.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20self.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20Flash-%u043A%u0443%u043A%u0438%5Cn%22%20+%20ttt%3B%0A%20%20%20try%20%7B%0A%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%20%0A%20%20%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28context%2C%20null%29%3B%0A%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


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

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

Отсутствует

 

№4207-04-2011 20:48:02

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

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

Session Stacked Bookmarks ([nightly] 8.0)
Позволяет хранить несколько закладок в одной кнопке (с выпадающим списком). Можно одним кликом добавить текущую просматриваемую страницу как закладку вовнутрь кнопки.
Управление:
ЛКМ - открыть список сохранённых страниц.
СКМ или ЛКМ+любой модификатор - добавить текущую (просматриваемую) вкладку в список сохранённых страниц.
В списке:
ЛКМ - открыть выбранную страницу в текущей вкладке.
СКМ - открыть выбранную страницу в новой вкладке.
ПКМ - вызывает меню, через которое можно удалить выбранную страницу.

Т.к. код установки не влезает сюда в сообщение из-за лимита в 64кб на 1 сообщение, то просто публикую ссылки на кнопку и её обсуждение.
Код стабильной версии кнопки.
Код beta-версии кнопки.
Тема на этом форуме, посвящённая обсуждению этой кнопки, там же выкладываются и её обновления.

Автор: Infocatcher.

Отредактировано iDev.Pi (27-01-2013 00:36:46)


mzfx

Отсутствует

 

№4308-04-2011 21:41:22

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

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

Toggle  Find ( Firefox 3.6+ )
показать-скрыть поиск по странице

Left => показать-скрыть поиск по странице.

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

Выделить код

Код:

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%3EToggle%20%20Find%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAMQWAJmZzJlmzGZmzGZm/2aZ/5mZ/5nM/8zM/8z//5mZmWZmmf///8yZzMzMmZlmmZmZM8zMM8zMZsz/ZsyZZpmZZmZmM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAHoAxYALAAAAAAQABAAAAVsoCUCgQCIaCoKA1G4p7q6RmEXcQoMxYEYQEMOJSAYEL+D8jC0CG6GJTKhUtiAPiSCmlK4er7FgiGzWLGIBUJRZliVCLMi0Sg7FHhq4gGJlFUNEBIQE38pExGDFIYoFIkQi4wWjhEVkiIUFQohADs%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%5BgFindBar.hidden%20%3F%20gFindBar.onFindCommand%28%29%20%3A%20gFindBar.close%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

Код:

Выделить код

Код:

gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();

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

Отсутствует

 

№4408-04-2011 23:51:18

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

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

Translate( Firefox 24 + ) от 27.02.2017.
Переводит страницы в обычном переводчике Google или с заменой текста на странице в переводчике Google в новой активной вкладке сразу справа от текущей вкладки или в текущей вкладке. Перевод с заменой текста переводит все и в том числе большие страницы и https страницы, но не умеет переводить автоматически как обычный переводчик Google.
Переводит выделенный текст или текст из буфера обмена с помощью сервиса Google Translate в новой активной вкладке сразу справа или в маленьком окошке который можно закрыть кликом на странице, выделенный текст также можно перевести двойным правым кликом на странице или из контекстного меню на странице.

Как изменить фон и размер шрифта, ширина и высоту окошка перевода?
Для изменения нужных параметров измените в вкладке инициализации этот кусок кода:

Выделить код

Код:

var background = 'none', fontSize = 'medium'; // фон и размер шрифта окошка перевода
var winWidth = 0.4, winHeight = 0.4;          // ширина и высота окошка перевода относительно размера страницы


Меню кнопки и перевод в маленьком окошке
c1fc2a8b384e860fe0f0813bf74438ef.png1996aa311981.jpg488ef1c14c92.jpg

ЛКМ => перевести страницу / выделенный текст.
СКМ => перевести текст, из буфера обмена.
ПКМ => 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%3ETranslate%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Translate%20%u043E%u0442%2027.02.2017.%20...............%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20%20%20%20sel%20%3F%20translateText%28sel%29%20%3A%20translatePage%28%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%0A%20%20%20%20%20%20%20%20translateText%28gClipboard.read%28%29%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menu.showPopup%28self%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%0A%7D%3B%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%0A%0Avar%20background%20%3D%20%27white%27%2C%20fontSize%20%3D%20%27medium%27%3B%20//%20%u0444%u043E%u043D%20%u0438%20%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%20%u043E%u043A%u043E%u0448%u043A%u0430%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0430%0Avar%20winWidth%20%3D%200.4%2C%20winHeight%20%3D%200.4%3B%20%20%20%20%20%20%20%20%20%20//%20%u0448%u0438%u0440%u0438%u043D%u0430%20%u0438%20%u0432%u044B%u0441%u043E%u0442%u0430%20%u043E%u043A%u043E%u0448%u043A%u0430%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0430%20%u043E%u0442%u043D%u043E%u0441%u0438%u0442%u0435%u043B%u044C%u043D%u043E%20%u0440%u0430%u0437%u043C%u0435%u0440%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%20%20%20%20%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.textInPopup%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u0434%u0432%u043E%u0439%u043D%u044B%u043C%20%u043F%u0440%u0430%u0432%u044B%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.textWithDoubleRightClick%27%20%7D%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.nextPage%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0438%u0437%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0433%u043E%20%u043C%u0435%u043D%u044E%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.textFromContextMenu%27%20%7D%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0438%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0430%u0445%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.noTooltipForTranslate%27%2C%20func%3A%20%27%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%22%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0443%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Googl%u0435%22%2C%20checkbox%3A%20%27%27%2C%20value%3A%20%27Translate.removeGoogleTranslatorHeader%27%2C%20func%3A%20%27%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%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043E%u0431%u044B%u0447%u043D%u043E%u043C%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Google%22%2C%20radio%3A%20%27%27%2C%20value%3A%20%27google%27%20%7D%2C%20%20%20%20%0A%20%20%20%20%7B%20label%3A%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Google%22%2C%20radio%3A%20%27%27%2C%20value%3A%20%27googleBookmarklet%27%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0Avar%20menu%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%20%20%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menu.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20%22radio%22%20in%20m%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%22type%22%2C%20%22radio%22%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28%22Translate.pageIn%22%29%20%3D%3D%20m.value%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28%22Translate.pageIn%22%2C%20m.value%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20if%20%28%20%22checkbox%22%20in%20m%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%3B%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20if%20%28%20%22func%22%20in%20m%20%29%20mItem.addEventListener%28%22command%22%2C%20%28%29%3D%3E%20toggleGoogleTranslatorStyle%28%29%29%3B%0A%20%20%20%20%20%20%20%0A%20%20%20menu.appendChild%28mItem%29%3B%0A%7D%29%3B%0Amenu.setAttribute%28%22onclick%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20false%20...............%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29%3B%0A%20%20%20return%20%28sel%20%3D%3D%20%27%27%29%20%3F%20false%20%3A%20sel.toString%28%29%3B%0A%7D%3B%0A%0A%0A//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0443%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Googl%u0435%20%u0438%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0438%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0430%u0445%20...............%0Afunction%20toggleGoogleTranslatorStyle%28arg%29%20%7B%0A%20%20%20var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20try%20%7B%20sss.unregisterSheet%28%20self.uri%2C%200%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Translate.removeGoogleTranslatorHeader%22%29%20%29%20%7B%20%20//%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0443%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u044F%0A%20%20%20%20%20%20%20%20var%20removeHeader%20%3D%20%27%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20@-moz-document%20domain%28%22translate.google.com%22%29%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23gb%2C%20%23gt-bbar%2C%20%23gt-c%3Anot%28%5Bclass%3D%22g-section%22%5D%29%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23contentframe%20%7B%20top%3A%200%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%27%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Translate.noTooltipForTranslate%22%29%20%29%20%7B%20%20//%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0438%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0430%u0445%0A%20%20%20%20%20%20%20%20var%20noPopup%20%3D%20%27%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20/*Microsoft*/%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20DIV%5Btranslate%3D%22no%22%5D%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20*%5Blang%3D%22ru%22%5D%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20black%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20transparent%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20/*Google*/%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20@-moz-document%20domain%28%22translate.google.com%22%29%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.jfk-tooltip%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20@-moz-document%20regexp%28%22%5Ehttps%3F%3A//translate%5C.google%5C..*%22%29%20%7B/**/%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20@-moz-document%20domain%28%22translate.googleusercontent.com%22%29%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20span%5Bonmouseout%5D%5Bonmouseover%5D%5Bstyle%5D%20%7B%20background-color%3A%20transparent%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.gmnoprint%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20.goog-text-highlight%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20transparent%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20border%3A%20none%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%3A%20none%20%21important%3B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20.goog-tooltip.skiptranslate%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%27%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%0A%20%20%20self.css%20%3D%20removeHeader%20+%20noPopup%3B%0A%0A%20%20%20if%20%28%20%21%21self.css%20%29%20%7B%0A%20%20%20%20%20%20%20%20self.uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28self.css%29%29%3B%0A%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28self.uri%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20arg%20%26%26%20addDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28self.uri%2C%200%29%20%29%3B%20%20%0A%7D%3B%0AtoggleGoogleTranslatorStyle%28true%29%3B%20%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20...............%20%20%20%0Afunction%20translatePage%28%29%20%7B%0A%20%20%20var%20translator%20%3D%20cbu.getPrefs%28%22Translate.pageIn%22%29%3B%0A%20%20%20%0A%20%20%20//%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0432%20%u043E%u0431%u044B%u0447%u043D%u043E%u043C%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Google%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20if%20%28%20translator%20%3D%3D%20%22google%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//translate.google.com/translate%3Fu%3D%22%20+%20content.location%20+%20%22%26hl%3Dru%26ie%3DUTF-8%26sl%3Dauto%26tl%3Dru%22%3B%0A%20%20%20%20%20%20%20%20cbu.getPrefs%28%22Translate.nextPage%22%29%0A%20%20%20%20%20%20%20%20%3F%20gBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20gBrowser.mCurrentTab._tPos%20+%201%29%0A%20%20%20%20%20%20%20%20%3A%20loadURI%28url%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%20%0A%0A%20%20%20//%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20Microsoft%20%u0438%u043B%u0438%20Google%20%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Translate.nextPage%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20gBrowser.getBrowserForTab%28gBrowser.selectedTab%20%3D%20gBrowser.duplicateTab%28gBrowser.mCurrentTab%29%29%0A%20%20%20%20%20%20%20%20%20%20%20.addEventListener%28%22pageshow%22%2C%20function%20c%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28e.type%2C%20c%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20runBukmarklet%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20else%20runBukmarklet%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0431%u0443%u043A%u043C%u0430%u0440%u043A%u043B%u0435%u0442%20%u0434%u043B%u044F%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0430%0A%20%20%20function%20runBukmarklet%28%29%20%7B%0A%20%20%20%20%20%20cbu.setPrefs%28%22security.mixed_content.block_active_content%22%2C%20false%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20content.document.location%20%3D%20%22javascript%3A%7Bvar%20d%3Ddocument%3B%20var%20b%3Dd.body%3B%20var%20o%3Dd.createElement%28%27script%27%29%3Bo.setAttribute%28%27src%27%2C%27http%3A//translate.google.com/translate_a/element.js%3Fcb%3DgoogleTranslateElementInit%26hl%3Dru%27%29%3Bo.setAttribute%28%27type%27%2C%27text/javascript%27%29%3Bb.appendChild%28o%29%3B%20var%20v%3Db.insertBefore%28d.createElement%28%27div%27%29%2Cb.firstChild%29%3Bv.id%3D%27google_translate_element%27%3Bv.style.display%3D%27none%27%3B%20var%20p%3Dd.createElement%28%27scri%27+%27pt%27%29%3Bp.text%3D%27function%2520googleTranslateElementInit%28%29%7Bvar%2520tElem%2520%3D%2520new%2520google.translate.TranslateElement%28%7BpageLanguage%3A%2522%2522%7D%2C%2522google_translate_element%2522%29%3BsetTimeout%28function%28%29%2520%7B%2520tElem.showBanner%28true%29%3B%2520%7D%2C100%29%3B%7D%27%3Bp.setAttribute%28%27type%27%2C%27text/javascript%27%29%3Bb.appendChild%28p%29%3B%7Dvoid%25200%22%3B%0A%20%20%20%7D%20%0A%7D%3B%0A%0A%0A//%20%u041E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u0434%u0432%u043E%u0439%u043D%u044B%u043C%20%u043F%u0440%u0430%u0432%u044B%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043C%u044B%u0448%u0438%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u0442%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20...............%0AaddEventListener%28%22dblclick%22%2C%20e%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%26%26%20cbu.getPrefs%28%22Translate.textWithDoubleRightClick%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%3B%0A%0A%20%20%20%20%20%20%20%20translateText%28getSelect%28%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20false%2C%20gBrowser%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0438%u0437%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0433%u043E%20%u043C%u0435%u043D%u044E%20...............%20%20%20%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0Avar%20mItem%20%3D%20contextMenu.insertBefore%28document.createElement%28%22menuitem%22%29%2C%20contextMenu.children%5B1%5D%29%3B%0AmItem.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%22%29%3B%0AmItem.onclick%20%3D%28%29%3D%3E%20translateText%28getSelect%28%29%29%3B%0AaddEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20%7B%0A%20%20%20mItem.hidden%20%3D%20%21cbu.getPrefs%28%22Translate.textFromContextMenu%22%29%20%7C%7C%20%21gContextMenu.isTextSelected%3B%20%0A%7D%2C%20false%2C%20contextMenu%29%3B%0AaddDestructor%28%28%29%3D%3E%20mItem.remove%28%29%29%3B%0A%0A%0A//%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20Google%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u0441%u0440%u0430%u0437%u0443%20%u0441%u043F%u0440%u0430%u0432%u0430%20%u0438%u043B%u0438%20%u0432%20%u043C%u0430%u043B%u0435%u043D%u044C%u043A%u043E%u043C%20%u043E%u043A%u043E%u0448%u043A%u0435%20...............%0Afunction%20translateText%28text%2C%20clipboard%29%20%7B%0A%20%20%20if%20%28%20text%20%3D%3D%20false%20%29%20return%3B%0A%0A%20%20%20//%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%20Google%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%u0435%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%20%20%20if%20%28%20%21cbu.getPrefs%28%22Translate.textInPopup%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//translate.google.com/translate_t%3Fhl%3Dru%23auto%7Cru%7C%22%20+%20text%3B%0A%20%20%20%20%20%20%20%20gBrowser.moveTabTo%28gBrowser.selectedTab%20%3D%20gBrowser.addTab%28url%29%2C%20gBrowser.mCurrentTab._tPos%20+%201%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20var%20beg%20%3D%20%22http%3A//translate.google.com/translate_t%3Fprev%3Dhp%26hl%3Dru%26js%3Dy%26text%3D%22%3B%0A%20%20%20var%20end%20%3D%20%22%26file%3D%26sl%3Dauto%26tl%3Dru%26history_state0%3D%23%22%3B%0A%20%20%20var%20url%20%3D%20beg%20+%20text%20+%20end%3B%0A%20%20%20%20%0A%20%20%20var%20req%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20req.open%28%22GET%22%2C%20url%2C%20true%29%3B%0A%20%20%20%0A%20%20%20req.onload%20%3D%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20%20var%20res%20%3D%20req.responseText%3B%0A%20%20%20%20%20%20%20var%20suHTML%20%3D%20Cc%5B%22@mozilla.org/feed-unescapehtml%3B1%22%5D.getService%28Ci.nsIScriptableUnescapeHTML%29%3B%0A%20%20%20%20%20%20%20var%20doc%20%3D%20document.implementation.createHTMLDocument%28%22%22%29%3B%0A%20%20%20%20%20%20%20doc.body.appendChild%28suHTML.parseFragment%28res%2C%20false%2C%20null%2C%20doc.body%29%29%3B%0A%0A%20%20%20%20%20%20%20var%20ruHTML%20%3D%20doc.getElementById%28%22result_box%22%29.innerHTML%3B%0A%20%20%20%20%20%20%20var%20dataURL%20%3D%20%27data%3Atext/html%3Bcharset%3Dutf-8%2C%20%3Chtml%20contenteditable/%3E%3Ctitle%3ETranslate%3C/title%3E%27%0A%20%20%20%20%20%20%20dataURL%20+%3D%20%27%3Cstyle%3Ebody%20%7B%20background-color%3A%20%27+%20background%20+%27%3B%20font-size%3A%20%27+%20fontSize%20+%27%20%7D%3C/style%3E%27%3B%0A%20%20%20%20%20%20%20dataURL%20+%3D%20ruHTML%20+%20%27%3C/body%3E%3C/html%3E%27%3B%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20var%20width%20%3D%20%280%29%20%7C%7C%20winWidth%20*%20gBrowser.boxObject.width%3B%20%0A%20%20%20%20%20%20%20var%20height%20%3D%20%280%29%20%7C%7C%20winHeight%20*%20gBrowser.boxObject.height%3B%0A%0A%20%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043A%u043E%u043E%u0440%u0434%u0438%u043D%u0430%u0442%u044B%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0438%u043B%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%20%20%20%20%20%20%20if%20%28%20clipboard%20%26%26%20cbu.getPrefs%28%22Translate.textInPopup%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20bcr%20%3D%20self.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20posX%20%3D%20bcr.left%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20posY%20%3D%20bcr.bottom%20+%205%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20bcr%20%3D%20gBrowser.contentDocument.defaultView.getSelection%28%29.getRangeAt%280%29.getBoundingClientRect%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20posX%20%3D%20window.content.mozInnerScreenX%20+%20bcr.left%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20posY%20%3D%20window.content.mozInnerScreenY%20+%20bcr.bottom%20+%205%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20var%20deltaX%20%3D%20posX%20+%20width%20-%20%28fullScreen%20%3F%20screen.width%20%3A%20screen.availWidth%29%3B%0A%20%20%20%20%20%20%20if%20%28deltaX%20%3E%200%29%20posX%20-%3D%20deltaX%3B%0A%20%20%20%20%20%20%20var%20deltaY%20%3D%20posY%20+%20height%20-%20%28fullScreen%20%3F%20screen.height%20%3A%20screen.availHeight%29%3B%0A%20%20%20%20%20%20%20if%20%28deltaY%20%3E%200%29%20posY%20-%3D%20deltaY%3B%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20var%20win%20%3D%20window.openDialog%28dataURL%2C%20%22%22%2C%20%22outerWidth%3D%22+width+%22%2C%20outerHeight%3D%22+height+%22%2C%20screenX%3D%22+posX+%22%2C%20screenY%3D%22+posY+%22%2C%20status%3Dno%2C%20scrollbars%3Dyes%2C%20resizable%3Dyes%22%29%3B%0A%20%20%20%20%20%20%20win.focus%28%29%3B%0A%0A%20%20%20%20%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u043E%u043A%u043E%u0448%u043A%u043E%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0430%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20gBrowser.addEventListener%28%22click%22%2C%20function%20c%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.removeEventListener%28%22click%22%2C%20c%29%3B%0A%20%20%20%20%20%20%20%20%20%20win%20%26%26%20win.close%28%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%7D%3B%0A%20%20%20req.channel.loadFlags%20%7C%3D%20req.channel.LOAD_FROM_CACHE%3B%0A%20%20%20req.send%28null%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.tooltipText%20%3D%20%22Translate%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20/%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%5Cn%u0421%3A%20%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20%5Cn%u0414%u041F%3A%20CB%20%u043C%u0435%u043D%u044E%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

// Translate от 27.02.2017. ...............

// Настройка функций кликов мыши для кнопки ...............
this.onclick =e=> {
   if ( e.button == 0 ) {         
        var sel = getSelect();
        sel ? translateText(sel) : translatePage();    
        }
                    
   if ( e.button == 1 )
        translateText(gClipboard.read(), true);
          
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
        e.preventDefault();  
        menu.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
        } 
};
this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };


var background = 'white', fontSize = 'medium'; // фон и размер шрифта окошка перевода
var winWidth = 0.4, winHeight = 0.4;          // ширина и высота окошка перевода относительно размера страницы


// Создать меню ...............
var array = [    
    { label: "Перевод текста в маленьком окошке", checkbox: '', value: 'Translate.textInPopup' },
    { label: "Перевод текста в двойным правым кликом", checkbox: '', value: 'Translate.textWithDoubleRightClick' },              
    { label: "Перевод страницы в новой вкладке сразу справа", checkbox: '', value: 'Translate.nextPage' },
    { label: "Перевод выделенного текста из контекстного меню", checkbox: '', value: 'Translate.textFromContextMenu' },              
    { separator: ''},
    { label: "Удалять подсказки в переводчиках", checkbox: '', value: 'Translate.noTooltipForTranslate', func: '' },
    { label: "Удалять панель управления в переводчике Googlе", checkbox: '', value: 'Translate.removeGoogleTranslatorHeader', func: '' },
    { separator: ''},
    { label: "Перевод страницы в обычном переводчике Google", radio: '', value: 'google' },    
    { label: "Перевод страницы с заменой текста в переводчике Google", radio: '', value: 'googleBookmarklet' }
            ];
var menu = self.appendChild( document.createElement("menupopup") );  
array.forEach((m)=> {
   if ( "separator" in m ) { menu.appendChild( document.createElement("menuseparator") ); return };
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   
   if ( "radio" in m ) { 
        mItem.setAttribute("type", "radio");
        mItem.setAttribute('checked', cbu.getPrefs("Translate.pageIn") == m.value );
        mItem.onclick =()=> cbu.setPrefs("Translate.pageIn", m.value);  
        }  
   if ( "checkbox" in m ) {          
        mItem.setAttribute('type', 'checkbox');
        mItem.setAttribute('checked', cbu.getPrefs(m.value) );
        mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value));  
        }
   if ( "func" in m ) mItem.addEventListener("command", ()=> toggleGoogleTranslatorStyle());
       
   menu.appendChild(mItem);
});
menu.setAttribute("onclick", "event.stopPropagation()");


// Получить выделенный текст из страницы или false ...............
function getSelect() {
   var sel = gBrowser.contentDocument.defaultView.getSelection();
   return (sel == '') ? false : sel.toString();
};


// Удалить панель управления в переводчике Googlе и подсказки в переводчиках ...............
function toggleGoogleTranslatorStyle(arg) {
   var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   try { sss.unregisterSheet( self.uri, 0) } catch(e) {};
   
   if ( cbu.getPrefs("Translate.removeGoogleTranslatorHeader") ) {  // панель управления
        var removeHeader = '\
            @-moz-document domain("translate.google.com") {\
               #gb, #gt-bbar, #gt-c:not([class="g-section"]) { display: none !important; }\
               #contentframe { top: 0 !important; }\
            }';           
        }
   
   if ( cbu.getPrefs("Translate.noTooltipForTranslate") ) {  // подсказки в переводчиках
        var noPopup = '\
            /*Microsoft*/\
            DIV[translate="no"] { display: none !important; }\
            *[lang="ru"] {\
            color: black !important;\
            background-color: transparent !important;\
            }\
            /*Google*/\
            @-moz-document domain("translate.google.com") {\
               .jfk-tooltip { display: none !important; }\
            }\
            @-moz-document regexp("^https?://translate\.google\..*") {/**/}\
            @-moz-document domain("translate.googleusercontent.com") {\
              span[onmouseout][onmouseover][style] { background-color: transparent !important; }\
              .gmnoprint { display: none !important; }\
            }\
            .goog-text-highlight {\
            background-color: transparent !important;\
            border: none !important;\
            box-shadow: none !important;\
            }\
            .goog-tooltip.skiptranslate { display: none !important; }\
            ';
        }   
   self.css = removeHeader + noPopup;

   if ( !!self.css ) {
        self.uri = makeURI("data:text/css," + encodeURIComponent(self.css));
        sss.loadAndRegisterSheet(self.uri, 0);
        }
        
   arg && addDestructor(()=> sss.unregisterSheet(self.uri, 0) );  
};
toggleGoogleTranslatorStyle(true); 


// Перевод страницы ...............   
function translatePage() {
   var translator = cbu.getPrefs("Translate.pageIn");
   
   // перевод страницы в обычном переводчике Google в новой активной вкладке или текущей вкладке
   if ( translator == "google" ) {
        var url = "http://translate.google.com/translate?u=" + content.location + "&hl=ru&ie=UTF-8&sl=auto&tl=ru";
        cbu.getPrefs("Translate.nextPage")
        ? gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), gBrowser.mCurrentTab._tPos + 1)
        : loadURI(url);
        return;
        } 

   // перевод страницы с заменой текста на странице в переводчике Microsoft или Google 
   if ( cbu.getPrefs("Translate.nextPage") ) {
        gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.duplicateTab(gBrowser.mCurrentTab))
           .addEventListener("pageshow", function c(e) {
               this.removeEventListener(e.type, c);
               runBukmarklet();
           });              
        }    
   else runBukmarklet();
   
   // запустить букмарклет для перевода
   function runBukmarklet() {
      cbu.setPrefs("security.mixed_content.block_active_content", false);
      
      content.document.location = "javascript:{var d=document; var b=d.body; var o=d.createElement('script');o.setAttribute('src','http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&hl=ru');o.setAttribute('type','text/javascript');b.appendChild(o); var v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none'; var p=d.createElement('scri'+'pt');p.text='function%20googleTranslateElementInit(){var%20tElem%20=%20new%20google.translate.TranslateElement({pageLanguage:%22%22},%22google_translate_element%22);setTimeout(function()%20{%20tElem.showBanner(true);%20},100);}';p.setAttribute('type','text/javascript');b.appendChild(p);}void%200";
   } 
};


// Обработчик следит за двойным правым кликом мыши на странице и запускает перевод выделенного текста ...............
addEventListener("dblclick", e=> {
   if ( e.button && cbu.getPrefs("Translate.textWithDoubleRightClick") ) {
        e.preventDefault();
        document.getElementById("contentAreaContextMenu").hidePopup();

        translateText(getSelect());
        }
}, false, gBrowser);


// Перевод выделенного текста из контекстного меню ...............   
var contextMenu = document.getElementById("contentAreaContextMenu");
var mItem = contextMenu.insertBefore(document.createElement("menuitem"), contextMenu.children[1]);
mItem.setAttribute("label", "Перевод выделенного текста");
mItem.onclick =()=> translateText(getSelect());
addEventListener("popupshowing", ()=> {
   mItem.hidden = !cbu.getPrefs("Translate.textFromContextMenu") || !gContextMenu.isTextSelected; 
}, false, contextMenu);
addDestructor(()=> mItem.remove());


// Перевести текст в Google переводчике в новой вкладке сразу справа или в маленьком окошке ...............
function translateText(text, clipboard) {
   if ( text == false ) return;

   // перевод в Google переводчике текста
   if ( !cbu.getPrefs("Translate.textInPopup") ) {
        var url = "http://translate.google.com/translate_t?hl=ru#auto|ru|" + text;
        gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab(url), gBrowser.mCurrentTab._tPos + 1);
        return;
        };

   var beg = "http://translate.google.com/translate_t?prev=hp&hl=ru&js=y&text=";
   var end = "&file=&sl=auto&tl=ru&history_state0=#";
   var url = beg + text + end;
    
   var req = new XMLHttpRequest();
   req.open("GET", url, true);
   
   req.onload =()=> {
       var res = req.responseText;
       var suHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML);
       var doc = document.implementation.createHTMLDocument("");
       doc.body.appendChild(suHTML.parseFragment(res, false, null, doc.body));

       var ruHTML = doc.getElementById("result_box").innerHTML;
       var dataURL = 'data:text/html;charset=utf-8, <html contenteditable/><title>Translate</title>'
       dataURL += '<style>body { background-color: '+ background +'; font-size: '+ fontSize +' }</style>';
       dataURL += ruHTML + '</body></html>';
       
       var width = (0) || winWidth * gBrowser.boxObject.width; 
       var height = (0) || winHeight * gBrowser.boxObject.height;

       // получить координаты кнопки или выделенного текста
       if ( clipboard && cbu.getPrefs("Translate.textInPopup") ) {
            var bcr = self.getBoundingClientRect();
            var posX = bcr.left;
            var posY = bcr.bottom + 5;
            }
       else
            {
            var bcr = gBrowser.contentDocument.defaultView.getSelection().getRangeAt(0).getBoundingClientRect();
            var posX = window.content.mozInnerScreenX + bcr.left;
            var posY = window.content.mozInnerScreenY + bcr.bottom + 5;
            }
       
       var deltaX = posX + width - (fullScreen ? screen.width : screen.availWidth);
       if (deltaX > 0) posX -= deltaX;
       var deltaY = posY + height - (fullScreen ? screen.height : screen.availHeight);
       if (deltaY > 0) posY -= deltaY;     

       var win = window.openDialog(dataURL, "", "outerWidth="+width+", outerHeight="+height+", screenX="+posX+", screenY="+posY+", status=no, scrollbars=yes, resizable=yes");
       win.focus();

       // закрывать окошко перевода кликом на странице                 
       gBrowser.addEventListener("click", function c() {
          this.removeEventListener("click", c);
          win && win.close();                                    
       });
   };
   req.channel.loadFlags |= req.channel.LOAD_FROM_CACHE;
   req.send(null)
};


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


За код который переводит текст в маленьком окошке спасибо okkamas_knife и Dumby
За код который удаляет панель управления(заголовок) в переводчике Googlе спасибо Kamui

Отредактировано bunda1 (30-05-2014 21:56:24)

Отсутствует

 

№4514-04-2011 18:31:25

Black_Sun
по Отражениям
 
Группа: Members
Зарегистрирован: 09-10-2007
Сообщений: 198
UA: Firefox 4.0

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

Greasemonkey menu(Firefox 3.6 - 4.0+)
Имитирует старое меню greasemonkey с перехватом правой кнопки мыши.

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

Выделить код

Код:

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%3EGreasemonkey%20menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyVJREFUOMt1k0toXGUAhb//n5vMjDczmUeaO3nNdMYkTCKNpKGpUWzHYsSkGrALHwiufCDuFLFIwUUVBHeiIApZVCqFIii2LqymWk0nbcWWaGxompd53HQmkzQTO6+be38XWrSlnuXhHDiL78Ad9MEg4qPHcN3uv/8o7sMp9P962u2hDweRr3yNA9gAR57AqNhszxXZcb1M1FF8Bky+/RDy0Gkcwf/o48fplZJUscJAvkxPaQufEBz3u3lNKbKvn6J0xwXv9lJf7eHVconnKoKG1QKUyqBrcJeHSMXmSdvmGLB0OIW8ZcGbCcKRNoaDRt2QY9uYi+sULTCag/hqPGSXTDb/5NBbo7xzsyMADvYxqBQHat3cfc9996Z2pPbhQjrj356UdrFI98CQkrouJs78wPhP6ZPXNjCl5Mf3znFEi0AoFIu+EfB59jg38iTvf5CG1g5HOUruPhBWtrVFbcQQ0iVU8gFHLM4t7vfH3BTKzu6952a+02qhVnj1WFWNB6VpKmw0MrOSkacuT6s9yU5haVX8fPaC6m9NCMNoVJ6wQdmyhJB2k9tHnVaAG+bqxmIum421xaPCXxtQX42Nc3RkQuSyW5SkzfcXrxDsr+aZh3dR5a0Rl6cmKDrapuViUy5AZmYuc2IzX6Al3kJVwC8C1V61ZebUNj1AQHmVyuQxQiFwV4lovBnLsrl61fz89HX+EABJ6Hz+6eiJwaeG4raloweDlLxeEvE4UrqYW1xQerkk1pZX8Ppsvjn+5canw1cG0pDWAJqg4hLKQsLSvMnyyG+qOdYolkYn8eheHNsSU79Pq/qWgOjsaURKVaqrpkjlH5AaEqzNTi/M/nrhUntf/z48fl2Ysxm2LIUSIByHpnZDJHdGmTg/xtTk3Jy3jhzL4Hq5CzE8SXG7xvzG+rW9hc18MNYWIbmrnURXlObWbTS3hfHqDr+cSXN2JL1umpWDx+YZAxAvdCM+uYgCGKqnIxDiWaPB/4gv4I+5q7WgS5PCtp3MxnreXFleO7+2ytEvTEYBXtz5N4i81CNuQToJkUZIJCDZC9190JWEpg7Xv9+5Wf4LG9k8TnFGv1sAAAAASUVORK5CYII%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%0Athis.pref%3D%27greasemonkey.enabled%27%3B%0A%0Athis.onImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyVJREFUOMt1k0toXGUAhb//n5vMjDczmUeaO3nNdMYkTCKNpKGpUWzHYsSkGrALHwiufCDuFLFIwUUVBHeiIApZVCqFIii2LqymWk0nbcWWaGxompd53HQmkzQTO6+be38XWrSlnuXhHDiL78Ad9MEg4qPHcN3uv/8o7sMp9P962u2hDweRr3yNA9gAR57AqNhszxXZcb1M1FF8Bky+/RDy0Gkcwf/o48fplZJUscJAvkxPaQufEBz3u3lNKbKvn6J0xwXv9lJf7eHVconnKoKG1QKUyqBrcJeHSMXmSdvmGLB0OIW8ZcGbCcKRNoaDRt2QY9uYi+sULTCag/hqPGSXTDb/5NBbo7xzsyMADvYxqBQHat3cfc9996Z2pPbhQjrj356UdrFI98CQkrouJs78wPhP6ZPXNjCl5Mf3znFEi0AoFIu+EfB59jg38iTvf5CG1g5HOUruPhBWtrVFbcQQ0iVU8gFHLM4t7vfH3BTKzu6952a+02qhVnj1WFWNB6VpKmw0MrOSkacuT6s9yU5haVX8fPaC6m9NCMNoVJ6wQdmyhJB2k9tHnVaAG+bqxmIum421xaPCXxtQX42Nc3RkQuSyW5SkzfcXrxDsr+aZh3dR5a0Rl6cmKDrapuViUy5AZmYuc2IzX6Al3kJVwC8C1V61ZebUNj1AQHmVyuQxQiFwV4lovBnLsrl61fz89HX+EABJ6Hz+6eiJwaeG4raloweDlLxeEvE4UrqYW1xQerkk1pZX8Ppsvjn+5canw1cG0pDWAJqg4hLKQsLSvMnyyG+qOdYolkYn8eheHNsSU79Pq/qWgOjsaURKVaqrpkjlH5AaEqzNTi/M/nrhUntf/z48fl2Ysxm2LIUSIByHpnZDJHdGmTg/xtTk3Jy3jhzL4Hq5CzE8SXG7xvzG+rW9hc18MNYWIbmrnURXlObWbTS3hfHqDr+cSXN2JL1umpWDx+YZAxAvdCM+uYgCGKqnIxDiWaPB/4gv4I+5q7WgS5PCtp3MxnreXFleO7+2ytEvTEYBXtz5N4i81CNuQToJkUZIJCDZC9190JWEpg7Xv9+5Wf4LG9k8TnFGv1sAAAAASUVORK5CYII%3D%27%3B%0Athis.offImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyBJREFUOMt1k8trK3Ucxc/3N888+kgmjGlu4yQqrZRW+qKlWdi0gtR4K8WFG8E/QhcKuvXfEBQUQdxpFw0S6I1Q+liUUtKmkNY0kuaGaDppemcmM7+fi8uFq9Sz/MDhnMU5Eh5QoVCgyclJqVqtipf5xsaGlk6n9aurq8ELJj9gZtvb2xxAAABbW1uvBEGQcRxnxnXdVznnPwA4W1tbY6VSiRP+R5ubm0tElB8MBu+5rrvg+/4QEf2kqupnANrFYtF5sMHKyoqpadqnrut+AmDs/v4erutCURRompYMguAjIcSPAP7M5/PsXw2mpqaMdDr9jWEYH3DOcXNzg8FggGQyiUgkglarhX6//1W5XP76hYcAIJfLFYQQH2qa9vrs7Gx+eXkZjDFeLpeZ53lYXV0VmqbRwcEBDg8Pf7Vtu8kYe7K3t/edDCA+Njb2eTQafdt1XczPzyObzXIhBCsUCsL3fSQSCSIiwTmnRqPxfiqVgud5y0dHR78xACOqqlqhUAiRSESYpimazSYrFovCcRzyfZ9KpZJotVpkmqaIxWJC13UoivJoeHg4IQPodzqdRqfTsTKZDI2MjIiTkxPs7u7S7e0tOOc4Pj6GqqpYX1+HpmlUrVbBOe/JstxjAJ42Go1f7u7uYFkWQqEQ6bouHMcR4+PjMAxDBEEAwzBARJROpxEEAer1+s+tVqsuAUC73f5raWmpkMvlYuFwGOFwmKLRKCUSCcTjcUqlUshms8QYg6IouL6+vi2Xy19yzusyACiK4jHGBpxzVCoVnJ2dCUVR6OLiArIsAwDt7OyIiYkJMk0TROREIpFn3W4XEgBkMhkEQfCOJElv6LqOoaEhmp6ehmVZMAwD8XgcsiyT53moVqs4PT097ff739q2bUszMzN0fn7+TFXVP3q93qoQImZZFkZHR0H0fGeMMUiShEqlgv39/b/b7fYXl5eXewAgq6oKAKjVak88z3vc6/U+rtVq70ajUUtV1ZgkSeT7/lPbtpudTme/2+1+X6vVfgeAhYWF5wmLi4v/PVUSwGsA3mSMzWma9haARy9/Z25ujgDgH7jkWH58xN7+AAAAAElFTkSuQmCC%27%3B%0A%0Athis.PS%3DComponents.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D.getService%28Components.interfaces.nsIPrefBranch%29%3B%0A%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.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%20%26%26%20%21event.ctrlKey%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%20%0Athis.setAttribute%28%22onclick%22%2C%22if%28event.button%3D%3D0%29%7Bthis.toggleStatus%28%29%3B%7D%20else%20if%28event.button%3D%3D1%29%20%7BGM_OpenScriptsMgr%28%29%3B%7D%20else%20if%28event.button%3D%3D2%29%7Bif%28%21this.lastChild%29%7Bvar%20gm_menu%3Ddocument.getElementById%28%27gm_general_menu%27%29.getElementsByTagName%28%27menupopup%27%29%5B0%5D.cloneNode%28true%29%3Bthis.appendChild%28gm_menu%29%3B%7D%20var%20popup%3Ddocument.getBoxObjectFor%28this%29%3Bthis.lastChild.showPopup%28this%2C-1%2C-1%2C%27popup%27%2C%27bottomleft%27%2C%27topleft%27%29%3B%7D%22%29%3B%0A%0Athis.setStatus%3Dfunction%28%29%20%7B%0A%20var%20status%20%3D%20this.PS.getBoolPref%28this.pref%29%3B%0A%20if%20%28status%3D%3Dtrue%29%20%7B%0A%20%20this.image%3Dthis.onImage%3B%0A%20%20this.tooltipText%3D%22Greasemonkey%20enabled%22%0A%20%7D%20else%20%7B%0A%20%20this.image%3Dthis.offImage%3B%0A%20%20this.tooltipText%3D%22Greasemonkey%20disabled%22%0A%20%7D%0A%7D%0A%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setStatus.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setStatus%28%29%3B%0A%0Athis.toggleStatus%3Dfunction%28%29%20%7B%0A%20switch%28this.PS.getBoolPref%28this.pref%29%29%20%7B%0A%20%20case%20true%3A%20this.PS.setBoolPref%28this.pref%2Cfalse%29%3B%20break%3B%0A%20%20case%20false%3A%20this.PS.setBoolPref%28this.pref%2Ctrue%29%3B%20break%3B%0A%20%7D%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

/*Initialization code*/

this.pref='greasemonkey.enabled';

this.onImage='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyVJREFUOMt1k0toXGUAhb//n5vMjDczmUeaO3nNdMYkTCKNpKGpUWzHYsSkGrALHwiufCDuFLFIwUUVBHeiIApZVCqFIii2LqymWk0nbcWWaGxompd53HQmkzQTO6+be38XWrSlnuXhHDiL78Ad9MEg4qPHcN3uv/8o7sMp9P962u2hDweRr3yNA9gAR57AqNhszxXZcb1M1FF8Bky+/RDy0Gkcwf/o48fplZJUscJAvkxPaQufEBz3u3lNKbKvn6J0xwXv9lJf7eHVconnKoKG1QKUyqBrcJeHSMXmSdvmGLB0OIW8ZcGbCcKRNoaDRt2QY9uYi+sULTCag/hqPGSXTDb/5NBbo7xzsyMADvYxqBQHat3cfc9996Z2pPbhQjrj356UdrFI98CQkrouJs78wPhP6ZPXNjCl5Mf3znFEi0AoFIu+EfB59jg38iTvf5CG1g5HOUruPhBWtrVFbcQQ0iVU8gFHLM4t7vfH3BTKzu6952a+02qhVnj1WFWNB6VpKmw0MrOSkacuT6s9yU5haVX8fPaC6m9NCMNoVJ6wQdmyhJB2k9tHnVaAG+bqxmIum421xaPCXxtQX42Nc3RkQuSyW5SkzfcXrxDsr+aZh3dR5a0Rl6cmKDrapuViUy5AZmYuc2IzX6Al3kJVwC8C1V61ZebUNj1AQHmVyuQxQiFwV4lovBnLsrl61fz89HX+EABJ6Hz+6eiJwaeG4raloweDlLxeEvE4UrqYW1xQerkk1pZX8Ppsvjn+5canw1cG0pDWAJqg4hLKQsLSvMnyyG+qOdYolkYn8eheHNsSU79Pq/qWgOjsaURKVaqrpkjlH5AaEqzNTi/M/nrhUntf/z48fl2Ysxm2LIUSIByHpnZDJHdGmTg/xtTk3Jy3jhzL4Hq5CzE8SXG7xvzG+rW9hc18MNYWIbmrnURXlObWbTS3hfHqDr+cSXN2JL1umpWDx+YZAxAvdCM+uYgCGKqnIxDiWaPB/4gv4I+5q7WgS5PCtp3MxnreXFleO7+2ytEvTEYBXtz5N4i81CNuQToJkUZIJCDZC9190JWEpg7Xv9+5Wf4LG9k8TnFGv1sAAAAASUVORK5CYII=';
this.offImage='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAyBJREFUOMt1k8trK3Ucxc/3N888+kgmjGlu4yQqrZRW+qKlWdi0gtR4K8WFG8E/QhcKuvXfEBQUQdxpFw0S6I1Q+liUUtKmkNY0kuaGaDppemcmM7+fi8uFq9Sz/MDhnMU5Eh5QoVCgyclJqVqtipf5xsaGlk6n9aurq8ELJj9gZtvb2xxAAABbW1uvBEGQcRxnxnXdVznnPwA4W1tbY6VSiRP+R5ubm0tElB8MBu+5rrvg+/4QEf2kqupnANrFYtF5sMHKyoqpadqnrut+AmDs/v4erutCURRompYMguAjIcSPAP7M5/PsXw2mpqaMdDr9jWEYH3DOcXNzg8FggGQyiUgkglarhX6//1W5XP76hYcAIJfLFYQQH2qa9vrs7Gx+eXkZjDFeLpeZ53lYXV0VmqbRwcEBDg8Pf7Vtu8kYe7K3t/edDCA+Njb2eTQafdt1XczPzyObzXIhBCsUCsL3fSQSCSIiwTmnRqPxfiqVgud5y0dHR78xACOqqlqhUAiRSESYpimazSYrFovCcRzyfZ9KpZJotVpkmqaIxWJC13UoivJoeHg4IQPodzqdRqfTsTKZDI2MjIiTkxPs7u7S7e0tOOc4Pj6GqqpYX1+HpmlUrVbBOe/JstxjAJ42Go1f7u7uYFkWQqEQ6bouHMcR4+PjMAxDBEEAwzBARJROpxEEAer1+s+tVqsuAUC73f5raWmpkMvlYuFwGOFwmKLRKCUSCcTjcUqlUshms8QYg6IouL6+vi2Xy19yzusyACiK4jHGBpxzVCoVnJ2dCUVR6OLiArIsAwDt7OyIiYkJMk0TROREIpFn3W4XEgBkMhkEQfCOJElv6LqOoaEhmp6ehmVZMAwD8XgcsiyT53moVqs4PT097ff739q2bUszMzN0fn7+TFXVP3q93qoQImZZFkZHR0H0fGeMMUiShEqlgv39/b/b7fYXl5eXewAgq6oKAKjVak88z3vc6/U+rtVq70ajUUtV1ZgkSeT7/lPbtpudTme/2+1+X6vVfgeAhYWF5wmLi4v/PVUSwGsA3mSMzWma9haARy9/Z25ujgDgH7jkWH58xN7+AAAAAElFTkSuQmCC';

this.PS=Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);

this.oncontextmenu = function(event) {
    if(event.button == 2 && !event.shiftKey && !event.altKey && !event.metaKey && !event.ctrlKey) {
        // Блокируем контекстное меню при клике ПКМ без модификаторов
        event.preventDefault();
        event.stopPropagation();
    }
};
 
this.setAttribute("onclick","if(event.button==0){this.toggleStatus();} else if(event.button==1) {GM_OpenScriptsMgr();} else if(event.button==2){if(!this.lastChild){var gm_menu=document.getElementById('gm_general_menu').getElementsByTagName('menupopup')[0].cloneNode(true);this.appendChild(gm_menu);} var popup=document.getBoxObjectFor(this);this.lastChild.showPopup(this,-1,-1,'popup','bottomleft','topleft');}");

this.setStatus=function() {
 var status = this.PS.getBoolPref(this.pref);
 if (status==true) {
  this.image=this.onImage;
  this.tooltipText="Greasemonkey enabled"
 } else {
  this.image=this.offImage;
  this.tooltipText="Greasemonkey disabled"
 }
}

this.ob={};
this.ob.observe=this.setStatus.bind(this);
this.PS.addObserver(this.pref,this.ob,false);
this.setStatus();

this.toggleStatus=function() {
 switch(this.PS.getBoolPref(this.pref)) {
  case true: this.PS.setBoolPref(this.pref,false); break;
  case false: this.PS.setBoolPref(this.pref,true); break;
 }
}

Отредактировано Black_Sun (14-04-2011 18:32:20)

Отсутствует

 

№4615-04-2011 19:43:34

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

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

Extension List ( Firefox 24+ )
показывает и даёт возможность легко скопировать список установленных расширений, тем, плагинов, языков, словарей, GreaseMonkey скриптов и Stylish стилей и список установленных Custom Buttons кнопок.

Скриншот:
ea51a756160b8f9c4de91987ebd7d955.png

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0421%u043F%u0438%u0441%u043E%u043A%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAFHUlEQVQ4jX2UW4id1RmGv2+t9e9/H/5/9mF2Zh8m455tdMjJatpqQERIUUOhiNAWCqa1hwsvWoQ24E17a5EqlOKF0BPeKBLBeKC9EqoSo8SW0kQbO8l2MpnzzD7O/s9rre/rRWpvCn0v3xeemwdeZGYAACAitGAREQEBJQA4DGyZmRAAAYARUTIgIrBmZssAfGthECBBCgmK4Rbw3PVz/Nu//w7afot917uj5tfONivNOgqKjckkANpYJ972cOvTaTx9IaJsm4idct6z42xMD7Tux5/c/VNWDIzMzNcG19oXb3xwe7PctErKZiGXKxxbPP61Tmu+YoWmIErE8tr1zZXNleuZMXdFWTIHTMtVb0bvBLtYQMV8D4ESICCjTHh577tnTj3+y/lyMwqSMARJKQIKrQ2nlBIyiGZ1zinP+A/VCrUnr6+t3NwZbHyr6lVyIMRJP++/BwD/UgyMQkgGgb3ljavnx4PtP6UmXWw25n88W6nO9OOxidNIEhEbZQ+AMPXQjrla9haU035eOuJQvlroZgDnLNEPFQGRQARme3l5ezlwZg/9JdLx0r4Ov7HkLM1O06kN4khIRLRoWesMhmbErnRz+aL7QMZJSQFIS9wmAKkkSLRkQYJ6ZLHVebpUql5M9s1MYKLDe9MROw6gI5VFQhxMxnoUDuhgrV0Kg3R7befq8wfK9Tu04Hs7VfO2AExvSQGGUEdlRFxwCu63C9YT0XTAqU54rtpQVlqMwhSjvSRIEp1EWVqaBNNJp3jojSQJbvR2e/5X/ROhEsgKAYGIoB8OKaI4TWwYFQp5dax+xCMgDLIADGeY6BQ8zy0WSgckSgBEIU+0v+L9bfvSsUgnX56Y6ccM8JkCAJYo4WjtyJUtu/r7Gvofrk5WDu7a3afm6gfae8FQR8lUMTJq1+Q0aSVJgSpx69L44jNxIep0l1p3JkSvamueVADAQgpoePU1dzd/Yc6ZO78S9w5f3fnsjHRkO8oimkQBCYnCkIE0TYUQDETkfbK7e7rsF52y64lROF4iJkcxMFoiuNy/fN+F/rtPLZv6Y4N4WJKJ0w3XY1Ayh56tkACEUTDOwnRC7pwqsZFbJysnnttI1hfWR4OTj971ndfyKv8fKUww3B82huPhcSenjloBQoECmADXZ+sO5QzHUYr9yShjxjQZ61IRCqNnHn729U8GVzbeufnebT84/r0tiZIUAAAAg4yVbiStrBU2NCBjvlksgCUIaJ8NWcgg5bwvC3lRl9YA6Iicf6xf8Zb3lr/0ea938tX8KxeOnD7+qUJAECh5sdb5Z2e789KsqLyzPl5fGAXDn9VmK/OTZGoSnSACoBXWMVo7OZEDxqz9q/effS7FpBvE0e1uzz33CzI/UghIQgjoNrq9zt7im91K589Bsn/4wxuXzuSLx+YRmUbTkYMohMopynRqI4gVIJQmZnLa90qyXWxg2a12GFgqZhaWCS5d++upt6689XS1MtPTWepU65Wjqzurg/1w/NGs39hBZt7a2Wy5RfeeQinfTgKz3vU7P18bbNy9NRh+/f4HHzzvKidTjMzAjPt24o/0cF4aOOgoZVylnNXNjVHXv+21P37zD+eZCJ54+fuP3QzWO9JR7UKuOP7Noy9eWJusvvLR6se/PnvqbF+hw/jFY+9F/cow7tdzIscMTJYtGDLOjDMzbvmtPgPD5nSzHuiwIlGyQqUXygtbjnRSwwYU3vL7X+D/yxevjoD/0yMwEgAKEAQA8G+QDuH4X0FBaQAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3Etry%20%7B%20Cu.import%28%22resource%3A//custombuttons-modules/addons4.js%22%2C%20%7B%7D%29%3B%20%7D%20catch%28ex%29%20%7B%7D%0A%0Afunction%20gatherInfo%28type%29%20%7B%0A%0A%09var%20tmp%20%3D%20%5B%5D%2C%20map%20%3D%20%7B%7D%2C%20sort%20%3D%20%5B%5D%3B%0A%09items.forEach%28function%28item%29%20%7B%0A%09%09if%20%28item.type%20%21%3D%20type%29%20return%3B%0A%0A%09%09var%20name%20%3D%20item.name%20%3F%20item.name.toUpperCase%28%29%20%3A%20%22UNNAMED%22%3B%0A%09%09name%20+%3D%20item.id%0A%0A%09%09tmp.push%28name%29%3B%0A%09%09map%5Bname%5D%20%3D%20item%3B%0A%09%7D%29%3B%0A%09tmp.sort%28%29%3B%0A%09tmp.forEach%28function%28name%29%20%7B%20sort.push%28map%5Bname%5D%29%20%7D%29%3B%0A%09%0A%09var%20list%20%3D%20%22%22%2C%20enabled%20%3D%200%2C%20disabled%20%3D%200%3B%0A%09sort.forEach%28function%28item%29%20%7B%0A%09%0A%09%09list%20+%3D%20%28item.name%20%7C%7C%20%22unnamed%22%29%20+%20%22%20%22%20+%20%28item.version%20%7C%7C%20%22%22%29%3B%0A%0A%09%09if%20%28item.type%20%21%3D%20%22custombuttons%22%20%26amp%3B%26amp%3B%20%28item.userDisabled%20%7C%7C%20item.appDisabled%29%29%20%7B%0A%09%09%09list%20+%3D%20%22%20%5B%20%u0432%u044B%u043A%u043B%u044E%u0447%u0435%u043D%20%5D%5Cn%22%3B%20disabled++%3B%20return%3B%0A%09%09%7D%0A%0A%09%09else%20if%20%28item.type%20%3D%3D%20%22custombuttons%22%29%20%7B%0A%0A%09%09%09var%20str%20%3D%20item.id%3B%0A%09%09%09var%20id%20%3D%20str.substring%28str.lastIndexOf%28%22custombuttons-button%22%29%2C%20str.length%29%3B%0A%09%09%09var%20button%20%3D%20document.getElementById%28id%29%3B%0A%0A%09%09%09if%20%28%21button%29%20%7B%0A%09%09%09%09list%20+%3D%20%22%20%5B%20%u041D%u0415%20%u0412%u042B%u0422%u0410%u0429%u0415%u041D%u0410%20%5D%5Cn%22%3B%20disabled++%3B%20return%3B%0A%09%09%09%7D%0A%09%09%09if%20%28button.hasAttribute%28%22initializeerror%22%29%29%20%7B%0A%09%09%09%09list%20+%3D%20%22%20%5B%20%u041E%u0428%u0418%u0411%u041A%u0410%20%u0418%u041D%u0418%u0426%u0418%u0410%u041B%u0418%u0417%u0410%u0426%u0418%u0418%20%5D%5Cn%22%3B%20disabled++%3B%20return%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09enabled++%3B%20list%20+%3D%20%22%5Cn%22%3B%0A%09%7D%29%3B%0A%09return%20%5Benabled%20+%20disabled%2C%20enabled%2C%20disabled%2C%20list%5D%3B%0A%7D%0Avar%20items%20%3D%20%5B%5D%3B%0Afunction%20extensionsCallback%28extensions%29%20%7B%0A%09var%20list%20%3D%20%22%22%3B%0A%09items%20%3D%20extensions%3B%0A%20%20%20%20%0A%09var%20info%20%3D%20Cc%5B%22@mozilla.org/xre/app-info%3B1%22%5D.getService%28Ci.nsIXULAppInfo%29%3B%0A%20%20%20%20%0A%09list%20+%3D%20info.vendor%20+%20%22%20%22%20+%20info.name%20+%20%22%20%22%20+%20info.version%20+%20%22%20%28build%20%22%20+%20info.appBuildID%20+%20%22%29%5Cn%22%3B%0A%09list%20+%3D%20%22User%20Agent%3A%20%22%20+%20navigator.userAgent%20+%20%22%5Cn%5Cn%22%3B%0A%0A%09for%28var%20type%20in%20AddonManager.addonTypes%29%20%7B%0A%09%09%0A%09%09var%20name%3B%0A%09%09var%20addonType%20%3D%20AddonManager.addonTypes%5Btype%5D%3B%0A%09%09if%20%28addonType.name%29%20name%20%3D%20addonType.name%3B%09%09%0A%09%09else%20if%20%28addonType.id%20%3D%3D%20%22custombuttons%22%29%20name%20%3D%20%22%u041A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%0A%09%09list%20+%3D%20%22***%20%22%20+%20name%3B%0A%09%09var%20ext%20%3D%20gatherInfo%28addonType.id%29%3B%0A%09%09list%20+%3D%20%22%20%28%20%u0412%u043A%u043B%u044E%u0447%u0435%u043D%u043E%3A%20%22%20+%20ext%5B1%5D%20+%20%22%2C%20%u041E%u0442%u043A%u043B%u044E%u0447%u0435%u043D%u043E%3A%20%22%20+%20ext%5B2%5D%20+%20%22%2C%20%u0412%u0441%u0435%u0433%u043E%3A%20%22%20+%20ext%5B0%5D%20+%20%22%20%29%5Cn%22%20+%20ext%5B3%5D%20+%20%22%5Cn%22%3B%0A%09%7D%0A%0A%09var%20dialog%20%3D%20%27%5C%0A%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%5Cn%5C%0A%09%09%26lt%3Bdialog%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%5Cn%5C%0A%09%09%09xmlns%3Ahtml%3D%22http%3A//www.w3.org/1999/xhtml%22%5Cn%5C%0A%09%09%09id%3D%22cbbExtensionsLister%22%5Cn%5C%0A%09%09%09persist%3D%22width%20height%20screenX%20screenY%22%5Cn%5C%0A%09%09%09title%3D%22%u0421%u043F%u0438%u0441%u043E%u043A%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%22%5Cn%5C%0A%09%09%09width%3D%22640%22%20height%3D%22480%22%5Cn%5C%0A%09%09%09buttons%3D%22accept%2Cextra1%22%5Cn%5C%0A%09%09%09buttonlabelextra1%3D%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u0441%u0435%u2026%22%5Cn%5C%0A%09%09%09onload%3D%22init%28%29%22%5Cn%5C%0A%09%09%09ondialogextra1%3D%22copy%28%29%22%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3B%21%5BCDATA%5B%5Cn%5C%0A%09%09%09%09%09function%20init%20%28%29%20%7B%7D%5Cn%5C%0A%09%09%09%09%09function%20copy%20%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09var%20tb%20%3D%20document.getElementById%28%22addonslist%22%29%3B%5Cn%5C%0A%09%09%09%09%09%09window.arguments%5B0%5D.write%28%28opener.navigator.platform.indexOf%28%22Win%22%29%20%21%3D%20-1%29%20%3F%20tb.value.replace%28/%5C%5Cn/g%2C%20%22%5C%5Cr%5C%5Cn%22%29%20%3A%20tb.value%29%3B%5Cn%5C%0A%09%09%09%09%09%09tb.focus%20%28%29%3B%5Cn%5C%0A%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%5D%5D%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B/script%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3Btextbox%20id%3D%22addonslist%22%20flex%3D%221%22%20multiline%3D%22true%22%20/%26gt%3B%5Cn%5C%0A%09%26lt%3B/dialog%26gt%3B%27%3B%0A%09dialog%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20encodeURIComponent%28dialog%29%3B%0A//%09var%20win%20%3D%20window.openDialog%20%28dialog%2C%20%22%22%2C%20%22chrome%2Cdependent%2Cdialog%3Dno%2Cminimizable%22%2C%20custombuttonsUtils.gClipboard%29%3B%0A%09var%20win%20%3D%20window.openDialog%20%28dialog%2C%20%22%22%2C%20%22chrome%2Cdependent%2Cdialog%3Dno%22%2C%20custombuttonsUtils.gClipboard%29%3B%0A%0A%09addEventListener%28%22load%22%2C%20function%28%29%20%7B%0A%09%09var%20doc%20%3D%20win.document%3B%0A%09%09var%20textbox%20%3D%20doc.querySelector%28%22textbox%22%29%3B%0A%09%09textbox.value%20%3D%20list%3B%0A%09%09textbox.inputField.selectionStart%20%3D%0A%09%09textbox.inputField.selectionEnd%20%3D%200%3B%0A%09%7D%2C%20true%2C%20win%29%3B%0A%7D%0AAddonManager.getAllAddons%28extensionsCallback%29%3B%0A%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Код:

Выделить код

Код:

try { Cu.import("resource://custombuttons-modules/addons4.js", {}); } catch(ex) {}

function gatherInfo(type) {

    var tmp = [], map = {}, sort = [];
    items.forEach(function(item) {
        if (item.type != type) return;

        var name = item.name ? item.name.toUpperCase() : "UNNAMED";
        name += item.id

        tmp.push(name);
        map[name] = item;
    });
    tmp.sort();
    tmp.forEach(function(name) { sort.push(map[name]) });
    
    var list = "", enabled = 0, disabled = 0;
    sort.forEach(function(item) {
    
        list += (item.name || "unnamed") + " " + (item.version || "");

        if (item.type != "custombuttons" && (item.userDisabled || item.appDisabled)) {
            list += " [ выключен ]\n"; disabled++; return;
        }

        else if (item.type == "custombuttons") {

            var str = item.id;
            var id = str.substring(str.lastIndexOf("custombuttons-button"), str.length);
            var button = document.getElementById(id);

            if (!button) {
                list += " [ НЕ ВЫТАЩЕНА ]\n"; disabled++; return;
            }
            if (button.hasAttribute("initializeerror")) {
                list += " [ ОШИБКА ИНИЦИАЛИЗАЦИИ ]\n"; disabled++; return;
            }
        }

        enabled++; list += "\n";
    });
    return [enabled + disabled, enabled, disabled, list];
}
var items = [];
function extensionsCallback(extensions) {
    var list = "";
    items = extensions;
    
    var info = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
    
    list += info.vendor + " " + info.name + " " + info.version + " (build " + info.appBuildID + ")\n";
    list += "User Agent: " + navigator.userAgent + "\n\n";

    for(var type in AddonManager.addonTypes) {
        
        var name;
        var addonType = AddonManager.addonTypes[type];
        if (addonType.name) name = addonType.name;        
        else if (addonType.id == "custombuttons") name = "Кнопки";

        list += "*** " + name;
        var ext = gatherInfo(addonType.id);
        list += " ( Включено: " + ext[1] + ", Отключено: " + ext[2] + ", Всего: " + ext[0] + " )\n" + ext[3] + "\n";
    }

    var dialog = '\
        <?xml-stylesheet href="chrome://global/skin/"?>\n\
        <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\n\
            xmlns:html="http://www.w3.org/1999/xhtml"\n\
            id="cbbExtensionsLister"\n\
            persist="width height screenX screenY"\n\
            title="Список расширений"\n\
            width="640" height="480"\n\
            buttons="accept,extra1"\n\
            buttonlabelextra1="Копировать все…"\n\
            onload="init()"\n\
            ondialogextra1="copy()">\n\
            <script type="application/x-javascript">\n\
                <![CDATA[\n\
                    function init () {}\n\
                    function copy () {\n\
                        var tb = document.getElementById("addonslist");\n\
                        window.arguments[0].write((opener.navigator.platform.indexOf("Win") != -1) ? tb.value.replace(/\\n/g, "\\r\\n") : tb.value);\n\
                        tb.focus ();\n\
                    }\n\
                ]]>\n\
            </script>\n\
            <textbox id="addonslist" flex="1" multiline="true" />\n\
    </dialog>';
    dialog = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialog);
//    var win = window.openDialog (dialog, "", "chrome,dependent,dialog=no,minimizable", custombuttonsUtils.gClipboard);
    var win = window.openDialog (dialog, "", "chrome,dependent,dialog=no", custombuttonsUtils.gClipboard);

    addEventListener("load", function() {
        var doc = win.document;
        var textbox = doc.querySelector("textbox");
        textbox.value = list;
        textbox.inputField.selectionStart =
        textbox.inputField.selectionEnd = 0;
    }, true, win);
}
AddonManager.getAllAddons(extensionsCallback);


Автор кнопки: Dumby

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

Отсутствует

 

№4718-04-2011 19:24:12

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

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

Downloads( Firefox 3.6 - 24 )
Кнопка открывает стандартный менеджер загрузок в боковой панели, новом окне или вкладке.

ЛКМ => открыть менеджер загрузок в боковой панели.
СКМ => открыть менеджер загрузок в новом окне.
ПКМ =>  открыть менеджер загрузок в новой активной вкладке.
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%3EDownloads%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%20%3F%20toggleSidebar%28%29%20%3A%20openWebPanel%28%22Downloads%22%2C%20downTabUrl%20%29%3B%20%20%20%20%20%09%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20var%20windows%20%3D%20Components.%20classes%20%5B%27@mozilla.org/appshell/window-mediator%3B1%27%5D.getService%28Components.%20interfaces.%20nsIWindowMediator%29.getEnumerator%20%28null%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%28%20windows.%20hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20windows.getNext%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20win.document.documentURI%20%3D%3D%20%22chrome%3A//mozapps/content/downloads/downloads.xul%22%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.close%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20BrowserDownloadsUI%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20downloadManagerInTab%28%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A%0A//%20%u041E%u0431%u044A%u044F%u0432%u043B%u044F%u0435%u043C%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%20%u0434%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20...................................................................%0Avar%20downTabUrl%20%3D%20%27chrome%3A//mozapps/content/downloads/downloads.xul%27%3B%0A%0A//%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0434%u043B%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20....%0Aconst%20trueDownloadsImg%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0Aconst%20falseDownloadsImg%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg%3D%3D%22%3B%0A%0A%0A%0A/*%20%u041E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%20%u0432%20%u0442%u0430%u0431%u0435%20%u0438%u043B%u0438%20%u043F%u0435%u0440%u0435%u043C%u0435%u0441%u0442%u0438%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u0438%20%u0443%u0436%u0435%20%u043E%u0442%u043A%u0440%u044B%u0442%u044B%20%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%20..........................................*/%0Afunction%20downloadManagerInTab%28%20foregroundTab%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20%20%20%20setTimeout%28function%28%29%20%7B%20closeDownloadManager%28%29%20%7D%2C%200%29%3B%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u044B%u0439%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u043A%u0440%u043E%u043C%u0435%20%u043F%u0435%u0440%u0432%u043E%u0439%20....%0A%20%20%20%20%20var%20downTab%20%3D%20null%3B%0A%20%20%20%20%20Array.slice%28%20gBrowser.tabs%20%29.forEach%28function%28tab%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20tab.linkedBrowser.currentURI.spec%20%21%3D%3D%20downTabUrl%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%21downTab%20%3F%20downTab%20%3D%20tab%20%3A%20gBrowser.removeTab%28tab%29%3B%0A%20%20%20%20%20%7D%29%0A%20%20%20%0A%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u043C%u0435%u0441%u0442%u0438%u0442%u044C%20%u0438%u043B%u0438%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20....%0A%20%20%20%20%20var%20selTab%20%3D%20gBrowser.selectedTab%3B%0A%20%20%20%20%20if%20%28%20downTab%20%21%3D%3D%20selTab%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20downTab%20%26%26%20gBrowser.visibleTabs.indexOf%28%20downTab%20%29%20%3D%3D%20-1%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20TabView.moveTabTo%28%20downTab%2C%20TabView._window.GroupItems._activeGroupItem.id%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20downTab%20%3D%20downTab%20%7C%7C%20gBrowser.addTab%28%20downTabUrl%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20pos%20%3D%20selTab._tPos%20+%20%28%20downTab._tPos%20%3E%20selTab._tPos%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.moveTabTo%28%20downTab%2C%20pos%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20downTab%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%7D%3B%0A%0A%0A%0A//%20%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043C%u0435%u043D%u044F%u0435%u043C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0442%u0430%u0431%u0430%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%20.........................................................%0AaddEventListener%28%22TabAttrModified%22%2C%20function%28e%29%20%7B%20%0A%20%20%20%20%20if%20%28%20e.target.linkedBrowser.currentURI.spec%20%3D%3D%20downTabUrl%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20tabIndex%20%3D%20gBrowser.getBrowserIndexForDocument%28%20e.target.linkedBrowser.contentDocument%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20tab%20%3D%20gBrowser.mTabContainer.childNodes%5BtabIndex%5D%3B%0A%20%20%20%20%20%20%20%20%20%20LOG%28tab.label%29%0A%20%20%20%20%20%20%20%20%20%20tab.image%20%3D%20%28%20tab.label%20%3D%3D%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%20%29%3F%20falseDownloadsImg%3A%20trueDownloadsImg%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%7D%2C%20true%2C%20gBrowser.tabContainer%29%3B%0A%0A%0A%0A//%20%u041E%u0442%u0441%u043B%u0435%u0436%u0438%u0432%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043A%u043E%u043C%u0430%u043D%u0434%u044B%20%u0441%u0432%u044F%u0437%u043D%u044B%u0435%20%u0441%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u043E%u0439%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u043A%u0430%u0442%u044C%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20%u0438%20%u043A%u043E%u043C%u0430%u043D%u0434%u044B%20%20........%0Afunction%20getCommand%28e%29%20%7B%0A%20%20%20%20%20var%20command%20%3D%20e.target.getAttribute%28%22oncommand%22%29%3B%0A%20%20%20%20%20if%20%28%20command%20%3D%3D%20%22performCommand%28%27cmd_removeFromList%27%29%3B%22%20%7C%7C%20command%20%3D%3D%20%27clearDownloadList%28%29%3B%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20content.document.location%20%3D%3D%20downTabUrl%29%20document.getElementById%28%22Browser%3AReload%22%29.doCommand%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20document.getElementById%28%27sidebar-box%27%29.getAttribute%28%27sidebarcommand%27%29%20%29%20openWebPanel%28%22Downloads%22%2C%20downTabUrl%20%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%09%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%20%20%20%20%20%0AaddEventListener%28%22command%22%2C%20getCommand%2C%20true%2C%20window%29%3B%0A%0A%0A%0A//%20%u0418%u0441%u043F%u0440%u0430%u0432%u043B%u044F%u0435%u043C%20%u043E%u0448%u0438%u0431%u043A%u0438%20.......................................................................................%0Afunction%20setFakeArguments%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.target.location.href%20%3D%3D%20%27chrome%3A//mozapps/content/downloads/downloads.xul%27%20%29%20%7B%0A%20%20%20%20%20var%20win%20%3D%20e.target.defaultView%3B%0A%20%20%20%20%20win%20%3D%20win.wrappedJSObject%20%7C%7C%20win%3B%0A%20%20%20%20%20win.arguments%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22TabClose%22%2C%20setFakeArguments%2C%20true%2C%20gBrowser%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20setFakeArguments%2C%20true%2C%20gBrowser%29%3B%0AaddEventListener%28%22DOMContentLoaded%22%2C%20setFakeArguments%2C%20true%2C%20document.getElementById%28%27sidebar-box%27%29%29%3B%0A%0A%0A%0A%0A//%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u044B%u0439%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u0433%u0440%u0443%u0437%u043E%u043A%20....................................................................%0Afunction%20closeDownloadManager%28%29%20%7B%0A%20%20%20%20%20var%20wm%20%3D%20Cc%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D.getService%28Ci.nsIWindowMediator%29%3B%0A%20%20%20%20%20var%20dm%20%3D%20wm.getMostRecentWindow%28%22Download%3AManager%22%29%3B%0A%20%20%20%20%20if%20%28%20dm%20%29%20dm.close%28%29%3B%20%20%0A%7D%3B%0A%0A%0A%09%09%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20.....................................................................................%0Athis.tooltipText%20%3D%20%22L%3A%20Download%20Manager%20in%20the%20Sidebar%5CnM%3A%20Download%20Manager%20%5CnR%3A%20Download%20Manager%20in%20the%20Tab%5CnCtrl+R%3A%20CB%20menu%20%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

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

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", downTabUrl );         
          };
          
     // действие при клике СКМ ....    
     if ( e.button == 1 ) { 
          var windows = Components. classes ['@mozilla.org/appshell/window-mediator;1'].getService(Components. interfaces. nsIWindowMediator).getEnumerator (null);
          while( windows. hasMoreElements() ) {
                 var win = windows.getNext ();
                 if ( win.document.documentURI == "chrome://mozapps/content/downloads/downloads.xul") {    
                      win.close();
                      return;
                      }
                 };
          BrowserDownloadsUI();
          };
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();  
          downloadManagerInTab( true );
          }
};



// Объявляем переменные для этой вкладки ...................................................................
var downTabUrl = 'chrome://mozapps/content/downloads/downloads.xul';

// иконки для вкладки загрузок ....
const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg==";



/* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой 
   если загрузи уже открыты и закрыть все лишние вкладки загрузок  ..........................................*/
function downloadManagerInTab( foregroundTab ) {          
  
     setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок     
     
     // закрыть все вкладки загрузок кроме первой ....
     var downTab = null;
     Array.slice( gBrowser.tabs ).forEach(function(tab) {
           if ( tab.linkedBrowser.currentURI.spec !== downTabUrl ) return;
           !downTab ? downTab = tab : gBrowser.removeTab(tab);
     })
   
     // переместить или открыть вкладку загрузок рядом с текущей вкладкой ....
     var selTab = gBrowser.selectedTab;
     if ( downTab !== selTab ) {
          if ( downTab && gBrowser.visibleTabs.indexOf( downTab ) == -1 )
               TabView.moveTabTo( downTab, TabView._window.GroupItems._activeGroupItem.id );
          downTab = downTab || gBrowser.addTab( downTabUrl );
          var pos = selTab._tPos + ( downTab._tPos > selTab._tPos );
          gBrowser.moveTabTo( downTab, pos );
          gBrowser.selectedTab = downTab;        
          } 
};



// Автоматически меняем иконку для таба "Загрузки" .........................................................
addEventListener("TabAttrModified", function(e) { 
     if ( e.target.linkedBrowser.currentURI.spec == downTabUrl ) {
          var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument );
          var tab = gBrowser.mTabContainer.childNodes[tabIndex];
          LOG(tab.label)
          tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg;
          }      
}, true, gBrowser.tabContainer);



// Отслеживать все команды связные с загрузкой и запускать нужные функции и команды  ........
function getCommand(e) {
     var command = e.target.getAttribute("oncommand");
     if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') {
          if ( content.document.location == downTabUrl) document.getElementById("Browser:Reload").doCommand();
          if ( document.getElementById('sidebar-box').getAttribute('sidebarcommand') ) openWebPanel("Downloads", downTabUrl );                
          }
};     
addEventListener("command", getCommand, true, window);



// Исправляем ошибки .......................................................................................
function setFakeArguments(e) {
     if ( e.target.location.href == 'chrome://mozapps/content/downloads/downloads.xul' ) {
     var win = e.target.defaultView;
     win = win.wrappedJSObject || win;
     win.arguments = [];
     }
};
addEventListener("TabClose", setFakeArguments, true, gBrowser);
addEventListener("DOMContentLoaded", setFakeArguments, true, gBrowser);
addEventListener("DOMContentLoaded", setFakeArguments, true, document.getElementById('sidebar-box'));




// Закрыть стандартный менеджер загрузок ....................................................................
function closeDownloadManager() {
     var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
     var dm = wm.getMostRecentWindow("Download:Manager");
     if ( dm ) dm.close();  
};


        
// Подсказка для кнопки .....................................................................................
this.tooltipText = "L: Download Manager in the Sidebar\nM: Download Manager \nR: Download Manager in the Tab\nCtrl+R: CB menu ";

Отредактировано bunda1 (03-08-2013 23:11:56)

Отсутствует

 

№4818-04-2011 21:38:14

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

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

Сохранить всю страницу как  PNG / PDF ( Firefox 24 + ) от 06.02.2017.
Сохраняет страницу как PNG-изображение( делает скриншот страницы ) или как PDF файл через сервис pdfmyurl.com  JavaScript на странице должны быть включены для сохранения страницы в PDF. Если страница слишком большая то кнопка сохранит страницу как PNG не полностью. Кнопка не работает если включен e10.

ЛКМ  => Сохранить всю страницу как PNG,
СКМ  => Контекстное меню кнопки,
ПКМ  => Сохранить страницу как PDF файл.
Ctrl + ПКМ  =>  Контекстное меню кнопки

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043A%u0430%u043A%20%20PNG%20/%20PDF%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExMAAAEAIAAYBgAAFgAAACgAAAATAAAAJgAAAAEAIAAAAAAA8AUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAgMCAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAgICAwEBAQEAAAAAAgICAgAAAAAAAAACAAAABgAAAAQAAAAEAAAABAAAAAUAAAAJBwcHDxAQERcWFxYaHB0cGhoaGhYKCwoMAAAAAgAAAAAAAAACAAAAAAAAAAAdHR0UaGhoe2pqapVpaGiOYWBgkWFgX49iYWCTXl9fn3+BgbaxsrLTvr672r+/vNu/vb3OnZycrlxcXGolJSUnDAwMAwEBAQAeHh4WhYWErNzb2v/9+/v99vTz/+vp6P/m5eP/1NTU/9LU0//s7uv/1dTT/4mFhP9ZVVP/bWpn/7y6uP7W1dP/u7q63XZ1dnQFBQUEiIeGmqSko//NzMz48vHw99jX1vjS0M/4x8jH+MTFxPji4t/54uHd+WNiYfsaIyH8GSUn/A8SFPs7ODj5nZmX983Jx/+ko6PgCgoKKZuamfienZz729rZ/+nn5v/Mysn/yMfH/8jJyf/f3tz////8/7Wzsf8aJyX/IT06/0JdXv8/UVn/Exca/2djYfvBvrv+kpGR0wcICESSkZD+qKal/uDf3f/g4N//w8LA/7+/vv/Iysn/5OLh//////+goZ//HDMu/0pgXv8/VVn/UWhw/yArMP9EQT/8x8PA/5SSkdQGBgY0m5yb/rCwr//k4uH/4N/d/8C9vP+4uLf/yMrJ/+vp5///////n6Kf/zNJQ/+qtLT/bHx//0VbZf8lMDf/TkxJ+8TBvv+OjIzHBQUGEKempfm8u7v/5+bk/+Tk4v+9u7r/s7Kx/8bIyP/t7uv////+/768uv81RUH/aX59/150d/8zSVH/JCou/3p3dfrDwL7/hoaFuwYGBgmtrKz5wcHB/+bl5P/z8e//0M3L/7KxsP+2uLj/6enn////+//w7+z/homH/zVEQv8yREf/MTg7/2xpaf+vqqn6t7Ox/4KAf7sHBwcJra2s/sbGxf/j4+L/j46P/2xsbP+5uLf/tbW0/7u+vf/t7ev//fz5/+bk4f+qp6X/iYaF/5aTkv+1srH/p6Si+6yopv+Afn2zBgYGCLSzs/vMzMv+2trZ/4B/f/9LSkz/tbOz/+Lg3/+ztLP/vL+//9bY1v/h4d//3+Df/9DRz/+6urj/pKGf/5eUkvutqaf/e3h4tAUFBQnDwsL6yMjH/OHi4f3Lysn+urq4/9zb2f/j4eD+2tjX/sfGxP6ztLP/r7Cv/6ipp/+joqH/nZqY/6Cdmv6em5r1rKim/3l3drUFBgYIoqGgn9fX1//a2tn76+rq+evq6fnn5uT629nY+tTU0/rR0M/5zcrH+8G+vPukoqD7rqqp+bOwr/ippaL8op6c/re0s/55eXheBQUFADg6OBDo6Oif8fHx/8C/wP2bmp3/lpWW/83NzP/k4+P/4ODf//n5+P//////4+Pi/rCurf6ysbH/rKuq86KgnsqBf39uMjExCAAAAAAFBQUATExMC11dXVZERERnPj09bCQlJWhERERiSkpKW5qamWrDwsHRurm47ba2td9paGeKNDQzZUJCQlI6OjkcERAQAgAAAAIAAAABAgICAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIAGxoaIRQTEy0TExImCgoKBQAAAAAAAAAAAAAAAAEBAQMCAgIBAAAAAAEBAQADAwMCAwMDBAICAgQBAQEEAQEBBAICAgQEBAQEAQEBAgAAAAAAAAAAAAAAAAEBAQEDAwMEAgICAwMDAgMCAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgECAgICAgICAwICAgMBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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................%20%0Athis.onclick%20%3De%3D%3E%20%7B%20%20%20%20%20%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20savePageInPNG%28%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20savePageToPDF%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043A%u0430%u043A%20PDF%20%u0444%u0430%u0439%u043B%20%u0447%u0435%u0440%u0435%u0437%20%u0441%u0435%u0440%u0432%u0438%u0441%20%27pdfmyurl.com%27%20................%0Afunction%20savePageToPDF%28%29%20loadURI%28%22http%3A//pdfmyurl.com%3Furl%3D%22%20+%20content.location%29%3B%0A%0A%20%0A//%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043A%u0430%u043A%20PNG%20................%0Afunction%20savePageInPNG%28%29%20%7B%0A%20%20%20var%20canvas%20%3D%20document.createElementNS%28xhtmlns%2C%20%27canvas%27%29%3B%0A%20%20%20canvas.width%20%3D%20content.innerWidth%20+%20content.scrollMaxX%3B%20%0A%20%20%20canvas.height%20%3D%20content.innerHeight%20+%20content.scrollMaxY%3B%0A%20%20%20var%20context%20%3D%20canvas.getContext%28%222d%22%29%3B%0A%20%20%20%28%28i%20%3D%2017%29%3D%3E%20%7B%0A%20%20%20%20%20%20try%20%7B%20context.drawWindow%28content%2C%200%2C%200%2C%20canvas.width%2C%20canvas.height%2C%20%22white%22%29%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%20canvas.height%20%3D%20canvas.width*i%3B%20arguments.callee%28--i%29%3B%20%7D%3B%0A%20%20%20%7D%29%28%29%3B%0A%20%20%20var%20uri%20%3D%20makeURI%28canvas.toDataURL%28%22image/png%22%29%29%3B%0A%20%20%20%0A%20%20%20var%20fp%20%3D%20window.makeFilePicker%28%29%3B%0A%20%20%20fp.init%28window%2C%20%22Save%20Screenshot%20As%22%2C%20fp.modeSave%29%3B%0A%20%20%20fp.appendFilter%28%22%22%2C%20%22*.png%22%29%3B%0A%20%20%20var%20title%20%3D%20gBrowser.mCurrentTab.label.replace%28/%5B%3A+.%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%22%20%22%29.replace%28/%5Cs%5Cs+/g%2C%20%22%20%22%29%3B%0A%20%20%20fp.defaultString%20%3D%20title%20+%20new%20Date%28%29.toLocaleFormat%28%22%20%20%25d.%25m.%25Y.%20%28%20%25I%3A%25M%3A%25S%20%29%22%29%20+%20%22.png%22%3B%0A%20%20%20if%20%28fp.show%28%29%20%3D%3D%20fp.returnCancel%20%7C%7C%20%21fp.file%29%20return%3B%0A%0A%20%20%20var%20wbp%20%3D%20window.makeWebBrowserPersist%28%29%3B%0A%20%20%20parseInt%28Services.appinfo.version%29%20%3C%2036%0A%20%20%20%3F%20wbp.saveURI%28uri%2C%20null%2C%20null%2C%20null%2C%20null%2C%20fp.file%2C%20null%29%0A%20%20%20%3A%20wbp.saveURI%28uri%2C%20null%2C%20null%2C%20null%2C%20null%2C%20null%2C%20fp.file%2C%20null%29%3B%20//%20%u0435%u0441%u043B%u0438%20FF36+%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043A%u0430%u043A%20PNG%20%5Cn%u0421%3A%20%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u043A%u0430%u043A%20PDF%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ................ 
this.onclick =e=> {     
   
   if ( e.button == 0 ) savePageInPNG();
   
   if ( e.button == 1 ) gShowPopup(this);
   
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
        e.preventDefault();
        savePageToPDF();
        }
};


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

 
// Сохранить всю страницу как PNG ................
function savePageInPNG() {
   var canvas = document.createElementNS(xhtmlns, 'canvas');
   canvas.width = content.innerWidth + content.scrollMaxX;
   canvas.height = content.innerHeight + content.scrollMaxY;
   var context = canvas.getContext("2d");
   ((i = 17)=> { 
      try { context.drawWindow(content, 0, 0, canvas.width, canvas.height, "white") }
      catch(e) { canvas.height = canvas.width*i; arguments.callee(--i); };
   })();
   var uri = makeURI(canvas.toDataURL("image/png"));
   
   var fp = window.makeFilePicker();
   fp.init(window, "Save Screenshot As", fp.modeSave);
   fp.appendFilter("", "*.png");
   var title = gBrowser.mCurrentTab.label.replace(/[:+.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " ");
   fp.defaultString = title + new Date().toLocaleFormat("  %d.%m.%Y. ( %I:%M:%S )") + ".png";
   if (fp.show() == fp.returnCancel || !fp.file) return;

   var wbp = window.makeWebBrowserPersist();
   parseInt(Services.appinfo.version) < 36
   ? wbp.saveURI(uri, null, null, null, null, fp.file, null)
   : wbp.saveURI(uri, null, null, null, null, null, fp.file, null); // если FF36+
};


// Подсказка для кнопки ................
this.tooltipText = "Л:  Сохранить всю страницу как PNG \nС:  CB Меню \nП:  Сохранить всю страницу как PDF";

Отредактировано bunda1 (18-10-2013 20:43:33)

Отсутствует

 

№4921-04-2011 16:13:06

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

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

Make bookmarklet button( Firefox 3.6+ ) от 25.08.2016.
кнопка преобразует букмарклеты в кнопки. При нажатии кнопки открывается окошко где для кнопки запускающей букмарклет можно установить название и иконку и адрес букмарклета, после вода нужных данных создаётся новая кнопка.
Автор: Anton

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMake%20bookmarklet%20button%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3Evar%20XML%20%3D%20window.XML%20%7C%7C%20%7B%7D%3B%0A%0Athis.%20showBookmarkletDialog%20%3D%20function%20%28callback%29%0A%7B%0A%20%20%20%20var%20ipi%20%3D%20XML.%20ignoreProcessingInstructions%3B%0A%20%20%20%20XML.%20ignoreProcessingInstructions%20%3D%20false%3B%0A%20%20%20%20var%20dialog%20%3D%20%27%5C%0A%20%20%20%20%20%20%20%20%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20id%3D%22dlg02%22%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Custom%20Buttons%20bookmarklet%20maker%22%5Cn%5C%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%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%21%5BCDATA%5B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20windowController%20%3D%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%20name%20%3D%20document.%20getElementById%20%28%22nametb%22%29.%20value%3B%5Cn%5C%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%22urltb%22%29.%20value%3B%5Cn%5C%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%20img%20%3D%20document.%20getElementById%20%28%22imgtb%22%29.%20value%3B%5Cn%5C%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%28name%2C%20url%2C%20img%29%3B%5Cn%5C%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%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%5D%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/script%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bvbox%20flex%3D%221%22%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bgrid%26gt%3B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%22Bookmarklet%20Name%22/%26gt%3B%5Cn%5C%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%22nametb%22%20flex%3D%221%22/%26gt%3B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%22Bookmarklet%20URL%22/%26gt%3B%5Cn%5C%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%22urltb%22%20flex%3D%221%22/%26gt%3B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%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%22Icon%20URL%22/%26gt%3B%5Cn%5C%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%22imgtb%22%20flex%3D%221%22/%26gt%3B%5Cn%5C%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%5Cn%5C%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%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/grid%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B/vbox%26gt%3B%5Cn%5C%0A%20%20%20%20%20%20%20%20%26lt%3B/dialog%26gt%3B%5Cn%5C%0A%20%20%20%20%27%3B%0A%20%20%20%20window.%20openDialog%20%28%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20dialog%2C%20%22%22%2C%20%22chrome%2Cdependent%2Cminimizable%2Cresizable%3Dyes%2Ccenterscreen%2Cdialog%3Dyes%22%2C%20callback%29%3B%0A%20%20%20%20XML.%20ignoreProcessingInstructions%20%3D%20ipi%3B%0A%7D%3B%0A%0Avar%20THIS%20%3D%20this%3B%0A%0Athis.%20makeBookmarklet%20%3D%20function%20%28bookmarkletName%2C%20bookmarkletCode%2C%20bookmarkletIcon%29%0A%7B%0A%20%20%20%20var%20bookmarklet%20%3D%20btoa%20%28bookmarkletCode%29%3B%0A%20%20%20%20custombuttons.%20cloneButton%20%28THIS%29%3B%0A%20%20%20%20var%20newButtonLink%20%3D%20custombuttons.%20makeButtonLink%20%28%22update%22%2C%20THIS.%20nextSibling.%20id%29%3B%0A%20%20%20%20var%20params%20%3D%20custombuttons.%20cbService.%20getButtonParameters%20%28newButtonLink%29.%20wrappedJSObject%3B%0A%20%20%20%20params.%20name%20%3D%20bookmarkletName%3B%0A%20%20%20%20params.%20code%20%3D%20%22getBrowser%20%28%29.%20loadURI%20%28atob%20%28%5C%22%22%20+%20bookmarklet%20+%20%22%5C%22%29%29%3B%22%3B%0A%20%20%20%20params.%20image%20%3D%20bookmarkletIcon%3B%0A%20%20%20%20params.%20wrappedJSObject%20%3D%20params%3B%0A%20%20%20%20custombuttons.%20cbService.%20installButton%20%28params%29%3B%0A%7D%3B%0A%0Athis.%20showBookmarkletDialog%20%28this.%20makeBookmarklet%29%3B%0A%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 XML = window.XML || {};

this. showBookmarkletDialog = function (callback)
{
    var ipi = XML. ignoreProcessingInstructions;
    XML. ignoreProcessingInstructions = false;
    var dialog = '\
        <?xml-stylesheet href="chrome://global/skin/"?>\n\
        <?xml-stylesheet href="resource://gre/res/html.css"?>\n\
        <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\n\
                id="dlg02"\n\
                title="Custom Buttons bookmarklet maker"\n\
                ondialogaccept="return windowController.accept();">\n\
            <script type="application/x-javascript">\n\
                <![CDATA[\n\
                    var windowController =\n\
                    {\n\
                        accept: function ()\n\
                        {\n\
                            var name = document. getElementById ("nametb"). value;\n\
                            var url = document. getElementById ("urltb"). value;\n\
                            var img = document. getElementById ("imgtb"). value;\n\
                            window. arguments [0] (name, url, img);\n\
                        }\n\
                    };\n\
                ]]>\n\
            </script>\n\
            <vbox flex="1">\n\
                <grid>\n\
                    <columns>\n\
                        <column/>\n\
                        <column flex="1"/>\n\
                    </columns>\n\
                    <rows>\n\
                        <row align="center">\n\
                            <label value="Bookmarklet Name"/>\n\
                            <textbox id="nametb" flex="1"/>\n\
                        </row>\n\
                        <row align="center">\n\
                            <label value="Bookmarklet URL"/>\n\
                            <textbox id="urltb" flex="1"/>\n\
                        </row>\n\
                        <row align="center">\n\
                            <label value="Icon URL"/>\n\
                            <textbox id="imgtb" flex="1"/>\n\
                        </row>\n\
                    </rows>\n\
                </grid>\n\
            </vbox>\n\
        </dialog>\n\
    ';
    window. openDialog ("data:application/vnd.mozilla.xul+xml," + dialog, "", "chrome,dependent,minimizable,resizable=yes,centerscreen,dialog=yes", callback);
    XML. ignoreProcessingInstructions = ipi;
};

var THIS = this;

this. makeBookmarklet = function (bookmarkletName, bookmarkletCode, bookmarkletIcon)
{
    var bookmarklet = btoa (bookmarkletCode);
    custombuttons. cloneButton (THIS);
    var newButtonLink = custombuttons. makeButtonLink ("update", THIS. nextSibling. id);
    var params = custombuttons. cbService. getButtonParameters (newButtonLink). wrappedJSObject;
    params. name = bookmarkletName;
    params. code = "getBrowser (). loadURI (atob (\"" + bookmarklet + "\"));";
    params. image = bookmarkletIcon;
    params. wrappedJSObject = params;
    custombuttons. cbService. installButton (params);
};

this. showBookmarkletDialog (this. makeBookmarklet);


Custom Buttons² Context Menu Demo( Firefox 3.6+ ) Кнопка - образец , показывающий , что кроме  модефикаторов клавиш мыши и хоткеев можно использовать контекстное меню .
Автор: nicholas
Код кнопки и инициализации:
Код кнопки:

Выделить код

Код:

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%3ECustom%20Buttons%B2%20Context%20Menu%20Demo%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMnR0RjM1NPPtr+/LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALq1sjvLysTAxsbAGQAAAAAAAAAAAAAAAAAAAACnsK8UpK2sy6Cqqr6msLEaAAAAAAAAAAAAAAAAwbS3DtDGxs6jmZnajYeEvI+LhxcAAAAAAAAAAAAAAAAAAAAAqLGxBa+5ucymsbPwtsDCxcvQ1aDV1twUuauxFK+fpayklZn3jH+A/YuBf9OOh4QaAAAAAAAAAAAAAAAAAAAAAAAAAADX4OK7u8bI+rC5vPvJzdLx3NnesdbM0rO/r7XXlIGH/Yh3evuvo6Ljt6yqGAAAAAAAAAAAAAAAAAAAAAAAAAAA6/DysLTAxP+4wMX7y87T8e3r8Ozt5urt1MbM9rWhqPeeiI7p1MHDh9bGxwcAAAAAAAAAAAAAAAAAAAAAz9reBdvk6L2qtrz/tr3E/NHU2fno5+v37OXp99zO1Pi/q7L2pIuT6su2vGHIsLYCAAAAAAAAAAAAAAAAjJmfAaGvtCGptbuzmaWt+7S7w/vX2t/86Ofr++7o7Pzg0tj8vqiw+5B0ff6pj5Xamn+FKpBzegIAAAAAkpufAoqVmyWJlpyokp+m146aof+3vsX71Njd/eno7P3v5+z93s/W/begqP17XGb9clVd9H1iaL19ZmsyemhsApCZnSSIkpbHg4+VyYuXnumLmJ//qa63/tTX3f7z8vb+9O3x/eTV3P22nab9dlZg/l1BSPtgSE3ocl9ivoJwcyaWn6O9fIWKz4aRlqaTnqTEmaat/7K4wf/W2eD+8e/0/fDp7vrj09r4uqGr8oFkbfxpT1XmUTtAw2VSVsCSgYTDAAAAAAAAAAAAAAAAq7S6U7/IztG2vcT+2Nrg8+rn7fzp3+b43s3V6ragqdWxmKCqkXh/LQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NvigdHS2fDl3uf+3tDa/s+8xuzRu8RsAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANjc4wvX193A5uLo/d/U2v7Wyc/Z1sbMEAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OPp2eDc4fLVy9H75dnfmwAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODd4hTa1tnIzsfK59rQ1Q4AAAAAAAAA/wAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+Di7NnU1gwAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAx+OcQcODnEHAA5xB4AOcQeADnEHAA5xBgAGcQQAAnEEAAJxBAACcQeAHnEH4AZxB+BecQfw7nEH8LZxB/nOcQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20Cb%20%3D%20custombuttons%3B%0A%0A//%20Two%20functions%20for%20testing%2C%20this.one%28%29%20and%20this.two%28%29%0Athis.one%20%3D%20function%28%29%20%7B%0A%20%20var%20Msg%20%3D%20createMsg%28this.label%29%3B%0A%20%20Msg.aMsg%28%22Function%201%22%29%3B%0A%7D%0A%0Athis.two%20%3D%20function%28%29%20%7B%0A%20%20custombuttons.alertSlide%28%22Function%202%22%2C%20%22It%20throws%20up%20a%20different%20alert%22%29%3B%0A%7D%0A%0A//%20Our%20menu%20items%0Athis.ss%20%3D%20%5B%0A%20%20%7B%20label%3A%20%27MenuItem%201%27%2C%20cmd%3A%20%27document.popupNode.one%28%29%27%2C%20sItemId%3A%20%27%27%20%7D%2C%0A%20%20%7B%20label%3A%20%27MenuItem%202%27%20%20%2C%20cmd%3A%20%27document.popupNode.two%28%29%27%2C%20sItemId%3A%20%27%27%20%7D%5D%3B%0A%0A//%20Our%20Initialization%20function%20for%20creating%20the%20context%20menu%2C%20setting%20up%20menuitems%20and%20telling%0A//%20custombuttons2%20extension%20to%20put%20cb%20context%20in%20a%20submenu%0Athis.mObj%20%3D%20Cb.getCbContextObj%28this%29%3B%0Athis.init%20%3D%20function%28x%29%20%7B%0A%20%20x.mObj.setSub%28%29%3B%0A%20%20var%20nItem%20%3D%20%7B%7D%2C%20mItem%20%3D%20%7B%7D%3B%0A%20%20document.getElementById%28CB2const.sCBCtxtMenu%29.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0A%20%20for%28var%20i%20in%20x.ss%29%20%7B%0A%20%20%20%20nItem%20%3D%20new%20x.mObj.getItem%28%29%3B%0A%20%20%20%20nItem.id%20%3D%20%27Note%27%3B%0A%20%20%20%20nItem.label%20%3D%20x.ss%5Bi%5D.label%3B%0A%20%20%20%20nItem.value%20%3D%20String%28i%29%3B%0A%20%20%20%20mItem%20%3D%20x.mObj.insertBefore%28nItem%20%2C%20x.mObj.oMenu.lastChild%29%3B%0A%20%20%20%20this.ss%5Bi%5D.sItemId%20%3D%20mItem.id%3B%0A%20%20%20%20mItem.setAttribute%28%27oncommand%27%2Cx.ss%5Bi%5D.cmd%29%0A%20%20%7D%0A%20%20x.mObj.getItem%28%29%3B%0A%20%20nItem%20%3D%20x.mObj.getItem%28%29%3B%0A%20%20nItem.id%20%3D%20%27Note%27%3B%0A%20%20this.separator%20%3D%20x.mObj.insertBefore%28%20nItem%20%2C%20x.mObj.oMenu.lastChild%29%3B%0A%7D%0Athis.init%28this%29%3B%0A%0A%0Athis.setAttribute%28%27onclick%27%2C%20%27custombuttons.gQuot.mHandler%28event%2C%20this%29%27%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27custombuttons.gQuot.gShowPopup%28this%29%3B%27%29%3B%0A%0A/*this.style.opacity%20%3D%20%27.65%27%3B%0Athis.setAttribute%28%22onmouseover%22%2C%20%22if%20%28custombuttons%29%20custombuttons.ButtonBrt%28event%29%3B%22%20%29%3B%0Athis.setAttribute%28%22onmouseout%22%2C%20%22if%20%28custombuttons%29%20custombuttons.ButtonDim%28event%29%3B%22%20%29%3B*/%0A%0Athis.setAttribute%28%27author%27%2C%27nicholas%27%29%3B%0Athis.setAttribute%28%27version%27%2C%2720081119.00%27%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html%27%29%3B%0Athis.setAttribute%28%27dependency%27%2C%27FF3.0*%2C%20FL2.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%3B%0A%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html%27%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BNo%20help%20developed%20for%20%0A%3Clabel%3E%20button%0Acustombuttons-button%3Cid%3E.%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

var Cb = custombuttons;

// Two functions for testing, this.one() and this.two()
this.one = function() {
  var Msg = createMsg(this.label);
  Msg.aMsg("Function 1");
}

this.two = function() {
  custombuttons.alertSlide("Function 2", "It throws up a different alert");
}

// Our menu items
this.ss = [
  { label: 'MenuItem 1', cmd: 'document.popupNode.one()', sItemId: '' },
  { label: 'MenuItem 2'  , cmd: 'document.popupNode.two()', sItemId: '' }];

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


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

/*this.style.opacity = '.65';
this.setAttribute("onmouseover", "if (custombuttons) custombuttons.ButtonBrt(event);" );
this.setAttribute("onmouseout", "if (custombuttons) custombuttons.ButtonDim(event);" );*/

this.setAttribute('author','nicholas');
this.setAttribute('version','20081119.00');
this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html');
this.setAttribute('dependency','FF3.0*, FL2.0*, TB2.0*, CB2 2.0.5*');
this.setAttribute('status','Complete');
this.setAttribute('public',true);

this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html');

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

Отсутствует

 

№5021-04-2011 23:18:37

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

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

Savefrom( Firefox24+ ) от 07.02.2016.
Кнопка даёт возможность сохранить видео с текущей страницы через сервис http://ru.savefrom.net/. Кнопка меняет свой цвет на зелёный, если вы находитесь на странице закачку с которой поддерживает сервис ru.savefrom.net. Тут указаны Поддерживаемые ресурсы. JavaScript для нужных сайтов должны быть включены. Пример - смотрим видео на youtube, понравилась. Нажимаем кнопку, открывается ru.savefrom.ne, выбираем ссылку для скачивание и скачиваем. Эсли кнопка не работает на Palemoon 28.0.1 то можно добавить в файл user.js параметр: user_pref("general.useragent.override.savefrom.net", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0");


ЛКМ => получить ссылку на видео.

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

Выделить код

Код:

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%3ESavefrom%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAhAQAAAAAAAAAAAAAAAAAAAAAAAAFQKUABUClAAVApQAFQKUABUGmBQZBpwAHPqEUAkSrtAFErL0FPaIZBkGnAAVBpgUFQKUABUClAAVApQAFQKUABUClAAVApQAFQKUABUClBQdFqAEFOp8QAj6nnS2U6P8ymuz/BUKqqAQ5nhQIRagABT+mBQVApQAFQKUABUClAAVApQAFQKUABT+lBAdEqAAGPKAQAD+poTaW5f+H3P/4juD/+ESi6P8EQ6urBDqgEwdEqAAFP6UFBUClAAVApQAFQKUABUClAwdDpwAGPKAOAD6poDyZ5v+J3v/6fMj6/XXC+f6K3f/5Tqjq/wVEq6sEOp8TB0SnAAU/pQMFQKUABUClAwZDpwAHPaEPAD2oojmZ5f+J3P/4crz4/Vyo9/9cqPb/YKr1/XfI//hEoOn/BESrqwQ7oBQHRKcABUClAgVCpwAGPKAMADyooDOV5P+H2//4a7j3/VSk9v9bqvf/W6v3/1Wo9v9XpfP+X7b++SmM5v8AQampBjqgEAVCpwAGPKEGAEKrmS2S5v+B1f/5ZrT2/k6j9f9Xq/b/Vqv2/1Wr9v9Vq/b/Uan2/1On8/9Vsvz7H4ro/wFGrKEFPKEJBUGntgVt1P8ol/D/TaTy/0+n9v9Rqvb/Uav1/1Cs9f9QrfX/T6z1/0+s9f9Orfb/RKXw/yKW7v8HctX/BkOnwAVDqHsGQ6d2ADihlxhx0vRNsf3+UKv0/Uqr9P9MrvX/S671/0qt9P9MrPT9S7f7/hp+1PgAO6GeBkOndwVDqH4FQaUCBT+kAAE5oDkZc87iSbP8/0qr9PpGrfT/SLD1/0iw9f9FrvP/R67z+ke4+/0afNHuATqgQQU/owAFQqUDBUGlBgY/pAAAOKA8J37R51O9/f5BqvL6Qq7z/0Ox9P9DsfT/QbDz/0Kv8/xEu/v9HIDS8QE8oUQFP6QABUKlBwVBpQMFQKQAADefOzWG0eZny//+PKrx+jyu8v9BtPP/P7Pz/z2z8v8+sfH7Qr37/R2C0vABOqFDBT+kAAVCpQMGQaUDBz+kAAA2nzs2htHmg9r//ky28/ovq/D/PrX0/z638/86tvL/O7Px+z+/+/0dg9LwATuhQwU+pAAFQqUDBkGlAwc/pAAAN6A7M4bS5one//54zfr6Sbn1/zKz8v8xt/L/Mbfx/zC08fsyv/r9GoPR8AI6okMEPqQABUKlAwZBpQMHP6QAADegOziG0uaM3v/+h9L8+oTR/P9xyvr/WcP3/07A9f9KvPT7Vsz9/SuK0/ABOqFDBT+kAAVCpQMFQaUDBj+kAAA3oT0fgNHnXtP//mjO/fto0f7/cNf//3TY//9u1v7/bdX8/Gni//0nkdXzADihRQY/pAAFQqUDBUClAgU/pAAFPqQzBVO12ARqxfkHa8LsCnDD8gx1w/MMd8TzC3jE9Ap3xPAHesf8Bl635gU9pDwFQKQABUClAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0Athis._handleClick%20%3D%28%29%3D%3E%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28%27http%3A//savefrom.net/%3Furl%3D%27%20+%20escape%28content.location.href%29%29%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0430%u0435%u043C%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0434%u043E%u043C%u0435%u043D%u0430%u043C%u0438%20%u0437%u0430%u043A%u0430%u0447%u043A%u0443%20%u0438%u0437%20%u043A%u043E%u0442%u043E%u0440%u044B%u0435%20%u043F%u043E%u0434%u0435%u0440%u0436%u0438%u0432%u0430%u0435%u0442%20savefrom%20..............%0Avar%20hosts%20%3D%20self.Help.split%28%27%5Cn%27%29.filter%28%28host%29%3D%3E%20/%5CS/.test%28host%29%29.map%28%28host%29%3D%3E%20host.trim%28%29%29%3B%0A%0A%0A//%20%u0415%u0441%u043B%u0438%20%u0434%u043E%u043C%u0435%u043D%20%u0441%u0430%u0439%u0442%u0430%20%u0441%u043E%u0432%u043F%u0430%u0434%u0430%u0435%u0442%20%u0441%20%u043C%u0430%u0441%u0441%u0438%u0432%u043E%u043C%20%u043C%u0435%u043D%u044F%u0435%u043C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0438%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0443%20..............%0Avar%20%5Bimg%5D%20%3D%20document.getAnonymousNodes%28self%29%3B%0AaddEventListener%28%22TabAttrModified%22%2C%20%28e%2C%20tab%20%3D%20e.target%29%3D%3E%20%7B%0A%20%20%20if%20%28%20%21tab.selected%20%29%20return%3B%20%20%20%0A%20%20%20%0A%20%20%20if%20%28%20%7Ehosts.indexOf%28content.document.domain.replace%28%22www.%22%2C%20%22%22%29%29%20%29%20%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20%22%u0415%u0441%u0442%u044C%20%u0432%u0438%u0434%u0435%u043E%20%u0434%u043B%u044F%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%2C%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20img.src%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAhAQAAAAAAAAAAAAAAAAAAAAAAAAFpUAABaVAAAWlQAAFpUAABaZBBQanQQAHoT4UAqtEtAGsRL0Foj0ZBqdBAAWmQQUFpUAABaVAAAWlQAAFpUAABaVAAAWlQAAFpUAABaVABQeoRQEFnzoQAqc+nS3olP8y7Jr/BapCqASeORQIqEUABaY/BQWlQAAFpUAABaVAAAWlQAAFpUAABaU/BAeoRAAGoDwQAKk/oTbllv+H/9z4jv/g+EToov8Eq0OrBKA6EweoRAAFpT8FBaVAAAWlQAAFpUAABaVAAwenQwAGoDwOAKk+oDzmmf+J/976fPrI/XX5wv6K/935Tuqo/wWrRKsEnzoTB6dEAAWlPwMFpUAABaVAAwanQwAHoT0PAKg9ojnlmf+J/9z4cvi8/Vz3qP9c9qj/YPWq/Xf/yPhE6aD/BKtEqwSgOxQHp0QABaVAAgWnQgAGoDwMAKg8oDPklf+H/9v4a/e4/VT2pP9b96r/W/er/1X2qP9X86X+X/62+SnmjP8AqUGpBqA6EAWnQgAGoTwGAKtCmS3mkv+B/9X5Zva0/k71o/9X9qv/Vvar/1X2q/9V9qv/Ufap/1Pzp/9V/LL7H+iK/wGsRqEFoTwJBadBtgXUbf8o8Jf/TfKk/0/2p/9R9qr/UfWr/1D1rP9Q9a3/T/Ws/0/1rP9O9q3/RPCl/yLulv8H1XL/BqdDwAWoQ3sGp0N2AKE4lxjScfRN/bH+UPSr/Ur0q/9M9a7/S/Wu/0r0rf9M9Kz9S/u3/hrUfvgAoTueBqdDdwWoQ34FpUECBaQ/AAGgOTkZznPiSfyz/0r0q/pG9K3/SPWw/0j1sP9F867/R/Ou+kf7uP0a0XzuAaA6QQWjPwAFpUIDBaVBBgakPwAAoDg8J9F+51P9vf5B8qr6QvOu/0P0sf9D9LH/QfOw/0Lzr/xE+7v9HNKA8QGhPEQFpD8ABaVCBwWlQQMFpEAAAJ83OzXRhuZn/8v+PPGq+jzyrv9B87T/P/Oz/z3ys/8+8bH7Qvu9/R3SgvABoTpDBaQ/AAWlQgMGpUEDB6Q/AACfNjs20Ybmg//a/kzztvov8Kv/PvS1/z7zt/868rb/O/Gz+z/7v/0d0oPwAaE7QwWkPgAFpUIDBqVBAwekPwAAoDc7M9KG5on/3v54+s36SfW5/zLys/8x8rf/MfG3/zDxtPsy+r/9GtGD8AKiOkMEpD4ABaVCAwalQQMHpD8AAKA3OzjShuaM/97+h/zS+oT80f9x+sr/WffD/071wP9K9Lz7Vv3M/SvTivABoTpDBaQ/AAWlQgMFpUEDBqQ/AAChNz0f0YDnXv/T/mj9zvto/tH/cP/X/3T/2P9u/tb/bfzV/Gn/4v0n1ZHzAKE4RQakPwAFpUIDBaVAAgWkPwAFpD4zBbVT2ATFavkHwmvsCsNw8gzDdfMMxHfzC8R49ArEd/AHx3r8Brde5gWkPTwFpEAABaVAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%22%3B%0A%20%20%20else%20%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20%22%u041D%u0435%u0442%20%u0432%u0438%u0434%u0435%u043E%20%u0434%u043B%u044F%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%2C%0A%20%20%20%20%20%20%20%20img.src%20%3D%20self.image%3B%0A%20%20%20%20%20%20%20%20%0A%7D%2C%20true%2C%20gBrowser.tabContainer%20%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bfilefactory.com%0Asendspace.com%0Ayoutube.com%0Ametacafe.com%0Abreak.com%0Adailymotion.com%0Avimeo.com%0Asevenload.com%0Amail.ru%0Asmotri.com%0Ayandex.ru%0Arambler.ru%0Atvigle.ru%0Aintv.ru%0Afacebook.com%0Alivejournal.com%0Avk.com%0Aodnoklassniki.ru%0Asoundcloud.com%0Aliveinternet.ru%0Aguitar-tube.com%0Agametrailers.com%0Atwitch.tv%0Azaycev.net%0A1tv.ru%0Arutv.ru%0Antv.ru%0Avesti.ru%0Amreporter.ru%0Akarusel-tv.ru%0Aautoplustv.ru%0Arussia.ru%0Aamik.ru%0Alife.ru%0Aa1tv.ru%0Akiwi.kz%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ..............
this._handleClick =()=> gBrowser.selectedTab = gBrowser.addTab('http://savefrom.net/?url=' + escape(content.location.href));


// Получаем из вкладки Справка массив с доменами закачку из которые подерживает savefrom ..............
var hosts = self.Help.split('\n').filter((host)=> /\S/.test(host)).map((host)=> host.trim());


// Если домен сайта совпадает с массивом меняем иконку и подсказку ..............
var [img] = document.getAnonymousNodes(self);
addEventListener("TabAttrModified", (e, tab = e.target)=> {
   if ( !tab.selected ) return;   
   
   if ( ~hosts.indexOf(content.document.domain.replace("www.", "")) ) 
        self.tooltipText = "Есть видео для загрузки",      
        img.src = "data:image/x-icon;base64,AAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAhAQAAAAAAAAAAAAAAAAAAAAAAAAFpUAABaVAAAWlQAAFpUAABaZBBQanQQAHoT4UAqtEtAGsRL0Foj0ZBqdBAAWmQQUFpUAABaVAAAWlQAAFpUAABaVAAAWlQAAFpUAABaVABQeoRQEFnzoQAqc+nS3olP8y7Jr/BapCqASeORQIqEUABaY/BQWlQAAFpUAABaVAAAWlQAAFpUAABaU/BAeoRAAGoDwQAKk/oTbllv+H/9z4jv/g+EToov8Eq0OrBKA6EweoRAAFpT8FBaVAAAWlQAAFpUAABaVAAwenQwAGoDwOAKk+oDzmmf+J/976fPrI/XX5wv6K/935Tuqo/wWrRKsEnzoTB6dEAAWlPwMFpUAABaVAAwanQwAHoT0PAKg9ojnlmf+J/9z4cvi8/Vz3qP9c9qj/YPWq/Xf/yPhE6aD/BKtEqwSgOxQHp0QABaVAAgWnQgAGoDwMAKg8oDPklf+H/9v4a/e4/VT2pP9b96r/W/er/1X2qP9X86X+X/62+SnmjP8AqUGpBqA6EAWnQgAGoTwGAKtCmS3mkv+B/9X5Zva0/k71o/9X9qv/Vvar/1X2q/9V9qv/Ufap/1Pzp/9V/LL7H+iK/wGsRqEFoTwJBadBtgXUbf8o8Jf/TfKk/0/2p/9R9qr/UfWr/1D1rP9Q9a3/T/Ws/0/1rP9O9q3/RPCl/yLulv8H1XL/BqdDwAWoQ3sGp0N2AKE4lxjScfRN/bH+UPSr/Ur0q/9M9a7/S/Wu/0r0rf9M9Kz9S/u3/hrUfvgAoTueBqdDdwWoQ34FpUECBaQ/AAGgOTkZznPiSfyz/0r0q/pG9K3/SPWw/0j1sP9F867/R/Ou+kf7uP0a0XzuAaA6QQWjPwAFpUIDBaVBBgakPwAAoDg8J9F+51P9vf5B8qr6QvOu/0P0sf9D9LH/QfOw/0Lzr/xE+7v9HNKA8QGhPEQFpD8ABaVCBwWlQQMFpEAAAJ83OzXRhuZn/8v+PPGq+jzyrv9B87T/P/Oz/z3ys/8+8bH7Qvu9/R3SgvABoTpDBaQ/AAWlQgMGpUEDB6Q/AACfNjs20Ybmg//a/kzztvov8Kv/PvS1/z7zt/868rb/O/Gz+z/7v/0d0oPwAaE7QwWkPgAFpUIDBqVBAwekPwAAoDc7M9KG5on/3v54+s36SfW5/zLys/8x8rf/MfG3/zDxtPsy+r/9GtGD8AKiOkMEpD4ABaVCAwalQQMHpD8AAKA3OzjShuaM/97+h/zS+oT80f9x+sr/WffD/071wP9K9Lz7Vv3M/SvTivABoTpDBaQ/AAWlQgMFpUEDBqQ/AAChNz0f0YDnXv/T/mj9zvto/tH/cP/X/3T/2P9u/tb/bfzV/Gn/4v0n1ZHzAKE4RQakPwAFpUIDBaVAAgWkPwAFpD4zBbVT2ATFavkHwmvsCsNw8gzDdfMMxHfzC8R49ArEd/AHx3r8Brde5gWkPTwFpEAABaVAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
   else 
        self.tooltipText = "Нет видео для загрузки",
        img.src = self.image;
        
}, true, gBrowser.tabContainer );

Отредактировано bunda1 (30-05-2014 21:25:15)

Отсутствует

 

№5127-04-2011 20:09:32

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

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

Anti Boss Key+ ( Firefox 3.6+ )
Сворачивает FF, удаляет все изображения на активной странице, удаляет иконку сайта и меняет названые на about:blank на активной вкладке, переключает FF на первую открытую вкладку. Изменить сочетание клавиш которые запускает Anti Boss Key можно в вкладке Настройки кнопки нажмите нужные нужные вам сочетание клавиш или одну клавишу, потом сохранит изменения.

ЛКМ => свернуть FF и спрятать активную вкладку
Ctrl + SPACE => свернуть FF и спрятать активную вкладку

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

Выделить код

Код:

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%3EAnti%20Boss%20Key+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAGABgBAAAFgAAACgAAAASAAAAJAAAAAEAGAAAAAAAOAQAAAAAAAAAAAAAAAAAAAAAAACqqqpGRkZNTU1MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExLS0tQUFAoKCgAAOfn566urq+vr6ysrKysrKysrK2tra6urq6urq6urq6urq6urq6urq+vr62traysrLi4uExMTAAA4uLio6Ojra2tubm5tbW1tbW1tra2sbGxrq6ur6+vsLCwsbGxsLCwra2ts7Ozrq6ura2tSEhIAADi4uKqqqqRkZFSUlJjY2NdXV1LS0tNTU1ISEhGRkZDQ0M/Pz9ERERQUFBFRUWSkpK4uLhGRkYAAOHh4bCwsG5ubhYWFkRERAsLCwQEBBMTEwYGBgAAAAAAAAAAAAICAiMjIwUFBWtra76+vkVFRQAA4eHhsLCwb29vNzc3bm5uDg4ODQ0NCAgIAwMDBAQEBQUFBAQECgoKKysrBQUFZ2dnu7u7RUVFAADh4eGxsbFtbW09PT1+fn4EBAQAAAABAQEAAAAAAAAAAAAAAAAAAAAREREAAABdXV26urpFRUUAAOHh4bGxsWxsbD4+PpycnGBgYGRkZG1tbWdnZ2hoaGlpaWhoaGZmZjY2NgAAAFJSUrm5uUZGRgAA4eHhsbGxbW1tNTU1wMDAjY2NiYmJvb293Nzc3d3d1NTUsrKyrKysfX19AAAASkpKubm5RkZGAADh4eGxsbFvb28pKSnBwcFycnJ2dnbIyMjBwcGvr6/S0tLDw8OamppfX18AAABHR0e5ublGRkYAAOHh4bCwsHBwcCcnJ7a2tmtra4iIiLe3t4iIiLu7u6amptra2p+fn1BQUAAAAEhISLm5uUZGRgAA4eHhsbGxbGxsREREubm5aWlpZmZmxsbGqampu7u7vr6+ycnJkpKSSkpKAAAATExMuLi4RkZGAADh4eGxsbFubm4zMzPBwcFsbGxMTEx0dHSoqKi8vLyioqJ0dHRvb29HR0cODg5JSUm5ublGRkYAAOHh4bCwsHJycgAAALGxsXp6el5eXlxcXGxsbHx8fGlpaXh4eGBgYFBQUAYGBj8/P7q6ukVFRQAA4uLiq6urjIyMQ0NDoKCgd3d3k5OTjY2Nj4+PjY2Nl5eXpKSkdnZ2YGBgVFRUcXFxtLS0R0dHAADj4+OlpaWrq6uysrKsrKx+fn6FhYV7e3t3d3d6enp0dHRxcXFzc3OMjIy0tLStra2vr69KSkoAAOLi4qKioqWlpaOjo6WlpampqaWlpaampqioqKqqqqmpqaioqKioqKioqKOjo6Ojo62trT8/PwAA9fX14uLi4+Pj4+Pj4+Pj4uLi4+Pj4uLi4uLi4uLi4uLi4uLi4uLi4uLi4+Pj4uLi6enppqamAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E2%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20%u0441%u0432%u0435%u0440%u043D%u0443%u0442%u044C%20....%0AsetTimeout%28function%28%29%20%7B%20window.minimize%28%29%3B%20%7D%2C%200%29%3B%0A%0A//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20...%0Avar%20CurTab%20%3D%20document.getElementById%28%27content%27%29.selectedTab%3B%0ACurTab.removeAttribute%28%27image%27%29%3B%0ACurTab.setAttribute%28%22label%22%2C%22about%3Ablank%22%29%3B%0A%0A//%20%u0441%u043F%u0440%u044F%u0442%u0430%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20....%0Avar%20style%20%3D%20content.document.createElement%28%22style%22%29%3B%0A%20%20%20%20style.setAttribute%28%22type%22%2C%20%22text/css%22%29%3B%0A%20%20%20%20style.setAttribute%28%22id%22%2C%20%22hideImg%22%29%3B%0A%20%20%20%20style.innerHTML%20%3D%20%22img%2C%20embed%2C%20object%20%7B%20visibility%3A%20hidden%20%21important%3B%20%7D%20%22%20+%0A%20%20%20%20%20%20%22html%20*%20%7B%20background-image%3A%20none%20%21important%3B%20%7D%22%3B%0A%20%20%20%20var%20head%20%3D%20content.document.getElementsByTagName%28%22head%22%29%5B0%5D%3B%0A%20%20%20%20head.appendChild%28style%29%3B%0A%20%20%20%20%0A//%20%u043F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u0441%u044F%20%u043D%u0430%20%u043F%u0435%u0440%u0432%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20....%20%20%0AgBrowser.selectedTab%20%3D%20gBrowser.tabContainer.childNodes%5B0%5D%3B%20%0A%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5BCtrl+%20%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

Код:

Выделить код

Код:

// свернуть ....
setTimeout(function() { window.minimize(); }, 0);

// переключить иконку и название текущей вкладки ...
var CurTab = document.getElementById('content').selectedTab;
CurTab.removeAttribute('image');
CurTab.setAttribute("label","about:blank");

// спрятать изображение на странице ....
var style = content.document.createElement("style");
    style.setAttribute("type", "text/css");
    style.setAttribute("id", "hideImg");
    style.innerHTML = "img, embed, object { visibility: hidden !important; } " +
      "html * { background-image: none !important; }";
    var head = content.document.getElementsByTagName("head")[0];
    head.appendChild(style);
    
// переключится на первую вкладку ....  
gBrowser.selectedTab = gBrowser.tabContainer.childNodes[0];

Отредактировано bunda1 (26-05-2013 19:49:03)

Отсутствует

 

Board footer

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