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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№87617-09-2015 19:34:37

jars
Забанен
 
Группа: Members
Зарегистрирован: 28-07-2015
Сообщений: 235
UA: Firefox 32.0

Re: Обсуждение кнопок CB

№5377

Выделить код

Код:

var url = "http://нужный_адресс";
// ----------- во вкладке рядом с текущей
gBrowser.moveTabTo( gBrowser.addTab( url ), gBrowser.mCurrentTab._tPos +1);

Отсутствует

 

№87720-09-2015 12:56:22

nafanja333
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 35
UA: Firefox 39.0

Re: Обсуждение кнопок CB

jars пишет

№5377Выделить кодКод:var url = "http://нужный_адресс";
// ----------- во вкладке рядом с текущей
gBrowser.moveTabTo( gBrowser.addTab( url ), gBrowser.mCurrentTab._tPos +1);

Спасибо.

Еще бы если открывало ее как активную :)

То есть с переходом на нее.

Отсутствует

 

№87820-09-2015 17:00:58

jars
Забанен
 
Группа: Members
Зарегистрирован: 28-07-2015
Сообщений: 235
UA: Firefox 32.0

Re: Обсуждение кнопок CB

Выделить код

Код:

// -------------- в активной вкладке рядом с текущей
var url = "http://нужный_адресс"
tpos = gBrowser.selectedTab._tPos+1;
gBrowser.moveTabTo(getBrowser().selectedTab = getBrowser().addTab(url),tpos);

Добавлено 20-09-2015 17:10:31
И опережая последующий запросс :D

Выделить код

Код:

// Открыть - закрыть страницу в бок.панели
if (document.getElementById("sidebar-title").value) {
   toggleSidebar();
    } else {
   openWebPanel("Облако Bix 16GB", "https://bix.com/"); // Первый - произвольный заголовок для панели, Второе - нужный адресс
}

Отредактировано jars (20-09-2015 17:10:31)

Отсутствует

 

№87921-09-2015 15:30:11

zhe540
Участник
 
Группа: Members
Зарегистрирован: 14-09-2015
Сообщений: 8
UA: Firefox 31.0

Re: Обсуждение кнопок CB

