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

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

№1282606-09-2018 16:03:48

Артик
Участник
 
Группа: Members
Зарегистрирован: 14-03-2016
Сообщений: 64
UA: Firefox 62.0

Re: Custom Buttons

Dumby пишет

1. gClipboard.write(losslessDecodeURI(gBrowser.currentURI));
2. for(let tab of gBrowser.visibleTabs.filter(t => !t.selected))
       try {gBrowser.getBrowserForTab(tab).reload();} catch(ex) {}
3. gCustomizeMode.enter();

Гигантское СПАСИБО. Можно ещё вопросы позадавать в этом направлении?)

Отредактировано Артик (06-09-2018 16:04:19)

Отсутствует

 

№1282706-09-2018 18:02:33

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

Dumby
Не получается, или это или просто ноль ....
cc2g3486.jpg

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

Выделить код

Код:

addEventListener("popupshowing", {
    handleEvent(e) {
        if (e.target.id != "placesContext" || this.shouldHide(e.target))
            return;
        var add, menuitem = document.createElement("menuitem");
        menuitem.setAttribute("label", "Восстановить иконки всех закладок");
        menuitem.setAttribute("oncommand", "handleCommand();");
        menuitem.handleCommand = this.cmd.bind(this);
        (add = e => e.target.querySelector(
            "#placesContext_sortBy\\:name"
        ).before(menuitem))(e, menuitem);
        addDestructor(() => menuitem.remove());

        this.handleEvent = e => {
            if (e.target.id != "placesContext") return;
            var hide = this.shouldHide(e.target);
            if (e.target.contains(menuitem) ^ hide) return;
            hide ? menuitem.remove() : add(e, menuitem);
        }
    },
    shouldHide(popup) {
        var tn = popup.triggerNode;
        if (!tn || tn.id == "PlacesChevron") return true;
        var node = tn.nodeName == "treechildren"
            ? tn.parentNode.selectedNode
            : tn._placesNode || tn._placesView.result.root;

        var trg = node && (node.type == node.RESULT_TYPE_FOLDER
            || node.type == node.RESULT_TYPE_FOLDER_SHORTCUT)
        if (trg) this.guid = PlacesUtils.getConcreteItemGuid(node);
        return !trg;
    },
    async cmd() {
        var res = await PlacesUtils.promiseBookmarksTree(this.guid);
        if (!("children" in res)) return;
        var set = new Set();
        for(var child of res.children) if (
            child.typeCode == PlacesUtils.bookmarks.TYPE_BOOKMARK
            && child.uri.startsWith("http")
        )
            try {set.add("http://" + new URL(child.uri).hostname);} catch(ex) {}
        set.size && this.start([...set]);
    },
    start(urls) {
        alert(urls.join("\n"));
    }
}, true);

 
// Получить адрес иконки закладки и запустить установку иконки .... 
   function getSiteFavicon(siteURI) {
      var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
      var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта

      if ( getSiteFavicon[siteURI] ) return;     // стоп если закладка с таким адресом уже была
      getSiteFavicon[siteURI] = true; 
      
      // получить адрес иконки из документа сайта закладки
      var xhr = new XMLHttpRequest();
      xhr.open("GET", siteURI, true);
      xhr.responseType = "document";      
      xhr.onload = xhr.onerror = function() {
         var doc = xhr.responseXML;
         if ( doc !== null ) {
              var links = doc.getElementsByTagName("link");
              [...links].forEach(function(link) {
                 if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href });
              }
                         
         setBookFavicon(faviconURI, siteURI);  // запустить установку иконки   
      }
      xhr.send();
   };

Отредактировано drage2 (06-09-2018 18:54:43)

Отсутствует

 

№1282806-09-2018 22:53:59

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 62.0

Re: Custom Buttons

Dumby
У меня неожиданно установился CB после твика №12807 - omni.ja.
Твой config.js надо добавлять в этом случае по принципу "кашу маслом не испортишь" или это уже будет лишнее?

Отредактировано xrun1 (06-09-2018 22:55:59)

Отсутствует

 

№1282906-09-2018 23:06:09

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

xrun1
Ты твик у кого брал? У того и спрашивать надо...

Отсутствует

 

№1283006-09-2018 23:32:07

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 62.0

Re: Custom Buttons

drage2
Твик я брал не у тебя, ты просто под руку попался на предыдущей страничке. Брал отсюда №12781, автор func4ptch4.
Dumby там же через твой пост и ответил. Я хочу уточнить у него про config.js. Если есть, что сказать - скажи, а наезжать не надо.:)

Отредактировано xrun1 (06-09-2018 23:34:30)

Отсутствует

 

№1283106-09-2018 23:32:15

Три рубля
Участник
 
Группа: Members
Откуда: Воронежская область
Зарегистрирован: 27-12-2014
Сообщений: 67
UA: Yandex 18

Re: Custom Buttons

Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?

Отсутствует

 

№1283207-09-2018 00:13:23

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

xrun1
Понятно....Только все-равно, я первооткрыватель, скрипты конфига не нужны теперь.Кстати, надписи в about:addons -убрал?
Вместо этих скриптов лучше это поставить:
all-settings.js - в Pref

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

Выделить код

Код:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");


А в каталог - Mozilla.cfg (свои , естественно)
скрытый текст

Выделить код

Код:

