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

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

№182629-11-2017 17:46:02

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

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

broker пишет

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

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

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

Выделить код

Код:

(bt => addDestructor(() => gBrowser._blurTab = bt) || eval(
    ("gBrowser._blurTab = " + bt)
        .replace(/if \(a[^}]+}/, "")
        .replace("previousSibling", "nextSibling")
        .replace("nextSibling", "previousSibling")
))(gBrowser._blurTab);

Andrey_Krropotkin пишет

Поигрался с главным меню в Firefox 57. Добавил новое меню "Папки" в главное меню

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

Выделить код

Код:

// Добавить новый пункт "Папки" в главном меню от 28.11.2017. ......................

(function() {
var info1="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAPAAAAFgAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABYAAAAQAAAACgAAAAUAAAAOAAAAdAAAAH0AAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAB9AAAAeAAAABAAAAAGKa3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/wAAAH0AAAAWAAAABymt1v947f7/g+7+/47w/v+V8f7/mvH+/5zy/v+a8f7/lfH+/47w/v+D7v7/eO3+/ymt1v8AAACCAAAAGQAAAAcprdb/cez+/3zu/v+G7/7/jvD+/5Lw/v+U8f7/kvD+/47w/v+G7/7/fO7+/3Hs/v8prdb/AAAAggAAABkAAAAHKa3W/2jr/v9y7P7/e+3+/4Hu/v+G7/7/h+/+/4bv/v+B7v7/e+3+/3Ls/v9o6/7/Ka3W/wAAAIIAAAAZAAAABymt1v9b6f7/ZOr+/2vr/v9x7P7/de3+/3bt/v917f7/cez+/2vr/v9k6v7/W+n+/ymt1v8AAACCAAAAGQAAAAcprdb/S+f+/1Lo/v9Z6f7/Xer+/2Dq/v9h6v7/YOr+/13q/v9Z6f7/Uuj+/0vn/v8prdb/AAAAggAAABkAAAAGKa3W/2Dp/f9l6v3/aer9/23r/v9u6/3/b+z+/27r/f9t6/7/aer9/2Xq/f9g6f3/Ka3W/wAAAH0AAAAWAAAABSmt1v9/7f3/ge7+/4Pu/f+F7v3/he7+/4bu/f+F7v7/he79/4Pu/f+B7v7/f+39/ymt1v8AAAB0AAAADwAAAAMprdb/pPL9/6Xy/v+m8v3/p/P+/6fz/v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/AAAADgAAAAkAAAABAAAABCmt1v/Q+P7/0Pj+/9D4/v8prdb/AAAAFQAAAA0AAAAIAAAABgAAAAYAAAAGAAAABQAAAAQAAAADAAAAAAAAAAEAAAAEKa3W/ymt1v8prdb/AAAADwAAAAkAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AADAfwAA//8AAA==";
var info2="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjVJivzgAAACwElEQVQ4T7VUX0hTcRRWCV+0i5lRiRhqRbCEULSZ/5qa021ddd1td3Nuu9P5Z+ZmuimSGRVWD4H1EpFPIT1IEPQYBtWLEaXMHqSyh9CiOVqmoj2eft9tDnMJ9dCFH+d+3/nOdw/n/La4uP/9fPiydJid/E0n56+/yYp2RwwSYJCUnDKTtCeTOC51KmIIHh9I3dYUQre316QsLr0QeD9fAJylyCOVzkiIwOCR9/oHDMAxZugEJty+A+vph3IpLT37SWBuoUBZUUuCvZ0QgcEjz+3NXPcNDOlZXcpvZozIqak3Dh49XkbVDRYqrNBQoap2tuaMlcwtXYQIDB55RWEpaepNA6wuK6arz+HVKqHRMaERGknf5CKt0U4awRI9wOCRN1gdjz+FVyu3dhPdTnBprc7sbJ8VbG102mhdHBt/OBxe/dGKCCzYWsnS0vEGupht/tpO6sz+gwo6VlJJvEUiXrTT3Xv3Ly18XSli+XhEYPA6UZJ10HNcmrxNuTO85OTmk84skYnNw9HlJ53RSs9eBtQslxjRJAKDRx466LNZXaSzeNmoXK2dPsUL1NDoJLu7hxqamkmU2rojop2IwODlPNNBX16tmd7cUUZoed2IWcwvht0uj29O6vJRBW8I1+jFvmu37mgRgR1nfeTy+N8Fv620Q486ZpQRHToDOyYDb5X5xaqnpmY3dfYPkeTxk97mIrXBKkdg8CZnB+UVn5TvGatL2Lq5I0Uq9ZUSNU9Obx85Os9Rz+DlqQ7/IPUP3yBEYPCS108nqjRUqdX34/5tNeJGx8btZWrtUp1oI1dn90Roec1gd3vp/PURNhcvAYNHHrqxB49EZpQccyE/hpaVz1+87r55e3Rk457wZhv1XrxKiBgqeOQnXwU80G/7w2XCXewoNq4FL4jTdWITIW5sB/ng9zXuX/5SotuM2c4fXH4C3BQJxGxDNfsAAAAASUVORK5CYII=";
var info3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25JREFUeNosU1toHFUY/s6ZM7szuzs72e4t1zVGrZEoRBOQUo1W0QpSKIKXBymKmPrgQ9EKaV4EH4w+CH2Qgn0Q8fbSSrFQ8RJtaQm1thVrSwJtitnGbDbJZm+zO/eZ48zggZ/znfNfz3++n3DOceu1/EkAc/d9sXV18uDxycGVP9/sS3WmLuemCsE9XMddcW2nDI5TUkr+Kry78tl0uIH8H4CHhyN3nv9QU4uvfKp+PnLthgbt5HZkVK21ceG3RSzfXMPkP9//fED54QPHNBdCHf1IEl4NQWbEx1zpzGzoHGLb9rDVdVHrOLDAkOwrIG63MHtAe9aW0vPqUPalKEBCEZ6kqhBlyj+sInUvi7Bp+ci9sAPfjWehcwKiSAAT4Q7fhfGXxyTdpMfzY4VemkyTCTFFfaZm4No+PJ3Cs4DHd+2I5BEV2NBcOIIIW5Dw43UVudEiMgOyamnOEZrKkP644tMordEGNzlss4jcc2/gwsU61r/dRKvtYbtiwA8qWFy20Wq5GJjIwtWMPSye9NOgXuRvWwTCWCnCTFyEGAe2VuvgnSY6lQo8X8DVJQo5sKcZCZbujTImO3H4gOA38Nd5HbVvrsCNR5+Cw4PvQz53HowJIKYG2xMw3KOjJ11H0zDg2S6jgarTWHPgBNkffExGXvGhKMA7hRlQScbRzhzmkl/D6nThGl08MXgHaNRhlzfAYkRn1MKv1WV7f2GAIaVS5EoxFAnB2cQxJCUXbV/G3/Nn4d39NMR2GQfHl2BVbWxfqwcM868zFzhhNqy96zeZ3LczhtKEgtYax2a1i3LZQ72pYyY7g9ftE9i3T0dWsNC81UT5Ng0qLP5CTu9FAjpZSLD4+OijEmKSAMsIxBRx+VIL6FWQIF2UCg6Gh+MwAlKt39YCksntnmz+/pA1uhnjb7UN6zT+4IXSAxIU1UfQXOx+Kg5GTDgmgRsE1DY86NRBXXPNpZr29j31ZjWi3Yvz/NKhh8j0Tss+Ztxw+9UYQyYdtJcScJGAMgLPc1AzOBoG9DMr/qH9JR4NVfiEaDWsIcmudvbobutoKo3BbJonaIyDhEpOYYPamxVsi7TnPTErn8rEV/UowEgiMsHC/E/o3fUM3h1i/UGfdkscUyLQF85LwOx/LUp+92P83CerbmX5y48xfXgWawFr/xNgANPvgmYH0Mg8AAAAAElFTkSuQmCC";
var info4="chrome://global/skin/dirListing/folder.png";   
var info5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg==";

//Добавить подменю "Папки"
    var menuItem = document.createElement("panelview");
    menuItem.setAttribute("id", "appMenu-Folders");               
    menuItem.setAttribute("title", "Папки");
    menuItem.setAttribute("class", "PanelUI-subView");
    var it = document.getElementById("PanelUI-bookmarkingTools");
    it.parentNode.insertBefore(menuItem, it);  
//Добавить новый пункт "Папки" в главном меню  
    var menuItem1 = document.createElement("toolbarbutton");
    menuItem1.setAttribute("id", "Folders-menu");               
    menuItem1.setAttribute("label", "Папки");
    menuItem1.setAttribute("closemenu", "none");
    menuItem1.setAttribute("class", "subviewbutton subviewbutton-nav");
    menuItem1.setAttribute("image", info1 );
    menuItem1.setAttribute("oncommand", "PanelUI.showSubView('appMenu-Folders', this)");   
    var it = document.getElementById("appMenu-more-button");
    it.parentNode.insertBefore(menuItem1, it);
//Добавить пункты подменю "Папки"  
    var menuItem2 = document.createElement("toolbarbutton");
    menuItem2.setAttribute("id", "Folders2");
    menuItem2.setAttribute("label", "Текущий профиль");
    menuItem2.setAttribute("class", "subviewbutton");
    menuItem2.setAttribute("image", info2);
    menuItem2.addEventListener("command", Folders2, false);
    menuItem.insertBefore(menuItem2, null);
    
    var menuItem3 = document.createElement("toolbarbutton");
    menuItem3.setAttribute("id", "Folders3");
    menuItem3.setAttribute("label", "Папка Firefox");
    menuItem3.setAttribute("class", "subviewbutton");
    menuItem3.setAttribute("image", info3);
    menuItem3.addEventListener("command", Folders3, false);
    menuItem.insertBefore(menuItem3, null);
    
    var menuItem4 = document.createElement("toolbarbutton");
    menuItem4.setAttribute("id", "Folders4");
    menuItem4.setAttribute("label", "Папка Chrome");
    menuItem4.setAttribute("class", "subviewbutton");
    menuItem4.setAttribute("image", info4);
    menuItem4.addEventListener("command", Folders4, false);
    menuItem.insertBefore(menuItem4, null);
 
    var menuItem5 = document.createElement("toolbarbutton");
    menuItem5.setAttribute("id", "Folders5");
    menuItem5.setAttribute("label", "Папка Extensions");
    menuItem5.setAttribute("class", "subviewbutton");
    menuItem5.setAttribute("image", info5);
    menuItem5.addEventListener("command", Folders5, false);
    menuItem.insertBefore(menuItem5, null);
 
//----------Текущий профиль------------   
function Folders2(){
var file = Components.classes["@mozilla.org/file/directory_service;1"]
                 .getService(Components.interfaces.nsIProperties)
                 .get("ProfD", Components.interfaces.nsIFile);
    file.launch();  
}

 //----------Папка Firefox------------
function Folders3(){
var file = Components.classes["@mozilla.org/file/directory_service;1"]
                 .getService(Components.interfaces.nsIProperties)
                 .get("GreD", Components.interfaces.nsIFile);
    file.launch();   
}

//----------Папка Chrome------------
function Folders4(){
 var file = Components.classes["@mozilla.org/file/directory_service;1"]
                 .getService(Components.interfaces.nsIProperties)
                 .get("ProfD", Components.interfaces.nsIFile);
    file.append("chrome");
    file.launch();   
}

//-----------Папка Extensions-------------
function Folders5(){
var file = Components.classes["@mozilla.org/file/directory_service;1"]
                 .getService(Components.interfaces.nsIProperties)
                 .get("ProfD", Components.interfaces.nsIFile);
    file.append("extensions");
    file.launch();       
}

 })();

Ну, так-то, хорошая работа.
Только меню "Папки" будет дублироваться при переинициализации кнопки.

Как можно сократить код?

Да как угодно. Пережать код можно вплоть до полной потери человекочитаемости.
Это всё весьма субъективно и зависит от предпочтений и привычек.
Вот, например, лишь слегка

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

Выделить код

Код:

