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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№1082620-10-2016 21:56:13

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 261
UA: Firefox 37.0

Re: Custom Buttons

yup пишет

Н-да. Уточнение оказалось не менее двусмысленным, чем исходный вопрос. Попробую дать максимально всеоблемлющий ответ.
Сохранить исходные обработчики:

Выделить код

Код:

savelinks = document.links;
for (var i=savelinks.length-1; i>=0; i++) savelinks[i].myattribute = savelinks[i].onmouseover

Восстановить запомненные обработчики: выбранному объекту назначить обработчик выбранного события с таким содержимым:

Выделить код

Код:

for (var i=savelinks.length-1; i>=0; i++) savelinks[i].onmouseover = savelinks[i].myattribute

yup
Работает, правда так

Выделить код

Код:

for (var i=savelinks.length-1; i>=0; i++)

даёт ошибку "savelinks is not defined"
Но вот так

Выделить код

Код:

for (var i=0; i<savelinks.length;  i++)

работает без ошибок. А зачем у вас такая хитромудрая запись цикла?

А я то сначала пытался сделать не

Выделить код

Код:

savelinks[i].myattribute = savelinks[i].onmouseover

а

Выделить код

Код:

savelinks[i].setAttribute('myattribute', savelinks[i].onmouseover)

т. е. не присваивал свойство, а назначал атрибут. А потом пытался сделать

Выделить код

Код:

savelinks[i].onmouseover = savelinks[i].getAttribute('myattribute')

и оно не работало.

Отредактировано toxa (20-10-2016 21:59:45)

Отсутствует

 

№1082720-10-2016 22:14:17

Владимир Болотников
Участник
 
Группа: Members
Зарегистрирован: 16-10-2016
Сообщений: 13
UA: Firefox 49.0

Re: Custom Buttons

А можно сделать кнопки на сочетания нажатие и отпускание клавиш?

1)  Shift + Break
2)  Alt + Break
3)  Alt + Scroll Lock

Если возможно то все три сочетания в одной кнопке ПКМ, ЛКМ, СКМ

Отредактировано Владимир Болотников (20-10-2016 22:17:06)

Отсутствует

 

№1082820-10-2016 23:50:59

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

Во, кнопка удобная, еще б сама для сайта программу выбирала :)

Выделить код

Код:

//Открыть ссылку в программе  (ПКМ + Ctrl)
if ( this.hasAttribute("initialized") ) return;

var path, params, links;   
var i = 0;

var array = [
 ["C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],
 ["C:\\Program Files\\SMPlayer\\smplayer.exe", "-add-to-playlist" ],
 ["C:\\Program Files\\VideoLan\\vlc\\vlc.exe", "-AddToPlaylist" ],
 ["C:\\PortableApps\\PortableApps\\Download Master Portable\\dmaster.exe", ""],
 ["C:\\Program Files\\qBittorrent\\qbittorrent.exe", ""],
 ["stop","stop"]
            ];
            
mas();

this.onclick = function(e){
  if (e.button == 0) i++; mas();}
 
function mas() 
  { 
   path = array[i][0];
   if(path == "stop") {i = 0; path = array[i][0];}
   params = array[i][1]; 
   self.image = "moz-icon://file://"+path;
}

//Открыть ссылку при клике ПКМ + Ctrl по ссылке ...........................................
addEventListener('click', function (e) {
  if ( XULBrowserWindow.overLink && e.ctrlKey && e.button == 2 ) {
           links = [XULBrowserWindow.overLink];
           setTimeout(function() document.getElementById("contentAreaContextMenu").hidePopup(), 150);
           play();}
     }, true, gBrowser );

function play(){
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [links, params],2);
   }

Отсутствует

 

№1082921-10-2016 02:34:24

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

bunda1
Кстати товарищ постом выше напомнил. Давно хотелось упрощенную кнопку http://forum.mozilla-russia.org/viewtop … 51#p702351
Хотелось чтобы СКМ по ссылке открывало видео в PotPlayer, а ПКМ - добавляло в плейлист, на потом просмотреть, всё. Без всяких пунктов в контекстном меню, клацаний по кнопке. По ссылке клац и всё. Быстро, удобно, и не надо каждый раз лазить в контекстное меню. Если не трудно конечно.

Отредактировано villa7 (21-10-2016 02:37:56)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1083021-10-2016 05:11:51

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1647
UA: Firefox 46.0

Re: Custom Buttons

bunda1, а мне, наоборот, хотелось бы кнопку создающую подменю в контекстном меню ссылок и вкладок, с пользовательскими пунктами. В общем, аналог Open With. Например, можно туда предустановить пункты с открытием ссылки/вкладки в IE и PotPlayer + добавление в плейлист PotPlayer, а остальные пункты чтобы пользователь сам добавлял и мог самостоятельно назначать параметры ком.строки. Дело в том, что Open With некоторые параметры просто не передает, тем самым расширение зачастую бесполезно и приходится его функции дублировать другими расширениями, кнопками.

Отредактировано _zt (21-10-2016 05:15:13)

Отсутствует

 

№1083121-10-2016 08:25:35

yup
Участник
 
Группа: Members
Зарегистрирован: 15-04-2016
Сообщений: 1090
UA: Seamonkey 2.40

Re: Custom Buttons

toxa пишет

Работает, правда так

Выделить код

Код:

for (var i=savelinks.length-1; i>=0; i++)

даёт ошибку "savelinks is not defined"
Но вот так

Выделить код

Код:

for (var i=0; i<savelinks.length;  i++)

работает без ошибок.

На самом деле ошибка: "savelinks[i] is undefined" - потому что я при написании сообщения ошибку допустил: "i--" должно быть, а не "i++".

toxa пишет

А зачем у вас такая хитромудрая запись цикла?

Привычка оптимизировать код, а так работает быстрее. (В Javascript выражение в проверке условия окончания цикла вычисляется на каждой итерации.)

toxa пишет

А я то сначала пытался сделать не

Выделить код

Код:

savelinks[i].myattribute = savelinks[i].onmouseover

а

Выделить код

Код:

savelinks[i].setAttribute('myattribute', savelinks[i].onmouseover)

т. е. не присваивал свойство, а назначал атрибут. А потом пытался сделать

Выделить код

Код:

savelinks[i].onmouseover = savelinks[i].getAttribute('myattribute')

и оно не работало.

А это коварство Javascript: в одних случаях эти варианты равносильны, а в других - нет.

Отредактировано yup (21-10-2016 08:43:41)

Отсутствует

 

№1083221-10-2016 18:37:50

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

_zt пишет

Например, можно туда предустановить пункты с открытием ссылки/вкладки в IE и PotPlayer + добавление в плейлист PotPlayer, а остальные пункты чтобы пользователь сам добавлял и мог самостоятельно назначать параметры ком.строки.

Так есть такое, у меня так например:

Выделить код

Код:

this.tooltipText = "Контекстное меню - открыть с помощью...\n";

if ( this.hasAttribute("initialized") ) return;

//Контекстное меню - открыть с помощью ..................... ...........................................
var id = "context-openlinkintab"; // Место врезки
var contextMenu = document.getElementById("contentAreaContextMenu"); 
var sepOpen = document.getElementById(id);