//....Заблоктрованые настройки...//
lockPref("general.useragent.override.youtube.com", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0 PaleMoon/27.4.2");
lockPref("browser.download.panel.shown", false);
lockPref("dom.push.enabled", false); 
lockPref("dom.webnotifications.enabled", false);
lockPref("reader.parse-on-load.enabled", false);
lockPref("security.insecure_field_warning.contextual.enabled", false); 
lockPref("security.insecure_password.ui.enabled", false);
lockPref("signon.autofillForms.http", true);   
lockPref("toolkit.telemetry.enabled", false); 
lockPref("app.update.service.enabled", false);
lockPref("browser.pagethumbnails.enabled", false);
lockPref("plugin.load_flash_only", false);
lockPref("network.predictor.cleaned-up", true); 
lockPref("browser.tabs.remote.autostart", false);
lockPref("browser.tabs.loadInBackground", false);

Отсутствует

 

№1283307-09-2018 03:12:08

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 62.0

Re: Custom Buttons

drage2
Спасибо.

:offtopic:
Только теперь дилемма у меня: нужен ли мне CB? Больше половины кнопок, что работали у меня на 59-й теперь не работают. Что-то сваял сам, что-то помогли для vertical_top_bottom_bar (особенно нужна была кнопка, выводящая окно Outlook на передний план, там собираю почту; exe-шник сделал на AutoIt). Осталась пара хотелок, но из-за них ставить CB... Вот сижу, чешу репу, мучаюсь сомнениями...:D

Отсутствует

 

№1283407-09-2018 07:47:48

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

xrun1
No women no cry, нет СВ нет браузера!
Автоматически открывать папки закладок при наведении мышки на папку на панели закладок.
Вещь не слабая в 60 работает....browserPlacesViews.js - в 61-62 не хило попилили...Это к спецам надо.

Отредактировано drage2 (07-09-2018 11:42:26)

Отсутствует

 

№1283508-09-2018 12:55:27

Три рубля
Участник
 
Группа: Members
Откуда: Воронежская область
Зарегистрирован: 27-12-2014
Сообщений: 67
UA: Yandex 18

Re: Custom Buttons

Позволю себе повторить свой вопрос:

Три рубля пишет

Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?

Отсутствует

 

№1283608-09-2018 14:30:13

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

Re: Custom Buttons

xrun1 пишет

Твой config.js надо добавлять в этом случае по принципу "кашу маслом не испортишь"

Нет, если подходит сам принцип правки omni.ja, то следует
отдать предпочтение ему и мой config.js не использовать.
Просто потому, что в коде могут быть косяки (и уже бывали).

xrun1 пишет

Осталась пара хотелок

Там странное «Можно ли сделать с помощью css следующие 2 вещи».
Можно вот ровно на столько, насколько и vertical_top_bottom_bar.
Но получится ли ...

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/browser.xul) {
    #PlacesToolbarDropIndicator {
        --code:(bar => {
            var listener = {
                id: undefined,
                handleEvent(e) {this[e.type](e);},
                events: ["mouseover", "popuphidden"],
                get chevron() {
                    delete this.chevron;
                    return this.chevron = document.getElementById("PlacesChevron");
                },
                listen(ind) {
                    bar.addEventListener(this.events[ind], this);
                    bar.removeEventListener(this.events[+!ind], this);
                },
                mouseover(e) {
                    if (!e.target.matches("[container]:not([open])")) return;

                    var button = e.target;
                    if (this.id) this.id = clearTimeout(this.id);
                    this.id = setTimeout(btn => {
                        this.id = undefined;
                        if (!btn.matches(":hover:not([open])")) return;

                        if (this.chevron.open) this.chevron.open = false;
                        this.listen(1);
                        btn.open = true;
                    }, 500, button);
                },
                popuphidden(e) {
                    if (e.target.parentNode.parentNode != bar) return;
                    var btn = bar.querySelector("[container]:not([open]):hover");
                    if (!btn || btn.contains(e.target)) this.listen(0);
                }
            };
            listener.listen(0);
            this.destructor = () => listener.events.forEach(
                type => bar.removeEventListener(type, listener)
            );
        })(parentNode.nextSibling);
        -moz-binding: url('data:text/xml,\
            <bindings xmlns="http://www.mozilla.org/xbl"><binding id="autobfolders"><implementation>\%0A\
                <constructor>eval(getComputedStyle(this).getPropertyValue("--code"));</constructor>\%0A\
                <destructor>destructor();</destructor>\%0A\
            </implementation></binding></bindings>'
        ) !important;
    }

    #searchbar image.search-go-button {
        -moz-binding: url('data:text/xml,\
            <bindings xmlns="http://www.mozilla.org/xbl"><binding id="sbwclear"><implementation>\%0A\
                <constructor>\%0A\
                    var bar = this.bar = closest("searchbar");\%0A\
                    this.handleEvent = () => {\%0A\
                        if (bar.value) bar.value = "", bar.dispatchEvent(new InputEvent("input"));\%0A\
                    }\%0A\
                    bar.addEventListener("wheel", this);\%0A\
                </constructor>\%0A\
                <destructor>this.bar.removeEventListener("wheel", this);</destructor>\%0A\
            </implementation></binding></bindings>'
        ) !important;
    }
}

Три рубля пишет

Позволю себе повторить свой вопрос

Из вопросного там только хороший скриншот проблемы.
Номера версий и ссылки, видимо, сожрал барсук.

Я проверил на портабельном WF 56.2.2 c этого сайта,
и, например, последняя оверлейная версия CB 0.0.5.8.9.6 отсюда
выглядит вполне рабочей.

А лечится, ну это смотря насколько запущено.
Как минимум: удалить CB, закрыть WF, удалить из профиля папку custombuttons, запустить WF, установить CB.
Может ещё папку startupCache удалть. Так же возможны непонятки из-за xulstore.json и browser.uiCustomization.state
тогда дополнительный рестарт или правка.

Вообще, ещё у Sonny есть форк CB специально под Waterfox,
но там надо недостающие <!ENTITY> в ru editor.dtd добавлять, так что ...

Отсутствует

 

№1283708-09-2018 22:24:46

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 60.0

Re: Custom Buttons

xrun1
Есть одно замечание если через omni.ja, то на тестовом профиле не подхватывает правку. (это код батника)

Выделить код

Код:

\\start firefox -no-remote -p "имя профиля"
\\start .\Firefox\Firefox.exe -profile .\p1
start .\Firefox\Firefox.exe -no-remote -profile .\p1

Если config.js то подхватывает, там и там.
Так что мне удобнее пока через config.js.
И да авторство не мое omni.ja... автор не захотел в свое время делиться я через других выпросил можно сказать.

Добавлено 08-09-2018 22:38:54
Dumby
Пашет, проверил, вот еще вариант сырой) ну так как я не программист...
CustomButtons

AutoPopup

Выделить код

Код:

/*Initialization Code*/
// ==UserScript==
// @name AutoPopup.uc.js
// @description Auto popup menulist/menupopup/Panelpopup
// @compatibility Firefox 2.0+
// @author GOLF-AT
// @version 2.0.0.20131119