(n => {
    // Добавить новый пункт "Папки" в главном меню
    var btn = n({
        id:        "Folders-menu",
        label:     "Папки",
        closemenu: "none",
        class:     "subviewbutton subviewbutton-nav",
        image:     "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAPAAAAFgAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABYAAAAQAAAACgAAAAUAAAAOAAAAdAAAAH0AAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAB9AAAAeAAAABAAAAAGKa3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/wAAAH0AAAAWAAAABymt1v947f7/g+7+/47w/v+V8f7/mvH+/5zy/v+a8f7/lfH+/47w/v+D7v7/eO3+/ymt1v8AAACCAAAAGQAAAAcprdb/cez+/3zu/v+G7/7/jvD+/5Lw/v+U8f7/kvD+/47w/v+G7/7/fO7+/3Hs/v8prdb/AAAAggAAABkAAAAHKa3W/2jr/v9y7P7/e+3+/4Hu/v+G7/7/h+/+/4bv/v+B7v7/e+3+/3Ls/v9o6/7/Ka3W/wAAAIIAAAAZAAAABymt1v9b6f7/ZOr+/2vr/v9x7P7/de3+/3bt/v917f7/cez+/2vr/v9k6v7/W+n+/ymt1v8AAACCAAAAGQAAAAcprdb/S+f+/1Lo/v9Z6f7/Xer+/2Dq/v9h6v7/YOr+/13q/v9Z6f7/Uuj+/0vn/v8prdb/AAAAggAAABkAAAAGKa3W/2Dp/f9l6v3/aer9/23r/v9u6/3/b+z+/27r/f9t6/7/aer9/2Xq/f9g6f3/Ka3W/wAAAH0AAAAWAAAABSmt1v9/7f3/ge7+/4Pu/f+F7v3/he7+/4bu/f+F7v7/he79/4Pu/f+B7v7/f+39/ymt1v8AAAB0AAAADwAAAAMprdb/pPL9/6Xy/v+m8v3/p/P+/6fz/v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/AAAADgAAAAkAAAABAAAABCmt1v/Q+P7/0Pj+/9D4/v8prdb/AAAAFQAAAA0AAAAIAAAABgAAAAYAAAAGAAAABQAAAAQAAAADAAAAAAAAAAEAAAAEKa3W/ymt1v8prdb/AAAADwAAAAkAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AADAfwAA//8AAA==",
        oncommand: "PanelUI.showSubView('appMenu-Folders', this)"
    }, null, document.getElementById("appMenu-more-button"));

    // Добавить подменю "Папки"
    var panelview = n({
        id:        "appMenu-Folders",
        title:     "Папки",
        class:     "PanelUI-subView",
        oncommand: "this.launch(event);"
    }, null, document.getElementById("PanelUI-bookmarkingTools"), "panelview");

    var pmw = panelview.panelMultiView;
    if (pmw) pmw._panelViews.push(panelview);
    addDestructor(() => {
        var pmv = panelview.panelMultiView;
        if (pmv) {
            var arr = pmv._panelViews;
            var ind = arr.indexOf(panelview);
            if (ind != -1) {
                arr.splice(ind, 1);
                arr.currentView = pmv._mainView;
            }
        }
        btn.remove(); panelview.remove();
    });
    panelview.launch = e => {
        if (e.target == panelview) return;
        var [root, ...sub] = e.target.data;
        var file = Services.dirsvc.get(root, Ci.nsIFile);
        sub.length && sub.forEach(file.append);
        file.exists() && file.isDirectory() ? file.launch() : alert(
            "Folder not found.\n\n" + file.path
        );
    }

    // Добавить пункты подменю "Папки"
    n({
        id:    "Folders2",
        label: "Текущий профиль",
        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjVJivzgAAACwElEQVQ4T7VUX0hTcRRWCV+0i5lRiRhqRbCEULSZ/5qa021ddd1td3Nuu9P5Z+ZmuimSGRVWD4H1EpFPIT1IEPQYBtWLEaXMHqSyh9CiOVqmoj2eft9tDnMJ9dCFH+d+3/nOdw/n/La4uP/9fPiydJid/E0n56+/yYp2RwwSYJCUnDKTtCeTOC51KmIIHh9I3dYUQre316QsLr0QeD9fAJylyCOVzkiIwOCR9/oHDMAxZugEJty+A+vph3IpLT37SWBuoUBZUUuCvZ0QgcEjz+3NXPcNDOlZXcpvZozIqak3Dh49XkbVDRYqrNBQoap2tuaMlcwtXYQIDB55RWEpaepNA6wuK6arz+HVKqHRMaERGknf5CKt0U4awRI9wOCRN1gdjz+FVyu3dhPdTnBprc7sbJ8VbG102mhdHBt/OBxe/dGKCCzYWsnS0vEGupht/tpO6sz+gwo6VlJJvEUiXrTT3Xv3Ly18XSli+XhEYPA6UZJ10HNcmrxNuTO85OTmk84skYnNw9HlJ53RSs9eBtQslxjRJAKDRx466LNZXaSzeNmoXK2dPsUL1NDoJLu7hxqamkmU2rojop2IwODlPNNBX16tmd7cUUZoed2IWcwvht0uj29O6vJRBW8I1+jFvmu37mgRgR1nfeTy+N8Fv620Q486ZpQRHToDOyYDb5X5xaqnpmY3dfYPkeTxk97mIrXBKkdg8CZnB+UVn5TvGatL2Lq5I0Uq9ZUSNU9Obx85Os9Rz+DlqQ7/IPUP3yBEYPCS108nqjRUqdX34/5tNeJGx8btZWrtUp1oI1dn90Roec1gd3vp/PURNhcvAYNHHrqxB49EZpQccyE/hpaVz1+87r55e3Rk457wZhv1XrxKiBgqeOQnXwU80G/7w2XCXewoNq4FL4jTdWITIW5sB/ng9zXuX/5SotuM2c4fXH4C3BQJxGxDNfsAAAAASUVORK5CYII=",
    }, panelview)
        .data = ["ProfD"];
    n({
        id:    "Folders3",
        label: "Папка Firefox",
        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25JREFUeNosU1toHFUY/s6ZM7szuzs72e4t1zVGrZEoRBOQUo1W0QpSKIKXBymKmPrgQ9EKaV4EH4w+CH2Qgn0Q8fbSSrFQ8RJtaQm1thVrSwJtitnGbDbJZm+zO/eZ48zggZ/znfNfz3++n3DOceu1/EkAc/d9sXV18uDxycGVP9/sS3WmLuemCsE9XMddcW2nDI5TUkr+Kry78tl0uIH8H4CHhyN3nv9QU4uvfKp+PnLthgbt5HZkVK21ceG3RSzfXMPkP9//fED54QPHNBdCHf1IEl4NQWbEx1zpzGzoHGLb9rDVdVHrOLDAkOwrIG63MHtAe9aW0vPqUPalKEBCEZ6kqhBlyj+sInUvi7Bp+ci9sAPfjWehcwKiSAAT4Q7fhfGXxyTdpMfzY4VemkyTCTFFfaZm4No+PJ3Cs4DHd+2I5BEV2NBcOIIIW5Dw43UVudEiMgOyamnOEZrKkP644tMordEGNzlss4jcc2/gwsU61r/dRKvtYbtiwA8qWFy20Wq5GJjIwtWMPSye9NOgXuRvWwTCWCnCTFyEGAe2VuvgnSY6lQo8X8DVJQo5sKcZCZbujTImO3H4gOA38Nd5HbVvrsCNR5+Cw4PvQz53HowJIKYG2xMw3KOjJ11H0zDg2S6jgarTWHPgBNkffExGXvGhKMA7hRlQScbRzhzmkl/D6nThGl08MXgHaNRhlzfAYkRn1MKv1WV7f2GAIaVS5EoxFAnB2cQxJCUXbV/G3/Nn4d39NMR2GQfHl2BVbWxfqwcM868zFzhhNqy96zeZ3LczhtKEgtYax2a1i3LZQ72pYyY7g9ftE9i3T0dWsNC81UT5Ng0qLP5CTu9FAjpZSLD4+OijEmKSAMsIxBRx+VIL6FWQIF2UCg6Gh+MwAlKt39YCksntnmz+/pA1uhnjb7UN6zT+4IXSAxIU1UfQXOx+Kg5GTDgmgRsE1DY86NRBXXPNpZr29j31ZjWi3Yvz/NKhh8j0Tss+Ztxw+9UYQyYdtJcScJGAMgLPc1AzOBoG9DMr/qH9JR4NVfiEaDWsIcmudvbobutoKo3BbJonaIyDhEpOYYPamxVsi7TnPTErn8rEV/UowEgiMsHC/E/o3fUM3h1i/UGfdkscUyLQF85LwOx/LUp+92P83CerbmX5y48xfXgWawFr/xNgANPvgmYH0Mg8AAAAAElFTkSuQmCC",
    }, panelview)
        .data = ["GreD"];
    n({
        id:    "Folders4",
        label: "Папка Chrome",
        image: "chrome://global/skin/dirListing/folder.png",
    }, panelview)
        .data = ["UChrm"];
    n({
        id:    "Folders5",
        label: "Папка Extensions",
        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg==",
    }, panelview)
        .data = ["ProfD", "extensions"];

})((attrs, parent, before, name = "toolbarbutton") => {
    var node = (parent || before.parentNode)
        .insertBefore(document.createElement(name), before);
    for(var name in attrs) node.setAttribute(name, attrs[name]);
    if (!node.className) node.className = "subviewbutton";
    return node;
});

Отсутствует

 

№182729-11-2017 18:22:33

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

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

Dumby спасибо. Переинициализацию кнопки я уже подправил. Но ваш код намного приятнее глазу.

Отсутствует

 

№182829-11-2017 22:27:45

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

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

Привет.
Подскажите, убрать ошибку из кнопки. Переделал, чуть, кнопку для автозакрытия Sidebar :

Выделить код

Код:

(function() {    this.clickPageSB = function(event) {gBrowser.addEventListener('mousedown',on, false);   };

    function go() {
            clickPageSB(event);
            toggleSidebar();
      }

   function on() {   gBrowser.removeEventListener('mousedown',on, false);     timeoutId = setTimeout(go, 1000)   }
   function off() {   clickPageSB(event);     clearTimeout(timeoutId)   }
   sidebar.addEventListener('click',off, false);
     clickPageSB(event);
 })();

работает, закрывает бок.панель как и хотелось, но постоянно при клике на страницах(после закрытия бок.панели) ошибка в консоли:

Выделить код

Код:

Метка времени: 29.11.2017 20:58:40
Ошибка: TypeError: sidebarBroadcaster is null
Источник: chrome://browser/content/browser.js
Строка: 11170

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


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№182929-11-2017 23:11:35

broker
Участник
 
Группа: Members
Зарегистрирован: 23-06-2015
Сообщений: 103
UA: unknown 0.0

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

Dumby

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

Теперь работает, спасибо.:D

Отсутствует

 

№183030-11-2017 06:24:19

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 570
UA: Firefox 55.0

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

unter_officer пишет

На FF57 перестали работать:
Экспорт/импорт закладок в HTML-файл
Кодировать изображение или текстовой файл в base64
Save snapshot to html

Если возможно, то поправьте пожалуйста.

Вот, поправленная gyra, кнопка Save snapshot to html для FF57 .

Отсутствует

 

№183130-11-2017 14:17:05

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 599
UA: Firefox 48.0

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

rubel, огромное спасибо. Отлично работает.

Теперь поправил бы кто оставшиеся две кнопочки:
Экспорт/импорт закладок в HTML-файл
Кодировать изображение или текстовой файл в base64


«The Truth Is Out There»

Отсутствует

 

№183201-12-2017 15:31:10

Gladius333
Забанен
 
Группа: Members
Зарегистрирован: 11-02-2017
Сообщений: 92
UA: Firefox 52.0

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

Viatcheslav пишет

About: (Firefox24+) от 13.01.2015

При нажатии ПКМ по этой кнопке происходит наложение контекстного меню расширения Custom Buttons и самой кнопки (на скриншоте видно). bunda1, посмотрите, пожалуйста - может, чего можно подправить. Версия Сustom Buttons 0.0.5.8.9-fixed5-signed

http://images.vfl.ru/ii/1511955622/08ff … 5824_s.png