Прошу помощи с совмещением функций двух кнопок. Существует кнопка (набор кнопок) Save+ (https://forum.mozilla-russia.org/viewto … 40#p493040). В ней есть кнопка сохранения ярлыка страницы с иконкой (иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\). Можно ли добавить эту функцию к кнопке "Сохранить как..." что бы сохранять другие файлы с иконкой сайта? Например html,mht,maff.

Отсутствует

 

№88021-09-2015 16:01:09

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

Re: Обсуждение кнопок CB

zhe540 пишет

Прошу помощи с совмещением функций двух кнопок. Существует кнопка (набор кнопок) Save+ (https://forum.mozilla-russia.org/viewto … 40#p493040). В ней есть кнопка сохранения ярлыка страницы с иконкой (иконки для ярлыков хранятся в папке C:\Documents and Settings\Favicon\). Можно ли добавить эту функцию к кнопке "Сохранить как..." что бы сохранять другие файлы с иконкой сайта? Например html,mht,maff.

Нет нельзя, слишком сложно это.

Отсутствует

 

№88124-09-2015 08:51:13

becool
Участник
 
Группа: Members
Зарегистрирован: 30-08-2014
Сообщений: 268
UA: Firefox 41.0

Re: Обсуждение кнопок CB

https://forum.mozilla-russia.org/viewto … 01#p688401
turbot, а можно сделать так, чтобы панель закладок появлялась еще если я начал таскать какую-нибудь ссылку мышкой. Это нужно, чтобы добавить закладки в панель перетаскиванием.

Отсутствует

 

№88224-09-2015 13:01:40

AlexCondor
Участник
 
Группа: Members
Зарегистрирован: 21-07-2005
Сообщений: 64
UA: Firefox 41.0

Re: Обсуждение кнопок CB

Прошу подправить кнопочку.
WinXP sp3 - FF 41.0 - CB 0.0.5.8.1signed - Autocopy+3
В окне Библиотека при попытке открытия папки в меню закладок двойным нажатием ЛКМ , окно библиотеки сразу закрывается. При удалении кнопки -  все работает.

Отсутствует

 

№88325-09-2015 00:37:33

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

Re: Обсуждение кнопок CB

AlexCondor пишет

Прошу подправить кнопочку.
WinXP sp3 - FF 41.0 - CB 0.0.5.8.1signed - Autocopy+3
В окне Библиотека при попытке открытия папки в меню закладок двойным нажатием ЛКМ , окно библиотеки сразу закрывается. При удалении кнопки -  все работает.

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EAutocopy+3%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy+3%20%u043E%u0442%2024.09.2015.%20...............%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20%21cbu.getPrefs%28%22Autocopy%22%29%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u0441%u0442%u0440%u043E%u043A%20%u0432%20%27about%3Aconfig%27%20%u0438%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20...............%0Aif%20%28%20%21cbu.isPref%28%22Autocopy.saveWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%5B%22Autocopy%22%2C%20%22Autocopy.reset%22%2C%20%22Autocopy.selectingTextBlink%22%2C%20%22Autocopy.selectWithDoubleClick%22%2C%0A%20%20%20%20%20%20%22Autocopy.copyWithDoubleClick%22%2C%20%22Autocopy.saveWithDoubleClick%22%5D.forEach%28function%28pref%29%20cbu.setPrefs%28pref%2C%20false%29%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20...............%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0432%u044B%u0434%u0435%u043B%u044F%u0435%u0442%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%27%2C%20value%3A%20%27Autocopy.selectWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%5D%3B%0A%0Avar%20menuPopup%20%3D%20self.appendChild%28%20document.createElement%28%22menupopup%22%29%20%29%3B%0Aarray.forEach%28%28m%29%3D%3E%20%7B%0A%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%20return%20%7D%3B%0A%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20cbu.getPrefs%28m.value%29%20%29%3B%0A%20%20%20%20mItem.onclick%20%3De%3D%3E%20%7B%20e.stopPropagation%28%29%3B%20cbu.setPrefs%28m.value%2C%20%21cbu.getPrefs%28m.value%29%29%20%7D%3B%20%20%0A%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20CB%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28%20document.createElement%28%22menu%22%29%20%29.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0AmenuPopup.lastChild.appendChild%28%20document.getElementById%28%22custombuttons-contextpopup%22%29.cloneNode%28true%29%20%29%3B%0AmenuPopup.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20_id%20+%20%22%27%29%22%29%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20...............%0Aconst%20s%20%3D%20%22Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29.%0A%20%20%20src%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%0A%0A%0A%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Avar%20toggleButton%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20cbu.getPrefs%28%22Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%26%26%20cbu.setPrefs%28%22Autocopy%22%2C%20false%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%0A//addDestructor%28function%28%29%20%7B%20Services.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%20%29%20%7D%29%3B%20%20%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%7C%7C%20e.target%20instanceof%20Ci.nsIDOMNSEditableElement%20%29%20return%3B%0A%20%20%20var%20win%20%3D%20e.target.ownerDocument.defaultView%3B%0A%20%20%20if%20%28%20win.top%20%21%3D%20content%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%29%20autocopy.lastSelection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%20%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%21%3D%3D%20%27mouseup%27%20%29%20return%3B%20%0A%20%20%20%0A%20%20%20var%20selection%20%3D%20e.target.ownerDocument.defaultView.getSelection%28%29.toString%28%29%3B%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy%22%29%20%26%26%20selection%20%26%26%20selection%20%21%3D%3D%20autocopy.lastSelection%20%29%20%7B%0A%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20%20%20%20%20%20if%20%28%20%21cbu.getPrefs%28%22Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%20%3D%3E%20window.content.focus%28%29%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0AaddEventListener%28%22mousedown%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20...............%0Afunction%20middleMousePaste%28e%29%20%7B%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20cbu.getPrefs%28%27middlemouse.paste%27%29%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.commandDispatcher.getControllerForCommand%28%22cmd_paste%22%29%20%29%20%7B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20commandDispatcher%20%3D%20%28%20this.document%20%7C%7C%20document%20%29.commandDispatcher%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20controller%20%3D%20commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20gClipboard.read%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%20%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20...............%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20content.document%3B%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28%20doc%2C%20%28%20%28doc.location.protocol%29.slice%280%2C4%29%20%3D%3D%20%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%29%20%7B%20%0A%20%20%20%20%20%20%20%20gClipboard.write%28%20content.location%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20%20%20%20%20%20document.getElementById%28%22identity-box%22%29.setAttribute%28%22style%22%2C%20%22background%3A%20red%3B%22%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%20%3D%3E%20document.getElementById%28%22identity-box%22%29.removeAttribute%28%22style%22%29%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20true%2C%20document.getElementById%28%22identity-box%22%29%20%29%3B%0A%0A%20%20%20%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20...............%0Afunction%20handleDblClick%28e%29%20%7B%3B%0A%0A%20%20var%20node%20%3D%20e.target%3B%0A%20%20var%20editor%20%3D%20node.editor%3B%0A%20%20%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%20....%0A%20%20if%20%28%20e.button%20%3D%3D%200%20%26%26%20custombuttons.getPrefs%28%22Autocopy.selectWithDoubleClick%22%29%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28%20/input%7Ctextbox%7Ctextarea/.test%28%20node.localName%20%29%20%29%20%21editor%20%3F%20node.select%28%29%20%3A%20editor.selectAll%28%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20....%20%20%20%20%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.saveWithDoubleClick%22%29%20%26%26%20node.localName%20%3D%3D%20%27img%27%20%29%20%7B%0A%20%20%20%20%20%20%20saveImageURL%28%20gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%20%29%3B%0A%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%2C%2020%29%3B%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.copyWithDoubleClick%22%29%20%26%26%20%21/findbar%7Ctabbrowser/.test%28%20node.localName%20%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%21editor%20%3F%20goDoCommand%28%22cmd_copy%22%29%20%3A%20editor.copy%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28%20node.textbox%20%7C%7C%20node%20%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28%20box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20catch%28e%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043E%u043A%u043E%u043D%20%u0430%u0434%u0440%u0435%u0441%u0430%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%20%u0432%20%u043A%u043E%u0434%u0435%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u043C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20...............%0Avar%20observer%20%3D%20%7B%20%20%0A%20%20%20%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20%20%20var%20href%20%3D%20doc.location.href%3B%20%0A%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0430%20Custom%20Buttons%20....%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20href.substring%280%2C%2041%29%20%3D%3D%20%22chrome%3A//custombuttons/content/editor.xul%22%20%29%20%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20Services.obs.removeObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%20%7D%29%3B%20%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20+%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№88425-09-2015 09:44:32

AlexCondor
Участник
 
Группа: Members
Зарегистрирован: 21-07-2005
Сообщений: 64
UA: Firefox 41.0

Re: Обсуждение кнопок CB

bunda1
Спасибо, работает!

Отсутствует

 

№88525-09-2015 10:45:10

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

bunda1, можно сделать, что-бы окно-библиотека "История", при клике по адресу само закрывалось?

Отсутствует

 

№88625-09-2015 17:31:12

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

Re: Обсуждение кнопок CB

amid525 пишет

bunda1, можно сделать, что-бы окно-библиотека "История", при клике по адресу само закрывалось?

Выделить код

Код:

function observer(subject) {
   subject.addEventListener("load", function l(e) {
      subject.removeEventListener("load", l);
         
      if ( subject.location == 'chrome://browser/content/places/places.xul' ) {           
           var win = e.target.defaultView;             

           win.addEventListener("click", function c(e) {
              if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) )         
                   e.target.onclick && e.button < 2 && setTimeout(()=> win.close(), 50);

              win.addEventListener("unload", function u() {
                 win.removeEventListener("unload", u);
                 win.removeEventListener("click", c);
              })      
           })         
           }    
   });  
};
Services.ww.registerNotification(observer);
addDestructor(function() Services.ww.unregisterNotification(observer) );