var array = [
 ["SMPlayer", "C:\\Program Files\\SMPlayer\\smplayer.exe", "-add-to-playlist" ],
 ["PotPlayer", "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],
 ["Video Lan", "C:\\Program Files\\VideoLan\\vlc\\vlc.exe", "-AddToPlaylist" ],
 ["Download Master", "C:\\PortableApps\\PortableApps\\Download Master Portable\\dmaster.exe", ""],
 //["qBitTorrent", "C:\\PortableApps\\PortableApps\\qBittorrentPortable\\qBittorrentPortable.exe", ""],
 ["qBitTorrent", "C:\\Program Files\\qBittorrent\\qbittorrent.exe", ""],
 ["separator"]
            ]
array.forEach(function(m) {
   if (m == "separator") { contextMenu.insertBefore(document.createElement("menuseparator"), sepOpen); return; }
   var menuitem = contextMenu.insertBefore(document.createElement("menuitem"), sepOpen);
   menuitem.id = "open-in";
   var label = m[0], path = m[1], param = m[2]; 
   menuitem.setAttribute("label", label);
   menuitem.setAttribute("class", "menuitem-iconic");
   menuitem.setAttribute("image", "moz-icon://file://" + path);   
   menuitem.onclick =()=> Play(path, param, "");
});
   
addDestructor(function() {
   [...contextMenu.childNodes].forEach(function(el) {if (el.id == "open-in") contextMenu.removeChild(el);}) 
});

function Play(path, param, link){
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process  = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   if (link == "href" || !gContextMenu.onLink) process.run(false, [content.location.href, param], 2);
   else process.run(false, [gContextMenu.getLinkURL(), param], 2);
}

Отсутствует

 

№1083321-10-2016 19:54:04

beggrr
Участник
 
Группа: Members
Зарегистрирован: 04-02-2014
Сообщений: 128
UA: Firefox 35.0

Re: Custom Buttons

bunda1 пишет
beggrr пишет

Почему когда я открываю во вкладке адрес chrome://browser/content/devtools/webconsole.xul то все кнопки не активны и консоль не показывает ничего.

Эсть такая вот кнопка:

Выделить код

Код:

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%3EBrowser%20Console%20in%20Sidebar-Tab%20-%20For%20Firefox%2048%20or%20higher%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACZklEQVQ4jWXRv08aYRgH8EOCsXWwkTYlhz9Qkzod6hUTUhsdHMU4MLD4DziVf0IToS0c7+FQBc8ekGByqBCSWlO7YVPtmQhLtQmsrwmm9hbPG74dMDRveZLP9H3yDM+X4x7mfSwOWZYhyzJicQncf+PaqoBXdfCqDlfqhM2TySRyuRxKpRJKpRJyuRySyWR7aTBzjrFiA+PHNxg/vsFYsYHBzHkrj0sJZLNZlMtlRiaTQSyewHC6gqGDBka+/mEMHTQwnK6Ak2UZe3t7KBaLjEKhAEII3KoO/qgJ/sst63MTblUHRwiBpmnY399naJr2cOAHnJ+a6D+6ZTgPHw7E4hJ2dnagaRpDURTE4hLc6W9wFuroPfzNcBbq4FOV1h8IIVAUBfl8Hvl8HoqigBDSfiKv6ujT6nCUm3CUm+jT6uBVnW0iLiXaNUoJ0lGjZ7uCAVXHgKrDs33SkXOXqz2gERtoxIar1UcdC6ezc6iJImqiiLPZOTan77phpDy4253G3e40jJQH9F13e6kmCKCiCNPng+nzgYoiaoLQyi/X+2Fs8rB2pxjGBx4/1504fekD9fuB+XkG9fvx3TcNjka7YH4chZV9wTDVUdBoFy68XtwvLABLS4z7QABVrxccjdpgpl2wFDfDTLtAI12oer2wQiFgeZlxHwqhOjEB7tfaYxhyD6ytJwyD9OBqrRenr2ZAFxeBlRUGDQRwNvO69YfrqA2GZIe54YC54YAh2XEdtf17oiiCBoOwwmFY4TBoMIiaKLbyzTcjzzmO4y4jz0Df2kGjdlxFnnbWODmFC0FAVRBwNjnVzv8Cnb4oOBnoKkcAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21%28%22Services%22%20in%20window%29%29%0A%09Cu.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%0Avar%20_UID%20%3D%20%22__browser_console_sidebar_tab%22%20+%20self.id.slice%2820%29%3B%0Avar%20PREF_BRANCH%20%3D%20%22CB.BrowserConsoleOnSidebarTabBar.ID%22%20+%20self.id.slice%2820%29%20+%20%22.%22%3B%0Avar%20USE_CSS_PREF%20%3D%20PREF_BRANCH%20+%20%22StyleSheetEnabled%22%3B%0Avar%20STATE_PREF%20%3D%20PREF_BRANCH%20+%20%22State%22%3B%0Avar%20CHECKED_STATE_PREF%20%3D%20PREF_BRANCH%20+%20%22UseCheckedState%22%3B%0Avar%20URL%20%3D%20%22chrome%3A//devtools/content/webconsole/webconsole.xul%22%3B%0Avar%20broadcasterID%20%3D%20%22viewBrowserConsoleSidebar%22%20+%20_UID%3B%0Avar%20isOSX%20%3D%20Services.appinfo.OS.toLowerCase%28%29.startsWith%28%22darwin%22%29%3B%0A%0A//%20Preferences%20initialization%0Acustombuttons.isPref%28USE_CSS_PREF%2C%20true%29%3B%0Acustombuttons.isPref%28STATE_PREF%2C%20false%29%3B%0Acustombuttons.isPref%28CHECKED_STATE_PREF%2C%20false%29%3B%0A%0Aif%20%28%21%28_UID%20in%20window%29%29%20%7B%0A%09window%5B_UID%5D%20%3D%20%7B%0A%09%09%22MainListener%22%3A%20false%2C%0A%09%09%22BroadcasterCreated%22%3A%20false%2C%0A%09%09%22StyleSheet%22%3A%20false%0A%09%7D%3B%0A%7D%0A%0A%28tmp%20%3D%3E%20%7B%0A%09var%20modules%20%3D%20%22resource%3A//gre/modules/%22%3B%0A%09var%20%7B%0A%09%09Promise%0A%09%7D%20%3D%20Cu.import%28modules%20+%20%22Promise.jsm%22%2C%20tmp%29%3B%0A%09var%20%7B%0A%09%09devtools%0A%09%7D%20%3D%20Cu.import%28%22resource%3A//devtools/shared/Loader.jsm%22%2C%20tmp%29%3B%0A%09var%20%7B%0A%09%09DebuggerServer%0A%09%7D%20%3D%20devtools.require%28%22devtools/server/main%22%2C%20tmp%29%3B%0A%09var%20%7B%0A%09%09DebuggerClient%0A%09%7D%20%3D%20devtools.require%28%22devtools/shared/client/main%22%2C%20tmp%29%3B%0A%0A%09var%20hud%20%3D%20devtools.require%28%22devtools/client/webconsole/hudservice%22%29%3B%0A%0A%09var%20link%20%3D%20document.createElementNS%28xhtmlns%2C%20%22link%22%29%3B%0A%09link.setAttribute%28%22rel%22%2C%20%22shortcut%20icon%22%29%3B%0A%09link.setAttribute%28%22href%22%2C%20self.image%29%3B%0A%0A%09function%20connect%28%29%20%7B%0A%09%09var%20deferred%20%3D%20Promise.defer%28%29%3B%0A%09%09if%20%28%21DebuggerServer.initialized%29%20%7B%0A%09%09%09DebuggerServer.init%28%29%3B%0A%09%09%09DebuggerServer.addBrowserActors%28%29%3B%0A%09%09%7D%0A%09%09DebuggerServer.allowChromeProcess%20%3D%20true%3B%0A%0A%09%09var%20client%20%3D%20new%20DebuggerClient%28DebuggerServer.connectPipe%28%29%29%3B%0A%09%09client.connect%28%28%29%20%3D%3E%20%7B%0A%09%09%09client.getProcess%28%29.then%28response%20%3D%3E%20%7B%0A%09%09%09%09deferred.resolve%28%7B%0A%09%09%09%09%09form%3A%20response.form%2C%0A%09%09%09%09%09client%3A%20client%2C%0A%09%09%09%09%09chrome%3A%20false%0A%09%09%09%09%7D%29%3B%0A%09%09%09%7D%2C%20deferred.reject%29%3B%0A%09%09%7D%29%3B%0A%09%09return%20deferred.promise%3B%0A%09%7D%0A%0A%09if%20%28%21window%5B_UID%5D%5B%22MainListener%22%5D%29%20%7B%0A%09%09window%5B_UID%5D%5B%22MainListener%22%5D%20%3D%20true%3B%0A%09%09document.getElementById%28%22browser%22%29.addEventListener%28%22DOMContentLoaded%22%2C%20e%20%3D%3E%20%7B%0A%09%09%09var%20win%20%3D%20e.target.defaultView%2C%0A%09%09%09%09loc%20%3D%20win.location%3B%0A%09%09%09if%20%28%21loc%20%7C%7C%20loc.href%20%21%3D%3D%20URL%29%0A%09%09%09%09return%3B%0A%09%09%09connect%28%29%0A%09%09%09%09.then%28connection%20%3D%3E%20devtools.TargetFactory.forRemoteTab%28connection%29%29%0A%09%09%09%09.then%28target%20%3D%3E%20%7B%0A%09%09%09%09%09hud.openBrowserConsole%28target%2C%20win%2C%20win%29.then%28browserConsole%20%3D%3E%20%7B%0A%09%09%09%09%09%09win.onbeforeunload%20%3D%20e%20%3D%3E%20%7B%0A%09%09%09%09%09%09%09e.returnValue%20%3D%20%22%22%3B%0A%09%09%09%09%09%09%09browserConsole.chromeWindow%20%3D%20%7B%0A%09%09%09%09%09%09%09%09close%3A%20%28%29%20%3D%3E%20%7B%7D%2C%0A%09%09%09%09%09%09%09%09document%3A%20win.document%0A%09%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09var%20root%20%3D%20win.document.documentElement%3B%0A%09%09%09%09%09%09root.setAttribute%28%22title%22%2C%20%22Browser%20Console%22%29%3B%0A%09%09%09%09%09%09root.appendChild%28link.cloneNode%28false%29%29%3B%0A%09%09%09%09%09%7D%2C%20Cu.reportError%29%3B%0A%09%09%09%09%7D%2C%20Cu.reportError%29%3B%0A%09%09%7D%2C%20false%29%3B%0A%09%7D%0A%0A%09self.onclick%20%3D%20function%28aE%29%20%7B%0A%09%09if%20%28aE.button%20%21%3D%3D%202%29%0A%09%09%09aE.preventDefault%28%29%3B%0A%09%09if%20%28aE.button%20%3D%3D%3D%200%20%26%26%20%21aE.shiftKey%20%26%26%20%21accel%28aE%29%20%26%26%20%21aE.altKey%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09toggleSidebar%28broadcasterID%29%3B%0A%09%09%09%7D%20catch%20%28aErr%29%20%7B%0A%09%09%09%09SidebarUI.toggle%28broadcasterID%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20if%20%28aE.button%20%3D%3D%3D%201%20%26%26%20%21aE.shiftKey%20%26%26%20%21accel%28aE%29%20%26%26%20%21aE.altKey%29%20%7B%0A%09%09%09var%20tab%20%3D%20gBrowser.visibleTabs.find%28tab%20%3D%3E%20tab.linkedBrowser.currentURI.spec%20%3D%3D%3D%20URL%29%3B%0A%09%09%09gBrowser.selectedTab%20%3D%20tab%20%7C%7C%20gBrowser.addTab%28URL%29%3B%0A%09%09%7D%20else%20if%20%28aE.button%20%3D%3D%3D%200%20%26%26%20%21aE.shiftKey%20%26%26%20accel%28aE%29%20%26%26%20%21aE.altKey%29%20%7B%0A%09%09%09custombuttons.setPrefs%28USE_CSS_PREF%2C%20%21custombuttons.getPrefs%28USE_CSS_PREF%29%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09handleCSS%28%29%3B%0A%09%09%09%7D%2C%20100%29%3B%0A%09%09%7D%20else%20if%20%28aE.button%20%3D%3D%3D%200%20%26%26%20aE.shiftKey%20%26%26%20%21accel%28aE%29%20%26%26%20%21aE.altKey%29%20%7B%0A%09%09%09custombuttons.setPrefs%28CHECKED_STATE_PREF%2C%20%21custombuttons.getPrefs%28CHECKED_STATE_PREF%29%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09self.init%28%29%3B%0A%09%09%09%7D%2C%20100%29%3B%0A%09%09%7D%0A%09%09aE.stopPropagation%28%29%3B%0A%09%7D%3B%0A%7D%29%28%7B%7D%29%3B%0A%0Aif%20%28%21window%5B_UID%5D%5B%22BroadcasterCreated%22%5D%29%20%7B%0A%09window%5B_UID%5D%5B%22BroadcasterCreated%22%5D%20%3D%20true%3B%0A%09var%20mainB%20%3D%20document.getElementById%28%22mainBroadcasterSet%22%29%3B%0A%09var%20thisB%20%3D%20document.getElementById%28broadcasterID%29%3B%0A%09if%20%28mainB%20%26%26%20%21thisB%29%20%7B%0A%09%09thisB%20%3D%20document.createElementNS%28xulns%2C%20%22broadcaster%22%29%3B%0A%09%09thisB.setAttribute%28%22id%22%2C%20broadcasterID%29%3B%0A%09%09thisB.setAttribute%28%22cb_id%22%2C%20_UID%29%3B%0A%09%09thisB.setAttribute%28%22autoCheck%22%2C%20false%29%3B%0A%09%09thisB.setAttribute%28%22label%22%2C%20%22Browser%20Console%20in%20Sidebar%22%29%3B%0A%09%09thisB.setAttribute%28%22type%22%2C%20%22checkbox%22%29%3B%0A%09%09thisB.setAttribute%28%22group%22%2C%20%22sidebar%22%29%3B%0A%09%09thisB.setAttribute%28%22sidebarurl%22%2C%20URL%29%3B%0A%09%09thisB.setAttribute%28%22oncommand%22%2C%20%22SidebarUI.toggle%28this.id%29%3B%22%29%3B%0A%09%09mainB.appendChild%28thisB%29%3B%0A%09%7D%0A%7D%0A%0Aif%20%28custombuttons.getPrefs%28CHECKED_STATE_PREF%29%29%20%7B%0A%09var%20obsEl%20%3D%20document.createElementNS%28xulns%2C%20%22observes%22%29%3B%0A%09obsEl.setAttribute%28%22element%22%2C%20broadcasterID%29%3B%0A%09obsEl.setAttribute%28%22attribute%22%2C%20%22checked%22%29%3B%0A%09self.appendChild%28obsEl%29%3B%0A%7D%20else%20%7B%0A%09let%20obs%20%3D%20self.getElementsByTagName%28%22observes%22%29%5B0%5D%3B%0A%09obs%20%26%26%20obs.parentNode.removeChild%28obs%29%3B%0A%09self.removeAttribute%28%22checked%22%29%3B%0A%7D%0A%0Afunction%20getHelp%28aPlaceholder%29%20%7B%20//%20Get%20specific%20data%2C%20surrounded%20by%20%22placeholders%22%2C%20from%20the%20Help%20tab.%0A%09return%20document.getElementById%28self.id%29.getAttribute%28%22Help%22%29.split%28%22%3C%21--%22%20+%20aPlaceholder%20+%20%22--%3E%22%29%5B1%5D%3B%0A%7D%0A%0A//START//%20Load%20style%20sheets%0Avar%20css%20%3D%20getHelp%28%22StyleSheet%22%29%3B%0A%0Afunction%20styleSheet%28aCSS%2C%20aRemFlag%29%20%7B%0A%09var%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%09%09.getService%28Ci.nsIStyleSheetService%29%3B%0A%09var%20ios%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D%0A%09%09.getService%28Ci.nsIIOService%29%3B%0A%09var%20uri%20%3D%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28aCSS%29%2C%20null%2C%20null%29%3B%0A%09if%20%28sss.sheetRegistered%28uri%2C%20sss.USER_SHEET%29%29%0A%09%09sss.unregisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%09if%20%28aRemFlag%29%0A%09%09return%3B%0A%09sss.loadAndRegisterSheet%28uri%2C%20sss.USER_SHEET%29%3B%0A%09window%5B_UID%5D%5B%22StyleSheet%22%5D%20%3D%20aCSS%3B%0A%7D%0A%0Afunction%20deleteCSS%28%29%20%7B%0A%09if%20%28window%5B_UID%5D%5B%22StyleSheet%22%5D%29%20%7B%0A%09%09styleSheet%28window%5B_UID%5D%5B%22StyleSheet%22%5D%2C%20true%29%3B%0A%09%09delete%20window%5B_UID%5D%5B%22StyleSheet%22%5D%3B%0A%09%7D%0A%7D%0A%0Afunction%20handleCSS%28%29%20%7B%0A%09if%20%28custombuttons.getPrefs%28USE_CSS_PREF%29%29%20%7B%0A%09%09if%20%28%21%28window%5B_UID%5D%5B%22StyleSheet%22%5D%29%29%0A%09%09%09styleSheet%28css%29%3B%0A%09%09else%20if%20%28window%5B_UID%5D%5B%22StyleSheet%22%5D%20%21%3D%3D%20css%29%20%7B%0A%09%09%09styleSheet%28window%5B_UID%5D%5B%22StyleSheet%22%5D%2C%20true%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09styleSheet%28css%29%3B%0A%09%09%09%7D%2C%20500%29%3B%0A%09%09%7D%0A%09%7D%20else%20%7B%0A%09%09deleteCSS%28%29%3B%0A%09%7D%0A%7D%0A//END//%20Load%20style%20sheets%0A%0AaddDestructor%28function%28aReason%29%20%7B%0A%09if%20%28aReason%20%3D%3D%3D%20%22delete%22%20%7C%7C%20aReason%20%3D%3D%3D%20%22update%22%29%20%7B%0A%09%09deleteCSS%28%29%3B%0A%09%7D%0A%09if%20%28aReason%20%3D%3D%3D%20%22delete%22%29%20%7B%0A%09%09%28Services.prefs.getBranch%28PREF_BRANCH%29%29.deleteBranch%28%22%22%29%3B%0A%09%09let%20selfEls%20%3D%20document.getElementsByAttribute%28%22cb_id%22%2C%20_UID%29%3B%0A%09%09Array.prototype.slice.call%28selfEls%29.forEach%28function%28aEl%29%20%7B%20//%20Delete%20all%20elements%20created%20by%20this%20button.%0A%09%09%09aEl%20%26%26%20aEl.parentNode.removeChild%28aEl%29%3B%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%29%3B%0A%0Afunction%20accel%28aE%29%20%7B%0A%09if%20%28aE%29%0A%09%09return%20isOSX%20%3F%20aE.metaKey%20%3A%20aE.ctrlKey%3B%0A%09return%20isOSX%20%3F%20%22%uD835%uDDD6%uD835%uDDFC%uD835%uDDFA%uD835%uDDFA%uD835%uDDEE%uD835%uDDFB%uD835%uDDF1%22%20%3A%20%22%uD835%uDDD6%uD835%uDDFC%uD835%uDDFB%uD835%uDE01%uD835%uDDFF%uD835%uDDFC%uD835%uDDF9%22%3B%0A%7D%0A%0Athis.tooltipText%20%3D%20self.name%20+%20%22%5Cn%5Ct%uD835%uDDDF%uD835%uDDF2%uD835%uDDF3%uD835%uDE01%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDF6%uD835%uDDF0%uD835%uDDF8%3A%20Browser%20Console%20On%20Sidebar%20%5Cn%22%20+%0A%09%22%5Ct%uD835%uDDE0%uD835%uDDF6%uD835%uDDF1%uD835%uDDF1%uD835%uDDF9%uD835%uDDF2%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDF6%uD835%uDDF0%uD835%uDDF8%3A%20Browser%20Console%20On%20New%20Tab%5Cn%22%20+%0A%09%22%5Ct%22%20+%20accel%28%29%20+%20%22%20+%20%uD835%uDDDF%uD835%uDDF2%uD835%uDDF3%uD835%uDE01%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDF6%uD835%uDDF0%uD835%uDDF8%3A%20Toggle%20Style%20Sheet%5Cn%22%20+%0A%09%22%5Ct%uD835%uDDE6%uD835%uDDF5%uD835%uDDF6%uD835%uDDF3%uD835%uDE01%20+%20%uD835%uDDDF%uD835%uDDF2%uD835%uDDF3%uD835%uDE01%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDF6%uD835%uDDF0%uD835%uDDF8%3A%20Toggle%20the%20use%20of%20checked%20state%22%3B%0A%0AhandleCSS%28%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%uD835%uDDDC%uD835%uDDFA%uD835%uDDFD%uD835%uDDFC%uD835%uDDFF%uD835%uDE01%uD835%uDDEE%uD835%uDDFB%uD835%uDE01%20%uD835%uDDFB%uD835%uDDFC%uD835%uDE01%uD835%uDDF2%uD835%uDE00%0A%u26AB%20%uD835%uDDD7%uD835%uDDE2%20%uD835%uDDE1%uD835%uDDE2%uD835%uDDE7%20%uD835%uDDF6%uD835%uDDFB%uD835%uDE00%uD835%uDE01%uD835%uDDEE%uD835%uDDF9%uD835%uDDF9%20%uD835%uDDFA%uD835%uDDFC%uD835%uDDFF%uD835%uDDF2%20%uD835%uDE01%uD835%uDDF5%uD835%uDDEE%uD835%uDDFB%20%uD835%uDDFC%uD835%uDDFB%uD835%uDDF2%20%uD835%uDE03%uD835%uDDF2%uD835%uDDFF%uD835%uDE00%uD835%uDDF6%uD835%uDDFC%uD835%uDDFB%20%uD835%uDDFC%uD835%uDDF3%20%uD835%uDE01%uD835%uDDF5%uD835%uDDF6%uD835%uDE00%20%uD835%uDDEF%uD835%uDE02%uD835%uDE01%uD835%uDE01%uD835%uDDFC%uD835%uDDFB%20%uD835%uDDEE%uD835%uDE01%20%uD835%uDE01%uD835%uDDF5%uD835%uDDF2%20%uD835%uDE00%uD835%uDDEE%uD835%uDDFA%uD835%uDDF2%20%uD835%uDE01%uD835%uDDF6%uD835%uDDFA%uD835%uDDF2%u2757%u2757%u2757%0A%u26AB%20%uD835%uDDD7%uD835%uDDE2%20%uD835%uDDE1%uD835%uDDE2%uD835%uDDE7%20%uD835%uDDF0%uD835%uDDF9%uD835%uDDFC%uD835%uDDFB%uD835%uDDF2%20%uD835%uDE01%uD835%uDDF5%uD835%uDDF6%uD835%uDE00%20%uD835%uDDEF%uD835%uDE02%uD835%uDE01%uD835%uDE01%uD835%uDDFC%uD835%uDDFB%u2757%u2757%u2757%0A%u26AB%20If%20you%20did%20any%20of%20the%20previous%20actions%2C%20delete%20all%20extra%20buttons%20leaving%20only%20one%20version%20of%20%uD835%uDDE0%uD835%uDE02%uD835%uDDF9%uD835%uDE01%uD835%uDDF6%20%uD835%uDDE7%uD835%uDDFF%uD835%uDDEE%uD835%uDDFB%uD835%uDE00%uD835%uDDF9%uD835%uDDEE%uD835%uDE01%uD835%uDDFC%uD835%uDDFF%20and%20restart%20your%20application.%0A%0AInside%20the%20Help%20tab%20of%20this%20button%20you%20will%20find%20the%20style%20sheet%20to%20customize%20the%20console.%0A%0A%5B%2C%5D%0A%3C%21--StyleSheet--%3E%0A@-moz-document%20%20url%28chrome%3A//devtools/content/shared/widgets/VariablesView.xul%29%7B%0A%09%23variables%20%7B%0A%09%09font-family%3A%20%22Noto%20Sans%22%2C%22Open%20Sans%22%2CHelvetica%2CArial%2Csans-serif%20%21important%3B%0A%09%09font-size%3A%2012px%20%21important%3B%0A%09%09font-weight%3A%20600%20%21important%3B%0A%09%7D%0A%7D%0A@-moz-document%20%20url%28chrome%3A//devtools/content/webconsole/webconsole.xul%29%7B%0A%09/*%20Console%20fonts%20*/%0A%09.devtools-monospace%20%7B%0A%09%09font-family%3A%20%22Noto%20Sans%22%2C%22Open%20Sans%22%2CHelvetica%2CArial%2Csans-serif%20%21important%3B%0A%09%09font-size%3A%2010px%20%21important%3B%0A%09%09font-weight%3A%20bold%20%21important%3B%0A%09%7D%0A%09/*%20Console%20fonts%20*/%0A%0A%09/*%20Text%20colors%20*/%0A%09/*%20Text%20color%20for%20light%20theme%20*/%0A%09.theme-light%20.message-body-wrapper.message-body.devtools-monospace%20%7B%0A%09%09color%3A%20%23000%20%21important%3B%0A%09%7D%0A%09/*%20Text%20color%20for%20dark%20theme%20*/%0A%09.theme-dark%20.message-body-wrapper.message-body.devtools-monospace%20%7B%0A%09%09color%3A%20%23FFF%20%21important%3B%0A%09%7D%0A%09/*%20Text%20colors%20*/%0A%0A%09/*%20Message%20colors%20*/%0A%09.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22jswarn%22%5D%20%7B%0A%09%09background%3A%20rgba%28251%2C%20149%2C%200%2C%20.2%29%20%21important%3B%0A%09%09border-bottom%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%09border-top%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%7D%0A%09.message%5Bcategory%3D%22cssparser%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22cssparser%22%5D%20%7B%0A%09%09background%3A%20rgba%280%2C%20182%2C%20240%2C%20.2%29%20%21important%3B%0A%09%09border-bottom%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%09border-top%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%7D%0A%09.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22error%22%5D%5Bfilter%3D%22exception%22%5D%20%7B%0A%09%09background%3A%20rgba%28255%2C%200%2C%200%2C%20.2%29%20%21important%3B%0A%09%09border-bottom%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%09border-top%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%7D%0A%09.message.cm-s-mozilla%5Bcategory%3D%22console%22%5D%20%7B%0A%09%09background%3A%20rgba%28203%2C%20203%2C%20203%2C%20.2%29%20%21important%3B%0A%09%09border-bottom%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%09border-top%3A%201px%20solid%20rgba%280%2C%200%2C%200%2C%20.5%29%20%21important%3B%0A%09%7D%0A%09/*%20Message%20colors%20*/%0A%0A%09/*%20Message%20colors%20on%20hover%20*/%0A%09.theme-light%20.message%3Ahover%2C%0A%09.theme-light%20.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22jswarn%22%5D%3Ahover%2C%0A%09.theme-light%20.message%5Bcategory%3D%22cssparser%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22cssparser%22%5D%3Ahover%2C%0A%09.theme-light%20.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22error%22%5D%5Bfilter%3D%22exception%22%5D%3Ahover%20%7B%0A%09%09background-color%3A%20rgba%2876%2C%20158%2C%20217%2C%200.23%29%20%21important%3B%0A%09%7D%0A%09.theme-dark%20.message%3Ahover%2C%0A%09.theme-dark%20.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22jswarn%22%5D%3Ahover%2C%0A%09.theme-dark%20.message%5Bcategory%3D%22cssparser%22%5D%5Bseverity%3D%22warn%22%5D%5Bfilter%3D%22cssparser%22%5D%3Ahover%2C%0A%09.theme-dark%20.message%5Bcategory%3D%22exception%22%5D%5Bseverity%3D%22error%22%5D%5Bfilter%3D%22exception%22%5D%3Ahover%20%7B%0A%09%09background-color%3A%20rgba%2829%2C%2079%2C%20115%2C%200.5%29%20%21important%3B%0A%09%7D%0A%09/*%20Message%20colors%20on%20hover%20*/%0A%0A%09/*%20Hide%20original%20icons%20*/%0A%09.message%20%3E%20.icon%3A%3Abefore%20%7B%0A%09%09background-image%3A%20none%20%21important%3B%0A%09%7D%0A%09/*%20Hide%20original%20icons%20*/%0A%0A%09/*%20Assign%20new%20icons%20*/%0A%09.message%5Bseverity%3Derror%5D%20%3E%20.icon%20%7B%0A%09%09background-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAB00lEQVQokX3DTUhTAQDA8Xd9uMNruIeryWQsNgidiL1DCJ0Glk4YeQyhkzpo4E5qt4EQWRKIh6FEhAWaeDBBnB2ch2hzG4rS2kD21Qdvz33Ipm87/Tt2KX/wE048Dv93b5+WGe0nM3r3P/tJe/u0E4/DLxx7XNr5+CC1yQfXPh8f5Njj0oSY24nq7UUd6aY0MYS2tkw1dkA1doC2tkxpYgh1pBvV20vM7UTYH7BTHHahLs2h1+tUUikuy2Uuy2UqqRR6vY66NEdx2MX+gB1hR+kiNzVGq6zRurgg7vOR9PtJ+v3EfT6atRqtskZuaowdpQths8dCfiHIVaNBU9dRo1G2rVa2rVbUaJSmrnPVaJBfCLLZY0FYdZpJTD5GKxaolkocBgLsKgq7isJhIEC1VEL7+YPk0yesOs0IKzaZiOLgy6vn/M7lOA2FKMTjFBIJTkMhfp2d8XXpNRHFyYpNRli0GInYO/jsuk0+myWbTpM5OuJbLErk7Rs2HnkI37ERsXewaDEizMsS4c529h662Xv5gg/37/HObOT9TSNbt9oJd/49L0sIQclQWTdJbMgSH00SW/INPv3jukkiKBkqwowoTs+2idVnBpHrzraJ1RlRnP4DeQFoOf9yusQAAAAASUVORK5CYII%3D%22%29%20%21important%3B%0A%09%09background-repeat%3A%20no-repeat%20%21important%3B%0A%09%7D%0A%09.message%5Bseverity%3Dwarn%5D%20%3E%20.icon%20%7B%0A%09%09background-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAABz0lEQVQokX3JT0hTcQDA8XfVLl6WULmLeBA65EkPFrtKB5VCoZPSRUKmIYgXL5FgoU3EuZi4GnrRdXAFy2geGpNcD4Q20bnc5rZnOl/bfPvz/O0x+HYQugQePocvXym21m1NbPSrxx+fcJ3ERr8aW+u2StH1XrW0PcJl6Pm1StsjHK73qtLeShflrT7K/keUg8NcRD+gKTKaInNx4KEcHL56W33srXQh7S5ZKG32UAw7EELHqFYpZmSKGRnDMBBCpxh2UNrsYXfJgrSz0EEhMIZRyVGr1agZVeLuTuLuB1ddq2FUchQCY+wsdCAFZtooyDZ0vYwQgku9zNH7TuLu+wghEEKg6xUK8hyBmTYk/1QryU/P+HOWQdM0NE0jr0TIK5F/ncuekPJZ8U+1Ivkmm0m62gl/nuU8m0VVz0kH50kH51FVlezZbyJfF0m62vFNNiN5x5s4dbaQdN4jnUpynIhxdPCTWOQHoS9uAo7HxN/e5dTZgne8Cckz2ohiNxNzPyTkneXbGwvfX9xCfnmbX7Y7KHYzJ3Yzit2MZ7QRaXWoIb8/beLwtYnoKxMp203Sc//bnzaxOtSQl5YH6iZcg/WFd09vcB3XYH1heaBu4i9fuaqY22u7CwAAAABJRU5ErkJggg%3D%3D%22%29%20%21important%3B%0A%09%09background-repeat%3A%20no-repeat%20%21important%3B%0A%09%7D%0A%09.message%5Bseverity%3Dinfo%5D%20%3E%20.icon%20%7B%0A%09%09background-image%3A%20url%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAABxUlEQVQokX3HzUuacQDA8ed/KOjQwdYiIghGg7r0hmyHeWknD9U8xJgYSwITHUIbLIjNdKBQB3HE415C2YvKCiMQbDZyF0dM0LmaU1b2i+Khcg8Pwnc3LwMPn8NHcu8MWX17erHy9TbN+Pb0wr0zZJW8qRERPpjk3e97TZgIH0ziTY0IaWl7kGBeTyA/ynpxgkxFpih2KYpdMhWZ9eIEgfwowbyepe1BpIV4P6v7YyRLXlS1hqZplEWBsiigaRqqWiNZ8rK6P8ZCvB/JEekjnJvh4u8p9Xqder3OVvYliWyw8Qv1lHBuBkekD2ku1Eui8Jyr2iWqqqKqKp6YCU/M1PhV7ZKtH27mQr1IlkA3wbSZo5MyiqKgKAp2eRi7PNz4saiw9uUhlkA30rS/k8ebA0RSHqonVYQQfEj7eZ/2IYTgqPqHj59XeLI5wLS/E2lqWYdzowdX/Ca/Sof8PCyQy38j+z1DLBni6Rsjj6I3cG70MLWsQzIutmOLdvHs013eJl7gWLvF/UAHD4LXsIavY4t2NRgX25HGXW1nZlmH5bUOyysds+EOZiP/M8s6xl1tZ5LB1uK8M996brC30tR867nB1uL8B0UajjUem+zaAAAAAElFTkSuQmCC%22%29%20%21important%3B%0A%09%09background-repeat%3A%20no-repeat%20%21important%3B%0A%09%7D%0A%09/*%20Assign%20new%20icons%20*/%0A%0A%09/*%20Reposition%20new%20icons%20*/%0A%09.message%20%3E%20.icon%20%7B%0A%09%09margin%3A%204px%200%200%204px%20%21important%3B%0A%09%7D%0A%09/*%20Reposition%20new%20icons%20*/%0A%7D%0A%0A/*%20Style%20for%20Browser%20Console%20On%20Tab%20*/%0A.tabbrowser-tab%5Btitle%3D%22Browser%20Console%22%5D%20.tab-icon-image%20%7B%0A%09list-style-image%3Aurl%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACkElEQVQ4jZXKT0iTcRzH8d8tM8VtOttWj7OpTGcsJBBBCCwU/9IfOkR1EA0ED1GHDsaEIjx4ETsJghaElGaDnP0RO0QmmVo+h8fU2CR0a3smLXsYjMEz3h2kwS6hhxd8v3zeQmlx1q22ur6utlRyIK2ur0qLs07Iza6V7c56tN4O4vdu7IvW28F2Zz1ys2tFLDWUE+tq4tflKn5dOrU/l6uIdTWx1FCOmKsrI3LeTaTtJJG2k0TbzxIdH2bnyyd2wyF2wyF2vnwiOj5MtP1suoucdzNXV4aYrS1hu9HFdqOL8MP7JOJxkskkcVUlmUxm3Il4nPDD++l+trYE4asuZvOck6Cnm5Suk0ql2BgYYNpuRwsE0AIBpu12NgYGSKVSpHSdoKebzXNOfNXFiMkqiY0zpfxcmEPXdXRd54/fz7TdnuGP35/efy7MsXGmlMkqCTFWaUOpcfA7EiaRSKQFZ2aYEIIJIQjOzGRsu2oEpcbBWKUNMeK0sHLajuydQNM0NE1DVRSmJCmDqijpXXk7zcppOyNOC2LIUciiW+LVlTZ2IhFisRhyXx9TkkRIlgnJMlOShNzXRywWYyeq4rt6gUW3xJCjEDFYlM98hY0P5TbGLjYT2tpCVVVC37+jqmrGveX3M95xnQ/lNuYrbAwW5SP6rUbel1j2VBbzIxAgGAzybWmRteVlVj8v8HHiGV5PD6MVJ3jnsKT7fqsR8cCcx2yRmdkiM+/brzHvfcHT2zd5dNzMqNXEY5uJ58fyeSOZ090/D8x5CI8xB5/VxGuribGjBp4UGpiy7P3/47Oa8BhzEHdzj6wNGnLxFhh4uU/eAgODhlzu5h5ZEz3Zh1rvHM5av5WdxUHcOZy13pN9qPUv/viAZlYRB0kAAAAASUVORK5CYII%3D%22%29%21important%3B%0A%09-moz-image-region%3A%20auto%20%21important%3B%0A%7D%0A/*%20Style%20for%20Browser%20Console%20On%20Tab%20*/%0A%0A/*%20Remove%20maximum/minimum%20%20width%20restriction%20of%20sidebar%20*/%0A%23sidebar%20%7B%0A%09max-width%3A%20none%20%21important%3B%0A%09min-width%3A%200px%20%21important%3B%0A%7D%0A/*%20Remove%20maximum/minimum%20%20width%20restriction%20of%20sidebar%20*/%0A%3C%21--StyleSheet--%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1, я поставил эту кнопку (вернее, эта для ФФ 48 и выше, но я нашел кнопку и для своей версии). Все работает, но я попробовал открывать по СКМ консоль не в новой вкладке, а в ифрейме, который я создаю на текущей странице. Мне просто так удобнее.
Консоль открывается, показывает все что нужно, Но только если я копирую в этой консоли или при любом действии выскакивает ошибка top.document.commandDispatcher is undefined

Может что добавить надо в код?

Отсутствует

 

№1083422-10-2016 09:23:56

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1647
UA: Chrome 50.0

Re: Custom Buttons

fokanik, хорошо, но, к сожалению, это не то, что надо. Во первых, эти пункты нужны редко, а в меню они на виду торчат всегда. Это ни как не вписывается в мои привычки, у меня все меню вычищены до минимума и в windows и в браузерах и везде где возможно, а тут получается куча малонужного хлама. Во вторых, пункты отсутствуют в контекстном меню вкладок.

Отсутствует

 

№1083522-10-2016 13:27:57

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

_zt пишет

Во первых, эти пункты нужны редко, а в меню они на виду торчат всегда. Это ни как не вписывается в мои привычки

Так и отредактируйте меню так, как Вам нужно. Просто убираете ненужное и добавляете свое, в этом месте:

Выделить код

Код:

["PotPlayer", "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],
["Прогр.", "Путь", "Параметры" ],

Отсутствует

 

№1083622-10-2016 18:38:39

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1647
UA: Firefox 46.0

Re: Custom Buttons

fokanik
Вот я глупый то, совсем не догадался! А если серьезно, то повторю еще раз, мне не нужна портянка из десятка редко используемых пунктов в контекстном меню всех подряд ссылок, мне нужно подменю.

Отсутствует

 

№1083724-10-2016 14:05:43

SOTVM
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 112
UA: Firefox 49.0

Re: Custom Buttons

как перенести сделать импорт/экспорт всех скриптов/кнопок CB в другой профиль.
пересел на LinuxMint ,поэтому с простым переносом профиля не прокатило,
дополнения перенёс через синхронизацию Firefox Sync ,
"кнопок многовато" - руками устал:lol:
есть способ всё сразу вытащить?


Никто не знает столько,сколько не знаю Я.

Отсутствует

 

№1083824-10-2016 14:36:53

foxboy
Участник
 
Группа: Members
Зарегистрирован: 06-06-2015
Сообщений: 34
UA: Palemoon 24.0

Re: Custom Buttons

SOTVM пишет

"кнопок многовато" - руками устал

Выделить код

Код:

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%3EFF%20Exp%20Imp%20CB%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA2hJREFUOE9901tME3YUBvB/rALBG9NJ101FWZnMWl3sCqIUbYFSCki1FKmIJQa6IJSKtrC2OEEUMFw2RGE0ECJYBLcH8IIDFsEieEG8YJFhCwHsOho0Oudli7BvkyzNEg3n9Xz5PZyTj0JmHKYnIbPdCfnjz39jb2bO/relBh9YSdipBYsCM+8HxH/7WrxfPylQVY+5fZn0A6H4hcyIuCwTRTsHpNtZafWo7xjGyLNJTLwCHr0AaluG4R2kA3EPLyPEw+VdiBEfMZuT8YaWchY1tx+jb2ISlx48Q0Pnr8jTt6G59zny6vqxgCEDbU1UDYsln+NAXIWHPvI5UD22uegK4hosuPDwJS4PPkdF8ziU5b34RuCLgeIM9B1LhkG7H3sPVmEWla9wAMWnzx+pNQ5AV9cJTf1N/Nxvg8kygb6h31HTPQpjgRKvRARj4rmwJq5FRpgYZAl/cFt67dK3COVwuaG3quUWIrINCNr3HVq6bsM8/BssIxNovm5G06kaWKoPw57uh6cRBMWfuoJQg6bogWk7yfKFCz/w4MSMJJf8iK/PXIO0sBEciQqixFxEKfTYICnECcM5dN3px0WlGN1hK6Hi80A+EWAZKy6LKAR05zl00YBLTAkoQg1oQYkgvtmYt5gN8nEsCEOD6C8YqNPtg263BOEyDZgiNQiNi+XrJIXTd3ClS9vm76iAQF0Ko4iK6igeLotWgJ9QDrq/Gv0hTngtJrjhNxfsSC0W+CeDfMj5+7P10pxpwG217CCFvguNrV2wakNhZxPYFRtxpssMvz163FP642XsYljV0bBa7ag41QQ3KvcJMyBl7zSwLiKf4ey5fbyhtQfDll9wL4YNc6MBdT2j2Hq0DR3tNzCUHYtHQ2aMdlTCVrQHIp70qqcgV+h4JW2TPKPpZOGUrVwBU7g7HhalQd/2AMKcVnQaKjEe74We5FDYAp3wE3P+C05Iar5v6nkvB5CUdVJhVMtgYhL0+bjApmDjeOU58DQXYCxW44l0KUyRDNzVyaFKUA95RH/PlZw1OTkA1obgTfGxSSUyny0XpRtD7+/eoXgauD1rao0gB7uC4/5K4G59LJemDH6lLeuOTDmu3Sxrf08f3nLtmPe5ssXXK+yYnMnLzGNzNaXe/pkFq4T5Ku+Y0m1L+Ln0/xfpH5DHxEzf+vt5AAAAAElFTkSuQmCC%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%2004.04.2012%0A//%20%u0410%u0432%u0442%u043E%u0440%20-%20Indomito%0A%0A%0A//*********************************************************************%0A//%20----------------%u041C%u043E%u0436%u043D%u043E%20%u043C%u0435%u043D%u044F%u0442%u044C%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u044F%20%u043A%u043E%u043D%u0441%u0442%u0430%u043D%u0442%20---------------------%0A//%20------------------------BEGIN%20DEF-----------------------------------%0Aconst%20cEICB%20%3D%20%22Export.Import.CB.type.HTML%22%3B%0Aconst%20cPathEI%20%3D%20%22C%3A%5C%5CCustom%20Buttons%5C%5C%u0421%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435%20%u043A%u043D%u043E%u043F%u043E%u043A%5C%5C%22%3B%0Aconst%20cPathSetMsg%20%3D%20%22%u041D%u0430%u0434%u043E%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0447%u0442%u0435%u043D%u0438%u044F/%u0437%u0430%u043F%u0438%u0441%u0438%20%u043A%u043D%u043E%u043F%u043E%u043A%22%3B%0Aconst%20csExpT%20%3D%20%22%u042D%u043A%u0441%u043F%u043E%u0440%u0442%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0432%20HTML%22%3B%0Aconst%20csExpOneT%20%3D%22%u042D%u043A%u0441%u043F%u043E%u0440%u0442%20%u043E%u0434%u043D%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20HTML%22%3B%0Aconst%20csExpOneMsg%20%3D%22%u0412%u044B%u0431%u0435%u0440%u0438%u0442%u0435%20%u0438%u043C%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%20%0Aconst%20csImpT%20%3D%20%22%u0418%u043C%u043F%u043E%u0440%u0442%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0438%u0437%20HTML%22%3B%0Aconst%20csSetIET%20%3D%20%22%u041A%u0430%u0442%u0430%u043B%u043E%u0433%20%u0434%u043B%u044F%20%u042D%u043A%u0441%u043F%u043E%u0440%u0442%u0430/%u0418%u043C%u043F%u043E%u0440%u0442%u0430%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0432/%u0438%u0437%20HTML%22%3B%0Aconst%20dProc%20%3D%200.50%3B%20//%20%u043F%u0440%u043E%u0446%u0435%u043D%u0442%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u044F%20%u0432%u044B%u0431%u043E%u0440%u0430%20%u043E%u043A%u043D%u0430%20%u043A%u043D%u043E%u043F%u043E%u043A%2C%20%u043F%u0440%u0438%20dProc%20%3D%200.30%20%u044D%u0442%u043E%2030%25%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u043E%u0442%20%u043E%u0431%u0449%u0435%u0433%u043E%20%u0447%u0438%u0441%u043B%u0430%0Aconst%20csNoNameBT%20%3D%20%22%u0414%u043B%u044F%20%u044D%u0442%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043D%u0435%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0435%u043D%u043E%20%u0438%u043C%u044F%22%3B%0Aconst%20csNoBT%20%3D%20%22%u042D%u0442%u043E%20%u043D%u0435%20%u043A%u043D%u043E%u043F%u043A%u0430%22%3B%0Aconst%20spcTn%20%3D%20%22%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%22%3B%0Aconst%20spcTm%20%3D%20%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u041D%u0435%20%u0430%u043A%u0442%u0438%u0432%u043D%u044B%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%0Athis.tooltipText%20%3D%20%22Shift+Left%20%3D%3E%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u043E%u0434%u043D%u0443%20%u043A%u043D%u043E%u043F%u043A%u0443%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5CnLeft%20%20%20%20%20%20%20%20%20%3D%3E%20%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5CnMiddle%20%20%20%20%20%20%3D%3E%20%u041A%u0430%u0442%u0430%u043B%u043E%u0433%20%u0437%u0430%u043F%u0438%u0441%u0438/%u0447%u0442%u0435%u043D%u0438%u044F%20%u043A%u043D%u043E%u043F%u043E%u043A%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5CnRight%20%20%20%20%20%20%20%3D%3E%20%u0421%u0447%u0438%u0442%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%0A//%20-------------------------END%20DEF-----------------------------------%0A%0A//*********************************************************************%0A//%20%u041E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%20%u0441%u043E%u0431%u044B%u0442%u0438%u0439%20%u043F%u043E%20%u043D%u0430%u0436%u0430%u0442%u0438%u044E%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u043C%u044B%u0448%u0438%20%u0441/%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u0430%u043C%u0438%0A//*********************************************************************%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20event.shiftKey%29%20%7B%0A//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20shift+%u041B%u041A%u041C%0AshKeylbMouse%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%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%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%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A//*********************************************************************%0A//%u0417%u0430%u043F%u0438%u0441%u044C%20%u043E%u0434%u043D%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u043E%20%u0432%u044B%u0431%u043E%u0440%u0443%0Afunction%20shKeylbMouse%28%29%7B%0A%0Aif%20%28chkPath%28Application.prefs.getValue%28cEICB%2C%200%29%29%20%21%3D%201%29%0A%20%20%20%7B%0A%20%20%20custombuttons.%20alertBox%20%28csExpT%2C%20cPathSetMsg%29%3B%0A%20%20%20return%3B%0A%20%20%20%7D%0A%0Avar%20name%20%3D%20%5B%5D%3B%20//%u043C%u0430%u0441%u0441%u0438%u0432%20%u0438%u043C%u0451%u043D%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0434%u043B%u044F%20%u0432%u044B%u0432%u043E%u0434%u0430%0Avar%20namea%20%3D%20%5B%5D%3B%20//%u043C%u0430%u0441%u0441%u0438%u0432%20%u0438%u043C%u0451%u043D%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0430%u043A%u0442%u0438%u0432%u043D%u044B%u0445%0Avar%20namep%20%3D%20%5B%5D%3B%20//%u043C%u0430%u0441%u0441%u0438%u0432%20%u0438%u043C%u0451%u043D%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u043D%u0435%20%u0430%u043A%u0442%u0438%u0432%u043D%u044B%u0445%0Avar%20i%2Cj%2C%20buts%3B%0A%0Abuts%20%3D%20document.%20getElementsByTagName%20%28%22toolbarbutton%22%29%3B%0Afor%20%28i%20%3D%200%2C%20j%20%3D%200%3B%20i%20%3C%20buts.%20length%3B%20i++%29%0A%20%20%20%20if%20%28buts%5Bi%5D.getAttribute%28%22id%22%29.indexOf%28%22custombuttons-button%22%29%3D%3D0%20%26%26%20typeof%28buts%20%5Bi%5D.name%29%3D%3D%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20namea%5Bj++%5D%20%3D%20buts%20%5Bi%5D.%20name%3B%0Anamea.sort%28cmp%29%3B%0Anamea.splice%28j%2C0%2CspcTn%2CspcTm%2CspcTn%29%3B%0A%0Abuts%20%3D%20custombuttons.%20palette.%20getElementsByTagName%20%28%22toolbarbutton%22%29%3B%0Afor%20%28%20i%20%3D%200%2C%20j%20%3D%200%3B%20i%20%3C%20buts.%20length%3B%20i++%29%0A%20%20%20%20if%20%28buts%20%5Bi%5D.%20getAttribute%20%28%22id%22%29.%20indexOf%20%28%22custombuttons-button%22%29%20%3D%3D%200%26%26typeof%28buts%20%5Bi%5D.getAttribute%20%28%22label%22%29%29%3D%3D%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20namep%5Bj++%5D%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22label%22%29%3B%0A%0Anamep.sort%28cmp%29%3B%0Aname%3Dnamea.concat%28namep%29%3B%0A%0A//%20%u041E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%20%u043C%u043E%u0434%u0430%u043B%u044C%u043D%u043E%u0433%u043E%20%u043E%u043A%u043D%u0430%20%u0432%u044B%u0431%u043E%u0440%u0430%20%u0438%u043C%u0451%u043D%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0441%20%u0443%u0447%u0451%u0442%u043E%u043C%20%u043E%u0431%u0449%u0435%u0433%u043E%20%u0447%u0438%u0441%u043B%u0430%20%u043A%u043D%u043E%u043F%u043E%u043A%0Avar%20rowsCount%20%3D%20name.length%20*%20dProc%3B%20%0Avar%20oSvc%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0Avar%20observer%20%3D%20%7B%0A%20%20%20%20added%3A%20true%2C%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20if%28doc.location.href%20%21%3D%20%22chrome%3A//global/content/selectDialog.xul%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20oSvc.removeObserver%28this%2C%20%22domwindowopened%22%29%3B%0A%20%20%20%20%20%20%20%20this.added%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20var%20list%20%3D%20doc.getElementById%28%22list%22%29%3B%0A%20%20%20%20%20%20%20%20if%28list%29%0A%20%20%20%20%20%20%20%20%20%20%20%20list.setAttribute%28%22rows%22%2C%20rowsCount%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0AoSvc.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0A%0Avar%20selected%20%3D%20%7B%7D%3B%0Avar%20bRt%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/prompt-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPromptService%29%0A%20%20%20%20%20%20%20%20.select%28window%2C%20csExpOneT%2C%20csExpOneMsg%2C%20name.length%2C%20name%2C%20selected%20%29%0Aobserver.added%20%26%26%20oSvc.removeObserver%28observer%2C%20%22domwindowopened%22%29%3B%0A%0Aif%20%28%21bRt%29%20return%3B%20//%20%u041E%u0442%u043C%u0435%u043D%u0430%20-%20%u0432%u044B%u0445%u043E%u0434%0A%20else%20if%20%28spcTm%3D%3Dname%5Bselected.value%5D%7C%7CspcTn%3D%3Dname%5Bselected.value%5D%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20custombuttons.%20alertBox%20%28csExpOneT%2C%20csNoBT%29%3B%0A%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%7D%20%0A%20else%20if%20%28name%5Bselected.value%5D%3D%3D%22%22%29%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%20%20custombuttons.%20alertBox%20%28csExpOneT%2C%20csNoNameBT%29%3B%0A%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%7D%20%20%20%20%20%20%20%20%20%20%0A%20%0A//OK%20%20-%20%u043D%u0430%u0447%u0438%u043D%u0430%u0435%u043C%20%u043E%u0431%u0440%u0430%u0431%u043E%u043A%u0443%20%u0438%20%u0437%u0430%u043F%u0438%u0441%u044C%20%u0432%u044B%u0431%u0440%u0430%u043D%u043D%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%0Avar%20mydir%3DApplication.prefs.getValue%28cEICB%2C%200%29%2C%20myfilename%3Dname%20%5Bselected.value%5D%3B%0A%20%20var%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0A%20%20fp.init%28window%2C%20csExpOneT%2C%20fp.modeSave%29%3B%0A%20%20var%20dd%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Add.initWithPath%28mydir%29%3B%20//%u041F%u0443%u0442%u044C%20%u043A%u043E%u0442%u043E%u0440%u044B%u0439%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%0Afp.displayDirectory%20%3D%20dd%3B%0Afp.defaultString%20%3D%20myfilename+%22.html%22%3B%0Aif%28fp.show%28%29%20%21%3D%20fp.returnCancel%29%0A%20%20%20%20%20%20%20%20custombuttons.%20alertBox%20%28csExpOneT%2C%20%22%u041A%u043D%u043E%u043F%u043A%u0430%20%22+myfilename+%22%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0430%20%u0432%20%5Cn%22+%20saveCB%28fp.file.path%2C%20myfilename%29%29%3B%0A%0A//******%20DefSub%0A//%u0421%u043E%u0440%u0442%u0438%u0440%u043E%u0432%u043A%u0430%20%u0441%u0442%u0440%u043E%u043A%20%u043F%u043E%20%u0432%u043E%u0437%u0440%u0430%u0441%u0442%u0430%u043D%u0438%u044E%0Afunction%20cmp%28a%2C%20b%29%20%7B%0A%20%20if%20%28a.toUpperCase%28%29%20%3E%20b.toUpperCase%28%29%29%20return%201%3B%0A%20%20if%20%28a.toUpperCase%28%29%20%3C%20b.toUpperCase%28%29%29%20return%20-1%3B%0A%20%20return%200%3B%0A%7D%3B%0A//******%20EndDefSub%0A%0A%7D%3B%0A%0A//*********************************************************************%0A//%u0417%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0438%0Afunction%20lbMouse%28%29%7B%0Aif%20%28chkPath%28Application.prefs.getValue%28cEICB%2C%200%29%29%20%21%3D%201%29%20custombuttons.%20alertBox%20%28csExpT%2C%20cPathSetMsg%29%3B%0A%20else%20%20%7B%0Avar%20mydir%3DApplication.prefs.getValue%28cEICB%2C%200%29%2C%20myfilename%20%3D%20GenFileName%28%29%3B%0A%20%20var%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0A%20%20fp.init%28window%2C%20csExpT%2C%20fp.modeSave%29%3B%0A%20%20var%20dd%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Add.initWithPath%28mydir%29%3B%20//%u041F%u0443%u0442%u044C%20%u043A%u043E%u0442%u043E%u0440%u044B%u0439%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%0Afp.displayDirectory%20%3D%20dd%3B%0Afp.defaultString%20%3D%20myfilename%3B%0Aif%28fp.show%28%29%20%21%3D%20fp.returnCancel%29%0A%20%20%20%20%20%20%20%20custombuttons.%20alertBox%20%28csExpT%2C%20%22%u041D%u0430%u0431%u043E%u0440%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0441%u043E%u0445%u0440%u0430%u043D%u0451%u043D%20%u0432%20%5Cn%22+%20saveCB%28fp.file.path%2C%20%22%22%29%29%3B%0A%20%20%7D%0A%7D%3B%0A%0A//*********************************************************************%0A//%u0421%u0447%u0438%u0442%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0438%0Afunction%20rbMouse%28%29%7B%0Aif%20%28chkPath%28Application.prefs.getValue%28cEICB%2C%200%29%29%20%21%3D%201%29%20custombuttons.%20alertBox%20%28csImpT%2C%20cPathSetMsg%29%3B%0A%20%20else%0A%20%20%7B%0A%20%20%20var%20mydir%3DApplication.prefs.getValue%28cEICB%2C%200%29%3B%20//%2C%20myfilename%20%3D%20GenFileName%28%29%3B%0A%20%20%20var%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D%0A%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0A%20%20%20fp.init%28window%2C%20csImpT%2C%20fp.modeOpen%29%3B%0A%20%20%20var%20dd%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20dd.initWithPath%28mydir%29%3B%0A%20%20%20fp.displayDirectory%20%3D%20dd%3B%0A%20%20%20if%28fp.show%28%29%20%21%3D%20fp.returnCancel%29%20getBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28fp.file.path%29%3B%0A%20%20%7D%0A%7D%3B%0A%0A%0A//*********************************************************************%0A//%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u0430%u0442%u0430%u043B%u043E%u0433%20%u0437%u0430%u043F%u0438%u0441%u0438/%u0447%u0442%u0435%u043D%u0438%u044F%0Afunction%20mbMouse%28%29%7B%0Avar%20sPathEI%3DApplication.prefs.getValue%28cEICB%2C%200%29%2C%20myfilename%20%3D%20GenFileName%28%29%3B%0Aif%20%28chkPath%28sPathEI%29%20%3D%3D%20-1%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20custombuttons.%20alertBox%20%28csSetIET%2C%20%22%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u0430%u044F%20%20%20%22+cEICB+%22%20%u0443%u0436%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20%u0438%20%u0437%u0430%u043D%u044F%u0442%u0430%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%20//%u041D%u0435%u043B%u044C%u0437%u044F%20%u0441%u043E%u0437%u0434%u0430%u0432%u0430%u0442%u044C%20%u0442%u043A%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u0430%u044F%20%u0443%u0436%u0435%20%u0437%u0430%u043D%u044F%u0442%u0430%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A//%20%u0414%u0438%u0430%u043B%u043E%u0433%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u044F%20%u0438%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438%20%u043F%u0443%u0442%u0438%0Avar%20fp%20%3D%20Components.classes%5B%22@mozilla.org/filepicker%3B1%22%5D%0A%20%20%20%20.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0Afp.init%28window%2C%20csSetIET%2C%20fp.modeGetFolder%29%3B%0Avar%20dd%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0Add.initWithPath%28sPathEI%29%3B%0Afp.displayDirectory%20%3D%20dd%3B%0Aif%28fp.show%28%29%20%3D%3D%20fp.returnCancel%29%20return%3B%0A%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20sPathEI%20%3D%20fp.file.path%0A%20%20%20%20Application.prefs.setValue%28cEICB%2C%20sPathEI+%3D%28sPathEI%5BsPathEI.length-1%5D%20%21%3D%20%22%5C%5C%22%29%3F%22%5C%5C%22%3A%22%22%29%3B%0A%20%20%20%20custombuttons.%20alertBox%20%28csSetIET%2C%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043B%u0435%u043D%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0437%u0430%u043F%u0438%u0441%u0438/%u0447%u0442%u0435%u043D%u0438%u044F%20%5Cn%20%22%20+%20sPathEI%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A//*********************************************************************%0A//chkPath%20%u043F%u0440%u043E%u0432%u0435%u0440%u044F%u0435%u0442%20%u043F%u0443%u0442%u044C%20%u0438%20%u0442%u0434%2C%20%u043C%u043E%u0436%u043D%u043E%20%u0434%u043E%u0431%u043E%u0432%u043B%u044F%u0442%u044C%20%u043F%u0440%u043E%u0432%u0435%u0440%u043A%u0438%2C%20%u0442%u043A%20%u043D%u0435%20%u0432%u0441%u0451%20%u043F%u0440%u043E%u0432%u0435%u0440%u044F%u0435%u0442%u0441%u044F.%0A//return%20%3D%20-10%20%u043E%u0448%u0438%u0431%u043A%u0430%20%u0432%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0435%u043D%u0438%u0438%20%u0441%u0438%u043D%u0442%u0430%u043A%u0441%u0438%u0441%u0430%20%u043F%u0443%u0442%u0438%20%28%u043D%u0435%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%u0441%u044F%29%0A//return%20%3D%20-2%20%20%u043E%u0448%u0438%u0431%u043E%u0447%u043D%u044B%u0439%20%u043F%u0443%u0442%u044C%20%u0438%u043B%u0438%20%u0435%u0433%u043E%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20%28%u043F%u043E%u0447%u0442%u0438%20%u043D%u0435%20%u0438%u0441%u043F%u043E%u043B%u044C%u0437%u0443%u0435%u0442%u0441%u044F%29%0A//%20return%20%3D%20-1%20%u043E%u0448%u0438%u0431%u043A%u0430%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%28%u0434%u043B%u044F%20%u0441%u043E%u0432%u043C%u0435%u0441%u0442%u0438%u043C%u043E%u0441%u0442%u0438%29%0A//%20return%20%3D%200%20%20%u0442%u0440%u0435%u0431%u0443%u0435%u0442%u0441%u044F%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0438%u0442%u044C%20%u043F%u0443%u0442%u044C%0A//%20return%20%3D%201%20%20%u0432%u0441%u0451%20%u041E%u041A%0A%0Afunction%20chkPath%28cPth%29%7B%0Avar%20vPth%20%3D%20Application.prefs.getValue%28cEICB%2C%20cEICB%29%2C%20res%20%3D%20-10%3B%20//%u043F%u0440%u0435%u0434%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0430%0Aif%20%28vPth%20%3D%3D%20cEICB%20%29%7B%0A%20%20%20%20%20%20%20Application.prefs.setValue%28cEICB%2C%20cPathEI%29%3B%20//%20%u0421%u043E%u0437%u0434%u0430%u043B%u0438%20%u0438%20%u043F%u0443%u0442%u044C%20%u043F%u043E%20%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%20%u0438%u0437%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0435%u043D%u0438%u044F%0A%20%20%20%20%20%20%20res%20%3D%201%3B%20//%u041F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u0430%u044F%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20%u0438%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0435%u043D%u0430%0A%20%20%20%20%20%20%20%7D%0A%20else%20if%20%28typeof%28vPth%29%20%21%3D%20%22string%22%29%0A%20%20%20%20%20%20%20res%20%3D%20-1%3B%20//%u041F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u0430%u044F%20%u043E%u043F%u0440%u0435%u0434%u0435%u043B%u0435%u043D%u0430%20%u0438%20%u043D%u0435%20%u0442%u043E%u0433%u043E%20%u0442%u0438%u043F%u0430%2C%20%u0437%u043D%u0430%u0447%u0438%u0442%20%u043E%u043D%u0430%20%u043D%u0435%20%u043D%u0430%u0448%u0430%0A%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20//%u041F%u0440%u043E%u0431%u0443%u0435%u043C%20%u043F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043F%u0443%u0442%u044C%20-%20%u043E%u0442%u0432%u0435%u0442%20%u0432%20%u0438%u0441%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u0438.%0A%20%20%20%20%20%20%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20file.initWithPath%28cPth%29%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%21file.isDirectory%28%29%20%29%20res%20%3D%200%3B%20//%u0422%u0430%u043A%u043E%u0433%u043E%20%u043F%u0443%u0442%u0438%20%u043D%u0435%u0442%20%u043D%u0430%u0434%u043E%20%u0441%u043E%u0437%u0434%u0430%u0432%u0430%u0442%u044C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%20%20res%20%3D%201%3B%20//%20%u041F%u0443%u0442%u044C%20%u0435%u0441%u0442%u044C%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20res%20%3D%20-2%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20return%20res%3B%0A%7D%3B%0A%0A//*********************************************************************%0A//%u0413%u0435%u043D%u0435%u0440%u0430%u0446%u0438%u044F%20%u0438%u043C%u0435%u043D%u0438%20%u0444%u0430%u0439%u043B%u0430%20%u043F%u0440%u0438%20%u0437%u0430%u043F%u0438%u0441%u0438%20%u0432%u0441%u0435%u0445%20%u043A%u043D%u043E%u043F%u043E%u043A%0Afunction%20GenFileName%28%29%7B%0Avar%20t%3Dnew%20Date%28%29%3B%0Avar%20y%3D1900+t.getYear%28%29%3B%0Avar%20min%3Dt.getMinutes%28%29%3B%20if%20%28min%3C10%29%7Bmin%3D%220%22+min%7D%3B%0Avar%20h%3Dt.getHours%28%29%3B%0Avar%20m%3Dt.getMonth%28%29%3Bswitch%28m%29%7Bcase%200%3A%20m%3D%22Jan%22%3Bbreak%3Bcase%201%3A%20m%3D%22Feb%22%3Bbreak%3Bcase%202%3A%20m%3D%22Mar%22%3Bbreak%3Bcase%203%3A%20m%3D%22Apr%22%3Bbreak%3Bcase%204%3A%20m%3D%22May%22%3Bbreak%3Bcase%205%3A%20m%3D%22Jun%22%3Bbreak%3Bcase%206%3A%20m%3D%22Jul%22%3Bbreak%3Bcase%207%3A%20m%3D%22Aug%22%3Bbreak%3Bcase%208%3A%20m%3D%22Sep%22%3Bbreak%3Bcase%209%3A%20m%3D%22Oct%22%3Bbreak%3Bcase%2010%3A%20m%3D%22Nov%22%3Bbreak%3Bdefault%3A%20m%3D%22Dec%22%3B%7D%0Avar%20d%3Dt.getDate%28%29%3B%0Avar%20curdate%3Dy+%22-%22+d+%22-%22+m+%22_%22+h+%22-%22+min%3B%0Avar%20myfilename%3D%22my_cbuttons_%22+curdate+%22.html%22%3B%0Areturn%20myfilename%3B%0A%7D%3B%0A%0A//*********************************************************************%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u044F%20%u0437%u0430%u043F%u0438%u0441%u0438%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0432%20HTML-%u0444%u0430%u0439%u043B%0A//*********************************************************************%0A//%u0417%u0430%u043F%u0438%u0441%u044C%20%u043A%u043D%u043E%u043F%u043E%u043A%20%u0432%20HTML%20%u0444%u0430%u0439%u043B%0Afunction%20saveCB%28fullfilepath%2C%20nameCB%29%7B%0Avar%20bu%3D%22%22%2C%20buts%2C%20doc%2C%20name%2C%20image%2C%20uri%2C%20mode%2C%20code%2C%20initCode%2C%20accelkey%2C%20help%3B%0A%0AVisibleConv%20%28nameCB%29%3B%0AAllConv%28nameCB%29%3B%0A%0A//var%20uc%20%3D%20Components.%20classes%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%20createInstance%20%28Components.%20interfaces.%20nsIScriptableUnicodeConverter%29%3B%0A//uc.%20charset%20%3D%20%22utf-8%22%3B%0A//bu%20%3D%20uc.%20ConvertFromUnicode%20%28bu%29%3B%0Avar%20head%20%3D%20%22%3Chtml%3E%5Cn%3Chead%3E%5Cn%3Cmeta%20http-equiv%3D%27Content-Type%27%20content%3D%27text/html%3B%20charset%3Dutf-8%27%3E%5Cn%3C/head%3E%5Cn%3Cbody%3E%5Cn%22%3B%0Avar%20fileend%20%3D%20%22%5Cn%3C/body%3E%5Cn%3C/html%3E%22%0Avar%20htmlSource%20%3D%20head%20+%20bu%20+%20fileend%3B%0A%0Avar%20filedata%3DhtmlSource%3B%0A%0Avar%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20createInstance%28Components.interfaces.nsILocalFile%29%3B%0Afile.initWithPath%28fullfilepath%29%3B%0Avar%20foStream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%0AfoStream.init%28file%2C%200x02%20%7C%200x08%20%7C%200x20%2C%200666%2C%200%29%3B%0Avar%20converter%20%3D%20Components.classes%5B%22@mozilla.org/intl/converter-output-stream%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Components.interfaces.nsIConverterOutputStream%29%3B%0Aconverter.init%28foStream%2C%20%22UTF-8%22%2C%200%2C%200%29%3B%0Aconverter.writeString%28filedata%29%3B%0Aconverter.close%28%29%3B%0Areturn%20fullfilepath%3B%0A%0A//*********************************************************************%0A//%u041F%u043E%u0434%u043F%u0440%u043E%u0433%u0440%u0430%u043C%u043C%u044B%20%u0434%u043B%u044F%20function%20saveCB%0A//*********************************************************************%0A//******DefSub%0A%0A//*********************************************************************%0Afunction%20VisibleConv%28nameCB%29%20%0A%7B%0Abuts%20%3D%20document.%20getElementsByTagName%20%28%22toolbarbutton%22%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20buts.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20if%20%28buts%20%5Bi%5D.getAttribute%20%28%22id%22%29.%20indexOf%20%28%22custombuttons-button%22%29%20%3D%3D%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20name%20%3D%20buts%20%5Bi%5D.%20name%3B%0A%20%20%20%20%20%20%20%20if%20%28nameCB%21%3D%22%22%26%26nameCB%21%3Dname%29%20continue%3B%0A%20%20%20%20%20%20%20%20image%20%3D%20buts%20%5Bi%5D.%20image%20%7C%7C%20buts%20%5Bi%5D.%20cbStdIcon%3B%0A%20%20%20%20%20%20%20%20uri%20%3D%20buts%20%5Bi%5D.%20URI%3B%0A%20%20%20%20%20%20%20%20bu%20+%3D%22%3Cimg%20src%3D%22%20+%20image%20+%20%22%3E%26nbsp%3Ca%20href%3D%22%20+%20uri%20+%20%22%3E%22%20+%20name%20+%22%3C/a%3E%3Cbr%3E%5Cn%22%3B%0A%20%20%20%20%7D%0A%7D%0Abu%20+%3D%22%3Chr%3E%22%3B%0A%7D%3B%0A%0A//*********************************************************************%0Afunction%20AllConv%28nameCB%29%0A%7B%0Abuts%20%3D%20custombuttons.%20palette.%20getElementsByTagName%20%28%22toolbarbutton%22%29%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20buts.%20length%3B%20i++%29%0A%7B%0A%20%20%20%20if%20%28buts%20%5Bi%5D.%20getAttribute%20%28%22id%22%29.%20indexOf%20%28%22custombuttons-button%22%29%20%3D%3D%200%29%0A%20%20%20%20%7B%0A//%20%u0418%u043C%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u0432%20UTF-8%0A%20%20%20%20%20%20%20%20name%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22label%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28nameCB%21%3D%22%22%26%26nameCB%21%3Dname%29%20continue%3B%0A//%20%20%20%20%20%20%20%20var%20uc%20%3D%20Components.%20classes%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%20createInstance%20%28Components.%20interfaces.%20nsIScriptableUnicodeConverter%29%3B%0A//%20%20%20%20%20%20%20%20uc.%20charset%20%3D%20%22utf-8%22%3B%0A//%20%20%20%20%20%20%20%20name%20%3D%20uc.%20ConvertFromUnicode%20%28name%29%3B%0A%0A//%20BASE64%20%u0432%20UTF-8%0A%20%20%20%20%20%20%20%20image%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22image%22%29%20%7C%7C%20buts%20%5Bi%5D.%20getAttribute%20%28%22cb-stdicon%22%29%3B%0A%20%20%20%20%20%20%20%20var%20uc%20%3D%20Components.%20classes%20%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D.%20createInstance%20%28Components.%20interfaces.%20nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20%20%20%20%20uc.%20charset%20%3D%20%22utf-8%22%3B%0A%20%20%20%20%20%20%20%20image%20%3D%20uc.%20ConvertFromUnicode%20%28image%29%3B%0A%0A%20%20%20%20%20%20%20%20mode%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22cb-mode%22%29%3B%0A%20%20%20%20%20%20%20%20code%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22cb-oncommand%22%29%3B%0A%20%20%20%20%20%20%20%20initCode%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22cb-init%22%29%3B%0A%20%20%20%20%20%20%20%20accelkey%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22cb-accelkey%22%29%3B%0A%20%20%20%20%20%20%20%20help%20%3D%20buts%20%5Bi%5D.%20getAttribute%20%28%22Help%22%29%20%7C%7C%20buts%20%5Bi%5D.%20getAttribute%20%28%22help%22%29%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%20%20doc%20%3D%20document.%20implementation.%20createDocument%20%28%22%22%2C%20%22%22%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20doc.%20async%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20doc.%20load%20%28%22chrome%3A//custombuttons/content/nbftemplate.xml%22%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22name%22%2C%20name%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22mode%22%2C%20mode%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22image%22%2C%20image%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22code%22%2C%20code%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22initcode%22%2C%20initCode%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22accelkey%22%2C%20accelkey%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20setText%20%28doc%2C%20%22help%22%2C%20help%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20var%20ser%20%3D%20new%20XMLSerializer%20%28%29%3B%0A%20%20%20%20%20%20%20%20var%20data%20%3D%20ser.%20serializeToString%20%28doc%29%3B%0A%20%20%20%20%20%20%20%20uri%20%3D%20%22custombutton%3A//%22%20+%20escape%20%28data%29%3B%0A%20%20%20%20%20%20%20%20bu+%3D%22%3Cimg%20src%3D%22%20+%20image%20+%20%22%3E%26nbsp%3Ca%20href%3D%22%20+%20uri%20+%20%22%3E%22%20+%20name%20+%22%3C/a%3E%3Cbr%3E%5Cn%22%3B%0A%20%20%20%20%7D%0A%20%7D%0A%7D%3B%0A%0A//*********************************************************************%0Afunction%20setText%20%28doc%2C%20nodeName%2C%20text%2C%20make_CDATASection%29%0A%7B%0A%20%20%20%20var%20node%20%3D%20doc.%20getElementsByTagName%20%28nodeName%29%20%5B0%5D%2C%20cds%3B%0A%20%20%20%20if%20%28%21node%29%20return%3B%0A%20%20%20%20if%20%28make_CDATASection%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20try%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cds%20%3D%20doc.%20createCDATASection%20%28text%20%7C%7C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%20%28e%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20cds%20%3D%20doc.%20createTextNode%20%28text%20%7C%7C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20node.%20appendChild%20%28cds%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20node.%20textContent%20%3D%20text%3B%0A%20%20%20%20%7D%0A%7D%3B%0A//******%20EndDefSub%0A%0A//******%20End%20function%20saveCB%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u0412%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2010.02.2011%0A%u0410%u0432%u0442%u043E%u0440%20-%20Indomito%20%A9%0A%u0411%u043B%u0430%u0433%u043E%u0434%u0430%u0440%u043D%u043E%u0441%u0442%u044C%20%u0437%u0430%20%u043F%u043E%u043C%u043E%u0449%u044C%20-%20Infocatcher%20%A9%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№1083924-10-2016 14:43:45

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

Re: Custom Buttons

SOTVM пишет

как перенести сделать импорт/экспорт всех кнопок CB в другой профиль.

FF Exp Imp CB

Отсутствует

 

№1084024-10-2016 14:48:25

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

bunda1
Я тут писал выше, можно сделать, нет?
http://forum.mozilla-russia.org/viewtop … 05#p725005


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№1084124-10-2016 14:50:15

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

Re: Custom Buttons

SOTVM пишет

как перенести сделать импорт/экспорт всех скриптов в другой профиль.

[CB] Экспорт стилей Stylish

Отсутствует

 

№1084224-10-2016 18:04:42

beggrr
Участник
 
Группа: Members
Зарегистрирован: 04-02-2014
Сообщений: 128
UA: Firefox 35.0

Re: Custom Buttons

Ну а насчет ошибки top.document.commandDispatcher is undefined - можно от нее избавиться? Я тут спрашивал выше.

Всем хороша кнопка Browser Console in Sidebar-Tab, но мне удобнее загружать консоль в ифрейме.

Отсутствует

 

№1084324-10-2016 19:25:51

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

Re: Custom Buttons

villa7 пишет

Хотелось чтобы СКМ по ссылке открывало видео в PotPlayer, а ПКМ - добавляло в плейлист, на потом просмотреть, всё. Без всяких пунктов в контекстном меню, клацаний по кнопке. По ссылке клац и всё. Быстро, удобно, и не надо каждый раз лазить в контекстное меню. Если не трудно конечно.

Нет это сложновато :(

Отсутствует

 

№1084424-10-2016 20:19:16

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

Re: Custom Buttons

beggrr пишет

bunda1, я поставил эту кнопку (вернее, эта для ФФ 48 и выше, но я нашел кнопку и для своей версии). Все работает, но я попробовал открывать по СКМ консоль не в новой вкладке, а в ифрейме, который я создаю на текущей странице. Мне просто так удобнее.
Консоль открывается, показывает все что нужно, Но только если я копирую в этой консоли или при любом действии выскакивает ошибка top.document.commandDispatcher is undefined

Может что добавить надо в код?

:/ а вот не знаю, кнопка не моя и такая сложная.

Отсутствует

 

№1084524-10-2016 21:09:49

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1647
UA: Firefox 46.0

Re: Custom Buttons

bunda1
А код выложенный выше fokanik в подменю можно заключить? Пожалуйста. Приходится два расширения держать, а счастье так близко. biggrin.gif Есть же подменю с поисковиками, представляется, что и это в виде подменю сделать не трудно, для вас.

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

Выделить код

Код:

// Context Search, от 29.01.2014. ................................
(function () {
   var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); 

   var searchSelect = document.getElementById('context-searchselect');  
   searchSelect.collapsed = false; // удалить стандартный пункт меню для поиска

   
   // Создать новый пункт меню для поиска ....
   var contextMenu = document.getElementById("contentAreaContextMenu");
   var menu = contextMenu.insertBefore( document.createElement('menu'), searchSelect ); // над каким пунктом меню показывать
   menu.setAttribute("class", "menu-iconic");
   
   // устанавливать иконку, название и поисковик для нового пункта меню
   function setMenu() {  
      menu.engine = searchService.currentEngine;
      menu.setAttribute("label", "Искать в...");
         };
   setMenu();   
 
   // наблюдатель за стандартным пунктом меню 'Копировать' прячет меню поиска
   var copy = document.getElementById('context-copy');  
   var setHiddenMenu = new MutationObserver(function() {
          menu.hidden = copy.hidden || copy.disabled;          
   });
   setHiddenMenu.observe( copy, { attributes: true, attributeFilter: ["hidden", "disabled"] } );
   
   
   // Создать подменю с поисковиками .... 
   var menuPopup = menu.appendChild( document.createElement("menupopup") ); 
   menuPopup.setAttribute('style', 'overflow: scroll'); 
    
   // создать пункты в подменю
   function setItemsToMenuPopup(e) {
      menuPopup.textContent = "";      

      var engines = searchService.getVisibleEngines({});
      engines.forEach(function( engine ) {
         var mItem = document.createElement("menuitem");
         mItem.setAttribute("label", engine.name );
         mItem.setAttribute("class", "menuitem-iconic");
         mItem.setAttribute("src", engine.iconURI.spec );
         mItem.engine = engine;
         menuPopup.appendChild( mItem );
      });

   };  
   setItemsToMenuPopup();
   
   
   // Установить действие для клика на меню и подменю ....
   menu.setAttribute("onmouseup", "\
      var background = ( event.button == 0 ) ? false : true;\
      var clip = gClipboard.read();\
      goDoCommand('cmd_copy');\
      setTimeout(function() {\
         document.getElementById('contentAreaContextMenu').hidePopup();\
         var submission = event.target.engine.getSubmission( gClipboard.read(), null );\
         gBrowser.loadOneTab( submission.uri.spec, null, null, submission.postData, background, false );\
         gClipboard.write( clip );\
      }, 0);\
   ");      
      
   
   // Наблюдатель за изменениями в поисковиках пересоздаёт меню и подменю .... 
   var getEngineModified = {
      observe: function(subject, topic, data) { 
         if ( /changed|removed|current/.test( data ) ) { setMenu(); setItemsToMenuPopup() };             
      }
   };
   Services.obs.addObserver( getEngineModified, "browser-search-engine-modified", false );   
   
   
   // Удалять наблюдатели и меню, показать стандартный пункт ....
   addDestructor(function() {
      contextMenu.removeChild( menu );           
      setHiddenMenu.disconnect();
      Services.obs.removeObserver( getEngineModified, "browser-search-engine-modified", false );
      
      searchSelect.collapsed = false; 
   });   
})();

// Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 05.06.2015. .............
((contextMenu) => {
  var menu = document.createElement("menu");      
  menu.setAttribute("label", "Искать изображение в ...");
  menu.setAttribute("class", "menu-iconic");
  menu.setAttribute("image", "https://www.google.lv/favicon.ico");
  
  contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); 
  addEventListener("popupshowing", ()=> menu.hidden = !gContextMenu.onImage, false, contextMenu);
  addDestructor(()=> contextMenu.removeChild(menu) );
  
  var array = [
        [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ],
        [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ],
        [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ]
        ];
  var menuPopup = menu.appendChild( document.createElement("menupopup") );              
  array.forEach(function( m ) { 
       var mItem = menuPopup.appendChild( document.createElement("menuitem") );
       mItem.setAttribute("label", m[0]);       
       mItem.setAttribute("image", m[1]);
       mItem.setAttribute("class", "menuitem-iconic");
       mItem.finder = m[2];
  });
  
  menuPopup.onclick =e=> {
     var url = e.target.finder +
              encodeURIComponent(gContextMenu.imageURL);
     e.button ? gBrowser.selectedTab = gBrowser.addTab(url) : gBrowser.addTab(url);
     setTimeout(()=> contextMenu.hidePopup(), 20);
  };
  
})(document.getElementById("contentAreaContextMenu") );

Отсутствует

 

№1084624-10-2016 21:54:58

beggrr
Участник
 
Группа: Members
Зарегистрирован: 04-02-2014
Сообщений: 128
UA: Firefox 35.0

Re: Custom Buttons

bunda1 пишет
beggrr пишет

bunda1, я поставил эту кнопку (вернее, эта для ФФ 48 и выше, но я нашел кнопку и для своей версии). Все работает, но я попробовал открывать по СКМ консоль не в новой вкладке, а в ифрейме, который я создаю на текущей странице. Мне просто так удобнее.
Консоль открывается, показывает все что нужно, Но только если я копирую в этой консоли или при любом действии выскакивает ошибка top.document.commandDispatcher is undefined

Может что добавить надо в код?

:/ а вот не знаю, кнопка не моя и такая сложная.

Жаль...
А что это вообще такое top.document.commandDispatcher и где он должен быть определен?

Отсутствует

 

№1084724-10-2016 22:26:51

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

Re: Custom Buttons

_zt пишет

bunda1
А код выложенный выше fokanik в подменю можно заключить?

Можно и не сложно. Завтра посмотрю.

Отсутствует

 

№1084824-10-2016 23:50:34

fokanik
Участник
 
Группа: Members
Зарегистрирован: 05-02-2014
Сообщений: 268
UA: unknown 0.0

Re: Custom Buttons

Еще прикрутил, жмак по пустому месту на странице - открыть адрес вкладки в программе:

Выделить код

Код:

//Открыть ссылку в программе  (ПКМ + Ctrl)
if ( this.hasAttribute("initialized") ) return;

var path, params, links;   
var i = 0;

var array = [
 ["C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],
 ["C:\\Program Files\\SMPlayer\\smplayer.exe", "-add-to-playlist" ],
 //["C:\\Program Files\\VideoLan\\vlc\\vlc.exe", "-AddToPlaylist" ],
 ["C:\\PortableApps\\PortableApps\\Download Master Portable\\dmaster.exe", ""],
 //["C:\\Program Files\\qBittorrent\\qbittorrent.exe", ""],
 ["stop","stop"]
            ];
            
mas();

this.onclick = function(e){
  if (e.button == 0) i++; mas();}
 
function mas() 
  { 
   path = array[i][0];
   if(path == "stop") {i = 0; path = array[i][0];}
   params = array[i][1]; 
   self.image = "moz-icon://file://"+path;
}

//Открыть ссылку при клике ПКМ + Ctrl по ссылке ...........................................
addEventListener('click', function (e) {
  if ( (XULBrowserWindow.overLink || content.location.href) && e.ctrlKey && e.button == 2 ) {
           links = [XULBrowserWindow.overLink];
           if(links == "") links = [content.location.href];
           setTimeout(function() document.getElementById("contentAreaContextMenu").hidePopup(), 150);
           play();}
     }, true, gBrowser );

function play(){
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [links, params],2);
   }

Отсутствует

 

№1084925-10-2016 02:44:35

SOTVM
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 112
UA: Firefox 49.0

Re: Custom Buttons

bunda1 пишет
SOTVM пишет

как перенести сделать импорт/экспорт всех скриптов в другой профиль.

[CB] Экспорт стилей Stylish

Спасибо за "чудо кнопки" экспорт/импорт в HTML | CSS (для Stylish)
почему до сих пор никто не додумался экспортировать "все" актуальные/рабочие на данный момент кнопки в один файл ???
это же намного удобней/наглядней, чем "рыскать" по форуму и выискивать,
ps
+всех аФтороff чудо-кнопок ,"обязать" :lol:
1) писать более-менее внятное объяснении функционала кнопки=что она умеет делать,
2) каждой кнопке по иконке