(function(){
   var PopElt=null;var DropElt=null;
   var PopTimer=null;var HideTimer=null;
   var AlwaysPop=false;var nDelay=600;
   
   function IsNewMenuBtn(elt){try{return elt.id=='PanelUI-menu-button';}catch(e){return false;}}
   
    function AutoPopup()
    {
        PopTimer = null;
        if (DropElt) {
            if (DropElt.localName=='dropmarker' ||
                IsNewMenuBtn(DropElt))
                PopElt = DropElt;
            else {
                var v = null;
                try {
                    v = DropElt.ownerDocument.
                        getAnonymousNodes(DropElt);
                }catch(ex) {}
                if (v!=null && v.length!=0 && v[0].
                    localName=='menupopup')
                    PopElt = v[0];
                else
                    PopElt=DropElt.childNodes[0];
            }
   
            if (IsNewMenuBtn(PopElt)){PanelUI.show();return;}
            try{PopElt.openPopup(PopElt.parentNode,'after_start');
            }catch(e){PopElt=null;}
        }
    }
   
    function HidePopup()
    {
        try {
            if (PopElt.localName=='dropmarker')
                PopElt.parentNode.closePopup();
            else if (IsNewMenuBtn(PopElt))
                PanelUI.hide();
            else
                PopElt.hidePopup();
        }catch(e) {}
        HideTimer = null; DropElt = null;
        PopElt = null;
    }
   
    function MouseOver(e)
    {
        if (!AlwaysPop && !document.hasFocus())
            return;
        if (e.target.getAttribute('cb-name') == "Proxy") return;
        if (e.target.getAttribute('cb-name') == "Merge Custom Button") return;
        if (e.target.getAttribute('cb-name') == "Session Bookmarks") return;
   
        if (IsButton(e.target)) {
            type = e.target.getAttribute('type');
            if (type == 'menu-button') {
                if (e.originalTarget!=e.target)
                    return;
            }
            /*else {
                if (type != 'menu') return;
            }*/
        }
   
        if (HideTimer) {
            window.clearTimeout(HideTimer);
            HideTimer = null;
        }
        try {
            if ('PopupAutoComplete'==e.target.id.
                substr(0,17))
                return;
            for(var elt=e.target; elt!=null; elt=
                elt.parentNode) {
                if (elt.localName=='popup' || elt.
                    localName=='menupopup')
                    return;
            }
        }catch(ex) {}
   
        if (IsNewMenuBtn(PopElt)) {
            if (e.target != PopElt) HidePopup();
        }
        else if (PopElt != null) {
            if (DropElt!=null && e.target==DropElt)
                return;
            try {
                if (PopElt.localName != 'dropmarker'
                    ) {
                    for(var elt=e.target; elt!=null;
                        elt=elt.parentNode) {
                        if (elt == PopElt) return;
                    }
                }
            }catch(ex) {}
            HidePopup();
        }
        DropElt = e.target;
        PopTimer = setTimeout(AutoPopup, nDelay);
    }
   
    function MouseOut(e)
    {
        if (PopTimer) {
            window.clearTimeout(PopTimer);
            PopTimer = null;
        }
        if (!HideTimer && PopElt && !IsNewMenuBtn(e.
            target))
            HideTimer = window.setTimeout(HidePopup,
                500);
    }
   
    function IsButton(elt) {
        try {
            return elt.localName=='toolbarbutton' || elt
                .localName=='button';
        }catch(e) { return false; }
    }
   
    function IsMenuButton(elt) {
        if (IsNewMenuBtn(elt)) return true;
   
        if (!IsButton(elt)) return false;
        for(var i=0; i<2; i++) {
            try {
                var nodes = i==0x01 ? elt.childNodes : elt.
                    ownerDocument.getAnonymousNodes(elt);
                if (nodes!=null && nodes.length && nodes[0]
                    .localName=='menupopup')
                    return true;
            }catch(e) {}
        }
        return false;
    }
   
    function EnumElement(elt) {
        try {
            if (elt.localName == 'prefpane') {
                elt.addEventListener('paneload', function(e) {
                    setTimeout(function() { EnumElement(e.
                        target); }, 100);
                    }, false);
            }
            else if(elt.id=='sidebar' && !elt.hasAttribute(
                'AutoPopup')) {
                elt.setAttribute('AutoPopup', true)
                elt.addEventListener('SidebarFocused',
                    function(e) { EnumElement(elt); }, false);
            }
            else if(elt.id == 'editBookmarkPanel')
                return;
        }catch(e) {}
   
        for(var i=0; i<2; i++) {
            var nodes = null;
            try {
                if (elt.localName == 'browser') {
                    i = 1;
                    nodes = elt.contentDocument.childNodes;
                }
                else
                    nodes = i==0x01 ? elt.childNodes : elt.
                        ownerDocument.getAnonymousNodes(elt);
            }catch(e) { nodes = null; }
            if (nodes == null) continue;
   
            for(var n=0; n<nodes.length; n++) {
                try {
                    var node = nodes[n];
                    if ('PopupAutoComplete'==node.getAttribute(
                        'id').substr(0,17) || 'menupopup'==node
                        .localName || node.localName=='popup')
                        ;
                    else if (node.localName != 'dropmarker') {
                        if (node.localName=='menu' && 'menubar'
                            ==node.parentNode.localName)
                            ;
                        else if(!IsMenuButton(node))
                            node = null;
                    }
                    else if(node.getAttribute('type')=='menu') {
                        node = node.parentNode;
                        if (!node.firstChild || node.firstChild.
                            localName!='menupopup')
                            continue;
                    }
                    if (node == null) {
                        EnumElement(nodes[n]); continue;
                    }
                    if (node.hasAttribute('command')) continue;
   
                    addEventListener('mouseout', MouseOut,
                        false, node);
                    addEventListener('mouseover',MouseOver,
                        false, node);
                }catch(e) {}
            }
        }
    }
    setTimeout(function() { EnumElement(document); }, 1200);
})();


+ этот код

Выделить код

Код:

//Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ...............
addEventListener('mouseover', (e, targ = e.target)=> {if ( targ.getAttribute('type') != 'menu' || (document.querySelectorAll('[open^="true"]').length > 0
&& !document.getElementById('PlacesChevron').hasAttribute('open')) ) return;document.getElementById('PlacesChevronPopup').hidePopup();
setTimeout(()=> {if ( !targ.f ) try { targ.children[0].openPopup //showPopup
(targ, -1, -1, 'popup', 'bottomleft', 'topleft') } catch(e) {};}, 500, targ.f = false);
targ.onmouseleave =()=> { targ.f = true; targ.onmouseleave = null };}, false, document.getElementById('PlacesToolbar'));


Работает на любых кнопках+(любые почти панели), если заменить showPopup на openPopup.
В общем очень удобно но работает криво! ну не красиво открывает меню, вот бы его поправить.
П.С у меня фф62.

Отредактировано func4ptch4 (09-09-2018 21:06:55)

Отсутствует

 

№1283809-09-2018 03:25:04

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 62.0

Re: Custom Buttons

Dumby пишет

Но получится ли ...

Всё получилось в лучшем виде! Спасибо!
func4ptch4
".\p1 - кавычки не хватает. У меня все тестовые профили срабатывают, правда батник конвертнут в exe.

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

Код для кнопки у меня был. Сейчас поменял showPopup на openPopup - заработал.
:offtopic:
Вот забросит CB Dumby и загнётся дополнение, умрут все кнопки. Вот я и готовлюсь хоть что-то стилями исправить. Там-сям спрашиваю, читаю, что могу - сам делаю.

Отсутствует

 

№1283909-09-2018 12:43:06

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 395
UA: Firefox 52.0

Re: Custom Buttons

Подскажите, как назначить свой клик на PanelUI-button, с другими кнопками это прокатывает, а с этой выполняется мой код, плюс открывается меню PanelUI…
нужно, чтобы меню PanelUI открывалось правой кнопкой мыши, а на левую назначить своё действие.

Выделить код

Код:

// click PanelUI-button - своё действие, клик правой кнопкой - открыть меню PanelUI
addEventListener("click", function(event) {
    if(event.button == 0) {
        SidebarUI.toggle("viewHistorySidebar")
    } else if(event.button == 2)
//     открыть меню PanelUI
}, false, document.getElementById("PanelUI-menu-button") );

Отсутствует

 

№1284009-09-2018 16:58:44

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

Re: Custom Buttons

func4ptch4 пишет

если заменить showPopup на openPopup.
В общем очень удобно но работает криво! ну не красиво открывает меню

Заменить-то заменил, но вызываешь openPopup() с аргументами,
которые остались от showPopup, вот и криво.

Теперь замени -1,-1,'popup','bottomleft','topleft' на "after_start"
и смотри, открывает ли красивее.

Dobrov пишет

нужно, чтобы меню PanelUI открывалось правой кнопкой мыши, а на левую назначить своё действие.

Так подойдёт?

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