Отсутствует

 

№88725-09-2015 18:47:10

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

bunda1
так переход по адресу не происходит. Просто окно\библиотека закрывается.
Момент еще, если можно тоже доделать. Если по адресу пкм - открыть в новой вкладке, переход происходит, но окно уже не закрывается.

Отсутствует

 

№88825-09-2015 21:16:35

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

Re: Обсуждение кнопок CB

amid525 пишет

bunda1
Момент еще, если можно тоже доделать. Если по адресу пкм - открыть в новой вкладке, переход происходит, но окно уже не закрывается.

Выделить код

Код:

function observer(subject) {
   subject.addEventListener("load", function l(e) {
      subject.removeEventListener("load", l);
         
      if ( subject.location == 'chrome://browser/content/places/places.xul' ) {           
           var win = e.target.defaultView;             

           win.addEventListener("click", function c(e) {
              if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) )         
                   (e.target.onclick || /open|open/.test(e.target.id)) && e.button < 2 && setTimeout(()=> win.close(), 250);

              win.addEventListener("unload", function u() {
                 win.removeEventListener("unload", u);
                 win.removeEventListener("click", c);
              })      
           })         
           }    
   });  
};
Services.ww.registerNotification(observer);
addDestructor(function() Services.ww.unregisterNotification(observer) );