можно и этой кнопкой обойтись

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESidebar%20Sites%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAiEAAAIhAENVwL6AAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAHqSURBVHjarJM9aBVBFIW/s2wkgmDnDxoUgoJWokXERlEbf5pY2AhCCkWUgCaNvs3b2Z335lmZoETRINhKLPxD0CZgI0GtLFQUG8FGmxSBmBRzbSYSJE2IB4b5u/cMc+65MjOWYsT57cAVM9sL7AIi8EnSuxjjWKdV/Vgar0WCRrPqknQDuAB0AR+BsbS+DOwEfku6GWNsdFpV/EvQaFa5pElJ+8xsFlhrZn2dVvUrkW+R9Bb4CWyW9CrGONBpVTEHkDQK9JvZHNADzEv6WpQ16R6gG9gELJjZ2SzLvgNNXRtx2yR9AS5JOmJmfcAQy+Me8Bz4AFw3s95cUi8wHLy7X5T1LPA4ePdkueyirNcDM8G7p0VZr5G0Q41mdTB497oo6/3Bu+mirA+b2beUEwGyLMuTXj0p9kDw7k1R1kfVaFYvgUfA3VSBfqANXAUMyNPsgQ7wEJgAzgOnMuA2MJ4O7gCjwbtpYKOkBUDAuuDd+/TIOHBxMTYzsxfAieDdA+BY8G4qKT8QYxyWNCjpHICZPQOOB+8mgJPBu6lc0iFgNzAFbCjK+nTwbrJdl5//FVHSGWAmbfcUZT2/6jLKzCjK+hYwCMwlw8ynsRTdydYLQLekdrsum3n625CkrSuw8mSM0f2/ZlpNO/8ZAGBFAEu2Gqq+AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3De%3D%3E%20%7B%0A%20%20if%20%28e.target%20%21%3D%20this%29%20return%3B%0A%20%20let%20clipboard%20%3D%20gClipboard.read%28%29%3B%0A%20%20if%20%28e.button%20%3D%3D%200%29%0A%20%20%20%20menuPopup.openPopup%28this%2C%20%27after_start%27%29%3B%0A%20%20if%20%28e.button%20%3D%3D%201%29%0A%20%20%20%20openWebPanel%28clipboard%2C%20clipboard%29%3B%0A%20%20if%20%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%29%20%7B%0A%20%20%20%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%0A%20%20%20%20openWebPanel%28window.content.document.title%2C%20window.content.document.location%29%0A%20%20%7D%0A%7D%0Athis.tooltipText%20%3D%20%27%u041B%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0441%u043E%20%u0441%u043F%u0438%u0441%u043A%u043E%u043C%20%u0437%u0430%u0434%u0430%u043D%u043D%u044B%u0445%20%u0430%u0434%u0440%u0435%u0441%u043E%u0432%5Cn%5C%u0421%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%5Cn%5C%u041F%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%27%3B%0A%0Avar%20menuPopup%20%3D%20createNode%28%22menupopup%22%2C%20self%2C%20false%2C%20%7Bcontext%3A%20%22%22%7D%29%2C%0A%20%20%20%20sbBox%20%3D%20SidebarUI._box%2C%0A%20%20%20%20sbClsBtn%20%3D%20sbBox.querySelector%28%22.close-icon.tabbable%22%29%2C%0A%20%20%20%20wps%20%3D%20%22SidebarUI.browser.contentDocument.querySelector%28%27browser%23web-panels-browser%27%29.%22%2C%0A%20%20%20%20sep%20%3D%20%22%5Cn%5Cn%22%2C%0A%20%20%20%20help%20%3D%20self.Help.trim%28%29%2C%0A%20%20%20%20items%20%3D%20help%0A%20%20%20%20%20%20%3F%20help.split%28sep%29%0A%20%20%20%20%20%20%3A%20%5B%22New%20Tab%5Cnabout%3Anewtab%5Cnchrome%3A//mozapps/skin/places/defaultFavicon.png%22%5D%2C%0A%20%20%20%20menugroup%20%3D%20createNode%28%22menugroup%22%2C%20menuPopup%2C%20false%2C%20%7B%0A%20%20%20%20%20%20orient%3A%20%22vertical%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openPage%28event.target%29%3B%22%2C%0A%20%20%20%20%20%20oncontextmenu%3A%20%22removePage%28event.target%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%2C%0A%20%20%20%20cnOpen%20%3D%20document.getElementById%28%22context-sep-open%22%29%2C%0A%20%20%20%20cnItem%20%3D%20createNode%28%22menuitem%22%2C%20cnOpen%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20%22open-in-sidebar%22%2C%0A%20%20%20%20%20%20label%3A%20%22Open%20in%20Sidebar%22%2C%0A%20%20%20%20%20%20oncommand%3A%20%22openWebPanel%28gContextMenu.getLinkURL%28%29%2C%20gContextMenu.getLinkURL%28%29%29%3B%20document.getElementById%28%27verticaltoolbar-button%27%29.click%28%29%3B%22%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20cnListener%20%3D%20cnMenu.addEventListener%28%22popupshowing%22%2C%20%28%29%3D%3E%20cnItem.hidden%20%3D%20%21gContextMenu.onLink%29%2C%0A%20%20%20%20cnDestructor%20%3D%20addDestructor%28%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20cnMenu.removeEventListener%28%22popupshowing%22%2C%20cnListener%29%3B%0A%20%20%20%20%20%20cnMenu.removeChild%28cnItem%29%0A%20%20%20%20%7D%29%2C%0A%20%20%20%20sbNav%20%3D%20%5B%0A%20%20%20%20%20%20%5B%22back%22%2C%20%22goBack%28%29%3B%22%2C%20%22back-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22forward%22%2C%20%22goForward%28%29%3B%22%2C%20%22forward-button-tooltip%22%5D%2C%0A%20%20%20%20%20%20%5B%22reload%22%2C%20%22reload%28%29%3B%22%2C%2C%20%22Reload%20current%20page%22%5D%2C%0A%20%20%20%20%20%20%5B%22stop%22%2C%20%22stop%28%29%3B%22%2C%2C%20%22Stop%20loading%20this%20page%22%5D%0A%20%20%20%20%5D%3B%0A%0Aitems.forEach%28%28item%2C%20index%29%20%3D%3E%20%7B%0A%20%20var%20%5Btitle%2C%20url%2C%20icon%5D%20%3D%20item.split%28%22%5Cn%22%29%3B%0A%20%20icon%20%3D%20%28icon.startsWith%28%27chrome%3A%27%29%20%7C%7C%20icon.startsWith%28%27data%3A%27%29%29%20%3F%20icon%20%3A%20%27moz-anno%3Afavicon%3A%27%20+%20icon%3B%0A%20%20createNode%28%22menuitem%22%2C%20menugroup%2C%20false%2C%20%7B%0A%20%20%20%20tooltiptext%3A%20url%2C%0A%20%20%20%20class%3A%20%22menuitem-iconic%22%2C%0A%20%20%20%20label%3A%20title%2C%0A%20%20%20%20image%3A%20icon%0A%20%20%7D%29.index%20%3D%20index%3B%0A%7D%29%3B%0Amenugroup.openPage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20openWebPanel%28...items%5Bindex%5D.split%28%22%5Cn%22%29%29%3B%0Amenugroup.removePage%20%3D%20%28%7Bindex%7D%29%20%3D%3E%20items.splice%28index%2C%201%29%20%26%26%20installButton%28items.join%28sep%29%29%3B%0A%0A%5B%0A%20%20%5B%27menuseparator%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%27%2C%20%27custombuttons.editButton%28this.parentNode.parentNode%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%27%2C%20%27openWebPanel%28gClipboard.read%28%29%2C%20gClipboard.read%28%29%29%3B%27%5D%2C%0A%20%20%5B%27menuitem%27%2C%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0441%u0430%u0439%u0442%27%2C%20%27this.parentNode.parentNode.addPage%28window.content.document.title%2C%20window.content.document.location.href%2C%20gBrowser.mCurrentTab.image%29%3B%27%5D%0A%5D.forEach%28%28%5Btype%2C%20lbl%2C%20cmd%5D%29%20%3D%3E%20%0A%20%20%20%20%20%20%20%20%20%20createNode%28type%2C%20menuPopup%2C%20false%2C%20%7Blabel%3A%20lbl%2C%20oncommand%3A%20cmd%7D%29%29%3B%0A%0Aif%20%28%21sbBox.hasAttribute%28%22navbuttons%22%29%29%20%7B%0A%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%2C%20tltp%2C%20ttxt%5D%29%20%3D%3E%20%7B%0A%20%20%20%20var%20icon%20%3D%20%22chrome%3A//browser/skin/content-contextmenu.svg%23%22%20+%20id%3B%0A%20%20%20%20id%20%3D%20%27sb-%27%20+%20id%20+%20%27-button%27%3B%0A%20%20%20%20createNode%28%22toolbarbutton%22%2C%20sbClsBtn%2C%20true%2C%20%7B%0A%20%20%20%20%20%20id%3A%20id%2C%0A%20%20%20%20%20%20oncommand%3A%20wps%20+%20cmd%2C%0A%20%20%20%20%20%20tooltip%3A%20tltp%2C%0A%20%20%20%20%20%20tooltiptext%3A%20ttxt%2C%0A%20%20%20%20%20%20style%3A%20%27list-style-image%3A%20url%28%22%27%20+%20icon%20+%20%27%22%29%3B%20-moz-image-region%3A%20rect%280%2011px%2011px%200%29%3B%27%0A%20%20%20%20%7D%29%0A%20%20%7D%29%0A%20%20sbBox.setAttribute%28%27navbuttons%27%2C%20%27true%27%29%3B%0A%7D%0A%0Afunction%20installButton%28help%29%20%7B%0A%20%20%20%20var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%3B%0A%20%20%20%20var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%20%20%20%20param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%20%20%20%20param.help%20%3D%20help%3B%0A%20%20%20%20custombuttons.cbService.installButton%28param%29%3B%0A%7D%0A%0Afunction%20createNode%28type%2C%20elm%2C%20before%2C%20attrs%29%20%7B%0A%20%20var%20node%20%3D%20before%0A%20%20%3F%20elm.parentNode.insertBefore%28document.createElement%28type%29%2C%20elm%29%0A%20%20%3A%20elm.appendChild%28document.createElement%28type%29%29%3B%0A%20%20for%28var%20name%20in%20attrs%29%20%7B%0A%20%20%20%20if%20%28attrs%5Bname%5D%29%0A%20%20%20%20%20%20node.setAttribute%28name%2C%20attrs%5Bname%5D%29%3B%0A%20%20%7D%0A%20%20return%20node%3B%0A%7D%0A%0Athis.addPage%20%3D%28title%2C%20url%2C%20icon%29%3D%3E%20%7B%0A%20%20title%20%3D%20%21title%20%3F%20url%20%3A%20title%3B%0A%20%20icon%20%3D%20%21icon%20%3F%20%27chrome%3A//mozapps/skin/places/defaultFavicon.png%27%20%3A%20icon%3B%0A%20%20var%20newItem%20%3D%20%5Btitle%2C%20url%2C%20icon%5D.join%28%27%5Cn%27%29%3B%0A%20%20installButton%28%5Bhelp%2C%20newItem%5D.join%28sep%29%29%3B%0A%7D%0A%0A%28%28browser%2C%20listener%2C%20br%29%20%3D%3E%20%7B%20if%20%28browser%29%20%7B%0A%20%20addEventListener%28%22DOMFrameContentLoaded%22%2C%20listener%2C%20true%2C%20browser%29%3B%0A%20%20var%20getBr%20%3D%20%28%29%20%3D%3E%20browser.contentDocument.querySelector%28listener.selector%29%3B%0A%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20br.window%20%3D%20%7Bparent%3A%20listener.parent%7D%3B%0A%20%20addDestructor%28%28%29%20%3D%3E%20%7B%0A%20%20%20%20if%20%28%28br%20%3D%20getBr%28%29%29%29%20delete%20br.window%3B%0A%20%20%7D%29%3B%0A%7D%7D%29%28SidebarUI.browser%2C%20%7B%0A%20%20selector%3A%20%22browser%23web-panels-browser%22%2C%0A%20%20handleEvent%28e%29%20%7B%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21e.target.hasAttribute%28%22disableglobalhistory%22%29%29%20%7B%0A%20%20%20%20%20%20sbNav.forEach%28%28%5Bid%2C%20cmd%5D%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20id%20%3D%20%27%23context-%27%20+%20id%3B%0A%20%20%20%20%20%20%20%20var%20mItem%20%3D%20SidebarUI.browser.contentDocument.querySelector%28id%29%3B%0A%20%20%20%20%20%20%20%20if%20%28id%20%3D%3D%20%22%23context-reload%22%29%0A%20%20%20%20%20%20%20%20%20%20mItem.style.setProperty%28%27display%27%2C%20%27-moz-box%27%2C%20%27important%27%29%3B%0A%20%20%20%20%20%20%20%20mItem.onclick%20%3D%28%29%3D%3E%20eval%28wps%20+%20cmd%29%3B%0A%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20e.target.setAttribute%28%22disableglobalhistory%22%2C%20%27false%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28e.target.matches%28this.selector%29%20%26%26%20%21%28%22window%22%20in%20e.target%29%29%0A%20%20%20%20%20%20e.target.window%20%3D%20%7Bparent%3A%20this.parent%7D%3B%0A%20%20%7D%2C%0A%20%20get%20parent%28%29%20%7B%0A%20%20%20%20delete%20this.parent%3B%0A%20%20%20%20var%20parent%20%3D%20%7B%7D%3B%0A%20%20%20%20parent.contentAreaClick%20%3D%20eval%28%60%28%24%7B%0A%20%20%20%20%20%20contentAreaClick.toString%28%29.replace%28%0A%20%20%20%20%20%20%20%20%27linkNode.getAttribute%28%22onclick%22%29%27%2C%0A%20%20%20%20%20%20%20%20%22%21target%20%26%26%20this.shouldLoadInPanelBrowser%28linkNode%29%20%7C%7C%20%24%26%22%0A%20%20%20%20%20%20%29%0A%20%20%20%20%7D%29%60%29%3B%0A%20%20%20%20parent.shouldLoadInPanelBrowser%20%3D%20link%20%3D%3E%20%7B%0A%20%20%20%20%20%20if%20%28%21%28link.ownerDocument.location.protocol%20%3D%3D%20%22file%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20link.className%20%3D%3D%20%27file%27%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20this.parent%20%3D%20parent%3B%0A%20%20%7D%0A%7D%29%3B%0A%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%0A%20%20%5B%0A%20%20%20%20%27@namespace%20xul%20url%28%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20html%20url%28%22http%3A//www.w3.org/1999/xhtml%22%29%3B%27%2C%0A%20%20%20%20%27@namespace%20svg%20url%28http%3A//www.w3.org/2000/svg%29%3B%27%2C%0A%20%20%20%20%27%27%2C%0A%20%20%20%20%27@-moz-document%20url%28%22chrome%3A//browser/content/browser.xul%22%29%20%7B%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%5Bloading%5D%20%7E%20%23sb-reload-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-throbber%3Anot%28%5Bloading%5D%29%20%7E%20%23sb-stop-button%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20-moz-appearance%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20padding%3A%203.5px%206px%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20margin%3A%20.5px%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20background-clip%3A%20border-box%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20border-radius%3A%200%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20box-shadow%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%3Anot%28%5Bsidebarcommand%3D%22viewWebPanelsSidebar%22%5D%29%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20display%3A%20none%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.5%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%20%20transition%3A%20opacity%20ease%20200ms%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%20%20%23sidebar-box%20toolbarbutton%5Bid%5E%3D%22sb-%22%5D%3Ahover%20.toolbarbutton-icon%20%7B%27%2C%0A%20%20%20%20%27%20%20%20%20opacity%3A%200.9%20%21important%3B%27%2C%0A%20%20%20%20%27%20%20%7D%27%2C%0A%20%20%20%20%27%7D%27%0A%20%20%5D.join%28%27%5Cn%27%29%29%29%3B%0AaddDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28this.uri%2C%200%20%7C%7C%20uri%2C%200%29%29%3B%0Athis.uri%20%3D%20uri%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%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%5Babout%3Aconfig%0Aabout%3Aconfig%0A-%0A%0Aabout%3Aabout%0Aabout%3Aabout%0A-%0A%0Aabout%3Aaddons-memory%20%5BAddon%5D%0Aabout%3Aaddons-memory%0A-%0A%0Achrome%3A//browser/content/places/places.xul%0Achrome%3A//browser/content/places/places.xul%0A-%0A%0Aabout%3Asessionrestore%0Aabout%3Asessionrestore%0A-%0A%0A------------%0A------------%0A------------%0A%0AWatch%0Adata%3Atext/html%3Bbase64%2CPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4NCjx0aXRsZT5UaGUgQ2xvY2sgaXMgVGlja2luZyB8IE5ldyBUYWIgQmlnIENsb2NrIEJhY2tncm91bmQ8L3RpdGxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCWZ1bmN0aW9uIHBhaW50VGltZSgpew0KCQl2YXIgbm93ICAgID0gbmV3IERhdGUoKTsNCgkJdmFyIGhvdXIgICA9IG5vdy5nZXRIb3VycygpOw0KCQl2YXIgbWludXRlID0gbm93LmdldE1pbnV0ZXMoKTsNCgkJdmFyIHNlY29uZCA9IG5vdy5nZXRTZWNvbmRzKCk7DQoJCWlmIChob3VyICAgPT0gMCkgeyBob3VyID0gMTI7ICAgICAgICAgICAgIH0NCgkJaWYgKDEwICAgPiBob3VyKSB7IGhvdXIgICA9ICIwIiArIGhvdXI7ICAgfQ0KCQlpZiAoMTAgPiBtaW51dGUpIHsgbWludXRlID0gIjAiICsgbWludXRlOyB9DQoJCQ0KCQlpZiAoMTAgPiBzZWNvbmQpIHsgc2Vjb25kID0gIjAiICsgc2Vjb25kOyB9DQoJCXZhciB0aW1lU3RyaW5nID0gaG91ciArDQoJCQkJCQknOicgKw0KCQkJCQkJbWludXRlICsNCgkJCQkJCSc6JyArDQoJCQkJCQlzZWNvbmQ7IA0KCQl2YXIgbW9udGhzID0gbmV3IEFycmF5KDEzKTsNCgkJbW9udGhzWzBdICA9ICJKYW51YXJ5IjsNCgkJbW9udGhzWzFdICA9ICJGZWJydWFyeSI7DQoJCW1vbnRoc1syXSAgPSAiTWFyY2giOw0KCQltb250aHNbM10gID0gIkFwcmlsIjsNCgkJbW9udGhzWzRdICA9ICJNYXkiOw0KCQltb250aHNbNV0gID0gIkp1bmUiOw0KCQltb250aHNbNl0gID0gIkp1bHkiOw0KCQltb250aHNbN10gID0gIkF1Z3VzdCI7DQoJCW1vbnRoc1s4XSAgPSAiU2VwdGVtYmVyIjsNCgkJbW9udGhzWzldICA9ICJPY3RvYmVyIjsNCgkJbW9udGhzWzEwXSA9ICJOb3ZlbWJlciI7DQoJCW1vbnRoc1sxMV0gPSAiRGVjZW1iZXIiOw0KCQl2YXIgbm93ICAgICAgICAgPSBuZXcgRGF0ZSgpOw0KCQl2YXIgbW9udGhudW1iZXIgPSBub3cuZ2V0TW9udGgoKTsNCgkJdmFyIG1vbnRobmFtZSAgID0gbW9udGhzW21vbnRobnVtYmVyXTsNCgkJdmFyIG1vbnRoZGF5ICAgID0gbm93LmdldERhdGUoKTsNCgkJdmFyIHllYXIgICAgICAgID0gbm93LmdldFllYXIoKTsNCgkJaWYoeWVhciA8IDIwMDApIHsgeWVhciA9IHllYXIgKyAxOTAwOyB9DQoJCXZhciBkYXRlU3RyaW5nID0gbW9udGhuYW1lICsNCgkJCQkJCScgJyArDQoJCQkJCQltb250aGRheSArDQoJCQkJCQknLCAnICsNCgkJCQkJCXllYXI7DQogICAJCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uaW5uZXJIVE1MID0gIjxkaXY+Iit0aW1lU3RyaW5nKyI8YnIvPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MzhweDsnPiIrZGF0ZVN0cmluZysiPC9zcGFuPjwvZGl2PiI7DQoJfQ0KCWZ1bmN0aW9uIGJnQ29sb3IoKXsNCgkJCWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID09ICJyZ2IoMjA2LCAyMDYsIDIwNikiKXsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIjMDAwIjsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmNvbG9yID0gIiNDRUNFQ0UiOw0KCQkJfQ0KCQ0KCX0NCglmdW5jdGlvbiBvbmJvZHlsb2FkKCl7DQoJCXBhaW50VGltZSgpOw0KCQlpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtwYWludFRpbWUoKTt9LCAxMDAwKTsNCgkJaW50ZXJ2YWxJRDIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpe2JnQ29sb3IoKTt9LCA1MDAwKTsNCgl9DQoJCTwvc2NyaXB0Pg0KPHN0eWxlPg0KYm9keSB7DQoJY29sb3I6ICMwMEZGMDA7DQoJZm9udDogOTRweCBBcmlhbDsNCgltYXJnaW46IGF1dG87DQoJcGFkZGluZzoxMDBweCAwIDAgMDsNCglsZWZ0OjA7DQoJcmlnaHQ6MDsNCgl0b3A6MDsNCglib3R0b206MDsNCgliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7DQogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkOw0KCXRleHQtYWxpZ246Y2VudGVyOw0KCWhlaWdodDogMTAwJTsNCgl3aWR0aDogMTAwJTsNCn0NCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keSBvbkxvYWQ9Im9uYm9keWxvYWQoKTsiPg0KPGRpdiBpZD0iZG50Ij48L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4%0Adata%3Aimage/ico%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXpJREFUeNqkU7uKwkAUvUnMGlSIWNhql3Z/wG+wtBOExY8QbAT/YMFmK3/C1EJ6CwsftYKFqEUUk5jsPQMTYnZS7YHDTO7jzL13MlqSJPQfaOPx+JPXL2Y/64Dw7XYz6/V6qMibM38mk8mKRqPR9/F4fDGSLJ/PZ7JcLpO8HbxerzHycIjOhn6z2dTxkSVQqVQobwdrtZqGPMSUoiiiOI7/9qZpxOUrfQDyAD0MQxGk4na7LfQhLxXgcpTc7XaFPilQkgIq7Pf7Ql9awePxMAaDAc1mM9GXZBAEdDqd6HK5vNk9zyPE+77/IQS4n9d0OqVut0t8PXAIdewNw6DNZpP2fL/fyXEcQjwjEC3gJFmOXCWGwyEtFguybZuq1eqbD3npDPKJEo1Gg3q9Hh0OB2q1WsoZCAHceRFM06R2u108RGwQlKeu67Rer5U+MBXgyc55UFG5XKYsIeC6LuXt4Pl8fiFP/LGdTkf5GtGWZVkmX3Pha+THtvoVYADFFmv7Z4SugwAAAABJRU5ErkJggg%3D%3D%0A%0AMyRadio%20-%20Online%20Player%0Ahttp%3A//myradio.ua/flashplayer/53%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABMLAAATCwAAAAAAAAAAAABzChH/zQ8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/80PHf9zChH/0A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/zQ8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/3zZC/+t7gv/0uLz/9LS4/+p2ff/cKjb/1A8d/9QPHf/UDx3/1A8d/9EPHf/UDx3/1A8d/9QPHf/XFyT/8Jie///////2wMT/63uC/+2Ei//3ycz//////+t6gv/VEiD/1A8d/9QPHf/RDx3/1A8d/9QPHf/UER//9r3A//vi4v/fNkL/1A8d/9QPHf/UDx3/1A8d/+JHUf/98fP/8Jie/9QPHf/UDx3/0Q8d/9QPHf/UDx3/5FJc///////bKDT/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/4D5J///////fNkL/1A8d/9EPHf/UDx3/1A8d//a9wP/wmJ7/1A8d/9QPHf/ZHSr/8Z2i/9ojL//UDx3/1A8d/9QPHf/2wMT/75KX/9QPHf/RDx3/1A8d/9QPHf/+9fb/5ltk/9QPHf/UDx3/2yg0////////////5l1m/9QPHf/UDx3/63qC//fJzP/UDx3/0Q8d/9QPHf/UDx3//vX2/+ZbZP/UDx3/1A8d/9soNP///////vX2/+NKVP/UDx3/1A8d/+t6gv/3ycz/1A8d/9EPHf/UDx3/1A8d//a9wP/wmJ7/1A8d/9QPHf/YHCn/8Z2i/9kgLP/UDx3/1A8d/9QPHf/2wMT/7o2T/9QPHf/RDx3/1A8d/9QPHf/kUlz//////9wqNv/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/gPkn//////940P//UDx3/0Q8d/9QPHf/UDx3/1BEf//S4vP/74uL/3zpF/9QPHf/UDx3/1A8d/9QPHf/jTVf//fHz/++Sl//UDx3/1A8d/9EPHf/UDx3/1A8d/9QPHf/XFyT/7o2T///////2wMT/63uC/+2Ei//3ycz//////+p2ff/VEiD/1A8d/9QPHf/RDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/eND//63qC//S4vP/0sLX/6nR8/9wqNv/UDx3/1A8d/9QPHf/UDx3/0Q8d/9APHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/84PHf9rCQ//yQ8c/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/9QPHf/UDx3/1A8d/8gPHP9wChH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%0A%0A2ip.ru.Panel%0Ahttps%3A//2ip.ru/opera-panel/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8AlF8AfJNfAP+TXwD/lF8A/5VgAP+VYAD/l2IA/5ZiAP+YYwD/mWUA/5tmAP+bZwD/m2cA/51qAP+jbwD/lF8AcZVgAP+UYAD/lV8A/5VhAP+WYgD/l2IA/5hjAP+YZAD/mmUA/5tnAP+bZwD/nWkA/51pAP+fawD/pnIA/5VgAO+WYgD/lmEA/5VgAP+VXwD/l2EA/5hkAP+ZZAD/mGMA/5plAP+daQD/nmoA/55qAP+fawD/o3AA/6p4AP+VYADvlmIA/5hjAP+VXwD/lF0A/5VgAP+bZwD/mGIA/5dgAP+aZAD/n2sA/6BsAP+fbAD/oG0A/6NwAP+pdwD/mGQA7ZplAP+XYQD/7ePW//bw6P/WwaH/lFwA/+rfz//18Oj/2cOi/55qAP+kcgD/pXIA/6Z0AP+pdgD/rn0A/5toAO2fawD/mGIA//Lr4P//////3cuy/5RbAP/v5db//////+DNrf+cZAD/pG8A/6h2AP+sewD/rn0A/7KFAP+gbQDtoGwA/55oAP/x6d3//////9zJq/+aYwD/7uXU///////28ej/5de8/9nCmv+9li3/rXsA/7SGAP+3iwD/o3AA7aRyAP+ibQD/8enb///////eyqv/oGkA/+/m0///////////////////////+/n0/7uSEP+1hwD/vJIA/6d2AO2ndwD/pXIA//Lr3f//////3cur/6VvAP/w5tT//////+vfyP/Or17/9O3d///////ZxJT/tYcA/8CWAP+qewDtq3sA/6t4AP/z693//////97Mq/+rdgD/8ejV///////j07L/tYkA/+3iyP//////382h/7iNAP/DnAD/r38A7bB/AP+tegD/9e7h///////h0bP/rnwA//Lr1////////////////////////////9G0W/++lQD/xaEA/7GDAO20hQD/soIA/+zgxf/z7d3/1rt5/7WGAP/r4L7/9O7e//Xv3v/28N//8ObL/9rGff+/mAD/w54A/8akAP+2hwDtt4gA/7mLAP+4igD/t4oA/7yPAP+9lQD/vJIA/7uSAP+9lAD/vJQA/76WAP+/lwD/w54A/8WiAP/IpwD/tYYA7beIAP+6jQD/u48A/7uRAP++lAD/vpcA/7+YAP+/lwD/v5gA/8GaAP/AmgD/w5wA/8WgAP/FogD/yKcA/7mLAPG7jgD/u48A/76UAP+/lwD/wJcA/7+ZAP/BmwD/wZwA/8KdAP/DnwD/w54A/8agAP/GogD/x6YA/8qqAH+9kADcvZMA7cCWAO3AmQDtw50A7cOcAO3EngDtxJ8A7cahAO3GogDtxqMA7ceiAO3HpADtyqcA7cuqAG////8AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAA%3D%3D%0A%0AYandex.Panel%0Ahttp%3A//op.yandex.ru/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAsAAAAUwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAADjBwcEAwcHBAMHBwQDBwcEAAAAAUbq6uurExMT/xMTE/8TExP/ExMT/xMTE/8TExP/ExMT/xMTE/8TExP9ubm6QAAAALcTExADExMQAxMTEAAAAAFrHx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/vr6+7h4eHmQAAAAQx8fHAMfHxwAAAABXy8vL/8vLy/+UlM3/AADU/4+Pzv/Ly8v/g4PO/wwM0//Ly8v/y8vL/8vLy/+kpKS6AAAAM8vLywDLy8sAAAAAU9DQ0P/Q0ND/0NDQ/05O2f8dHd3/y8vQ/4eH1f8MDN7/0NDQ/9DQ0P/Q0ND/0NDQ/2VlZXsAAAAk0NDQAAAAAE/U1NT/1NTU/9TU1P/Fxdb/FBTq/3Bw3/+Jidz/DAzr/9TU1P/U1NT/1NTU/9TU1P/JycnkDw8PUwAAAAcAAABL2dnZ/9nZ2f/Z2dn/2dnZ/4WF5f8KCvb/ODjv/w0N9f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/6ioqKYAAAAqAAAASOLi4v/i4uL/4uLi/6io6v8LC/7/QkL2/zo69/8NDf3/4uLi/+Li4v/i4uL/4uLi/+Li4v/g4OD7AAAARgAAAETx8fH/8fHx//Hx8f81Ovz/bG/5//Hx8f+fovb/GB3+//Hx8f/x8fH/8fHx//Hx8f/x8fH/7+/v+wAAAEIAAABA9vb2//b29v/29vb/HSz//7K3+f/29vb/qK35/yUz/v/29vb/9vb2//b29v/29vb/9vb2/8jIyKMAAAAkAAAAPPn5+f/5+fn/+fn5/z5U/v+osvv/+fn5/6+4+/80TP//+fn5//n5+f/5+fn/+fn5//Dw8OMXFxdBAAAABgAAADj7+/v/+/v7//v7+/+Ro/3/UG7+/7/J/P+crf3/Q2P///v7+//7+/v/+/v7//v7+/+Tk5NnAAAAGfv7+wAAAAA1/f39//39/f/9/f3/9vj9/4yk/v9Td///QWn//05z///9/f3//f39//39/f/c3NysAAAAH/39/QD9/f0AAAAAMv7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/5+fnpPj4+PgAAAAn+/v4A/v7+AAAAACn39/fi////////////////////////////////////////////////tbW1cgAAABf///8A////AP///wAAAAAVAAAAKAAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAABv///8A////AP///wD///8AAA8AAAAHAAAAAwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAADAAAABwAAAA8AAA%3D%3D%0A%0AYandex.Weather%0Ahttps%3A//yandex.kz/pogoda/almaty/%0Adata%3Aimage/ico%3Bbase64%2CAAABAAIAICAAAAEAIAAoEAAAJgAAABAQAAABACAAKAQAAE4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqthWqr7FsqK+zk6iwsoGqr7M2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpr7JTqq6x8aqvsv+qr7L/qq+y/6qvsv+prrGhqqqqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqK2yNaqvsvqqr7L/qq+y/6qvsv+qr7L/qq+y/6qvsv+pr7KSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqrbKyqq+y/6qvsv+pr7Hqqa+yj6mvscOqr7L/qq+y/6mvsvynsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvs/Cqr7L/qq+y/6qusUUAAAAAv7+/BKmtstuqr7L/qq+y/6uusVUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAqq+ys6qvsv+qr7L/qa6xZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAACqrbKyqq+y/6qvsv+qr7JmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAKmvso+qr7LMqq+yzKqws1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+y/6qvsv+qr7L/p7GxGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7L/qq+y/6qvsv+nsbEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvsv+qr7L/qq+y/6exsRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP70AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+9QAAAAAAAAAAAAAAAAAA/t0AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7fAAAAAAAAAAAAAAAAAAD+xAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/skAAAAAAAAAAAAAAAAAAP2VAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9mgAAAAAAAAAAAAAAAAAA/1AAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP9XAAAAAAAAAAAAAAAAAAD/DgAA/vkAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/AAA/xUAAAAAAAAAAAAAAAAAAAAAAAD9mwAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8jAAD++wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/gAA/ywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2RAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wUAAP7GAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+0wAA/woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/yAAAP7dAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/uEAAP8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xMAAP7FAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7RAAD/HQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/woAAP2PAAD++wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP78AAD9kQAA/wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8jAAD9lAAA/uwAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7sAAD9lQAA/yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BAAA/zkAAP9uAAD9kgAA/6oAAP+qAAD/qgAA/ZIAAP9uAAD/OQAA/wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqA6qvsWypsLGkqa6za6qqqgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKuvsXmqr7L/qq+xzamusfuqrrN4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpr7HDqa6y2AAAAACrr7Kmqa+xwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+yzKqvsswAAAAAqK2ymaqvsswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvssyqr7LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqr7LMqq+yzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqq+yzKqvsswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqvssyqr7LMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP72AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+9QAAAAAAAAAAAAD+2wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/tkAAAAAAAAAAAAA/Z8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP2dAAAAAAAAAAAAAP9DAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/QAAAAAAAAAAAAAAAAAAA/rsAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+uAAAAAAAAAAAAAAAAAAAAAAAAP8aAAD+3QAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+3AAA/xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xsAAP63AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+tQAA/xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/zYAAP2EAAD9pAAA/aQAAP2EAAD/NgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Добавлено 01-12-2017 15:34:56