Выделить код

Код:

(btn => {
    addEventListener("mousedown", e =>
        e.button || e.stopPropagation() || SidebarUI.toggle("viewHistorySidebar")
    , true, btn.parentNode);

    addEventListener("contextmenu", e =>
        e.ctrlKey || e.preventDefault() || PanelUI.show(e)
    , false, btn);

})(document.getElementById("PanelUI-menu-button"));

Отсутствует

 

№1284109-09-2018 17:48:05

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 395
UA: Firefox 52.0

Re: Custom Buttons

Dumby - спасибо, вариант с "mousedown" работает.

у меня PanelUI-menu на месте кнопки закрытия окна, вне фокуса иконка "крестик", при наведении на кнопке родная иконка меню.
Это для неопытных юзеров, по левому клику можно закрыть браузер, продвинутые почитают подсказку и для показа меню сделают правый клик.

Три рубля пишет

Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?

Советую перейти на Basilisk, он быстрей и корректней WaterFox будет https://rubrowsers.ru/news/basilisk

Отредактировано Dobrov (09-09-2018 18:44:39)

Отсутствует

 

№1284209-09-2018 17:53:25

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

Dumby
Нет слов, кнопки шикарные, жаль "обновить иконки закладок" нет. Из контекста тоже не желательно. Просто кнопка ...В 61 - работает, в 62 -"молчаните ягнят"...

Отсутствует

 

№1284309-09-2018 21:08:36

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 62.0

Re: Custom Buttons

Dumby
AutoPopup обновил код выше, можешь проверить? просто боюсь что не так сделал.
Хотя стало красивее!) спасибо.

И надо ли менять код в коде ниже. Вроде он подхватывает везде, и менять как я понял необязательно.
//Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ...............

Отредактировано func4ptch4 (09-09-2018 21:13:26)

Отсутствует

 

№1284410-09-2018 10:31:03

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

Dumby

Dumby пишет

Так подойдёт?
скрытый текст

Пойдет,конечно, жаль tooltip - пришлось в русификатор лезть, appmenu.tooltip - в самой кнопке не могу сделать...
Левой я вкладку закрываю

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

Выделить код

Код:

<!ENTITY appmenu.tooltip                     "Закрыть вкладку/Меню">

Отсутствует

 

№1284510-09-2018 12:11:22

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 395
UA: Firefox 52.0

Re: Custom Buttons