Добавлено 25-09-2015 21:19:18

amid525 пишет

bunda1
так переход по адресу не происходит. Просто окно\библиотека закрывается.

У меня открывается без проблем, проверял на разных версиях. Может проверь на чистом профиле.

Отредактировано bunda1 (25-09-2015 21:30:50)

Отсутствует

 

№88925-09-2015 21:42:28

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

У меня открывается без проблем, проверял на разных версиях. Может проверь на чистом профиле.

Разобрался. Я делал один клик по ссылке. Тогда окно закрывается и перехода небыло..
Если делать два клика - окно закрывается и переход по ссылке.
Как сделать что-бы по одному клику срабатывал переход?

Отредактировано amid525 (26-09-2015 14:25:56)

Отсутствует

 

№89026-09-2015 17:02:51

jars
Забанен
 
Группа: Members
Зарегистрирован: 28-07-2015
Сообщений: 235
UA: Palemoon 25.0

Re: Обсуждение кнопок CB

Привет, подмогните с кнопкой. В конт. меню страниц есть пункт(создается расширением) с известным id = "mediasniffer" У него по умолчнию одно действо - в туттипе выводит адресс и по ЛКМ он копирует этот адресс. Хочу повесить на него доп. обработку кликов мыши ЛКМ - ПКМ. Сделал вот такую функцию и она работает правильно, все запускается и "получается" то что нужно:

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

Выделить код

Код:

//    var gid = document.getElementById("mediasniffer");
// gid.addEventListener("click", function(e) {  - пробовал , вроде не оно, не работает вообще. help!

addEventListener("click", function(e) {
    var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
    var gid = document.getElementById("mediasniffer");
 
     if ( e.button == 0 ) {
          var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
        // скачать во wget видео
         var url = ('"' + gid.getAttribute("tooltiptext") + '"');
         var lab = gBrowser.mCurrentTab.label;

       file.initWithPath(file.path + "\\Soft\\wget\\wgetfile.cmd");
         var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
       process.init(file);
       process.run(false, [url, lab], 2);
    }

    if ( e.button == 2 ) {
    // Открыть в Smplayer
         var url = gid.getAttribute("tooltiptext");

   file.initWithPath("C:\\0l0\\MyPROG\\FM\\TC\\SOFT\\MEDIA\\SMplayer\\smplayer.exe");
         var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   process.run(false, [url], 1 );
     }
   }, false);


... но понятно что ежели закинуть это в Инициализацию, то работает она глобально для бравзера, всего :) клик в любом месте запускает программы, что конечно не нужно.
Как повесить это все именно на нужный пункт с id = "mediasniffer" scratch_one-s_head.gif

Отредактировано jars (26-09-2015 17:29:30)

Отсутствует

 

№89126-09-2015 17:57:55

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2242
UA: Firefox 38.0

Re: Обсуждение кнопок CB

jars
Так пробовал ?

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

Выделить код

Код:

addEventListener("click", function(e) {
    if (e.target.id != "mediasniffer") return;

    // ...

}, false, document.getElementById("contentAreaContextMenu"));

Отсутствует

 

№89226-09-2015 18:29:04

jars
Забанен
 
Группа: Members
Зарегистрирован: 28-07-2015
Сообщений: 235
UA: Palemoon 25.0

Re: Обсуждение кнопок CB

Не пробовал, потому как не додумался :)  Благодарю! Всё работает как должно.

Отсутствует

 

№89326-09-2015 18:54:43

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

Re: Обсуждение кнопок CB

amid525 пишет

Как сделать что-бы по одному клику срабатывал переход?

Выделить код

Код:

function observer(subject) {
   subject.addEventListener("load", function l(e) {
      subject.removeEventListener("load", l);
         
      if ( subject.location == 'chrome://browser/content/places/places.xul' ) {           
           var win = e.target.defaultView;             

           win.addEventListener("click", function c(e) {
              if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) && e.button < 2 ) {        
                   (e.target.onclick || /open/.test(e.target.id)) && setTimeout(()=> win.close(), 250);
                   
                   if ( e.button == 0 ) { 
                        var target = e.originalTarget;                  
                        var tree = target.parentNode;
                        var box = tree.treeBoxObject;
                        var row = box.getRowAt(e.clientX, e.clientY); 
                        var node = tree.view.nodeForTreeIndex(row);
                        
                        gBrowser.selectedTab = gBrowser.addTab(node.uri);
                        }
                   }                   

              win.addEventListener("unload", function u() {
                 win.removeEventListener("unload", u);
                 win.removeEventListener("click", c);
              })      
           })         
           }    
   });  
};
Services.ww.registerNotification(observer);
addDestructor(function() Services.ww.unregisterNotification(observer) );

Отсутствует

 

№89426-09-2015 21:11:52

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

bunda1
Спасибо!

Добавлено 26-09-2015 21:22:19
bunda1, обнаружил глюк!
С каждым новым открытием адреса из журнала, увеличивается количество дубликатов открываемых вкладок!:rolleyes:

Отредактировано amid525 (26-09-2015 21:22:19)

Отсутствует

 

№89526-09-2015 22:09:41

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

Re: Обсуждение кнопок CB

amid525 пишет

bunda1, обнаружил глюк!
С каждым новым открытием адреса из журнала, увеличивается количество дубликатов открываемых вкладок!:rolleyes:

:/

Выделить код

Код:

this.setAttribute('oncommand', "PlacesCommandHook.showPlacesOrganizer('History'); CustomizableUI.hidePanelForNode(this);");


addEventListener("TabOpen", function(e) {
  var newTab = e.target;  
  if ( newTab.label.substring(0, 16) == "custombutton://%") setTimeout(function() { gBrowser.removeTab( newTab ) }, 500);
}, false, gBrowser.tabContainer );


function observer(subject) {
   subject.addEventListener("load", function l(e) {
      subject.removeEventListener("load", l);
         
      if ( subject.location == 'chrome://browser/content/places/places.xul' ) {           
           var win = e.target.defaultView;             

           win.addEventListener("click", function c(e) {
              if ( /place:beginTime|place:sort=4&type=3/.test(win.PlacesOrganizer.location) && e.button < 2 ) {        
                   (e.target.onclick || /open/.test(e.target.id)) && setTimeout(()=> win.close(), 150);
                     
                   if ( e.target.onclick && e.button == 0 ) { 
                        var target = e.originalTarget;                  
                        var tree = target.parentNode;
                        var box = tree.treeBoxObject;
                        var row = box.getRowAt(e.clientX, e.clientY); 
                        var node = tree.view.nodeForTreeIndex(row);
                        
                        gBrowser.selectedTab = gBrowser.addTab(node.uri);
                        }
                   }                   

              win.addEventListener("unload", function u() {
                 win.removeEventListener("unload", u);
                 win.removeEventListener("click", c);
              })      
           })         
           }    
   });  
};
Services.ww.registerNotification(observer);
addDestructor(function() Services.ww.unregisterNotification(observer) );

Отсутствует

 

№89626-09-2015 22:23:34

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

Все то-же самое. В первый раз нормально, одна вкладка. Второй раз - две одинаковые одновременно, третий - три, и так далее... :/

Добавлено 26-09-2015 22:26:08
мой код в инициализации
this.setAttribute('oncommand', "PlacesCommandHook.showPlacesOrganizer('History'); CustomizableUI.hidePanelForNode(this);");

Отредактировано amid525 (26-09-2015 22:26:08)

Отсутствует

 

№89727-09-2015 11:39:38

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

Re: Обсуждение кнопок CB

amid525 пишет

Все то-же самое. В первый раз нормально, одна вкладка. Второй раз - две одинаковые одновременно, третий - три, и так далее... :/

Наверно ты положил мой код в вкладку Код а не в вкладку Инициализация

Отсутствует

 

№89827-09-2015 12:20:07

amid525
Участник
 
Группа: Members
Откуда: Беларусь
Зарегистрирован: 19-08-2014
Сообщений: 361
UA: Firefox 29.0

Re: Обсуждение кнопок CB

Хм. Заработал уже тут. В самом начале пробовал в инициализации - ни какой совсем реакции не было. мистика :rolleyes:
Спасибо!

Отсутствует

 