Andrey_Krropotkin пишет

Dumby спасибо. Переинициализацию кнопки я уже подправил. Но ваш код намного приятнее глазу.

вот еще альтернатива

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

Выделить код

Код:

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%3EOpen%20Firefox%20folders%20and%20files%20%5BFix%21%5D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABsAAAAoAAAAFgAAAAAAAAAADggMA0MoOjIXDxQWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBCgAAADksLCytMDAw4gAAAI0bHBuDKR8lan1IaZfSg7XS+K3f/zwtN2IAAAAAAwIDAwAAAAAAAAAAAAAAAQMDAwADAwMUAgICZUtLS+xgYWH/RURF8W1tbfpQS07/hm99/8Czu/2tsK7/IiMijwAAAAADAgMCAAAAAAAAAAAAAAAAJSUlH1dXV8ROTk7cl5eX/7Gxsfytra3/fX19/UpMS/t2enf7tLe1+7u7u/8lJCSkAAAAGQUFBQABAQECAAAAAAAAAAAfHx8tYGBg8ZiYmP+Li4v9UlJS/pubm/6xsbH+paWl/qWlpf6GhYX+xsjH/1Q9R+JxQV3LRzFAWQAAAAACAQICAAAAAAMDAwNhYWHViIiI/zMzM/xvb2/+ioqK/p2dnf7n5+f+u7u7/pycnP7IyMj+WFBT/HZkb/9JQUeTAAAAAgMDAwESEhIAWlpaj4KCgv9aWlr+SUlJ/pGRkf6RkZH+i4uL/tzc3P6AgID+ysrK/sfHx/5MTk36U1ZU/zc4N4MBAAEBAgICAgkJCQB2dna+lZWV/2lpaf05OTn+bm5u/l9fX/7AwMD++vr6/ru7u/7CwsL+ysrK/lRUVPtkY2T/SEhIaQAAAAACAgIEAAAAAwcHBwBVVVWBqamp/5ubm/qQkJD+ysrK/uDg4P7b29v+0NDQ/sPDw/7Nzc3+WFhY+2xsbP9ISEhiAAAAAAICAgQCAgIFAAAAAFtbW3bKysr/x8fH+vX19f729vb+pKSk/re3t/7FxcX+zc3N/tLS0v5cXFz7dHR0/0hISGIAAAAAAwMDBAICAgQAAAAAMTExdY2Njf91dXX6tLS0/uDg4P65ubn+wsLC/s3Nzf7W1tb+29vb/mBgYPt6enr/S0tLYgAAAAADAwMEAgICBAAAAAAtLS1zd3d3/4qKivqdnZ3+pqam/re3t/7Gxsb+1NTU/t3d3f7f39/+Y2Nj+4CAgP9OTk5iAAAAAAMDAwQCAgIEAAAAAC4uLnN/f3//jIyM+p2dnf6pqan+tra2/sfHx/7Z2dn+6Ojo/u/v7/5sbGz7g4OD/1FRUWIAAAAAAwMDBAICAgQAAAAALy8vc39/f/+JiYn6nZ2d/rCwsP7AwMD+ysrK/sfHx/60tLT+mZmZ/mBgYPuTk5P/UlJSYgAAAAADAwMEAgICBAAAAAAvLy9zhISE/5CQkPmYmJj9i4uL/XZ2dv1lZWX9XFxc/WJiYv14eHj9mpqa+snJyf9RUVFhAAAAAAMDAwQCAgIEAAAAADAwMHRoaGj/SUlJ+z09Pf86Ojr/SEhI/2JiYv99fX3/lpaW/6ysrP+8vLz70tLS/1JSUmIAAAAAAwMDBAEBAQQAAAAAIyMjVzY2Nu8wMDDjS0tL5mFhYedzc3PnfHx85oeHh+WWlpbkqKio5La1tuHNzMzzb29vWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20..................%0Avar%20array%20%3D%20%5B%7Blabel%3A%20%22Profile%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/profile/profileicon.png%22%2Cvalue%3A%20%22ProfD%22%7D%2C%0A%7Blabel%3A%20%22Firefox%22%2Cimage%3A%20%22chrome%3A//branding/content/icon16.png%22%2Cvalue%3A%20%22CurProcD%22%7D%2C%0A////%7Blabel%3A%20%22Download%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/downloads/downloadIcon.png%22%2Cvalue%3A%20%22DfltDwnld%22%7D%2C%0A%7Bseparator%3A%27%27%7D%2C%0A%7Blabel%3A%20%22Extensions%22%2Cimage%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%2Cvalue%3A%20%22ProfD%2Cextensions%22%7D%2C%0A%7Blabel%3A%20%22Custom%20buttons%22%2Cimage%3A%20%22chrome%3A//custombuttons/skin/cbicon.png%22%2Cvalue%3A%20%22ProfD%2Ccustombuttons%22%7D%2C%0A%7Blabel%3A%20%22Bookmark%20backups%22%2Cimage%3A%20%22chrome%3A//custombuttons/skin/button.png%22%2Cvalue%3A%20%22ProfD%2Cbookmarkbackups%22%7D%2C%0A%7Blabel%3A%20%22Search%20plugins%28default%29%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2Cvalue%3A%20%22CurProcD%2Csearchplugins%22%7D%2C%0A%7Blabel%3A%20%22Search%20plugins%28user-defined%29%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2Cvalue%3A%20%22UsrSrchPlugns%22%7D%2C%0A%7Bseparator%3A%27%27%7D%2C%0A////%7Blabel%3A%20%22Chrome%22%2Cimage%3A%20%22chrome%3A//global/skin/dirListing/folder.png%22%2Cvalue%3A%20%22UChrm%22%7D%2C%0A////%7Blabel%3A%20%22userChrome.css%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cchrome%2CuserChrome.css%22%7D%2C%0A////%7Blabel%3A%20%22userContent.css%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cchrome%2CuserContent.css%22%7D%2C%0A%7Blabel%3A%20%22user.js%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cuser.js%22%7D%2C%0A%7Blabel%3A%20%22prefs.js%22%2Cstyle%3A%20%22chrome%3A//global/skin/icons/folder-item.png%22%2Cvalue%3A%20%22ProfD%2Cprefs.js%22%7D%2C%0A%7Blabel%3A%22-%20-%20-%20%20Utilities%20%20-%20-%20-%22%7D%2C%0A////%7Blabel%3A%22KeePass%20Password%20Safe%22%2Cvalue%3A%22ProfD%2C%25Soft%2CKeePass2Portable.exe%22%2Cimage%3A%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQMAAAAJcNDAvZNjAu+TYwLfkNDAvZAAAAlxAQEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx8fEJV1dXmkM9O/23pp/+883A/vG4pP/xtaD/8ce4/ragmf5COjf9V1dXmvHx8QkAAAAAAAAAAAAAAADx8fEJOjo5wZqOiv720cT+7aOJ/+mLa//ohWL/5n5a/+V4Uv/oiGb/8r2r/piGf/46OTnB8fHxCQAAAAAAAAAAV1dXmpqRjf71y7z/7aOJ/+ybf//qlHX/6Yxs/+iGY//mf1v/5XlT/+V0Tf/upo3/mIaA/ldXV5oAAAAAEBAQMENAP/354Nf+8LSf/yEXFP8gFhP/IBUR/yAUEP8gEw//IBIN/yARDP8gEQz/5XVO//K+rP5COjf9EBAQMAAAAJe5sq/+9c2///K9q/9UPzf/VDw0/1Q5MP+zdmH/qGxW/1IxJv9SLyP/bTwr/+Z7Vv/pimn/tqGZ/gAAAJcODQ3Z+Ozn/vXOwP/0xrb/IBEM/yARDP8gEQz/tH1q/1M4L/8gEQz/IBEM/yARDP/ngl//5nxX//LIuv4NDAvZNzY1+fvs5//318v/9s/C/1ZGQf9VQz3/VUE6/5VsXv9TOC//Uzgv/1M2K/9uRDX/6Ypo/+eDYP/xuKT/NjAu+Tc2Nvn88Oz/+N/W//fYzf8gEQz/IBEM/yARDP8gEQz/IBEM/yARDP8gEQz/IBEM/+qSc//pi2r/8ryp/zYwLvkODg7Z+vTy/vrm3//54Nf/s56W/25ENf/zybr/88Kx//K6p//jqZT/bkQ1/8WGcP/smn7/6pN0//PQxP4NDAzZAAAAl7q5uP787+v/+ufh/+bQyP8kIB7/wqWb//XLvP/zw7L/pIBz/y4iHv/rqZH/7aOJ/++qkv+3p6L+AAAAlxAQEDBEREP9/fn3/vvu6v/66OL/Zl1a/1ZMSP/00cX/7MW3/0E0MP99YVf/8bSf/++tlf/31sr+Qz48/RAQEDAAAAAAV1dXmpycm/799/X//O/r/+DRy/83MjH/SkE+/0A3NP9EOTX/5rur//K+q//20cT/mpCN/ldXV5oAAAAAAAAAAPHx8Qk6OjrBnZyb/v35+P788e7/49TP/5SIhP+YiIL/6Mm+//fVyf/55d3+m5OQ/jo6OcHx8fEJAAAAAAAAAAAAAAAA8fHxCVdXV5pERET9urm5/vr29P788/D//PDs//nv6/66tLH+REFA/VdXV5rx8fEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQMAAAAJcODg7ZNzY2+Tc2NvkODQ3ZAAAAlxAQEDAAAAAAAAAAAAAAAAAAAAAA8A8AAMADAACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA%3D%3D%22%2C%7D%2C%0A%7Blabel%3A%22QTranslate%206.3.1%22%2Cvalue%3A%22ProfD%2C%25Soft%2CQTranslate%206.3.1.exe%22%2C%7D%2C%0A%7Blabel%3A%22Everything%201.3.4%22%2Cvalue%3A%22ProfD%2C%25Soft%2CEverything%201.3.4.exe%22%2C%7D%2C%0A%7Blabel%3A%22VTUploader%202.2b%22%2Cvalue%3A%22ProfD%2C%25Soft%2CVTUploader.exe%22%2Cimage%3A%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAAAAABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQcAAAAAAAAAAAAAAAAAAAA0IQdsSxvEkUK8iz+9iz+9iz+9iz+9iz+9iz/Ik0Q0IQc0IQc0IQcAAAAAAAAAAAAAAAA0IQdkQRC1eyazeia0eiW0eiW0eiW0eiWwdyQ0IQc0IQdyUSM0IQcAAAAAAAAAAAAAAAA0IQdjQBCrcyGrciGscyGscyGscyGocCA0IQc0IQfEizdoRRQ0IQcAAAAAAAAAAAAAAAA0IQdhPw+laxykaxykaxykaxyhaRs0IQc0IQerdCOzeidkQRA0IQcAAAAAAAAAAAAAAAA0IQdgPhCeZBidZBieZRibYxc0IQc0IQeZYRabYxefZhlfPQ40IQcAAAAAAAAAAAAAAAA0IQdfPQ+SWxKVXRKUWxE0IQc0IQeMVhGPVxGOVxGQWBFfPRA0IQcAAAAAAAAAAAAAAAA0IQeYYBaYYBaTXBU0IQc0IQfMp3nPrH7Pq33WsoV9YDg0IQcAAAAAAAAAAAAAAAAAAAA0IQfUr3/Kpnc0IQc0IQfiyarmz7Du17qFbkw0IQcAAAAAAAAAAAAAAAAAAAA0IQfIrIffw53avZc0IQc0IQfr3cj37NuLd1o0IQcAAAAAAAAAAAAAAAAAAABuWDbVvZ3kza7lza7fx6c0IQc0IQft6+mMf2U0IQcAAAAAAAAAAAAAAAAAAABxXDzayK7s2sLs2sLs28Ll07s0IQc0IQeQg200IQcAAAAAAAAAAAAAAAAAAAByX0He08Dz6Nfz6Nbz6Nbz6Nbs4M40IQc0IQc0IQcAAAAAAAAAAAAAAAAAAABzY0be2tD69Ov69Or69Or69Or69Ort6uE0IQc0IQcAAAAAAAAAAAAAAAAAAAB5aU3c2dTt6+jt6+ft6+ft6+ft6+ft6+fw7u00IQcAAAAAAAAAAAAAAAAAAAA0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQc0IQf4AP//+AD//zwA//8eAP//DwD//weA//8DwP//AeD//wHw//8D4P//B8D//w+A//8fAP//PgD//3wA///4AP//%22%2C%7D%2C%5D%3B%0A%0Avar%20version%20%3D%20parseInt%28Services.appinfo.version%29%3B%0Avar%20menuPopup%20%3D%20self.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Aarray.forEach%28m%3D%3E%20%7Bif%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%20LOG%28m.label.slice%280%2C6%29%29%0Aif%20%28%20version%20%3E%2040%20%26%26%20m.label.startsWith%28%22Search%22%29%20%29%20return%3Bvar%20mItem%20%3D%20menuPopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3BmItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0AmItem.setAttribute%28%22value%22%2C%20m.value%29%3BmItem.setAttribute%28%22class%22%2C%20%22menuitem-iconic%22%29%3B%28%22image%22%20in%20m%29%20%26%26%20mItem.setAttribute%28%22image%22%2C%20m.image%29%3B%0A%28%22style%22%20in%20m%29%20%26%26%20mItem.setAttribute%28%22style%22%2C%20%22list-style-image%3A%20url%28%27%22+%20m.style%20+%22%27%29%3B%20-moz-image-region%3A%20rect%280%2C%2016px%2C%2016px%2C%200%29%22%29%3B%7D%29%3B%0AmenuPopup.addEventListener%28%22click%22%2C%20e%3D%3E%20openFirefoxFolders%28e.target.value%29%29%3B%0A//%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u043F%u0430%u043F%u043A%u0438%20%u0438%20%u0444%u0430%u0439%u043B%u044B%20Firefox%2C%20%u0432%u044B%u0431%u043E%u0440%20%u0437%u0430%u0432%u044B%u0441%u0438%u0442%20%u043E%u0442%20%u0430%u0440%u0433%u0443%u043C%u0435%u043D%u0442%u0430%20%27value%27%20...................toString%28%29.startsWith%28%22Search%22%29%0Afunction%20openFirefoxFolders%28value%29%20%7Bvar%20array%20%3D%20value.split%28%22%2C%22%29%2Cdirectory%20%3D%20array%5B0%5D%2C%20folders%20%3D%20array%5B1%5D%2C%20file%20%3D%20array%5B2%5D%3B%0Avar%20dir%20%3D%20Services.dirsvc.get%28directory%2C%20Ci.nsIFile%29%3Bfolders%20%26%26%20dir.append%28folders%29%3Bfile%20%26%26%20%28dir.append%28file%29%2C%20dir.launch%28%29%29%3Bdir.exists%28%29%20%26%26%20%21file%20%26%26%20dir.reveal%28%29%3B%7D%3B%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