Доработал кнопку Compact меню - ЛКМ: обычное меню + Журнал, ПКМ: меню PanelUI. Кроме того, код дополняет кнопку PanelUI-button.
Вопрос: сейчас у меня код создания меню сразу после проверки кнопок, а если вывести код создания меню в отдельную функцию, то это не работает. :angry:
Сейчас так:
    if(event.button == 0) {
        // Главное меню
        if (event.target && event.target != this) return;
        …
Желательно сделать так:
    if(event.button == 0) {
        CreateMenu; // функция создания меню

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAPs0lEQVRo3tWae5RdZXnGf+/37X3uM2euSRhDZHEJioAEpBKQAmqpIGRVBWuxLqxU8FKKq96WWgVa64VevNQolQZWRaWKyxbQxaJeEokCKRJKRMslERJyT2bmnJlz3/v73v6xz1wSJskkcwbsXmufP/ba++z9fO/teZ/3s8z6EBETBICAKr8DhwAGMIKxRiwICjqb5w55ixhj1TtP+w9NKm/DTG9fmB/MiQkEFGmfTdI0yWE0JieV2b1i1iCVmICIEKcWXxtp0aiM0NjegCYA1ohVxXs9sGHkUMYVjFF1LswNZPpfvuLigZe/6bL8wlecYTPFRTZVSIuIGDx1UjiEIXbySvswscmzNroAg+sIYEWIsHRJlUVmB4NmL/l4R5yOh0eOLt379Jbfrv+vVetGv/Xs7vJzRjAgeFV/WKBFjCgqAv6oV119+Usv+NRn031Dx6lX1TgW9THiIxyGKgWWyuNcJrfx+sxPMEGKD9dWsiE+lRQtdA7WFhSHJSc1rs7eworMXaTNMKgFCcEoGqRUgpQ0qtRXPTR28/U/2HzD8HhtzBqxzqubFWgREVQ1zBQzL7vsG18fPHXFO+J6TTVueEQUjBFRqZMnJOYKs5K3mNtZmKsRh928u3wbv4xOpV/GcZiOuXa/GebUYAMXpNZwZvgwebMbNEXkM15VNbDemHxgtuyWTX9867OXPbRx1//MBPz5oMWIqFfyx2SPv/JH9xSPPv51USWKxARWRYwCBsUjnGA28gHz15xhHiLILyAMKqyqvo8vVv+CQVMiIuxo4ooIaWgKQVlit3JeeD+XpH/I0vAxAJwvqPfOhRmCmkuPXfTPT190/1N7Htgf+AyWFpM26q/+809+59UnL31rsfp4Kx+4FCgNzTDs+9noTyCKY96ln6OXPaQKgxRSLUbjIm8v30FJewiI5+TWB7K2waMITdLUNUVOmpwVPsRV2ds4OXwQrwW8N3EQumCkld119t//7/Ind4w+Y0TMRIzv81UTK/LRi46/9nOXF7/syiORtWE4dZu2TwsexuohVRcwWAgITJl7Gm/lk5W/pUfGcNh5LlfJAngMFc0TEPP27Hd4X+4LhOKI4jAO8wSrn/L3vfYfN7xBiGWinE1+mRERr+qXDHQvvP3KJXdknc97CkbJiJJh6syipBBJk0lZCqEgIog4bq29h2fcsaSk1XErHwg2CFlpYMXzi+hVPBG/kvNTPyFjWyZqSnzc4tTSrWPmifXPlh5vlzM1U6CTBbjqnIV/1ldkQRxrHIgTi+P5p0fwCUcRwRDT8t085Y4j/YIA3vdwWBRhgZRYG53Fx8b/Aa9gDIZWzHuX912LBDifuLeZ8PHYa2xsyJtO7b6cZowxYma73p6AlClxbvgANU0RdKg2H0mi65cyq1vnsLJ2LdaMG9cSzlgcnnP6McVlgBojxkwQTICTjsqfcMqC4BRixcjszZWQvxTvzK1iyOxiXAuERMzkJcL8MtiYgF5T4Zv1d7AhejWWSkzK8Nql3ee3rZyAngB48lDuJNISOo87HP6YWDtDn9nJZ7o+Rq8psVd7KGkXo9rNqHZT0m7K2k2rXXLm8zB4YgJuqV+TwFTPmYszy5JUrATTS9eCvF2C0VmR9ue/yOG1wLJwHd8qXsG6aDmjWqSmeaqap+rzNEjzZPwytvkhQqJ5i32HpWBq/KJyMg/aZbI8+yiLegpDYFHvfDD95mIuSM/FCAaP1zwDdheX2G/v4wuOACvj/LjxNj4yfhNpac5fWRODxlUajSZ32T9ged96MtZ3J3ZG9wGdz2Qtc3Q9g0c1xNH7vFizQL/ZgcXNX4YXg7oWUX2UgsAD9WVSj44iJbvNRMTuk6EP1o4dbgXdN3lBSioohnsal89fRE8Aru1FveLFssf18nDjZDLSZEbQnT4UcAQYKTPq+7lu7Ga+31xBXmr4Tr9aDD5uENX2gI/xYjkptYlYA9bVTwWZWupg34/Ujvmcx6AoVoZZ37qAT1VuYLsfmgeKKiDgmuO4ZqlNp6Hk8ryxsJqzMuu5t34x57sC4ND9QXfOwgahgRHl32rXsbJ2DQalu9OAxaA+wtVL+KgOE3xKkyXf1FrCxwdvIhzPsmN4EEkSWedBKwaRGnvcUXy6ej2rW6+hRyqTYkBnwAoo+FaFuFEGdVOA2yqLxbEzHgSf4919t/FwybSN4TsL2mMwUmdTfBLvH/sKu/0C+qVMTNCZbC3Jf2jcJG6OoXEjATsDY7biGfFFVFOIBkA8c0x3QseCiO1+iJ1+AX2mTKRBB2I2EWA1buJaFXxcT7LkAdoDRTB4qj5HS0PS+/UC8xDTIYPsIuPHiMS0rTOtHz9UVZx+v3rUR/i4iY9raNxK/kPMIUmywVPXNE1NkabaedC+HSuGCIAuKWNr22hKGmstYlKITSHGImLbFpJ9tQm0DTIBqi7CuybqIlA/ZfFZhokAsVqc2ueJREEnXNqYKs5nqfpucqZO0ZbJmzrDLo3xDTyNqY8Wg7TjUCZiVNuA1ScAJ5XbqWeOJCom1Pj91ymYK2CRJt8fu4Rvllcw7nNkTJMFdpS6ZjDi2+rG9Ic8qo7ndTUyzRoyd+KiKqQkIpSYhH7o3EF7DMbUeKS2jE/s+QBpaREQ451hc/QSMtLEHJBwCvNFvZNy5Ykx9Jhx8qbWJp5u7qBVBYhZW38VoBRMlVgDwJGm1XmaOatmRxFcwvjVcky4FWPqQBcyDbSZSyUBoeYzCODVTsbQiwFYUJoack3PnQzYEnVNc1rmCcCzP7s2c/AjQBm0o+1k8eIOMhPQaU7LPM5H+28hEM8ZmV+DhiC+M4lMJNG/T8/8hlCiI2rDZSq/thV1M4e2Uwgkpqk5fr/wM7668EaODnYljGy/fzVHHj8efI4zshv4vcyvGPE9pCQ6pP410WsbPJEGVHyOsi9Q8Xl8m0kdqeMJSkgMmuL8/M8PKEebuWXK5PeGga9wYuoZdsX9RATTtPGpubVpg3VYSr6bis8xYEsszz7GGws/45zsegKJqfos9giBGzwpaSWUVXMHJDLBXONINc3icBu3H/Vhbi+/mbur57E1WoQiZKSJlURYbWlAU1MM2lEu6lrLRfm1nJJ+moItoxIjatgeHc3H9/wlDzdOoWgqhzXxVAQrnoy0AJmci2unQSfAPaoZukyN9/d/nSuL/8ED9WWsqZ3JhuZSyr4Li+e4cA+vy61jRWENC1NbEmKjaSCF+jSqMBRu4eah67l6+2d4tLGUgpm9wqIIAXFCRg5BAoLOZE6fOK8vUjBVLuz6ERd2/ZiG66XkugglpteOYkwVNI36LjxKM3I0o5iWF5yCaprB1AifH/gbrtixkopmZyUiJrq7ISURWdMAzEGfCDpZMpIPNHjXBUBG6iwKk30nqgHOFbFG8T5mpOZoxMnHZqVOTlpUNc+T9SGe4zhSpoWPc9hZMjenhi5bo8tUmTaim1/Q7VkeIkkD327lmRiMJtcdjUgZrcXEHhBLUcZ40p3I3Y1LedKdyF4dYMT1kpIWoRx8xj1RKaQt8PfYMTIyYWmdf9CjdUfklHQgBEawBowkr/ZeiT00Y08zVrTdDxelxD2tS/ly9VrGNU+aFoHE5KU6rYIfGLBTg4ohLS1ib1kS7ADTwPnCQStA0CHfJhsKlaYncsnWDNivXZ7sygxpGmSkxTca7+RfaleRkTq9UprU0A6VvASlpSEDtsSJqWd4oH4aAKdnfp3QzhcikaGQDQ25lNKIYgqmldCPabFlxRMQY/Bs9Uezqv4u7mu8noJUJicgh1OPa5rlQ33/xC/qp1HxeYbC3Zyf+2/QzCEJTkflooG8MNws8KvqYoqmTIoWgsdjqfgC2/1RrI9O5/7Waxj2vXTJ+GE3JwExe1wfV/fcyYVdq/la6W20CLmq+D0Gwp14X3hhQYOhLxPzeH05/1p6Mxlpkjc1Ik3R0DQ1zeIx5KRGt1QOe7tVIDHDroeLC2v50MBX2dZ6KU+0juV9PXfwpz3fQ33+wIClQzR0Zlf3vL/vFlYu/Du6TJUt0RBNTSF4ClKhKOU2HT18Cw+7Hs7NPspnB28CHL+NlnBl9118eGAl3mcPFMntlDLVBpr9y87cc5rgfBdn53/OnS+5jj/pvpdxn6WlYXv/mT0sDVzagPf6Xs7LPsKXFt5I1kTguzkz8zgfGrgZ9VkE4eCtns5s6U5NLS0e77vpshVuXHATX1n4WRYGwwz7HjxCMMttGLY9e9rr+liRX8OXFt1IzjTxGgJKRuoYDZGD12UBcH5KSdgnpveUxmO02KHodgkL05ALCj/ljMwGbitfxnfH/pBhXyQvddISkQzKZb/Q08luLG9qfKT/Vq7q+TaeENXUZNwqZjYduLZBt2YEPdq0Y/jOBXpCTRXnuymYKtf1f43Luu7j38cu4ke1s3kuWoTHJK2o+GS0q0m33WvGubSwhmt6vsux6Sdwvqu9a8zPlJsO0WgLu8ebI+ARwQQTMjvAM3vrG11DsQajdE6wTNw0aUiGwm18cGAl18R38kjjJB5pvIKN0RIqPofFsSAY4eT0Rs7PPszR6U2oBnhfxB7pNq32qPKZUbcxocMiQRLLyfI9tbv5m80lP3psH73tqWbHhNrJhkRTOM1QMOOcV7if8wprEh2LoD2yiRK5VlN4X5gMlTm8V4iUhzZXH9wnkamqGsHsKVd2r9vSWNv2IM88HFPdWIDzBZwv4jUDalEN8T7fvpbG4I9YPppwbkHtUyNm+Gcbq2vaBnZmSuhLhr53PlZaVYkMjcgxn7sdE/C+rZfp5DWz37W5HLHiIgdrnip/f9dIeZcVrKpOkWOf7IeWux/befe6LZXVUYxtxepe4G2enTx8peGC8ZYfv/n+LZ+fnrvM9CRnBHGx4/ofbv0rp1ofrsa2Fav/fwU82aSgw9VYAyPccO/26x7dWt9kROxE7rL7ZXe1RuzmkdaOltNtl7yi5492j0feiJAORH6nwbenuM3I+72VmO5MYG+4d/u7v7hm963WYL1OZUM7gwKiRsQ++Gz1Ua/secNJxUsqDcdYwzsQrEGMyORLXvQzSU40I68jVedqLW8KaaMf+8G2d31hze7brJGgvdf10PU9uVnjN7+y58KbVixeNdQdLi43Yo0cao34wAjGvLi2V0Wdh9h7EdQUs4FUWn7kvd/ZfPl//qr80wkMB2m4ZgRunVe3qDsovufcxR98y2l9Vy/pZmFgVGOvoqovukdbk2zx2Fs3jbWbxu760potn/jl5samwEgQzwB4VkzOGrFeVVXx3blM11nH9p57+uLs2cf3B8d0ZVO9qhq8KIDFaDU2Y9tLje2/3llfv/bp0uqtw+PPCSrGiEzs4j/y5kEQayT43ctc+3YJVsRaOfQ2hv8Do2WtS9oaFfMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%7C%u0441%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0441%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%3A%0Afunction%20switch_tab_url%28url%29%20%7B%0A%09var%20aURI%20%3D%20url%3B%0A%09var%20tabOK%20%3D%20false%3B%20for%28%20var%20tab%20of%20gBrowser.tabs%29%20%09tab.linkedBrowser.currentURI.spec%20%3D%3D%20aURI%20%26%26%20%28%20tabOK%20%3D%20true%20%29%3B%0A%09if%20%28%20tabOK%20%29%20%7B%09//%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20%u043D%u0430%u0439%u0434%u0435%u043D%u0430%2C%20%u0441%u043D%u043E%u0432%u0430%20%u043F%u0435%u0440%u0435%u0431%u043E%u0440%20%u0432%u0441%u0435%u0445%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%u2026%0A%09%09for%28%20var%20tab%20of%20gBrowser.tabs%29%20%09tab.linkedBrowser.currentURI.spec%20%3D%3D%20aURI%20%26%26%20gBrowser.removeTab%28tab%29%3B%0A%09%7D%20else%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28aURI%29%3B%0A%7D%3B%0A%0A//%20Compact%20Menu%0Avar%20tooltips%20%3D%0A%22%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u0430%5Cn%22%20+%0A%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%5Cn%22%20+%0A%22%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u043D%u0430%u0436%u0430%u0442%u044C%2C%20%u0441%u0434%u0435%u043B%u0430%u0442%u044C%20%u0436%u0435%u0441%u0442%2C%20%u043E%u0442%u043F%u0443%u0441%u0442%u0438%u0442%u044C%22%3B%0A%0Aconst%20nameCB%20%3D%20%22%u0416%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%22%3B%0A%0Avar%20tooltipText%20%3D%0A%22%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u0430%5Cn%22%20+%0A%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%22%20+%0A%22%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%22%20+%0A%22%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u043D%u0430%u0436%u0430%u0442%u044C%2C%20%u0441%u0434%u0435%u043B%u0430%u0442%u044C%20%u0436%u0435%u0441%u0442%2C%20%u043E%u0442%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%5Cn%22%20+%0A%22%5Cn%22+%0A%22%20%u2022%20%u041B%u0435%u0432%u043E%3A%20%u043F%u0435%u0440%u0435%u0445%u043E%u0434%20%u041D%u0430%u0437%u0430%u0434%20%28%3D%3E%3A%20%u0412%u043F%u0435%u0440%u0451%u0434%29%5Cn%22%20+%0A%22%20%u2022%20R+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%20%28+-%29%5Cn%22%20+%0A%22%20%u2022%20M+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u21C4%5Cn%22%20+%0A%22%20%u2022%20L%3ER%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%28U%3A%20%u0421%u0442%u043E%u043F%29%5Cn%22%20+%0A%22%20%u2022%20UDU%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%5Cn%22%20+%0A%22%20%u2022%20DR%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u044D%u0448%5Cn%22%20+%0A%22%5Cn%22%20+%0A%0A%22%20%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u043E%u0431%u044A%u0435%u043A%u0442%u043E%u0432%20%u043C%u044B%u0448%u044C%u044E%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u0432%u0437%u044F%u0442%u044C%20%u0438%20%u0442%u0430%u0449%u0438%u0442%u044C%20%28%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0443%29%22%20+%0A%22%5Cn%22%3B%0A%0Avar%20tooltipSimple%20%3D%0A%22%20%u041C%u0435%u043D%u044E%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20Firefox%5Cn%22%20+%0A%22%5Cn%22+%0A%22%20%u0427%u0442%u043E%u0431%u044B%20%u0438%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%2C%20%u0432%u0440%u0430%u0449%u0430%u0439%u0442%u0435%5Cn%22%20+%0A%22%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%20%u043C%u044B%u0448%u0438%2C%20%u0437%u0430%u0436%u0430%u0432%20%u043F%u0440%u0430%u0432%u0443%u044E%20%u043A%u043D%u043E%u043F%u043A%u0443%5Cn%22%20+%0A%22%5Cn%22%20+%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043C%u044B%u0448%u0438%3A%20%u043F%u0435%u0440%u0435%u0442%u0430%u0449%u0438%u0442%u044C%20%u0438%20%u0431%u0440%u043E%u0441%u0438%u0442%u044C%5Cn%22%20+%0A%22%20%u2026%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0438%20%28L%20%u043B%u0435%u0432%u043E%2C%20U%20%u0432%u0432%u0435%u0440%u0445%u2026%29%22%20+%0A%22%5Cn%22%3B%0A%0A//%20%u0440%u0435%u0436%u0438%u043C%20%u0440%u0430%u0431%u043E%u0442%u044B%20%u043A%u043D%u043E%u043F%u043A%u0438%20-%20%u041F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0438%u043B%u0438%20%u042D%u043A%u0441%u043F%u0435%u0440%u0442%0Aconst%20SIMPLE%20%3D%20false%3B%0A%0Aif%20%28%20SIMPLE%20%29%0A%09tooltipText%20%3D%20tooltipSimple%3B%0A%0Avar%20tooltipEnd%20%3D%20%22%22%3B%0A//%20%27L%3CR%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A//%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A//%20%20%22%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u043C%u044B%u0448%u044C%u044E%20%28U%20-%20%u0442%u0430%u0449%u0438%u0442%u044C%20%u0432%u0432%u0435%u0440%u0445...%29%22%20+%20arr.join%28%22%5Cn%22%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%20this.tooltipText%20%3D%20tooltipText%20%7D%3B%0A%0Aif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%0A%0A//%20%u0418%u043A%u043E%u043D%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0A//%20this.setAttribute%28%22image%22%2C%20%22chrome%3A//branding/content/icon32.png%22%29%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%09if%28event.button%20%3D%3D%200%29%20%7B%20//%20%u041B%u041A%u041C%0A%0A%09%09if%28event.altKey%29%20%09//%20+Alt%0A%09%09%090%0A%09%09else%20if%28event.shiftKey%29%20//%20+Shift%0A%09%09%090%0A%09%09else%20if%28event.ctrlKey%29%20//%20+Ctrl%0A%09%09%09SidebarUI.toggle%28%22viewHistorySidebar%22%29%0A%09%09else%20%7B%20//%20%u043A%u043B%u0438%u043A%0A%09%09//%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%09%09if%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0A%09%09if%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09%09%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%09%09%7D%0A%09%09var%20ids%20%3D%20%5B%0A%09%09%09%22history-menu%22%2C%0A%09%09%09%22bookmarksMenu%22%2C%0A%09%09%09%22file-menu%22%2C%0A%09%09%09%22edit-menu%22%2C%0A%09%09%09%22view-menu%22%2C%0A%09%09%09%22tools-menu%22%2C%0A%09%09%09%22helpMenu%22%0A%09%09%5D%3B%0A%09%09var%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29.filter%28id%3D%3E%20%7Breturn%20%28id%20%21%3D%3D%20null%29%7D%29%3B%0A%09%09var%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0A%09%09var%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0A%09%09function%20appendMenus%28parent%29%20%7B%0A%09%09%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09%09%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09%09%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09%09//%20%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09//%20%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09//%20%09%09menu._placesView.uninit%28%29%3B%0A%09%09//%20%09%09delete%20menu._placesView%3B%0A%09%09//%20%09%7D%0A%09%09%7D%0A%09%09this.textContent%20%3D%20%22%22%3B%0A%09%09var%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09%09popup.position%20%3D%20%22after_start%22%3B%0A%09%09popup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0A%09%09popup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0A%09%09//%20popup.style.cssText%20%3D%20%22font-size%3A%20larger%3B%20%22%3B%0A%09%09popup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0A%09%09popup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09%09%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09%09%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09%09%09appendMenus%28menubar%29%3B%0A%09%09%7D%2C%20false%29%3B%0A%0A%09%09appendMenus%28popup%29%3B%0A%09%09popup.openPopup%28this%29%3B%0A%09%09%7D%0A//%20%u0421%u041A%u041C%20%u043A%u043B%u0438%u043A%0A%09%7D%20else%20if%28event.button%20%3D%3D%201%29%0A//%20%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u0440%u044B%u0442%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%0A%20%09%09document.getElementById%28%27History%3AUndoCloseTab%27%29.doCommand%28%29%0A%7D%3B%0A%0A//%20%u041F%u041A%u041C-%u043A%u043B%u0438%u043A%2C%20+%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0AaddEventListener%28%22contextmenu%22%2C%20event%20%3D%3E%20%7B%0A%09if%28%20%21event.metaKey%20%26%26%20%21event.altKey%20%29%20%7B%0A%09%09this.tooltipText%20%3D%20%27%27%3B%0A%09%09PanelUI.show%28event%29%3B%0A%09%09event.preventDefault%28%29%3B%0A%09%7D%0A%7D%2C%20false%2C%20this%29%3B%0A%0A%0A//%20%u0437%u0430%u0433%u0440%u0443%u0437%u0438%u0442%u044C%20css-%u0441%u0442%u0438%u043B%u044C%20%u0438%u0437%20%u0421%u043F%u0440%u0430%u0432%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0AaddDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28uri%2C%200%29%29%3B%0A%0Avar%20PanelUIHint%20%3D%0A%09%22%20%u2716%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%5Cn%22%20+%0A%09%22%20%u043F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%09%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%22%20+%0A%09%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%22%20+%0A%09%22%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%uD83D%uDDD5%20%u0421%u0432%u0435%u0440%u043D%u0443%u0442%u044C%22%3B%0A%0Avar%20element%20%3D%20document.getElementById%28%22PanelUI-menu-button%22%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0Aelement.onmouseover%20%3D%28%29%3D%3E%20%7B%20element.tooltipText%20%3D%20PanelUIHint%20%7D%3B%0A%0A//%20%u0434%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u043A%u043B%u0438%u043A%u0438%3A%0AaddEventListener%28%22mousedown%22%2C%20event%20%3D%3E%20%7B%0A%09if%28event.button%20%3D%3D%200%29%20%7B%20//%20%u041B%u041A%u041C%0A%09%09if%28event.altKey%29%20%09//%20+Alt%0A%09%09%090%0A%09%09else%20if%28event.shiftKey%29%20//%20+Shift%0A%09%09%090%0A%09%09else%20if%28event.ctrlKey%29%20//%20+Ctrl%0A%09%09%09SidebarUI.toggle%28%22viewHistorySidebar%22%29%0A%09%09else%20//%20%u043A%u043B%u0438%u043A%0A%09%09%09close%28%29%0A%09%7D%20else%20if%28event.button%20%3D%3D%201%20%26%26%20%21event.altKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.ctrlKey%29%20%7B%0A%09%09window.minimize%28%29%20//%20%u0421%u041A%u041C%0A%09%7D%0A%09event.stopPropagation%28%29%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0441%20%u043B%u044E%u0431%u044B%u043C%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u043C%0A%7D%2C%20true%2C%20element.parentNode%29%3B%0A%0AaddEventListener%28%22contextmenu%22%2C%20event%20%3D%3E%20%7B%0A%09if%28%20%21event.altKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%29%20%7B%0A%09%09element.tooltipText%20%3D%20%27%27%3B%0A%09%09PanelUI.show%28event%29%3B%0A%09%7D%0A%09event.preventDefault%28%29%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0441%20%u043B%u044E%u0431%u044B%u043C%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u043C%0A%7D%2C%20false%2C%20element%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B/*AGENT_SHEET*/%0A%0A/*%20%u043A%u043D%u043E%u043F%u043A%u0430%3A%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20*/%0A%23PanelUI-menu-button%3Anot%28%3Ahover%29%20.toolbarbutton-icon%20%7B%20/*%20Close%20Button%20*/%0A%09list-style-image%3A%20url%28%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMA%20AA7EAAAOxAGVKw4bAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAKJQTFRF%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoBElOgAAADZ0%20Uk5TAAEEBQYKCw0TFBYXISQuMDIzNEBBREZLWFlnaGl3eXx+f4uMjZCRnJ2foKipq6yztbm6u76/%20C39FMwAAALlJREFUOI3VkkcSwjAMRRXTIfRO6L2XxO/+V2PBDGBD4i1opT9PY6t8kT8K1TV1V5na%20G9F7130mnlFQBd1+ybaGqvlEAFHjWR7CwOrBG8O1/Mj9C0w9q0DUHM4lEZHCEVapzzkyG9jnRLJb%202OU+uUj+AOu0WsKp+I0//p7N4OJ/5yKVG0BUi+MiLQ26Fc+lqUF34nklBIjqcdzVZP6YPKZrUWqR%20vGrnsYb2uQOTOw1jW65nW85p2t+OO5s+HGmx0zpjAAAAAElFTkSuQmCC%27%29%20%21important%3B%0A%09-moz-image-region%3A%20auto%20%21important%3B%20%7D%0A%23PanelUI-menu-button%3Anot%28%3Ahover%29%20.toolbarbutton-icon%20%7B%20background-color%3A%20%23f8cccd%20%21important%3B%20%7D%20/*%20%u0444%u043E%u043D%20%u0438%u043A%u043E%u043D%u043A%u0438%20*/%0A%23PanelUI-button%20.toolbarbutton-icon%20%7B%20min-width%3A%2026px%20%21important%3B%20%7D%0A%23PanelUI-menu-button%3Ahover%7B%20cursor%3A%20pointer%3B%20%21important%3B%20%7D%0A%23PanelUI-button%20%7B%0A%09margin-top%3A%200px%20%21important%3B%20margin-left%3A%200px%20%21important%3B%20margin-right%3A%20-5px%20%21important%3B%0A%09right%3A%200px%3B%20/*%20Move%20it%20to%20right%20side%20%28adjust%20for%20caption%20buttons%29%20*/%0A%09border-left%3A%20none%20%21important%3B%20/*%20Remove%20menu%20border%20*/%0A%7D%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№1284610-09-2018 13:42:46

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

PanelUI-button - своё действие

Левый клик- about:addons

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

Выделить код

Код:

(btn => {
    addEventListener("mousedown", e =>
        e.button || e.stopPropagation() || BrowserOpenAddonsMgr()
    , true, btn.parentNode);

    addEventListener("contextmenu", e =>
        e.ctrlKey || e.preventDefault() || PanelUI.show(e)
    , false, btn);

})(document.getElementById("PanelUI-menu-button"));
// Подсказка кнопки//
var PanelUIHint = "Л: About:Addons\nП: Oткрыть Meню";
    

var element = document.getElementById("PanelUI-menu-button");

element.onmouseover =()=> { element.tooltipText = PanelUIHint };

Отредактировано drage2 (10-09-2018 13:45:41)

Отсутствует

 

№1284710-09-2018 13:48:38

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

Re: Custom Buttons

func4ptch4 пишет

AutoPopup обновил код выше, можешь проверить? просто боюсь что не так сделал.

При замене синтаксис не пострадал.

func4ptch4 пишет

И надо ли менять код в коде ниже. Вроде он подхватывает везде, и менять как я понял необязательно.

Кто «он»? Код ниже? Он и сам необязателен.
AutoPopup раскрывает в том числе и папки закладок на панели закладок.

И безотносительно: документация говорит, что метод openPopup
принимает в качестве второго аргумента строку, указывающюю позицию,
или объект, в котором, соответствующим образом именованые свойства,
могут выступать вторым и последующими аргументами.

Но если ты хочешь, чтобы вместо этого у тебя там торчала минус единица, то пожалуйста.
Ошибка не образуется, и это Custom всё ещё Buttons.

drage2 пишет

tooltip - пришлось в русификатор лезть, appmenu.tooltip - в самой кнопке не могу сделать...

Не понял. Что случилось?

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

Выделить код

Код:

document.getElementById("PanelUI-menu-button").setAttribute(
    "tooltiptext", "Хоть горшком назови,\nтолько в печку не ставь."
);

Dobrov пишет

если вывести код создания меню в отдельную функцию, то это не работает

Ну, например, определи эту функцию как Arrow function.
У них нет своего this, и на верхнем уровне this будет ссылаться на кнопку.

var CreateMenu = event => {
    // Главное меню
    …
}

Отсутствует

 

№1284810-09-2018 18:52:54

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 62.0

Re: Custom Buttons

Dumby
Почему эта зараза дополняет закладку по умолчанию в "другие закладки"?

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

Выделить код

Код:

// Дополнительные возможности в строке адреса ...............
addEventListener("click", e=> {
   e.preventDefault();
   e.stopPropagation();
   
      if ( e.button == 0 ) 
      
      PlacesCommandHook.bookmarkPage(gBrowser.selectedBrowser, true);
      
      
        document.getElementById("identity-box").style.background = "blue";
        setTimeout(()=> document.getElementById("identity-box").style.background = "", 300);
        
      
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ
   e.preventDefault();
        BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "generalTab" : "generalTab"));
       oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };             
        
        }
        
}, true, document.getElementById("identity-icon") );