I Love Firefox


Никто не знает столько,сколько не знаю Я.

Отсутствует

 

№1085025-10-2016 06:02:57

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

fokanik
Вы тут код выше давали //Открыть ссылку в программе  (ПКМ + Ctrl). Я не спец, чуть подправил под себя, теперь клик ПКМ по ссылке открывает видео в PotPlayer. Хотелось бы доработать две вещи.
1. Чтобы ссылки открывал только на YouTube.
2. Добавить возможность добавлять ссылки в плей лист по (ПКМ+Ctrl) этой командой
["C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ]
Оно так и было изначально, но я переделал на открытие ссылки.

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

Выделить код

Код:

//Открыть ссылку в программе ПКМ
if ( this.hasAttribute("initialized") ) return;

var path, params, links;   
var i = 0;

var array = [
 ["C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe" ],
 ["stop","stop"]
            ];
            
mas();

this.onclick = function(e){
  if (e.button == 0) i++; mas();}
 
function mas() 
  { 
   path = array[i][0];
   if(path == "stop") {i = 0; path = array[i][0];}
   params = array[i][1]; 
   self.image = "moz-icon://file://"+path;
}

//Открыть ссылку при клике ПКМ + Ctrl по ссылке ...........................................
addEventListener('click', function (e) {
  if ( XULBrowserWindow.overLink && e.button == 2 ) {
           links = [XULBrowserWindow.overLink];
           setTimeout(function() document.getElementById("contentAreaContextMenu").hidePopup(), 150);
           play();}
     }, true, gBrowser );

function play(){
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   file.initWithPath(path);
   process.init(file);
   process.run(false, [links, params],2);
   }

Отредактировано villa7 (25-10-2016 06:04:39)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

Board footer

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