№89927-09-2015 14:37:20

Mishania
Забанен
 
Группа: Members
Откуда: Usa
Зарегистрирован: 22-10-2011
Сообщений: 357
UA: Firefox 33.0

Re: Обсуждение кнопок CB

День добрый. Есть кнопочка для включения прокси

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E2.0.7.5%3C/Cb2Ver%3E%0A%20%20%3Cname%3EProxy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUA/wAAAACIiIjd3d2AgID///9WXziYAAAAAXRSTlMAQObYZgAAAFRJREFUeF4tydERgCAMBNFABUQr8KjAXAcODTD034s5cb/ezJohs6wuMpow3X8MTeH5prBnXTHHEIAN+LHRGSQFBLJcgGfTindml1lO3qcAJRTP2gv/MBEl7nzAMAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C0%29%3Bbreak%3B%0A%09case%200%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27network.proxy.type%27%3B%0Athis.onImage%3D%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUA/wCIiIgAAADd3d3///8AAICAAAD/AAAAAP8pkhnQAAAAAXRSTlMAQObYZgAAAF1JREFUeF4tyUERg0AQRNEJDjprAAYFQztYCglYWAlwzi2y053kn17Vj4AK9djJmo3jPP94exqv7zR6prFXvy8D+AG59DGExiJpoKC0gFQ9pmxUzwhNbqsBJ2iq+QNw+RI4rlZUrAAAAABJRU5ErkJggg%3D%3D%27%3B%0Athis.offImage%3Dthis.image%3B%0A%0Athis.setState%3Dfunction%28%29%7B%0A%20var%20state%3Dthis.PS.getIntPref%28this.pref%29%3B%0A%20if%20%28state%3D%3D1%29%7B%0A%20%20this.image%3Dthis.onImage%3B%0A%20%20this.checked%3Dtrue%3B%0A%20%7Delse%7B%0A%20%20this.image%3Dthis.offImage%3B%0A%20%20this.checked%3Dfalse%3B%0A%20%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%0A%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/proxy-button-yan.html%27%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

Она включает ручную настройку прокси. А как сделать что-бы включалась URL автоматической настройки?

Отсутствует

 

№90027-09-2015 16:05:33

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
UA: Firefox 38.0

Re: Обсуждение кнопок CB

у меня такая Proxy стоит, переделанная мною тут в ней меняется параметр network.proxy.type с 1 на 0 и обратно. Я сменил на 2 и 5.
в инициализацию

скрытый текст
// Proxy от 11.12.2013.

// Настройка функций кликов мыши для кнопки ................................
this.onclick = function(e) {     
   
   if ( e.button == 0 ) {
        cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 2 ) ? 5 : 2 );
        }
                     
   if ( e.button == 1 ) menuPopup.showPopup( self, -1, -1, "popup", "bottomleft", "topleft");
         
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
        e.preventDefault();
        cbu.getPrefs("Proxy.connectionsInTab") ? openConnectionsInTab(): openConnections();
        }
};



// Проверить наличие строк в about:config и создать если не существует ................................
if ( !cbu.isPref("Proxy.reset") ) {
     ["Proxy.reset", "Proxy.connectionsInTab", "Proxy.inContextMenu"].forEach(function( pref ) { cbu.setPrefs( pref, false ) });
};



// Подсказка для кнопки ................................
this.onmouseover = function() {
     var address = Application.prefs.getValue("network.proxy.http", 0);
     var port = Application.prefs.getValue("network.proxy.http_port", 0);
                   
     this.tooltipText = "Proxy \nЛ: Переключить прокси \nС: Mеню кнопки"
                            + "\nП: Открыть настройки прокси \n\nТекущие настройки прокси: "
                            + "\nПорт: "+ port + "\nАдрес: " + address;                                                   
};



// Создать меню для кнопки ................................
var array = [
    { label: "Добавление прокси в контекстом меню", value: 'Proxy.inContextMenu' },
    { label: "Открывать настройки прокси как вкладку", value: 'Proxy.connectionsInTab' },
    { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'Proxy.reset' }   
];