еще есть такая кнопка
скрытый текст

Выделить код

Код:

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

Отредактировано Gladius333 (01-12-2017 15:34:56)

Отсутствует

 

№183303-12-2017 01:35:20

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

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

mokujin пишет

Пробовал что-то какие-то проверки вставлять, смотрел в исходнег... да видно не те и не туда.
может подскажет кто, как прально ?

походу, так прально:

auto-hide SideBar on click page

Выделить код

Код:

// ---------12--------------------------- (auto-hide SideBar on click page) ---------------------------------------------------------------
(function() {    this.clickPageSB = function(event) {gBrowser.addEventListener('mousedown',on, false);   };

    function go() {
           clickPageSB(event);
          var sidebarBox = document.getElementById("sidebar-box");
        if ( sidebarBox.hidden = "true") return;
           toggleSidebar();
           }

   function on() {
      gBrowser.removeEventListener('mousedown',on, false);
      timeoutId = setTimeout(go, 1000)   
      }
   function off() {   clickPageSB(event);     clearTimeout(timeoutId)   }
   sidebar.addEventListener('click',off, false);
     clickPageSB(event);
 })();


ошибки нету, панель закрывает, но... кнопка(на VerticalToolbar) сохраняет состояние "нажатости", что тоже хреново, но терпимо. млин, чёж так сложно-то и так тупо все с этой бок.панелью :sick:

Отредактировано mokujin (03-12-2017 03:32:30)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№183403-12-2017 05:52:52

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

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

mokujin пишет:
ошибки нету, панель закрывает, но... кнопка(на VerticalToolbar) сохраняет состояние "нажатости",

добавь в код
knopka.checked=false
где knopka это кноопка которую нужно отжать (получи её через ид например)


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№183503-12-2017 08:05:46

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

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

ну это да... только вот не оно ;)  knopka.checked может быть любая. History , Bookmark, printPages2Pdf_toolbar_sidebar и др.
можно конечно их все обходить... только это КМК фигня будит полная. Хотя как вариант, благодарю.

Тут еще одно что: с этим кодом в Init при старте бравзера теперь открываеццо бок.панель. оно и логично, так записано

Выделить код

Код:

if ( sidebarBox.hidden = "true") return;
           toggleSidebar();

.. и открывает посл. состояние бок.панели.

Надо наверно, заводить... как это... observer вроде, но даже не представляю что это и как. Пока, нехай будет так. придумаю что, изменю.
такая очевидно-нужная штука(при клике на странице закрывать панель + в настройках для каждой да\нет) и такой гемор с нею.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№183604-12-2017 05:42:12

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

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

Сделал. Плазал в browser.js ... всё было рядом :) Панель закрываеццо, кнопки отжимаюццо. Все как должно.... сюдаб еще добавить отмену действия(скрытия) при выделении текста и при кликах кроме ЛКМ - былоб шикарно. (сделал)
пока не знаю каки куда.

Скрывать боковую панель по клику на странице

Выделить код

Код:

// ---------12---------------------------  (auto-hide SideBar ) ---------------------------------------------------------------
// при открытой бок.панели  и клике ЛКМ( ПКМ и СКМ игнор.) на странице, будет закрыта.
// + можно делать выделение текста для копирования , панель не будет закрываться.
// + исключения для адресов где не нужно закрывать бок.панель. Например расш-е ScrapBook. исключения можно убрать или добавить в переменную disable

(function() { this.clickPageSB = function(event) { gBrowser.addEventListener('mousedown',on, false);   };

    function go() {
           clickPageSB(event);
           var selection = getBrowserSelection();
           const sidebarbox = window.document.getElementById("sidebar-box").hidden;
             if ( !sidebarbox && !selection && getDomain() ) toggleSidebar();
           }

    function on(e) {
      if ( e.button != 0 ) return;
       gBrowser.removeEventListener('mousedown',on, false);
       timeoutId = setTimeout(go, 500)   
       }

    function off() {   clickPageSB(event);     clearTimeout(timeoutId)   }
      sidebar.addEventListener('click',off, false);
       clickPageSB(event);
       
       

// -------- Получить домен или пусто если это внутренние адреса about , chrome, file:/// т.д. ---------------------------
 function getDomain() {
     var protocol = content.location.protocol;
     var disable = ["about:", "chrome:", "jar:", "data:"];
     
     if ( disable.indexOf( protocol ) !== -1 ) return; 
          var domName = content.document.domain;
          return domName.replace(/^www./g,'');
 };       
       
 })();


Лучше даже так:
скрытый текст

Выделить код

Код:

// ---------12--------------------------- (auto-hide SideBar) ---------------------------------------------------------------
(function() { this.clickPageSB = function(event) { gBrowser.addEventListener('mousedown',on, false);   };

    function go() {
           clickPageSB(event);
           var selection = getBrowserSelection();
           const sidebarbox = window.document.getElementById("sidebar-box").hidden;
             if ( !sidebarbox && !selection && getLoc() ) toggleSidebar();
           }

    function on(e) {
      if ( e.button != 0 ) return;
       gBrowser.removeEventListener('mousedown',on, false);
       timeoutId = setTimeout(go, 500)   
       }

    function off() {   clickPageSB(event);     clearTimeout(timeoutId)   }
      sidebar.addEventListener('click',off, false);
       clickPageSB(event);

// Ф-ция вернет текущий адресс или undefined если начало адреса совпадает с исключениями в arr 
//  Исключения в массиве arr - если положение совпадает, начинается с ... то выход. иначе возврат текущего урл.
 function getLoc() {
      let loc = content.location.href;
      let arr = ["chrome://scrapbook/","data:"];
   for (var i = 0; i < arr.length; i++) {
      if ( loc.startsWith(arr[i]) == 1 ) return;
      }
    return loc;
 };
       
 })();

Отредактировано mokujin (08-01-2018 15:07:02)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№183704-12-2017 13:20:40

ds(ds)
Участник
 
Группа: Members
Зарегистрирован: 21-01-2010
Сообщений: 83
UA: Seamonkey 2.49

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

доброго времени..
симанки 2.49.1
нужен следующий функционал - закрывать автоматически страницы с одинаковым url  (копии одной и той же страницы)
ничего работающего из аддонов найти не смог. посоветовали сюда обратиться

если у кого есть мысли поделитесь

Отсутствует

 

№183804-12-2017 17:20:37

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

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

ds(ds)

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

Выделить код

Код:

// Запретить дублирование вкладок, от 07.01.2015. ................................
function stopDuplicateTab(aURI) {
   var stop = false;
   for( var tab of gBrowser.tabs) {
        if ( tab.linkedBrowser.currentURI.spec == aURI ) {
             gBrowser.selectedTab = tab;
             stop = true;
             break;
             }
        }
   if (stop) return true;
};
const handle = gBrowser.addTab;
eval("gBrowser.addTab = " + handle.toString().replace('{', '{ \n\n if (stopDuplicateTab(aURI)) return;'));
addDestructor(()=> eval("gBrowser.addTab = " + handle) );


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

Отсутствует

 

№183912-12-2017 22:06:15

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4001
UA: Firefox 57.0

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

В 57+ какие-нибудь из кнопок серии "открыть видео в..." / "скачать видео с помощью..." работают?
Те что по ПКМ по ссылке.

Отсутствует

 

№184015-12-2017 21:25:36

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

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

В 52.5.2 ESR x64 больше не работает Menuitem hider. Без неё очень плохо.

Отсутствует

 

№184116-12-2017 04:29:15

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 52.0

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

Mishania пишет

В 52.5.2 ESR x64 больше не работает Menuitem hider. Без неё очень плохо.

У меня работает. Да и чего бы ей не работать? В ESR только безопасность обновляется.

Отсутствует

 

№184216-12-2017 07:34:44

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

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

Ultima2m,   у меня тоже работала, пока на x64 yt обновил. Вот и думаю что случилось.

Отсутствует

 

№184316-12-2017 15:15:22

usalex
Участник
 
Группа: Members
Зарегистрирован: 17-05-2016
Сообщений: 82
UA: Firefox 57.0

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

Какая версия кнопки Autocopy+3  для 57 сейчас самая последняя и самая рабочая?
Вроде видел где-то от 2015 года, но найти не могу.

Отсутствует

 

№184416-12-2017 15:33:00

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 52.0

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

usalex пишет

Какая версия кнопки Autocopy+3  для 57 сейчас самая последняя и самая рабочая?Вроде видел где-то от 2015 года, но найти не могу.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EAutocopy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy%2C%20%u043E%u0442%2008.12.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%u0421%u043E%u043C%u0435%u043D%u044E%20%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%28document.createElement%28%22menu%22%29%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%28document.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%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%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%20observe%3A%28subject%2C%20topic%2C%20data%29%3D%3E%20%7B%0A%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%7D%0A%7D%3B%0AServices.obs.addObserver%28toggleButton%2C%20%22quit-application%22%2C%20false%29%3B%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%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%20Cc%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.createInstance%28Ci.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%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%20e%3D%3E%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%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28content.document%2C%20%28gURLBar.value.startsWith%28%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%29%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%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.style.background%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20document.getElementById%28%22identity-box%22%29.style.background%20%3D%20%22%22%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%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%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%20cbu.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%28box%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%u043D%u043E%u0432%u044B%u0445%20%u043E%u043A%u043E%u043D%20...............%0Afunction%20observer%28subject%29%20%7B%0A%20%20%20subject.addEventListener%28%22load%22%2C%20e%3D%3E%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20var%20view%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u043E%u0432%20CB%20%u043A%u043D%u043E%u043F%u043E%u043A%0A%20%20%20%20%20%20if%20%28%20/custombuttons-editor/.test%28doc.URL%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20view.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%7D%29%3B%0A%7D%3B%0AServices.ww.registerNotification%28observer%29%3B%0AaddDestructor%28%28%29%3D%3E%20Services.ww.unregisterNotification%28observer%29%20%29%3B%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.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

Отсутствует

 

№184516-12-2017 15:48:01

usalex
Участник
 
Группа: Members
Зарегистрирован: 17-05-2016
Сообщений: 82
UA: Firefox 57.0

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

Ultima2m
Спасибо!
А где вы ее взяли, где она опубликована и кто автор?
Это самая последняя версия?

Отсутствует

 

№184616-12-2017 17:23:13

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

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

Есть такая кнопка - "Экспорт в HTML"  в контекстном меню закладок для выборочного экспорта закладок.

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

Выделить код

Код:

//-------------------- Экспорт в HTML файл в контекстном меню закладок

 (function () { 
function ImageConverter(imageURL) {
this.imageURL = imageURL;
this.channel = Services.io.newChannel(imageURL, null, null);
this.channel.asyncOpen(this, null);
}
ImageConverter.prototype = {
imageURL : "",
channel : null,
bytes : [],
stream : null,
Database64 : null,
iscompleted : false,
QueryInterface : function (iid) {
if (!iid.equals(Components.interfaces.nsISupports) &&
!iid.equals(Components.interfaces.nsIRequestObserver) &&
!iid.equals(Components.interfaces.nsIStreamListener)) {
throw Components.results.NS_ERROR_NO_INTERFACE;
}
return this;
},

onStartRequest : function (aRequest, aContext) {
this.stream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
this.iscompleted = false;
},

onStopRequest : function (aRequest, aContext, aStatusCode) {
this.Database64 = 'data:' + this.channel.contentType + ';base64,' + btoa(String.fromCharCode.apply(null, this.bytes));
this.iscompleted = true;
},

onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) {
this.stream.setInputStream(aInputStream);
var chunk = this.stream.readByteArray(aCount);
this.bytes = this.bytes.concat(chunk);
}
};
var ExportHTMLFolder = {
escapeHTML: function(str) {
return str.replace(/[&"<>]/g, function (m) ({ "&": "&amp;", '"': "&quot", "<": "&lt;", ">": "&gt;" })[m]);
},
onMenuItemCommand: function(event) {
var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService);
var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
var MPMenu = PlacesUtils.getString("BookmarksMenuFolderTitle");
var NodeID = document.popupNode._placesNode || document.popupNode.parentNode.selectedNode;
fp.init(window, PlacesUIUtils.getString("EnterExport"),Ci.nsIFilePicker.modeSave);
fp.appendFilters(Ci.nsIFilePicker.filterHTML);
fp.defaultString = NodeID.title+".html";
if (fp.show() != Ci.nsIFilePicker.returnCancel) {
var file = fp.file;
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
var charset = "UTF-8";
foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
.createInstance(Components.interfaces.nsIConverterOutputStream);
os.init(foStream, charset, 0, 0x0000);
var nbTab = 5;
var data = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n';
data = data + '<!-- This is an automatically generated file.\n';
data = data + '\tIt will be read and overwritten.\n';
data = data + '\tDO NOT EDIT! -->\n';
data = data + '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n';
data = data + '<TITLE>Bookmarks</TITLE>\n';
data = data + '<H1>'+ExportHTMLFolder.escapeHTML(MPMenu)+'</H1>\n';
data = data + '\n';
data = data + '<DL><p>\n';
os.writeString(data);
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();
if( NodeID.type != 0 )
{
query.setFolders([NodeID.itemId], 1);
var result = historyService.executeQuery(query, options);
node = result.root;
}
else
{
query.setFolders([NodeID.parent.itemId], 1);
var result = historyService.executeQuery(query, options);
var rootNode = result.root;
rootNode.containerOpen = true;
inc = 0;
var node = rootNode.getChild(inc);
while(( inc < rootNode.childCount )&&( node.itemId != NodeID.itemId )) {
inc++;
var node = rootNode.getChild(inc);
}
rootNode.containerOpen = false;
}
this.ecrireUnMP( os, node, nbTab );
data = '</DL></p>\n';
os.writeString(data);
os.close();
}
},
ecrireUnMP: function( flux, elem, nbTab ) {
var resultTypes = Ci.nsINavHistoryResultNode;
if( elem.type == resultTypes.RESULT_TYPE_SEPARATOR ) {
var chaine = new Array(nbTab).join(' ') + "<HR>\n";
flux.writeString(chaine);
}
else if( elem.type == resultTypes.RESULT_TYPE_URI ) {
var Description= PlacesUIUtils.getItemDescription(elem.itemId);
var chaine = new Array(nbTab).join(' ') + '<DT><A HREF="' + this.escapeHTML(elem.uri);
if ( elem.icon.indexOf('moz-anno:favicon:http') >= 0 )
{
//Services.console.logStringMessage('[ moz-anno:favicon ]: ' + elem.icon );
if ( elem.icon.indexOf('http://www.mozilla.org/2005/made-up-favicon/') < 0 ){
chaine = chaine + '" ICON_URI="' + elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http') + 'moz-anno:favicon:'.length);
}
var Image = new ImageConverter( elem.icon.slice(elem.icon.indexOf('moz-anno:favicon:http')) );
var thread = Cc['@mozilla.org/thread-manager;1'].getService().mainThread;
while ( !Image.iscompleted ) {
thread.processNextEvent(true);
}
chaine = chaine + '" ICON="' + Image.Database64;
}
else if ( elem.icon.indexOf('moz-anno:favicon:data:image') >= 0 )
{
chaine = chaine + '" ICON="' +elem.icon.slice(elem.icon.indexOf('data:image'));
}
var chaine = chaine + '">' + this.escapeHTML(elem.title) + '</A>\n' + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n';
flux.writeString(chaine);
}
else if(( elem.type == resultTypes.RESULT_TYPE_FOLDER )||( elem.type == resultTypes.RESULT_TYPE_FOLDER_SHORTCUT )) {
var bookmarkService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Ci.nsINavBookmarksService);
var historyService = Cc["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
var Description= PlacesUIUtils.getItemDescription(elem.itemId);
var chaine = new Array(nbTab).join(' ') + '<DT><H3>' + this.escapeHTML(elem.title) + '</H3>\n';
var chaine = chaine + new Array(nbTab).join(' ') + '<DD>' + this.escapeHTML(Description) + '\n';
chaine = chaine + new Array(nbTab).join(' ') + '<DL><p>\n';
flux.writeString(chaine);
nbTab = nbTab + 4;
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();
query.setFolders([elem.itemId], 1);
var result = historyService.executeQuery(query, options);
var rootNode = result.root;
rootNode.containerOpen = true;
for (var inc = 0; inc < rootNode.childCount; inc ++) {
var node = rootNode.getChild(inc);
this.ecrireUnMP( flux, node, nbTab );
}
rootNode.containerOpen = false;
nbTab = nbTab - 4;
chaine = new Array(nbTab).join(' ') + '</DL></p>\n';
flux.writeString(chaine);
}
},

init: function()
{
var contextMenu = document.getElementById("placesContext");
if (contextMenu) contextMenu.addEventListener("popupshowing", this.ExportHTMLFolderShowHideItem, false);
},
ExportHTMLFolderShowHideItem: function(event)
{
var show = document.getElementById("placesContext_ExportHTMLFolder");
show.hidden = (document.popupNode.localName == "menuseparator")||( document.popupNode.className == "openintabs-menuitem");
document.getElementById("placesContext_ExportHTMLFolderSep").hidden = show.hidden;
},
};

window.addEventListener("load", function load(event) {
window.removeEventListener("load", load, false); //remove listener, no longer needed
ExportHTMLFolder.init();
}, false);


if ( document.getElementById("placesContext_ExportHTMLFolder") ) return; 

  var copyBothMenuItem = document.createElement("menuitem");
    copyBothMenuItem.id = "placesContext_ExportHTMLFolder";
    copyBothMenuItem.setAttribute("label", "Экспорт в HTML");
    copyBothMenuItem.setAttribute("selection", "any");
    copyBothMenuItem.setAttribute("closemenu", "single");
  copyBothMenuItem.addEventListener("command", function () { ExportHTMLFolder.onMenuItemCommand(event); });
  
     var copyMenuItem = document.getElementById("placesContext_openSeparator");
     copyMenuItem.parentNode.insertBefore(copyBothMenuItem, copyMenuItem); 
  
})();