var PanelUIHint = "Л: Добавить закладку\nП: O Странице";
    

var element = document.getElementById("identity-icon");

// Подсказка кнопки
element.onmouseover =()=> { element.tooltipText = PanelUIHint };

Отсутствует

 

№1284910-09-2018 20:15:12

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

Re: Custom Buttons

drage2
Что значит почему? Так сделано.
А почему у них так сделано, это ты у них спроси.

PlacesCommandHook.bookmarkPage пишет

async bookmarkPage(aBrowser, aShowEditUI, aUrl = null, aTitle = null) {
    // If aUrl is provided, we want to bookmark that url rather than the
    // the current page
    let isCurrentBrowser = !aUrl;
    let url = aUrl ? new URL(aUrl) : new URL(aBrowser.currentURI.spec);
    let info = await PlacesUtils.bookmarks.fetch({ url });
    let isNewBookmark = !info;
    if (!info) {
      let parentGuid = PlacesUtils.bookmarks.unfiledGuid;
      ...

Отсутствует

 

№1285011-09-2018 09:01:41

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Custom Buttons

Dumby
Это понятно, есть другая,там подрихтовано и этот косяк исправлен, хотел и эту подрихтовать да не выходит

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

Выделить код

Код:

// Дополнительные возможности для значка идентификации сайта в строке адреса .....
 (identBox => {
    var tip = "Л: Добавить закладку\nП: О странице";

    var icon = gIdentityHandler._identityIcon;
    addEventListener("mouseenter", () => icon.setAttribute("tooltiptext", tip), false, icon || 1);
    addDestructor(() =>
        icon.setAttribute("tooltiptext", gNavigatorBundle.getString("identity.icon.tooltip"))
    );
    var listener = {
        handleEvent(e) {
            e.ctrlKey || e.shiftKey || e.detail > 1 || this[e.type](e);
        },
        click(e) {
            if (e.button || !identBox.contains(e.target)) return;
            e.stopPropagation();
            this.bookmarkCurrentPage(gBrowser.selectedBrowser, true);
            identBox.setAttribute("style", "background:red;");
            setTimeout(() => identBox.removeAttribute("style"), 300);
        },
        contextmenu(e) {
            e.preventDefault();
            var url = gBrowser.currentURI.spec;
            BrowserPageInfo(url, url.startsWith("http") ? "generalTab" : "generalTab");
        },
        get bookmarkCurrentPage() {
            delete this.bookmarkCurrentPage;
            return this.bookmarkCurrentPage = eval(`(${
                PlacesCommandHook.bookmarkPage.toSource()
                    .replace("async", "$& function")
                    .replace("unfiledGuid", "menuGuid")
            })`).bind(PlacesCommandHook);
        }
    };
    addEventListener("click", listener, true, identBox.parentNode);
    addEventListener("contextmenu", listener, false, identBox);
})(document.getElementById("identity-box") || 1);

Отсутствует

 

Board footer

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