var menuPopup = self.appendChild( document.createElement("menupopup") );
array.forEach(function( m ) {
   var mItem = document.createElement("menuitem");
   mItem.setAttribute("label", m.label);
   mItem.setAttribute('type', 'checkbox');
   mItem.setAttribute('checked', cbu.getPrefs( m.value ) );
   mItem.setAttribute('onclick', 'custombuttons.setPrefs("' + m.value + '", !custombuttons.getPrefs("' + m.value + '"))'); 
   menuPopup.appendChild( mItem );
});
menuPopup.setAttribute("onclick", "event.stopPropagation()");

// добавить стандартное контекстное меню ....
menuPopup.appendChild( document.createElement("menuseparator") );
menuPopup.appendChild( document.createElement("menu") ).setAttribute("label", "Меню кнопки");
var clone = menuPopup.lastChild.appendChild( document.getElementById("custombuttons-contextpopup").cloneNode(true) );
clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')");



// Функция открывает настройки прокси в окне ................................
function openConnections() {
   var windows = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getEnumerator(null);
   while( windows.hasMoreElements() ) {
          var win = windows.getNext();
          if ( win.name == 'Proxy') {   
               win.focus();
               return;
               }
   };   
   var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen");   

   // добавить атрибут "prefwindow"
   win.addEventListener("load", function f(e) {
       this.removeEventListener("load", f, true);
       e.target.documentElement.setAttribute("type", "prefwindow");
   }, true);
   
   // закрыть настройки прокси по клику на странице
   gBrowser.addEventListener("click", function c() {
      this.removeEventListener("click", c );
      try { win.close() } catch(e) {};
   });
};



// Функция открывает настройки прокси в вкладке ................................
function openConnectionsInTab() {
   var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") );
         
   // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут
   connections.addEventListener("pageshow", function c(e) {         
      this.removeEventListener( e.type, c );         
      e.originalTarget.documentElement.setAttribute("type", "prefwindow");
   })   
};



// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................
var  s = "network.proxy.type";
function toggleImage() {
    var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon");
    icon.src = ( cbu.getPrefs(s) == 2 )
    ? self.image
    : 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
}; 
toggleImage();
gPrefService.addObserver( s, toggleImage, false );
addDestructor(function() { gPrefService.removeObserver( s, toggleImage, false ) });



// Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ................................
var switchOffProxy = {
    observe: function(subject, topic, data) {
       if ( data.toString() == "shutdown" && cbu.getPrefs("Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0); 
    }
};
Services.obs.addObserver( switchOffProxy, "quit-application", false );
addDestructor(function() { Services.obs.addObserver( switchOffProxy, "quit-application", false ) }); 



// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................................
(function func() {
  var contextMenu = document.getElementById("contentAreaContextMenu"); 
 
  // создать новый пункт меню
  var menuitem = document.createElement("menuitem");     
  menuitem.setAttribute("label", "Добавить прокси");
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", self.image );
  addEventListener("command", function(e) { addNewProxy() }, false, menuitem );
 
  // устанавливаем где показывать пункт меню
  addEventListener("popupshowing", function() {
     menuitem.hidden = !cbu.getPrefs("Proxy.inContextMenu") || !gContextMenu.isContentSelected;
  }, false, contextMenu );
  addDestructor(function() { contextMenu.removeChild( menuitem ) });
  contextMenu.appendChild( menuitem ); // как последний пункт меню
 
 
  // добавление прокси
  function addNewProxy( sel, i ) { 
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки
     
     // если порт ...
     if ( sel.length < 5 && isFinite(sel) ) { 
          sel = sel.replace(/:/g, "");
          sel = +sel;  // порт как число
          var lab = 'порт';
          var pref = 'network.proxy.http_port';
          }
     
     // если адрес ...
     if ( sel.length > 4 && !/:/.test(sel) && sel.split(".").length == 4 ) { 
          var lab = 'адрес';
          var pref = 'network.proxy.http';
          }     
     
     // если адрес и порт ...   
     if ( sel.length > 4 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":"); 
          array.forEach(function(sel, i) { addNewProxy( sel, i ) });         
          }     
     
     Application.prefs.setValue( pref, sel ); // переключить настройки прокси     

     if ( lab == undefined || i !== undefined || i == 0 ) return;
     
     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image );
   
        var label = tooltip.appendChild( document.createElement("label") );
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel );
   
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup( gBrowser, posX, posY );
        setTimeout(function() { gBrowser.removeChild( tooltip ) }, 2000 );
     };
     showTooltip();   
  };
   
})();

Отредактировано sonyas75 (27-09-2015 16:12:26)

Отсутствует

 

Board footer

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