Не помню где нашел. В FF56 она работает, а FF57 перестала работать. Может кто нибудь подправит? Буду очень признателен.

Отсутствует

 

№184717-12-2017 08:08:07

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 52.0

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

usalex пишет

А где вы ее взяли, где она опубликована и кто автор?

Кнопка на сайте выложена. Кажется вот этот вариант
Автор - bunda1

Отредактировано Ultima2m (17-12-2017 08:08:51)

Отсутствует

 

№184817-12-2017 14:00:42

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 323
UA: Firefox 57.0

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

usalex пишет

Какая версия кнопки Autocopy+3  для 57 сейчас самая последняя и самая рабочая?

Я прошу прощение за то, что вмешиваюсь :blush: Возможно, будет интересно для тех же целей расширение - AutoCopy (WebExtension)

Отсутствует

 

№184920-12-2017 19:56:43

mssign
Участник
 
Группа: Members
Зарегистрирован: 04-11-2009
Сообщений: 21
UA: Firefox 57.0

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

А можно как то отрегулировать ширину этой вертикальной  панели. А то раза в три шире чем хотелось бы. Это VT, вертикальная панель. В 57 работает.
скрин

скрытый текст
c222ea3c10cee653f44aa20a3e5e6487.png

код
скрытый текст

Выделить код

Код:

var vto = {
    distanceShow: 12,
    distanceHide: 64,
    showDelay: 320,
    color: "lightblue",
    fringe: "black",
    padding: 3,
    name: "VT",

    btn: this,
    tcm: document.getElementById("toolbar-context-menu"),
    ctm: document.getElementById("customization-toolbar-menu"),
    deck: document.getElementById("content-deck"),
    id: "cb-vt",

    get cust() gBrowser.currentURI.spec == "about:customizing",
    get xs() {
        delete this.xs;
        return this.xs = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore);
    },
    init: function() {
        if (this.cust || this.btn._destructors.length) return;

        var vt = this.initVT();
        var vto = this;

        this.btn.onclick = function(e) {
            e.button || vto.toggleVT();
        }
        window.addEventListener("popupshown", this, false);
        window.addEventListener("popuphidden", this, false);
        window.addEventListener("resize", this, false);
        this.tcm.addEventListener("command", this, false);
        this.tcm.addEventListener("popupshowing", this, false);

        vto.toggleVT(vt.hasOwnProperty("on") ? vt.on
            : !this.xs.hasValue(location, vto.id, "collapsed")
        );
        this.resize();
        vto.btn._destructors.push({context: vto, destructor: vto.destroy});
    },
    destroy: function(reason) {
        window.removeEventListener("popupshown", this, false);
        window.removeEventListener("popuphidden", this, false);
        window.removeEventListener("resize", this, false);
        this.tcm.removeEventListener("command", this, false);
        this.tcm.removeEventListener("popupshowing", this, false);
        this.setCollapser(false);

        if (reason == "destructor" && this.cust) {
            var vto = this;
            vto.resize();

            gNavToolbox.addEventListener("customizationready", vto, false);
            CustomizableUI.addListener(vto);

            this.ctm.addEventListener("command", vto, false);
            this.ctm.addEventListener("popupshowing", vto, false);
            window.addEventListener("resize", vto, false);

            gNavToolbox.addEventListener("aftercustomization", function ac() {
                gNavToolbox.removeEventListener("aftercustomization", ac, false);
                gNavToolbox.removeEventListener("customizationready", vto, false);
                CustomizableUI.removeListener(vto);

                vto.ctm.removeEventListener("command", vto, false);
                vto.ctm.removeEventListener("popupshowing", vto, false);
                window.removeEventListener("resize", vto, false);

                document.getElementById(vto.btn.id) || vto.destroyVT();

            }, false);
        }
        if (reason == "delete") {
            CustomizableUI.removeWidgetFromArea(this.btn.id);
            this.destroyVT();
        }
    },
    handleEvent: function(e) this[e.type](e),

    command: function(e) {
        if (e.target.id != "toggle_" + this.id) return;
        e.preventDefault();
        this.toggleVT();
    },
    popupshowing: function(e) {
        var menuitem = e.target.querySelector("#toggle_" + this.id);
        menuitem && menuitem.setAttribute("checked", this.vt.on);
        if (this.cust || !this.vt.contains(e.target.triggerNode)) return;
        for(var selector of [".customize-context-moveToPanel", ".customize-context-removeFromToolbar"]) {
            menuitem = e.target.querySelector(selector);
            menuitem && menuitem.removeAttribute("disabled");
        }
    },
    mousemove: function collapser(e) {
        var distance = collapser.distance = e.screenX - document.documentElement.boxObject.screenX;
        if (collapser.waiting) return;
        if (distance <= this.distanceShow && this.vt.collapsed) {
            if (this.showDelay < 1) {
                this.vt.collapsed = false;
                return;
            }
            collapser.waiting = true;
            setTimeout(function(vto) {
                if (collapser.distance >= vto.distanceShow) {
                    collapser.waiting = false;
                    return;
                }
                vto.vt.collapsed = false;
                collapser.waiting = false;
            }, this.showDelay, this);
        }
        if (distance >= this.distanceHide && !this.vt.collapsed)
            this.vt.collapsed = true;
    },
    setCollapser: function(set) {
        set
        ? this.cust || window.addEventListener("mousemove", this, false)
        : window.removeEventListener("mousemove", this, false);
    },
    callCollapser: function(e) {
        this.mousemove({screenX: document.documentElement.boxObject.screenX + MousePosTracker._x});
    },
    customizationready: function() {
        window.removeEventListener("customizationready", this, false);
        this.vt.on && this.insertBox(true);
    },
    resize: function(e) {
        this.vt.style.maxHeight = this.deck.boxObject.height + 1 + "px";
    },
    popupshown: function(e) this.handlePopup(e),
    popuphidden: function(e) this.handlePopup(e),

    handlePopup: function(e) {
        if (
            this.vt.collapsed || this.vt.on
            || (e.target.localName != "menupopup" && e.target.localName != "panel")
        ) return;
        setTimeout(function(vto) {
            var hasPopup = Array.concat(
                Array.slice(document.getElementsByTagName("menupopup")),
                Array.slice(document.getElementsByTagName("panel"))
            ).some(function(popup)
                "state" in popup && popup.state == "open" && (
                    vto.vt.contains(popup)
                    || ("triggerNode" in popup && vto.vt.contains(popup.triggerNode))
                    || (
                        "anchorNode" in popup && popup.anchorNode && (
                            vto.vt.contains(popup.anchorNode)
                            || vto.vt.contains(document.getBindingParent(popup.anchorNode))
                        )
                    )
                )
            );
            vto.setCollapser(!hasPopup);
            hasPopup || vto.callCollapser();
        }, 200, this);
    },
    onWidgetAfterDOMChange: function(...a) {
        if (a[2] == this.vt.box) this.vt.hbox.style.minWidth = this.vt.boxObject.width + "px";
    },
    initVT: function() {
        var id = this.id;
        var boxId = id + "-customization-target";
        var vt = this.vt =
            document.getElementById(id) ||
            document.createElement("toolbar");
        var attrs = {
            id: id,
            mode: "icons",
            iconsize: "small",
            orient: "vertical",
            customizable: "true",
            persist: "collapsed",
            toolbarname: this.name,
            fullscreentoolbar: "true",
            class: "chromeclass-toolbar",
            context: "toolbar-context-menu",
            style: "-moz-appearance: none; display: -moz-box; height: 100%; position: fixed; min-width: 20px"
        };
        for(var attr in attrs) vt.setAttribute(attr, attrs[attr]);
        if (!vt.parentNode) {

            var box = vt.box = document.createElement("vbox");
            vt.appendChild(box);
            box.id = boxId;
            box.style.cssText = "height: 100%; width: 100%;"

            vt.customizationTarget = box;
            gNavToolbox.appendChild(vt);

            if (CustomizableUI.areas.indexOf(id) == -1) {
                CustomizableUI.registerArea(id, {legacy: true});
            }
            box.removeAttribute("class");

            box.__defineGetter__("localName", function()
                Components.stack.caller.toString().indexOf("custombutton.buttonConstructor")
                     == -1 ? "vbox" : "toolbar"
            );
            vt.hbox = document.createElement("hbox");
            vt.hbox.id = id + "-hbox";
        }
        vt.box.style.padding = "0 " + this.padding + "px";
        vt.style.backgroundColor = this.color;
        vt.style.borderRight = "1px solid " + this.fringe;
        return vt;
    },
    destroyVT: function(reason) {
        var vt = this.vt;
        CustomizableUI.unregisterArea(vt.id, {});
        vt.hbox.parentNode && vt.hbox.parentNode.removeChild(vt.hbox);
        vt.parentNode && vt.parentNode.removeChild(vt);

        this.xs.removeValue(location, vto.id, "collapsed");
        this.xs.removeValue(location, vto.id, "currentset");
    },
    insertBox: function(ins) {
        var vt = this.vt;
        var box = vt.hbox;
        if (!ins) {
            box.parentNode && box.parentNode.removeChild(box);
            return;
        }
        var id = this.cust ? "customization-palette-container" : "sidebar-box";
        var point = document.getElementById(id);
        point.parentNode.insertBefore(box, point);
        var mw = function() box.style.minWidth = vt.boxObject.width + "px";
        mw(); setTimeout(mw, 100);
    },
    toggleVT: function(on) {
        var vt = this.vt;
        if (on == undefined) on = !vt.on;
        vt.on = on;
        this.setCollapser(!on);
        vt.collapsed = !on;
        this.insertBox(on);
    }
};
vto.init();


function addBackground(e) {
   setTimeout(function() {
      var toolbar = document.getElementById('cb-vt');
      var win = document.getElementById("main-window");
      
      var image = win.style.backgroundImage;
      if ( image == '' ) { 
           toolbar.style.background = '';
           return;
           };
      toolbar.style.background = image;
      toolbar.style.backgroundSize = 'auto 100%';
   }, 500);
};
addBackground(); 
Services.obs.addObserver(addBackground, "lightweight-theme-styling-update", false);
addDestructor(()=> Services.obs.removeObserver(addBackground, "lightweight-theme-styling-update") );

Отредактировано mssign (20-12-2017 20:02:27)

Отсутствует

 

№185021-12-2017 06:40:58

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

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

mssign, замените "style: "-moz-appearance: none; display: -moz-box; height: 100%; position: fixed; min-width: 20px"   на
style: "-moz-appearance: none; display: -moz-box; height: 100%; position: fixed; width: 20px" и "играйтесь" с численным значением


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

Board footer

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