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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№1272622-07-2018 22:27:41

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

Re: Custom Buttons

firepox
Вот кнопка поправленная gyra: Save snapshot to html для FF57+

Отсутствует

 

№1272725-07-2018 00:08:09

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

Re: Custom Buttons

Господа, на мой пост №12719 на предыдущей странице никто не ответил, поэтому попрошу еще раз.
Можно подправить кнопку Find+ ? Счетчик совпадений  перестал показывать совпадения в инпутах и textarea, хотя подсветка найденного работает. В консоли при этом ошибка TypeError: findbarFinder._getEditableNode is not a function

Отсутствует

 

№1272825-07-2018 07:30:29

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 71
UA: Firefox 62.0

Re: Custom Buttons

toxa
только это
http://forum.mozilla-russia.org/viewtopic.php?pid=759770#p759770

скрытый текст
((bar, button = true, insertAtTop = true, ctrlFcloseFinbar = false) => ({
    init(parent) {
        var has = bar = parent.querySelector("#appcontent > findbar");
        has || this.initFinbar(parent);
        var lo = bar.linkedObject;
        lo.listenCtrlF = ctrlFcloseFinbar
            ? listen => listen
                ? addEventListener("keydown", lo, true)
                : removeEventListener("keydown", lo, true)
            : () => {};
        has && !bar.hidden && lo.listenCtrlF(true);
        if (button) self._handleClick = () => bar.hidden
            ? bar.startFind(bar.FIND_NORMAL)
            : bar.collapsed || bar.close();
        addDestructor(lo.destroy, lo);
    },
    destroy(reason) {
        if (reason[5] != "e") return;
        bar.close();
        bar._browser = {};
        bar.remove();
        this.setProgressListener(false);
        for(var key of ["gFindBar", "gFindBarInitialized"])
            Object.defineProperty(window, key, this[key]);
        gBrowser[this.gBrKey] = this[this.gBrKey];
        Services.ppmm.removeDelayedProcessScript(this.url);
        Services.ppmm.loadProcessScript("data:," + encodeURIComponent(`
            Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_DEFAULT
            && Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_CONTENT
            || (nsvo => {
                var proto = nsvo.Finder.prototype;
                if ("_requestMatchesCount" in proto) {
                    proto.requestMatchesCount = proto._requestMatchesCount;
                    delete proto._requestMatchesCount;
                }
            })(Cu.import("resource://gre/modules/Finder.jsm", {}));`
        ) , false);
    },
    initFinbar(parent) {
        for(var tab of gBrowser.tabs) {
            if (!tab._findBar) continue;
            tab._findBar.browser = null;
            tab._findBar._browser = {};
            tab._findBar.remove();
            delete tab._findBar;
        }
        bar = document.createElement("findbar");
        var p = new Proxy({}, {get: () => () => {}});
        bar._browser = {finder: p, messageManager: p};
        parent.insertBefore(bar, insertAtTop ? parent.firstChild : null);
        bar.linkedObject = this;

        ["gFindBar", "gFindBarInitialized"].forEach((key, ind) => {
            this[key] = Object.getOwnPropertyDescriptor(window, key);
            delete window[key];
            window[key] = ind ? true : bar;
        });
        var key = "getCachedFindBar" in gBrowser ? "getCachedFindBar" : "getFindBar";
        this[this.gBrKey = key] = gBrowser[key];
        gBrowser[key] = () => bar;
        [
            "close", "startFind", "onMatchesCountResult",
            "_updateMatchesCount", "_onBrowserKeypress", "receiveMessage"

        ].forEach((key, ind) => {
            var func = bar[key].bind(bar);
            bar[key] = ind
                ? (...args) => this[key](...args) || func(...args)
                : (...args) => func(...args) || this[key](...args);
        });
        this.url = "data:," + encodeURIComponent(`
            Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_DEFAULT
            && Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_CONTENT
            || (nsvo => {
                var proto = nsvo.Finder.prototype;
                if ("_requestMatchesCount" in proto) return;
                proto._requestMatchesCount = proto.requestMatchesCount;
                proto.requestMatchesCount = ${
                    this.newRequestMatchesCount
                }
            })(Cu.import("resource://gre/modules/Finder.jsm", {}));`
        );
        delete this.newRequestMatchesCount;
        Services.ppmm.loadProcessScript(this.url, true);
    },
    newRequestMatchesCount: async function requestMatchesCount(aWord, aLinksOnly) {
        if (typeof aLinksOnly != "boolean") {

            var {linksOnly, data} = aLinksOnly;
            aLinksOnly = linksOnly;

            this.entireWord = data.entireWord;
            this.caseSensitive = data.caseSensitive;
            this.onModalHighlightChange(data.useModalHighlight);
            this.onHighlightAllChange(data.highlightAll);
            data.highlightAll && await this.highlighter.highlight(true, aWord, linksOnly);
            this._iterator && this._iterator.reset();
            var obj;
            Object.defineProperty(this, "_currentMatchesCountResult", {
                configurable: true, enumerable: true,
                get: (val = obj) => {
                    if (val) {
                        if (!val.total) val.total = new Number(0);
                        val.currentFound = val._currentFound;
                    }
                    return obj = val;
                },
                set: val => {
                    if (val) return obj = val;
                    delete this._currentMatchesCountResult;
                    return obj = this._currentMatchesCountResult = val;
                }
            });
            var lfr = this._lastFindResult;
            lfr !== null && lfr != Ci.nsITypeAheadFind.FIND_NOTFOUND
            || Object.defineProperty(this, "_lastFindResult", {
                configurable: true, enumerable: true, get: () => null,
                set: val => {
                    if (val == Ci.nsITypeAheadFind.FIND_WRAPPED)
                        val = Ci.nsITypeAheadFind.FIND_FOUND;
                    delete this._lastFindResult;
                    return this._lastFindResult = val;
                }
            });
        }
        this._requestMatchesCount(aWord, aLinksOnly);
    },

    close() {
        bar.collaped = false;
        this.setProgressListener(false);
        this.setBrowser(null, null);
    },
    startFind() {
        if (this.maybeCollapse(gBrowser.selectedBrowser))
            return true;
        if (bar.hidden)
            this.setBrowser(300),
            this.setProgressListener(true);
        else if (!ctrlFcloseFinbar)
            setTimeout(() => this.updateMatchesCount(), 100);
    },
    onMatchesCountResult(res) {
        if (!("currentFound" in res) || res.total == -1 || res.currentFound)
            return;

        bar._foundMatches.value = `${+res.total || "Нет"} совпадени${
            bar.pluralForm.get(res.total, "е;я;й")
        }.`;
        bar._foundMatches.hidden = false;
        return true;
    },
    _updateMatchesCount() {
        return true;
    },
    _onBrowserKeypress(e) {
        if (!bar.hidden) return;
        if (!e.charCode) return true;
        this.setBrowser(300);
        this.setProgressListener(true);
    },
    receiveMessage(msg) {
        msg.target = bar._browser;
    },

    progressListenerAdded: false,
    setProgressListener(add) {
        if (add) {
            if (this.progressListenerAdded) return;
            this.progressListenerAdded = true;
            gBrowser.addProgressListener(this);
            this.listenCtrlF(true);
        } else {
            if (!this.progressListenerAdded) return;
            this.progressListenerAdded = false;
            gBrowser.removeProgressListener(this);
            this.listenCtrlF(false);
        }
    },
    handleEvent(e) {
        if (
            e.ctrlKey && e.code == "KeyF"
            && !e.shiftKey && !e.altKey && !bar.collapsed
        )
            e.preventDefault(),
            e.stopPropagation(),
            bar.close();
    },
    updateMatchesCount() {
        var str = bar._findField.value;
        if (!str) return;
        var data = {
            entireWord: bar._entireWord,
            caseSensitive: bar._typeAheadCaseSensitive,
            highlightAll: bar._highlightAll,
            useModalHighlight: bar._useModalHighlight
        };
        bar.browser.finder.requestMatchesCount(
            bar._findField.value,
            {linksOnly: bar._findMode == bar.FIND_LINKS, data}
                );
    },
    maybeCollapse(br) {
        return br.isSyntheticDocument ||
            br.documentContentType == "application/vnd.mozilla.xul+xml";
    },
    setBrowser(updateDelay, br = gBrowser.selectedBrowser) {
        if (bar._browser != br) {
            var b = bar._browser;
            if (b) {
                b.messageManager.removeMessageListener("Findbar:Mouseup", bar);
                b.finder.removeResultListener(bar);
                bar._highlightAll && b.finder.highlight(false);
            }
            if (br) {
                br.messageManager.addMessageListener("Findbar:Mouseup", bar);
                bar._updateBrowserWithState();
            }
            bar._browser = br;
        }
        if (!br) return;
        bar._updateStatusUI();
        bar._foundMatches.value = "";
        br.finder.addResultListener(bar);
        if (
            !(bar.collapsed = this.maybeCollapse(br))
            && br.currentURI.spec != "about:blank"
            && updateDelay !== null
        )
            updateDelay
                ? setTimeout(this.updateMatchesCount, updateDelay)
                : this.updateMatchesCount();
    },
    onStateChange(wpr, req, state) {
        state & Ci.nsIWebProgressListener.STATE_STOP && this.setBrowser();
        },
    onLocationChange(wpr, req) {
        req || Components.stack.formattedStack.includes("SessionStore.jsm")
        || this.setBrowser();
    }
}).init(document.getElementById("appcontent")))();

Отсутствует

 

№1272925-07-2018 10:54:59

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

Re: Custom Buttons

форум тихо но умирает...

Отсутствует

 

№1273025-07-2018 20:26:43

firefan
Участник
 
Группа: Members
Зарегистрирован: 23-06-2016
Сообщений: 16
UA: Firefox 52.0

Re: Custom Buttons

На случай, если кому-то понадобится, вот хоткеи для Spotify Web Player, реализованные в скрипте для программы Autohotkey:

скрытый текст
; Euro sign - Like (Save to your Favorite Songs)
SC145::
{
ControlClick, x109 y1003, spotify, , Left, 1, NA
return
}

; Jena sign - Dislike (remove from Daily Mix)
SC07D::
{
ControlClick, x141 y1004, spotify, , Left, 1, NA
return
}

Media_Play_Pause::
{
ControlClick, x960 y988, spotify, , Left, 1, NA
return
}

Media_Next::
{
ControlClick, x1005 y991, spotify, , Left, 1, NA
return
}

Media_Prev::
{
ControlClick, x911 y989, spotify, , Left, 1, NA
return
}

Чтобы поставить свои кнопки, перед двумя двоеточиями поставьте то, что вам нужно из списка с названиями: https://autohotkey.com/docs/KeyList.htm

Поскольку кнопки прожимаютя по координатам, в аддоне Stylish или Stylus нужно будет добавить такой стиль для сайта, чтобы названия песен на нижней панели исчезли и не двигали кнопки управления:
.track-info {display: none !important;}

Также поставьте аддон Show Profile версии 0.9.9.9.1 (и отключите обновления). Он нужен для того, чтобы в названии окна выводилось имя профиля - spotify.

Приведенный AHK-скрипт будет работать без изменений в дефолтном Firefox ESR 52 (без тем оформления, без панелей), окно максимизировано, разрешение системы 1920x1080, включен дефолтный Aero.
Если у вас что-то отличается, то найти свои координаты кнопок плеера можете с помощью вспомогательной утилиты из комплекта AutoHotkey - "Active Window Info (Window Spy)", которая лежит здесь C:\Program Files\AutoHotkey\AU3_Spy.exe
Вам нужна будет строка Relative (default).

Для работы хоткеев, окно браузера не должно быть свернуто, но если окно просто на заднем плане, всё будет работать без проблем (для чего всё и затевалось, собственно).
Рекомендую отдельный профиль Firefox для этого дела.

Батник для удобного запуска браузера и скомпиленного AHK скрипта:
скрытый текст
c:\Users\username\AppData\Roaming\cmdow\cmdow.exe @ /hid
start "" "c:\Users\username\AppData\Roaming\AHK Scripts\spotify_hotkeys.exe"
start "" /W "c:\Program Files (x86)\Mozilla Firefox ESR\firefox.exe" --profile "c:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\spotify" --no-remote
taskkill /IM spotify_hotkeys.exe

cmdow - программа для скрытия окна консоли.
Если юзать этот батник, то при закрытии браузера, закроется и AHK хоткей программа.

Поскольку проверку на лайкнутость реализовать мне не хватает знаний, если кому-то нужно, то вот рограмма, чтобы вывести только область с сердечком лайка поверх всех окон: OnTopReplica (и можете осуществлять проверку глазами :-)
Чтобы играть в фулскрин игры, и при этом видеть сердечко, запускайте игры в windowed режиме и делайте фулскрин с помощью программы fullscreenizer.

Отредактировано firefan (25-07-2018 20:41:48)

Отсутствует

 

№1273127-07-2018 00:30:24

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

Re: Custom Buttons

momo2000 пишет:

toxa
только это
http://forum.mozilla-russia.org/viewtopic.php?pid=759770#p759770

скрытый текст
((bar, button = true, insertAtTop = true, ctrlFcloseFinbar = false) => ({
    init(parent) {
        var has = bar = parent.querySelector("#appcontent > findbar");
        has || this.initFinbar(parent);
        var lo = bar.linkedObject;
        lo.listenCtrlF = ctrlFcloseFinbar
            ? listen => listen
                ? addEventListener("keydown", lo, true)
                : removeEventListener("keydown", lo, true)
            : () => {};
        has && !bar.hidden && lo.listenCtrlF(true);
        if (button) self._handleClick = () => bar.hidden
            ? bar.startFind(bar.FIND_NORMAL)
            : bar.collapsed || bar.close();
        addDestructor(lo.destroy, lo);
    },
    destroy(reason) {
        if (reason[5] != "e") return;
        bar.close();
        bar._browser = {};
        bar.remove();
        this.setProgressListener(false);
        for(var key of ["gFindBar", "gFindBarInitialized"])
            Object.defineProperty(window, key, this[key]);
        gBrowser[this.gBrKey] = this[this.gBrKey];
        Services.ppmm.removeDelayedProcessScript(this.url);
        Services.ppmm.loadProcessScript("data:," + encodeURIComponent(`
            Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_DEFAULT
            && Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_CONTENT
            || (nsvo => {
                var proto = nsvo.Finder.prototype;
                if ("_requestMatchesCount" in proto) {
                    proto.requestMatchesCount = proto._requestMatchesCount;
                    delete proto._requestMatchesCount;
                }
            })(Cu.import("resource://gre/modules/Finder.jsm", {}));`
        ) , false);
    },
    initFinbar(parent) {
        for(var tab of gBrowser.tabs) {
            if (!tab._findBar) continue;
            tab._findBar.browser = null;
            tab._findBar._browser = {};
            tab._findBar.remove();
            delete tab._findBar;
        }
        bar = document.createElement("findbar");
        var p = new Proxy({}, {get: () => () => {}});
        bar._browser = {finder: p, messageManager: p};
        parent.insertBefore(bar, insertAtTop ? parent.firstChild : null);
        bar.linkedObject = this;

        ["gFindBar", "gFindBarInitialized"].forEach((key, ind) => {
            this[key] = Object.getOwnPropertyDescriptor(window, key);
            delete window[key];
            window[key] = ind ? true : bar;
        });
        var key = "getCachedFindBar" in gBrowser ? "getCachedFindBar" : "getFindBar";
        this[this.gBrKey = key] = gBrowser[key];
        gBrowser[key] = () => bar;
        [
            "close", "startFind", "onMatchesCountResult",
            "_updateMatchesCount", "_onBrowserKeypress", "receiveMessage"

        ].forEach((key, ind) => {
            var func = bar[key].bind(bar);
            bar[key] = ind
                ? (...args) => this[key](...args) || func(...args)
                : (...args) => func(...args) || this[key](...args);
        });
        this.url = "data:," + encodeURIComponent(`
            Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_DEFAULT
            && Services.appinfo.processType != Services.appinfo.PROCESS_TYPE_CONTENT
            || (nsvo => {
                var proto = nsvo.Finder.prototype;
                if ("_requestMatchesCount" in proto) return;
                proto._requestMatchesCount = proto.requestMatchesCount;
                proto.requestMatchesCount = ${
                    this.newRequestMatchesCount
                }
            })(Cu.import("resource://gre/modules/Finder.jsm", {}));`
        );
        delete this.newRequestMatchesCount;
        Services.ppmm.loadProcessScript(this.url, true);
    },
    newRequestMatchesCount: async function requestMatchesCount(aWord, aLinksOnly) {
        if (typeof aLinksOnly != "boolean") {

            var {linksOnly, data} = aLinksOnly;
            aLinksOnly = linksOnly;

            this.entireWord = data.entireWord;
            this.caseSensitive = data.caseSensitive;
            this.onModalHighlightChange(data.useModalHighlight);
            this.onHighlightAllChange(data.highlightAll);
            data.highlightAll && await this.highlighter.highlight(true, aWord, linksOnly);
            this._iterator && this._iterator.reset();
            var obj;
            Object.defineProperty(this, "_currentMatchesCountResult", {
                configurable: true, enumerable: true,
                get: (val = obj) => {
                    if (val) {
                        if (!val.total) val.total = new Number(0);
                        val.currentFound = val._currentFound;
                    }
                    return obj = val;
                },
                set: val => {
                    if (val) return obj = val;
                    delete this._currentMatchesCountResult;
                    return obj = this._currentMatchesCountResult = val;
                }
            });
            var lfr = this._lastFindResult;
            lfr !== null && lfr != Ci.nsITypeAheadFind.FIND_NOTFOUND
            || Object.defineProperty(this, "_lastFindResult", {
                configurable: true, enumerable: true, get: () => null,
                set: val => {
                    if (val == Ci.nsITypeAheadFind.FIND_WRAPPED)
                        val = Ci.nsITypeAheadFind.FIND_FOUND;
                    delete this._lastFindResult;
                    return this._lastFindResult = val;
                }
            });
        }
        this._requestMatchesCount(aWord, aLinksOnly);
    },

    close() {
        bar.collaped = false;
        this.setProgressListener(false);
        this.setBrowser(null, null);
    },
    startFind() {
        if (this.maybeCollapse(gBrowser.selectedBrowser))
            return true;
        if (bar.hidden)
            this.setBrowser(300),
            this.setProgressListener(true);
        else if (!ctrlFcloseFinbar)
            setTimeout(() => this.updateMatchesCount(), 100);
    },
    onMatchesCountResult(res) {
        if (!("currentFound" in res) || res.total == -1 || res.currentFound)
            return;

        bar._foundMatches.value = `${+res.total || "Нет"} совпадени${
            bar.pluralForm.get(res.total, "е;я;й")
        }.`;
        bar._foundMatches.hidden = false;
        return true;
    },
    _updateMatchesCount() {
        return true;
    },
    _onBrowserKeypress(e) {
        if (!bar.hidden) return;
        if (!e.charCode) return true;
        this.setBrowser(300);
        this.setProgressListener(true);
    },
    receiveMessage(msg) {
        msg.target = bar._browser;
    },

    progressListenerAdded: false,
    setProgressListener(add) {
        if (add) {
            if (this.progressListenerAdded) return;
            this.progressListenerAdded = true;
            gBrowser.addProgressListener(this);
            this.listenCtrlF(true);
        } else {
            if (!this.progressListenerAdded) return;
            this.progressListenerAdded = false;
            gBrowser.removeProgressListener(this);
            this.listenCtrlF(false);
        }
    },
    handleEvent(e) {
        if (
            e.ctrlKey && e.code == "KeyF"
            && !e.shiftKey && !e.altKey && !bar.collapsed
        )
            e.preventDefault(),
            e.stopPropagation(),
            bar.close();
    },
    updateMatchesCount() {
        var str = bar._findField.value;
        if (!str) return;
        var data = {
            entireWord: bar._entireWord,
            caseSensitive: bar._typeAheadCaseSensitive,
            highlightAll: bar._highlightAll,
            useModalHighlight: bar._useModalHighlight
        };
        bar.browser.finder.requestMatchesCount(
            bar._findField.value,
            {linksOnly: bar._findMode == bar.FIND_LINKS, data}
                );
    },
    maybeCollapse(br) {
        return br.isSyntheticDocument ||
            br.documentContentType == "application/vnd.mozilla.xul+xml";
    },
    setBrowser(updateDelay, br = gBrowser.selectedBrowser) {
        if (bar._browser != br) {
            var b = bar._browser;
            if (b) {
                b.messageManager.removeMessageListener("Findbar:Mouseup", bar);
                b.finder.removeResultListener(bar);
                bar._highlightAll && b.finder.highlight(false);
            }
            if (br) {
                br.messageManager.addMessageListener("Findbar:Mouseup", bar);
                bar._updateBrowserWithState();
            }
            bar._browser = br;
        }
        if (!br) return;
        bar._updateStatusUI();
        bar._foundMatches.value = "";
        br.finder.addResultListener(bar);
        if (
            !(bar.collapsed = this.maybeCollapse(br))
            && br.currentURI.spec != "about:blank"
            && updateDelay !== null
        )
            updateDelay
                ? setTimeout(this.updateMatchesCount, updateDelay)
                : this.updateMatchesCount();
    },
    onStateChange(wpr, req, state) {
        state & Ci.nsIWebProgressListener.STATE_STOP && this.setBrowser();
        },
    onLocationChange(wpr, req) {
        req || Components.stack.formattedStack.includes("SessionStore.jsm")
        || this.setBrowser();
    }
}).init(document.getElementById("appcontent")))();

Нет, это для Quantumа.
А мне для Gecko.

И еще вопрос был: как приделать на текстовое поле файндбара обработчики мышиных событий? У меня что то не получается.

Отсутствует

 

№1273227-07-2018 21:50:18

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

Re: Custom Buttons

У меня вопрос, в фф61 убрали попап?
Этот код не пашет, в /*Initialization Code*/, до этого работал в 60.

AutoPopup

Выделить код

Код:

// ==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.showPopup(PopElt.parentNode,
                    -1, -1, 'popup', 'bottomleft',
                    'topleft');
            }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);
})();


С автопопап, у меня эта кнопка при наведений открывалась, вроде не только кнопки но и всякие менюшки.
Теперь в 61 это никак не пашет, точнее кнопки где ShowPopup если заменить на OpenPopup, то работают но без попапа. Но хоть открываются а так никак хоть как кликай.
В общем для меня эта слишком сложно понять, прошу вашей помощи.... в чем может быть проблема, может из за .xul типа вырезали а они как раз куда-та там обращались...
Открыть внешние win приложения

Выделить код

Код:

this._handleClick =()=> menuPopup.ShowPopup(this,-1,-1,"popup","bottomleft","topleft");var array=[
   ["IE", "c:\\Program files\\Internet Explorer\\iexplore.exe"],
   ["Explorer", "c:\\windows\\explorer.exe"],
   ["separator"],
   ["Cmd Prompt", "C:\\windows\\system32\\cmd.exe"],
   ["Media Player", "C:\\Program Files\\Windows Media Player\\wmplayer.exe"],
   ["Task Manager", "C:\\windows\\system32\\taskmgr.exe"], 
   ["Control Panel", "C:\\windows\\system32\\control.exe"],
   ["separator"],
   ["Notepad", "c:\\windows\\notepad.exe"],
   ["Calculator", "C:\\windows\\system32\\calc.exe"],
   ["Virtual Keyboard", "C:\\windows\\system32\\OSK.exe"],
   ["Character table", "C:\\windows\\system32\\charmap.exe"]
   ];

var menuPopup=self.appendChild(document.createElement("menupopup"));
array.forEach((m)=> {
   if(m=="separator"){menuPopup.appendChild(document.createElement("menuseparator"));return};
   var mItem=document.createElement("menuitem");
   mItem.setAttribute("label", m[0]);
   mItem.setAttribute("class", "menuitem-iconic");
   mItem.setAttribute("image", "moz-icon://file://" + m[1]);
   mItem.onclick =e=> Components.Constructor("@mozilla.org/file/local;1","nsIFile","initWithPath")(m[1]).launch();
   menuPopup.appendChild(mItem);});


Хм, вроде заработал как было раньше, заменил в коде (где AutoPopup = PopElt.showPopup(PopElt.parentNode) на openPopup, но мне показалось что работает немного криво?
Кстати, разные менюшки тоже заработали.
Значит сам showPopup выпилили?

Отредактировано func4ptch4 (27-07-2018 23:09:22)

Отсутствует

 

№1273328-07-2018 00:56:39

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

Re: Custom Buttons

func4ptch4 пишет:

кнопки где ShowPopup если заменить на OpenPopup, то работают но без попапа
В общем для меня эта слишком сложно понять, прошу вашей помощи.... в чем может быть проблема

скрытый текст
Bug 1446961 - Replace popup boxobject properties with element methods
XULPopupElement.webidl

Выделить код

Код:

//this._handleClick =()=> menuPopup.ShowPopup(this,-1,-1,"popup","bottomleft","topleft");var array=[
this._handleClick =()=> menuPopup.openPopup(this, "after_start");var array=[

Дэвид Флэнаган пишет:

JavaScript – это язык, чувствительный к регистру. Это значит,
что ключевые слова, переменные, имена функций и любые другие идентификаторы языка
должны всегда содержать одинаковые наборы прописных и строчных букв.

Например, ключевое слово while должно набираться как «while», а не «While» или «WHILE».
Аналогично online, Online, OnLine и ONLINE – это имена четырех разных переменных.

Отсутствует

 

№1273428-07-2018 19:35:30

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

Re: Custom Buttons

Dumby
Спасибо за ответ, насчет регистра я думаю это не в нем дело, так как до этого все работало я ничего в коде не трогал, но спасибо буду иметь в виду что чувствителен к регистру.
Английский у меня так себе, но я понял что его выпилили (Part 3 - remove deprecated showPopup method) или фикснули. В общем ничего не понял)
Оставлю openPopup хоть и коряво код с ним работает но пашет.

Отсутствует

 

№1273529-07-2018 21:00:42

Alex_one
Участник
 
Группа: Members
Зарегистрирован: 27-09-2015
Сообщений: 95
UA: Firefox 61.0

Re: Custom Buttons

Здравствуйте!
Для 61.0.1 кнопочку BBCode можно подправить?

Отсутствует

 

№1273630-07-2018 23:57:19

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

Re: Custom Buttons

Небольшая просьба,
что нужно изменить в коде, чтобы при клике на кнопку выполнялось действие?
Сейчас нужно выполнять 2 действия - нажать на треугольник рядом с кнопкой и нажать на Stop All Tabs.
Спасибо.

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

Выделить код

Код:

this.StopAll=function(){
 try{
  for (var i=0;i<gBrowser.browsers.length;i++){
    gBrowser.browsers[i].stop();
  }
 }catch(ex) {}
}
 var nMItem=function(label,img,obj){
   var m=document.createElement('menuitem');
   m.setAttribute('label',label);
   m.f=obj.StopAll.bind(obj);
   m.setAttribute('oncommand','this.f()');
   m.setAttribute('image',img);
   m.setAttribute('class','menuitem-iconic');
   return m;
 }

 var mP=document.createElement('menupopup');
 mP.appendChild(nMItem('Stop All Tabs',this.image,this));

 this.appendChild(mP);
 this.type="menu-button";

Отредактировано firepox (31-07-2018 00:02:18)

Отсутствует

 

№1273731-07-2018 00:39:05

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 586
UA: Firefox 61.0

Re: Custom Buttons

Вставка символа можно адаптировать к [firefox] 61?
Только переехал с [firefox] 54 – ничего не помню и не знаю ) Даже некоторые из таких не работают:

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

Выделить код

Код:

var url1="http://www.youtube.com/watch?v";
var url = window._content.document.location.href;
var chkpoint="&";
var url=url.slice(31,55);
var arrayOfStrings = url.split(chkpoint);
var url2=arrayOfStrings[0];
loadURI(url1+url2)
const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].
getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString(url1+url2)


Если можно исравить – подскажите.

Отсутствует

 

№1273831-07-2018 11:01:47

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

Re: Custom Buttons

vitalii201
Insert special symbol = лучше этот код поправьте, работает но не весь функционал.

Выделить код

Код:

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%3EInsert%20special%20symbol%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Indomito%20%u0438%20Difabor-%u0432%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2027.05.2014%0A//%20%u0417%u0430%20%u043E%u0441%u043D%u043E%u0432%u0443%20%u0432%u0437%u044F%u0442%20%u043A%u043E%u0434-%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%28Firefox%29%20%u043E%u044211.05.2013%20%u0430%u0432%u0442%u043E%u0440%20bunda1%0Avar%20delay%3D600%2Carray%3D%5B%5D%2CsymbList%2CmyID%3D_id%2CsymbName%3DmyID+%22.symbols%22%2Cmynum%3D0%3B%0Avar%20symbListOrig%3D%22%A4%2C%A6%2C%A7%2C@%2C%A9%2C%AB%2C%BB%2C%AC%2C%AE%2C%B0%2C%B1%2C%B5%2C%B6%2C%u2014%2C%u2018%2C%u2019%2C%u201C%2C%u201D%2C%u2022%2C%u2030%2C%u2039%2C%u203A%2C%u2122%22%3B%20%0A%0Athis.onmousedown%3Dfunction%28event%29%7Bthis._mouseDownTime%3DDate.now%28%29%3B%7D%3B%0A%20%20%20%20//if%28e.button%21%3D0%29return%3B%0A%20%20%20%20//if%28event.button%3D%3D2%29this._mouseDownTime%3DDate.now%28%29%3B%0A%20%20%20%20//%7D%3B%0A%0Athis.tooltipText%3D%0A%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0441%u043F%u0435%u0446%u0438%u0430%u043B%u044C%u043D%u044B%u0439%20%u0441%u0438%u043C%u0432%u043E%u043B%5Cn%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%5Cn%22+%0A%22Left%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%5Cn%22+%0A%22Left%20Long%20%20%20%20%20%u2014%20%20%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Middle%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Right%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22+%0A%22Right%20Long%20%20%u2014%20%20%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%0Athis.onclick%3Dfunction%28event%29%7B%0A%20%20%20%20symbList%3D%28custombuttons.isPref%28symbName%29%29%3F%20unescape%28custombuttons.getPrefs%28symbName%29%29%3A%20symbListOrig%3B%0A%20%20%20%20if%28event.button%3D%3D0%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20array%3DsymbList.split%28%22%2C%22%29%3B%0A%20%20%20%20%20%20var%20node%3Ddocument.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A%20%20%20%20%20%20if%28node%20%26%26%20node.parentNode%29%20node.parentNode.removeChild%28node%29%3B%20//%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0A%20%20%20%20%20%20var%20menuPopup%3Ddocument.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20%20%20%20%20menuPopup.id%3Dthis.id+%22-menuPopup%22%3B%0A%0A%20%20%20%20%20%20array.forEach%28function%28symbol%29%7B%0A%20%20%20%20%20%20%20%20%20var%20menuItem%3Ddocument.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2Csymbol%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.style.fontSize%3D%2212px%22%3B%20//%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A%20%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2CinsertText%2Cfalse%29%3B%0A%20%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%7D%29%3B%0A%0A%20%20%20%20%20%20menuPopup.openPopup%28this%2C-1%2C-1%2C%22popup%22%2C%22bottomleft%22%2C%22topleft%22%29%3B%7D%0A%20%20%20%20else%20if%28event.button%3D%3D0%20%26%26%20%28%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3E%3D%20delay%29%7C%7C%28%21event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%29%7B%0A%20%20%20%20%20%20var%20a%3Dprompt%28%22%u0420%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0441%u0442%u0440%u043E%u043A%u0443%2C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u044F%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%u043B%u0438%20%u0433%u0440%u0443%u043F%u043F%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u0437%u0430%u043F%u044F%u0442%u0443%u044E%3A%22%2CsymbList%29%3B%0A%20%20%20%20%20%20if%20%28a%29%20custombuttons.setPrefs%28symbName%2Cescape%28a%29%29%3B%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20//mbMouse%28%29%3B%0A%20%20%20%20%20%20%20%20custombuttons.clearPrefs%28symbName%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20alert%28%22%u0414%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%3A%20%22+%28Date.now%28%29%20-%20this._mouseDownTime%29+%20%22%u043C%u0441%20%22%20+%20mynum%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%3D%3D2%20%26%26%20%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20//if%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%20%20%20%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%3Dfunction%28event%29%7B%0A%20%20%20%20if%28event.button%3D%3D2%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20%20%20//%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3Bevent.stopPropagation%28%29%3B%7D%7D%3B%0A%0Afunction%20startProcess%28path%2Cargs%29%7B%0A%20%20%20%20var%20file%3DComponents.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20if%28file.exists%28%29%29%7B%0A%20%20%20%20%20%20%20var%20process%3DComponents.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20%20%20%20%20%20process.init%28file%29%3B%0A%20%20%20%20%20%20%20%20process.run%28false%2Cargs%2Cargs.length%29%3B%0A%20%20%20%20%20%20%7D%20else%20custombuttons.%20alertBox%28%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2Cpath%29%3B%7D%3B%0A%0A//this.type%3D%22menu%22%3B%20%0A%0A//%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0Afunction%20insertText%28%29%7B%20%0A%20%20%20var%20text%3Dthis.label%3B%0A%20%20%20var%20cmd%3D%22cmd_insertText%22%3B%0A%20%20%20var%20controller%3Ddocument.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%7B%0A%20%20%20%20%20%20%20%20var%20controller%3Dcontroller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%3DComponents.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2Ctext%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2Cparams%29%3B%7D%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

Отредактировано func4ptch4 (31-07-2018 11:16:59)

Отсутствует

 

№1273931-07-2018 11:31:22

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 586
UA: Firefox 61.0

Re: Custom Buttons

func4ptch4 у меня работает только для адр.строке и панели Поиска. Текстовые поля не охвачены, а в них же весь смысл. Я не знаю как поправить.

Отсутствует

 

№1274002-08-2018 15:21:22

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

Re: Custom Buttons

firepox пишет:

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

Ничего в коде изменять не нужно.
Код нужно удалить из вкладки Инициализация, а во вкладку Код положить
for(var br of gBrowser.browsers) try {br.stop();} catch(ex) {}

vitalii201 пишет:

Вставка символа можно адаптировать к [firefox] 61?

Поскольку «this. type = "menu-button";» больше нет, то возиться
с собственной реализацией и стилями нужно каждому самому.
А если нужен просто пример вставки, то вот

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

Выделить код

Код:

this.type != "menu" ? this.type = "menu" : (popup => {

    var symbols = "¤ ¦ § © « » ¬ ® ° ± µ ¶ — ‘ ’ “ ” • ‰ ‹ › ™";
    
    var inserter = {
        get docShell() {
            delete this.docShell;
            return this.docShell = "docShell" in document
                && document.docShell instanceof Ci.nsIDocShell
                ? document.docShell : window.docShell;
        },
        get prefix() {
            delete this.prefix;
            return this.prefix = `data:,(${this.insertText})(`;
        },
        insertText: function(text) {
            if (!this.docShell.isCommandEnabled("cmd_insertText")) return;
            var params = Cc["@mozilla.org/embedcomp/command-params;1"]
                .createInstance(Ci.nsICommandParams);
            params.setStringValue("state_data", text);
            this.docShell.doCommandWithParams("cmd_insertText", params);
        },
        insert(text) {
            var br = document.activeElement;
            !br || br.localName != "browser" || !br.isRemoteBrowser
            ? this.insertText(text) : br.messageManager.loadFrameScript(
                this.prefix + encodeURIComponent(text.toSource()) + ");"
            , false);
        }
    };
    this.onmousedown = e => {
        if (e.button) return;
        popup.setAttribute("oncommand", "inserter.insert(event.target.label);");
        popup.inserter = inserter;
        var df = document.createDocumentFragment();
        for(var sym of symbols.split(" ")) df.appendChild(
            document.createElement("menuitem")
        ).setAttribute("label", sym);
        popup.append(df);
        this.onmousedown = null;
    }
})(this.appendChild(document.createElement("menupopup")));

Отсутствует

 

№1274102-08-2018 17:21:20

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

Re: Custom Buttons

Черновой вариант кнопки - Insert special symbol, так как в коде не шарю... вроде пашет.
Спасибо 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%3EInsert%20special%20symbol%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Indomito%20%u0438%20Difabor-%u0432%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2027.05.2014%0A//%20%u0417%u0430%20%u043E%u0441%u043D%u043E%u0432%u0443%20%u0432%u0437%u044F%u0442%20%u043A%u043E%u0434-%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%28Firefox%29%20%u043E%u044211.05.2013%20%u0430%u0432%u0442%u043E%u0440%20bunda1%0Avar%20delay%3D600%2Carray%3D%5B%5D%2CsymbList%2CmyID%3D_id%2CsymbName%3DmyID+%22.symbols%22%2Cmynum%3D0%3B%0Avar%20symbListOrig%3D%22%A4%2C%A6%2C%A7%2C@%2C%A9%2C%AB%2C%BB%2C%AC%2C%AE%2C%B0%2C%B1%2C%B5%2C%B6%2C%u2014%2C%u2018%2C%u2019%2C%u201C%2C%u201D%2C%u2022%2C%u2030%2C%u2039%2C%u203A%2C%u2122%22%3B%20%0A%0Athis.onmousedown%3Dfunction%28event%29%7Bthis._mouseDownTime%3DDate.now%28%29%3B%7D%3B%0A%20%20%20%20//if%28e.button%21%3D0%29return%3B%0A%20%20%20%20//if%28event.button%3D%3D2%29this._mouseDownTime%3DDate.now%28%29%3B%0A%20%20%20%20//%7D%3B%0A%0Athis.tooltipText%3D%0A%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0441%u043F%u0435%u0446%u0438%u0430%u043B%u044C%u043D%u044B%u0439%20%u0441%u0438%u043C%u0432%u043E%u043B%5Cn%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%5Cn%22+%0A%22Left%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%5Cn%22+%0A%22Left%20Long%20%20%20%20%20%u2014%20%20%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Middle%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Right%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22+%0A%22Right%20Long%20%20%u2014%20%20%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%0Athis.onclick%3Dfunction%28event%29%7B%0A%20%20%20%20symbList%3D%28custombuttons.isPref%28symbName%29%29%3F%20unescape%28custombuttons.getPrefs%28symbName%29%29%3A%20symbListOrig%3B%0A%20%20%20%20if%28event.button%3D%3D0%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20array%3DsymbList.split%28%22%2C%22%29%3B%0A%20%20%20%20%20%20var%20node%3Ddocument.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A%20%20%20%20%20%20if%28node%20%26%26%20node.parentNode%29%20node.parentNode.removeChild%28node%29%3B%20//%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0A%20%20%20%20%20%20var%20menuPopup%3Ddocument.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20%20%20%20%20menuPopup.id%3Dthis.id+%22-menuPopup%22%3B%0A%0A%20%20%20%20%20%20array.forEach%28function%28symbol%29%7B%0A%20%20%20%20%20%20%20%20%20var%20menuItem%3Ddocument.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2Csymbol%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.style.fontSize%3D%2212px%22%3B%20//%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A%20%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2CinsertText%2Cfalse%29%3B%0A%20%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%7D%29%3B%0A%0A%20%20%20%20%20%20menuPopup.openPopup%28this%2C-1%2C-1%2C%22popup%22%2C%22bottomleft%22%2C%22topleft%22%29%3B%7D%0A%20%20%20%20else%20if%28event.button%3D%3D0%20%26%26%20%28%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3E%3D%20delay%29%7C%7C%28%21event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%29%7B%0A%20%20%20%20%20%20var%20a%3Dprompt%28%22%u0420%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0441%u0442%u0440%u043E%u043A%u0443%2C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u044F%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%u043B%u0438%20%u0433%u0440%u0443%u043F%u043F%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u0437%u0430%u043F%u044F%u0442%u0443%u044E%3A%22%2CsymbList%29%3B%0A%20%20%20%20%20%20if%20%28a%29%20custombuttons.setPrefs%28symbName%2Cescape%28a%29%29%3B%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20//mbMouse%28%29%3B%0A%20%20%20%20%20%20%20%20custombuttons.clearPrefs%28symbName%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20alert%28%22%u0414%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%3A%20%22+%28Date.now%28%29%20-%20this._mouseDownTime%29+%20%22%u043C%u0441%20%22%20+%20mynum%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%3D%3D2%20%26%26%20%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20//if%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%20%20%20%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%3Dfunction%28event%29%7B%0A%20%20%20%20if%28event.button%3D%3D2%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20%20%20//%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3Bevent.stopPropagation%28%29%3B%7D%7D%3B%0A%0Afunction%20startProcess%28path%2Cargs%29%7B%0A%20%20%20%20var%20file%3DComponents.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20if%28file.exists%28%29%29%7B%0A%20%20%20%20%20%20%20var%20process%3DComponents.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20%20%20%20%20%20process.init%28file%29%3B%0A%20%20%20%20%20%20%20%20process.run%28false%2Cargs%2Cargs.length%29%3B%0A%20%20%20%20%20%20%7D%20else%20custombuttons.%20alertBox%28%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2Cpath%29%3B%7D%3B%0A%0A//this.type%3D%22menu%22%3B%0Athis.type%20%21%3D%20%22menu%22%20%3F%20this.type%20%3D%20%22menu%22%20%3A%20%28popup%20%3D%3E%20%7B%0A%0A%20%20%20%20var%20symbols%20%3D%20%22%A4%20%A6%20%A7%20%A9%20%AB%20%BB%20%AC%20%AE%20%B0%20%B1%20%B5%20%B6%20%u2014%20%u2018%20%u2019%20%u201C%20%u201D%20%u2022%20%u2030%20%u2039%20%u203A%20%u2122%22%3B%0A%20%20%20%20%0A%20%20%20%20var%20inserter%20%3D%20%7B%0A%20%20%20%20%20%20%20%20get%20docShell%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.docShell%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.docShell%20%3D%20%22docShell%22%20in%20document%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.docShell%20instanceof%20Ci.nsIDocShell%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20document.docShell%20%3A%20window.docShell%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20get%20prefix%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.prefix%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.prefix%20%3D%20%60data%3A%2C%28%24%7Bthis.insertText%7D%29%28%60%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insertText%3A%20function%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21this.docShell.isCommandEnabled%28%22cmd_insertText%22%29%29%20return%3B%0A%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.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.docShell.doCommandWithParams%28%22cmd_insertText%22%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insert%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20br%20%3D%20document.activeElement%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%21br%20%7C%7C%20br.localName%20%21%3D%20%22browser%22%20%7C%7C%20%21br.isRemoteBrowser%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20this.insertText%28text%29%20%3A%20br.messageManager.loadFrameScript%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.prefix%20+%20encodeURIComponent%28text.toSource%28%29%29%20+%20%22%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.onmousedown%20%3D%20e%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.button%29%20return%3B%0A%20%20%20%20%20%20%20%20popup.setAttribute%28%22oncommand%22%2C%20%22inserter.insert%28event.target.label%29%3B%22%29%3B%0A%20%20%20%20%20%20%20%20popup.inserter%20%3D%20inserter%3B%0A%20%20%20%20%20%20%20%20var%20df%20%3D%20document.createDocumentFragment%28%29%3B%0A%20%20%20%20%20%20%20%20for%28var%20sym%20of%20symbols.split%28%22%20%22%29%29%20df.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20document.createElement%28%22menuitem%22%29%0A%20%20%20%20%20%20%20%20%29.setAttribute%28%22label%22%2C%20sym%29%3B%0A%20%20%20%20%20%20%20%20popup.append%28df%29%3B%0A%20%20%20%20%20%20%20%20this.onmousedown%20%3D%20null%3B%0A%20%20%20%20%7D%0A%7D%29%28this.appendChild%28document.createElement%28%22menupopup%22%29%29%29%3B%0A%0A//%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0Afunction%20insertText%28%29%7B%20%0A%20%20%20var%20text%3Dthis.label%3B%0A%20%20%20var%20cmd%3D%22cmd_insertText%22%3B%0A%20%20%20var%20controller%3Ddocument.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%7B%0A%20%20%20%20%20%20%20%20var%20controller%3Dcontroller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%3DComponents.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2Ctext%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2Cparams%29%3B%7D%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

Отсутствует

 

№1274202-08-2018 18:44:47

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

Re: Custom Buttons

func4ptch4
работает 61еср после перезагрузки. спс

Отсутствует

 

№1274302-08-2018 18:49:22

Alex_one
Участник
 
Группа: Members
Зарегистрирован: 27-09-2015
Сообщений: 95
UA: Firefox 61.0

Re: Custom Buttons

Dumby
Отлично, спасибо! Я тоже забрал себе.
Можно как-то сделать по крупней сами символы? А то я со своим зрением...(

Отсутствует

 

№1274402-08-2018 19:11:00

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 586
UA: Firefox 61.0

Re: Custom Buttons

func4ptch4, спасибо. Наверное, будет не лишним символ "…"(Alt+0133) добавить.
Для "отставших от жизни"(перешёл с [firefox] 54 сразу на [firefox] 61): "работает … после перезагрузки" — теперь "в порядке вещей" с кнопками?

Отсутствует

 

№1274502-08-2018 20:39:46

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

Re: Custom Buttons

vitalii201 пишет:

func4ptch4, спасибо. Наверное, будет не лишним символ "…"(Alt+0133) добавить.
Для "отставших от жизни"(перешёл с [firefox] 54 сразу на [firefox] 61): "работает … после перезагрузки" — теперь "в порядке вещей" с кнопками?

Добавил, вообще там все походу делает код 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%3EInsert%20special%20symbol%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.type%21%3D%22menu%22%20%3F%20this.type%3D%22menu%22%20%3A%20%28popup%20%3D%3E%7B%0A%0A%20%20%20%20var%20symbols%3D%22%A4%20%A6%20%A7%20%A9%20%AB%20%BB%20%AC%20%AE%20%B0%20%B1%20%B5%20%B6%20%u2014%20%u2018%20%u2019%20%u201C%20%u201D%20%u2022%20%u2030%20%u2039%20%u203A%20%u2122%20%u2026%22%3B%0A%20%20%20%20var%20inserter%3D%7Bget%20docShell%28%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.docShell%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.docShell%20%3D%20%22docShell%22%20in%20document%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.docShell%20instanceof%20Ci.nsIDocShell%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20document.docShell%20%3A%20window.docShell%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20get%20prefix%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.prefix%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.prefix%20%3D%20%60data%3A%2C%28%24%7Bthis.insertText%7D%29%28%60%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insertText%3A%20function%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21this.docShell.isCommandEnabled%28%22cmd_insertText%22%29%29%20return%3B%0A%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.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.docShell.doCommandWithParams%28%22cmd_insertText%22%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insert%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20br%20%3D%20document.activeElement%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%21br%20%7C%7C%20br.localName%20%21%3D%20%22browser%22%20%7C%7C%20%21br.isRemoteBrowser%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20this.insertText%28text%29%20%3A%20br.messageManager.loadFrameScript%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.prefix%20+%20encodeURIComponent%28text.toSource%28%29%29%20+%20%22%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.onmousedown%3De%3D%3E%7B%0A%20%20%20%20%20%20%20%20if%28e.button%29return%3B%0A%20%20%20%20%20%20%20%20popup.setAttribute%28%22oncommand%22%2C%20%22inserter.insert%28event.target.label%29%3B%22%29%3B%0A%20%20%20%20%20%20%20%20popup.inserter%20%3D%20inserter%3B%0A%20%20%20%20%20%20%20%20var%20df%20%3D%20document.createDocumentFragment%28%29%3B%0A%20%20%20%20%20%20%20%20for%28var%20sym%20of%20symbols.split%28%22%20%22%29%29%20df.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20document.createElement%28%22menuitem%22%29%0A%20%20%20%20%20%20%20%20%29.setAttribute%28%22label%22%2C%20sym%29%3B%0A%20%20%20%20%20%20%20%20popup.append%28df%29%3B%0A%20%20%20%20%20%20%20%20this.onmousedown%20%3D%20null%3B%0A%20%20%20%20%7D%0A%7D%29%28this.appendChild%28document.createElement%28%22menupopup%22%29%29%29%3B%0A%0A%0A%0A//%20Indomito%20%u0438%20Difabor-%u0432%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2027.05.2014%0A//%20%u0417%u0430%20%u043E%u0441%u043D%u043E%u0432%u0443%20%u0432%u0437%u044F%u0442%20%u043A%u043E%u0434-%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%28Firefox%29%20%u043E%u044211.05.2013%20%u0430%u0432%u0442%u043E%u0440%20bunda1%0A///var%20delay%3D600%2Carray%3D%5B%5D%2CsymbList%2CmyID%3D_id%2CsymbName%3DmyID+%22.symbols%22%2Cmynum%3D0%3B%0A///var%20symbListOrig%3D%22%A4%2C%A6%2C%A7%2C@%2C%A9%2C%AB%2C%BB%2C%AC%2C%AE%2C%B0%2C%B1%2C%B5%2C%B6%2C%u2014%2C%u2018%2C%u2019%2C%u201C%2C%u201D%2C%u2022%2C%u2030%2C%u2039%2C%u203A%2C%u2122%22%3B%0A%0A//this.onmousedown%3Dfunction%28e%29%7Bthis._mouseDownTime%3DDate.now%28%29%3B%7D%3B%0A%20%20%20%20//if%28e.button%21%3D0%29return%3B%0A%20%20%20%20//if%28e.button%3D%3D2%29this._mouseDownTime%3DDate.now%28%29%3B%0A%20%20%20%20//%7D%3B%0A%0Athis.tooltipText%3D%0A%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0441%u043F%u0435%u0446%u0438%u0430%u043B%u044C%u043D%u044B%u0439%20%u0441%u0438%u043C%u0432%u043E%u043B%5Cn%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%5Cn%22+%0A%22Left%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%5Cn%22+%0A%22Left%20Long%20%20%20%20%20%u2014%20%20%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Middle%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Right%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22+%0A%22Right%20Long%20%20%u2014%20%20%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%0A//this.onclick%3Dfunction%28e%29%7B%0A//%20%20%20%20symbList%3D%28custombuttons.isPref%28symbName%29%29%3F%20unescape%28custombuttons.getPrefs%28symbName%29%29%3A%20symbListOrig%3B%0A//%20%20%20%20if%28e.button%3D%3D0%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21e.ctrlKey%26%26%21e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%29%7B%0A//%20%20%20%20%20%20array%3DsymbList.split%28%22%2C%22%29%3B%0A//%20%20%20%20%20%20var%20node%3Ddocument.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A//%20%20%20%20%20%20if%28node%20%26%26%20node.parentNode%29%20node.parentNode.removeChild%28node%29%3B%20//%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A//%0A//%20%20%20%20%20%20var%20menuPopup%3Ddocument.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A//%20%20%20%20%20%20menuPopup.id%3Dthis.id+%22-menuPopup%22%3B%0A//%0A//%20%20%20%20%20%20array.forEach%28function%28symbol%29%7B%0A//%20%20%20%20%20%20%20%20%20var%20menuItem%3Ddocument.createElement%28%22menuitem%22%29%3B%0A//%20%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2Csymbol%29%3B%0A//%20%20%20%20%20%20%20%20%20menuItem.style.fontSize%3D%2212px%22%3B%20//%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A//%20%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2CinsertText%2Cfalse%29%3B%0A//%20%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%7D%29%3B%0A//%0A//%20%20%20%20%20%20menuPopup.openPopup%28this%2C-1%2C-1%2C%22popup%22%2C%22bottomleft%22%2C%22topleft%22%29%3B%7D%0A//%20%20%20%20else%20if%28e.button%3D%3D0%20%26%26%20%28%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3E%3D%20delay%29%7C%7C%28%21e.ctrlKey%20%26%26%20e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%29%29%29%7B%0A//%20%20%20%20var%20a%3Dprompt%28%22%u0420%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0441%u0442%u0440%u043E%u043A%u0443%2C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u044F%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%u043B%u0438%20%u0433%u0440%u0443%u043F%u043F%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u0437%u0430%u043F%u044F%u0442%u0443%u044E%3A%22%2CsymbList%29%3Bif%20%28a%29%20custombuttons.setPrefs%28symbName%2Cescape%28a%29%29%3B%7D%0A//%0A//%20%20%20%20else%20if%28%28e.button%3D%3D1%20%7C%7C%20%28e.button%3D%3D0%26%26e.ctrlKey%29%29%20%26%26%28%21e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%29%29%7Bcustombuttons.clearPrefs%28symbName%29%3B%7D%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C//mbMouse%28%29%3B%0A//%20%20%20%20else%20if%28%28e.button%3D%3D1%20%7C%7C%20%28e.button%3D%3D0%26%26e.ctrlKey%29%29%20%26%26%20%28e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%29%29%7Balert%28%22%u0414%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%3A%20%22+%28Date.now%28%29%20-%20this._mouseDownTime%29+%20%22%u043C%u0441%20%22%20+%20mynum%29%3B%7D%0A//%0A//%20%20%20%20else%20if%28e.button%3D%3D2%20%26%26%20%21e.ctrlKey%26%26%21e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%29%7BstartProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%7D%20%20%20%20%7D%3B%0A//%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432//if%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A//this.oncontextmenu%3Dfunction%28e%29%7B%0A//%20%20%20%20if%28e.button%3D%3D2%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21e.ctrlKey%26%26%21e.shiftKey%26%26%21e.altKey%26%26%21e.metaKey%29%7Be.preventDefault%28%29%3Be.stopPropagation%28%29%3B%7D%7D%3B%0A//%20%20%20%20//%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A//%0A//%0A//function%20startProcess%28path%2Cargs%29%7Bvar%20file%3DComponents.classes%5B%22@mozilla.org/file/local%3B1%22%5D%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A//%20%20%20%20%20file.initWithPath%28path%29%3B%0A//%20%20%20%20%20%20%20%20%20%20%20%20if%28file.exists%28%29%29%7Bvar%20process%3DComponents.classes%5B%22@mozilla.org/process/util%3B1%22%5D%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A//%20%20%20%20%20%20process.init%28file%29%3Bprocess.run%28false%2Cargs%2Cargs.length%29%3B%7D%20else%20custombuttons.%20alertBox%28%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2Cpath%29%3B%7D%3B%0A//%0A////this.type%3D%22menu%22%3B%0A//%0A//%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0A//function%20insertText%28%29%7B%20%0A//%20%20%20var%20text%3Dthis.label%3B%0A//%20%20%20var%20cmd%3D%22cmd_insertText%22%3B%0A//%20%20%20var%20controller%3Ddocument.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A//%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%7B%0A//%20%20%20%20%20%20%20%20var%20controller%3Dcontroller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A//%20%20%20%20%20%20%20%20var%20params%3DComponents.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A//%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2Ctext%29%3B%0A//%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2Cparams%29%3B%7D%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

Там вроде дело в самом CustomButtons, точнее в обходе. Кто-то говорил здесь об этом.

Отредактировано func4ptch4 (03-08-2018 10:36:17)

Отсутствует

 

№1274602-08-2018 23:24:29

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 200
UA: unknown 0.0

Re: Custom Buttons

Подскажите, как превратить формат JSON в удобочитаемый вид?
Поясню. Я делаю xmlhttp запрос  и получаю ответ в виде JSON (можно на выбор получить в виде XML документа).
Как сделать, чтобы этот ответ выглядел вот так
https://s33.postimg.cc/nbhvz3cf3/2018-08-02_231844.jpg

На картинке тоже JSON, но он представлен в привычном для чтения виде.

Отсутствует

 

№1274703-08-2018 00:45:06

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

Re: Custom Buttons

Ferguss114 пишет: Подскажите, как превратить формат JSON в удобочитаемый вид?

JSON.parse () - JavaScript | MDN - Mozilla


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

Отсутствует

 

№1274803-08-2018 09:03:28

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

Re: Custom Buttons

Ferguss114 пишет:

Подскажите, как превратить формат JSON в удобочитаемый вид?

Формат JSON, метод toJSON

Отсутствует

 

№1274903-08-2018 09:54:32

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

Re: Custom Buttons

func4ptch4 пишет:

Я просто копернул и добавил в тот код, вот бы кто еще почистил его от лишнего.

Выделить код

Код:

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%3EInsert%20special%20symbol%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Indomito%20%u0438%20Difabor-%u0432%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2027.05.2014%0A//%20%u0417%u0430%20%u043E%u0441%u043D%u043E%u0432%u0443%20%u0432%u0437%u044F%u0442%20%u043A%u043E%u0434-%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%28Firefox%29%20%u043E%u044211.05.2013%20%u0430%u0432%u0442%u043E%u0440%20bunda1%0Avar%20delay%3D600%2Carray%3D%5B%5D%2CsymbList%2CmyID%3D_id%2CsymbName%3DmyID+%22.symbols%22%2Cmynum%3D0%3B%0A///var%20symbListOrig%3D%22%A4%2C%A6%2C%A7%2C@%2C%A9%2C%AB%2C%BB%2C%AC%2C%AE%2C%B0%2C%B1%2C%B5%2C%B6%2C%u2014%2C%u2018%2C%u2019%2C%u201C%2C%u201D%2C%u2022%2C%u2030%2C%u2039%2C%u203A%2C%u2122%22%3B%0A%0Athis.onmousedown%3Dfunction%28event%29%7Bthis._mouseDownTime%3DDate.now%28%29%3B%7D%3B%0A%20%20%20%20//if%28e.button%21%3D0%29return%3B%0A%20%20%20%20//if%28event.button%3D%3D2%29this._mouseDownTime%3DDate.now%28%29%3B%0A%20%20%20%20//%7D%3B%0A%0Athis.tooltipText%3D%0A%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0441%u043F%u0435%u0446%u0438%u0430%u043B%u044C%u043D%u044B%u0439%20%u0441%u0438%u043C%u0432%u043E%u043B%5Cn%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%5Cn%22+%0A%22Left%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%5Cn%22+%0A%22Left%20Long%20%20%20%20%20%u2014%20%20%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Middle%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22+%0A%22Right%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22+%0A%22Right%20Long%20%20%u2014%20%20%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%0Athis.onclick%3Dfunction%28event%29%7B%0A%20%20%20%20symbList%3D%28custombuttons.isPref%28symbName%29%29%3F%20unescape%28custombuttons.getPrefs%28symbName%29%29%3A%20symbListOrig%3B%0A%20%20%20%20if%28event.button%3D%3D0%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20array%3DsymbList.split%28%22%2C%22%29%3B%0A%20%20%20%20%20%20var%20node%3Ddocument.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A%20%20%20%20%20%20if%28node%20%26%26%20node.parentNode%29%20node.parentNode.removeChild%28node%29%3B%20//%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0A%20%20%20%20%20%20var%20menuPopup%3Ddocument.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20%20%20%20%20menuPopup.id%3Dthis.id+%22-menuPopup%22%3B%0A%0A%20%20%20%20%20%20array.forEach%28function%28symbol%29%7B%0A%20%20%20%20%20%20%20%20%20var%20menuItem%3Ddocument.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2Csymbol%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.style.fontSize%3D%2212px%22%3B%20//%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A%20%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2CinsertText%2Cfalse%29%3B%0A%20%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%7D%29%3B%0A%0A%20%20%20%20%20%20menuPopup.openPopup%28this%2C-1%2C-1%2C%22popup%22%2C%22bottomleft%22%2C%22topleft%22%29%3B%7D%0A%20%20%20%20else%20if%28event.button%3D%3D0%20%26%26%20%28%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3E%3D%20delay%29%7C%7C%28%21event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%29%7B%0A%20%20%20%20%20%20var%20a%3Dprompt%28%22%u0420%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0441%u0442%u0440%u043E%u043A%u0443%2C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u044F%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%u043B%u0438%20%u0433%u0440%u0443%u043F%u043F%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u0437%u0430%u043F%u044F%u0442%u0443%u044E%3A%22%2CsymbList%29%3B%0A%20%20%20%20%20%20if%20%28a%29%20custombuttons.setPrefs%28symbName%2Cescape%28a%29%29%3B%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20//mbMouse%28%29%3B%0A%20%20%20%20%20%20%20%20custombuttons.clearPrefs%28symbName%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28%28event.button%3D%3D1%20%7C%7C%20%28event.button%3D%3D0%26%26event.ctrlKey%29%29%20%26%26%20%28event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%29%7B%0A%20%20%20%20%20alert%28%22%u0414%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%3A%20%22+%28Date.now%28%29%20-%20this._mouseDownTime%29+%20%22%u043C%u0441%20%22%20+%20mynum%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%3D%3D2%20%26%26%20%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%29%7B%0A%20%20%20%20%20%20%20%20//%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20//if%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%20%20%20%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%3Dfunction%28event%29%7B%0A%20%20%20%20if%28event.button%3D%3D2%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%21event.ctrlKey%26%26%21event.shiftKey%26%26%21event.altKey%26%26%21event.metaKey%29%7B%0A%20%20%20%20%20%20%20%20//%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3Bevent.stopPropagation%28%29%3B%7D%7D%3B%0A%0Afunction%20startProcess%28path%2Cargs%29%7B%0A%20%20%20%20var%20file%3DComponents.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20if%28file.exists%28%29%29%7B%0A%20%20%20%20%20%20%20var%20process%3DComponents.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20%20%20%20%20%20process.init%28file%29%3B%0A%20%20%20%20%20%20%20%20process.run%28false%2Cargs%2Cargs.length%29%3B%0A%20%20%20%20%20%20%7D%20else%20custombuttons.%20alertBox%28%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2Cpath%29%3B%7D%3B%0A%0A//this.type%3D%22menu%22%3B%0Athis.type%20%21%3D%20%22menu%22%20%3F%20this.type%20%3D%20%22menu%22%20%3A%20%28popup%20%3D%3E%20%7B%0A%0A%20%20%20%20var%20symbols%20%3D%20%22%A4%20%A6%20%A7%20%A9%20%AB%20%BB%20%AC%20%AE%20%B0%20%B1%20%B5%20%B6%20%u2014%20%u2018%20%u2019%20%u201C%20%u201D%20%u2022%20%u2030%20%u2039%20%u203A%20%u2122%20%u2026%22%3B%0A%20%20%20%20%0A%20%20%20%20var%20inserter%20%3D%20%7B%0A%20%20%20%20%20%20%20%20get%20docShell%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.docShell%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.docShell%20%3D%20%22docShell%22%20in%20document%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.docShell%20instanceof%20Ci.nsIDocShell%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20document.docShell%20%3A%20window.docShell%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20get%20prefix%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.prefix%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20this.prefix%20%3D%20%60data%3A%2C%28%24%7Bthis.insertText%7D%29%28%60%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insertText%3A%20function%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21this.docShell.isCommandEnabled%28%22cmd_insertText%22%29%29%20return%3B%0A%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.createInstance%28Ci.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.docShell.doCommandWithParams%28%22cmd_insertText%22%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20insert%28text%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20br%20%3D%20document.activeElement%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%21br%20%7C%7C%20br.localName%20%21%3D%20%22browser%22%20%7C%7C%20%21br.isRemoteBrowser%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20this.insertText%28text%29%20%3A%20br.messageManager.loadFrameScript%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.prefix%20+%20encodeURIComponent%28text.toSource%28%29%29%20+%20%22%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.onmousedown%20%3D%20e%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.button%29%20return%3B%0A%20%20%20%20%20%20%20%20popup.setAttribute%28%22oncommand%22%2C%20%22inserter.insert%28event.target.label%29%3B%22%29%3B%0A%20%20%20%20%20%20%20%20popup.inserter%20%3D%20inserter%3B%0A%20%20%20%20%20%20%20%20var%20df%20%3D%20document.createDocumentFragment%28%29%3B%0A%20%20%20%20%20%20%20%20for%28var%20sym%20of%20symbols.split%28%22%20%22%29%29%20df.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20document.createElement%28%22menuitem%22%29%0A%20%20%20%20%20%20%20%20%29.setAttribute%28%22label%22%2C%20sym%29%3B%0A%20%20%20%20%20%20%20%20popup.append%28df%29%3B%0A%20%20%20%20%20%20%20%20this.onmousedown%20%3D%20null%3B%0A%20%20%20%20%7D%0A%7D%29%28this.appendChild%28document.createElement%28%22menupopup%22%29%29%29%3B%0A%0A//%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0Afunction%20insertText%28%29%7B%20%0A%20%20%20var%20text%3Dthis.label%3B%0A%20%20%20var%20cmd%3D%22cmd_insertText%22%3B%0A%20%20%20var%20controller%3Ddocument.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%28controller%20%26%26%20controller.isCommandEnabled%28cmd%29%29%7B%0A%20%20%20%20%20%20%20%20var%20controller%3Dcontroller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%3DComponents.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2Ctext%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2Cparams%29%3B%7D%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

На [firefox] 57.0.4, к сожалению, добавляет символы только в адресную строку и строку поиска. В текстовых полях страниц Интернета по-прежнему не фурычит :( Может, кто подправит?

Отсутствует

 

№1275003-08-2018 10:16:31

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

Re: Custom Buttons

у мну на 57.0.4 такое работает

Выделить код

Код:

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%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEADQ0AAAEAIAAAAwAAFgAAACgAAAANAAAAGgAAAAEAIAAAAAAA2AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAVwAAACMAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAPAAAAEoAAAAMAAAAQgAAAOQAAACiAAAAAgAAABcAAABKAAAAVwAAADsAAAAHAAAAGwAAANcAAAC7AAAAFwAAAAsAAACHAAAA8QAAAJ0AAACeAAAA/QAAAP8AAADvAAAAhAAAAL8AAADrAAAAXwAAAAQAAAAAAAAABgAAAJMAAAD/AAAA7AAAAKUAAACHAAAAvQAAAPcAAAD/AAAAYQAAAAAAAAAAAAAAAwAAAAsAAACXAAAA9gAAAF8AAAAAAAAAAQAAAAwAAACOAAAA+QAAAGAAAAAAAAAAAwAAAAAAAAA1AAAA5gAAAK8AAAACAAAABgAAAA4AAAAAAAAAJQAAAOAAAAC1AAAADwAAAAAAAAAAAAAASwAAAPMAAACIAAAAAAAAAAkAAAAAAAAABgAAAAMAAAC8AAAAzgAAACQAAAAAAAAAAAAAAEAAAADuAAAAnAAAAAAAAAALAAAACgAAAAMAAAARAAAAzwAAAMEAAAAXAAAAAAAAAAAAAAAUAAAArwAAAOMAAAA8AAAAAAAAAAgAAAAAAAAAYQAAAP8AAAB+AAAAAgAAAAAAAAAEAAAAAQAAAHwAAAD/AAAAzAAAAG4AAABZAAAAggAAAOMAAAD/AAAASgAAAAAAAAAFAAAAAAAAAFIAAADlAAAAygAAAMYAAAD/AAAA+AAAAP8AAAC8AAAA3AAAAMoAAAApAAAAAAAAADoAAADjAAAAyQAAACEAAAAuAAAAeAAAAH8AAABqAAAAIQAAAD8AAADqAAAAvQAAAB4AAAA4AAAAhQAAADoAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAWQAAAIUAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A//%20Indomito%20%u0438%20Difabor%20-%20%u0432%u0435%u0440%u0441%u0438%u044F%20%u043E%u0442%2027.05.2014%0A//%20%u0417%u0430%20%u043E%u0441%u043D%u043E%u0432%u0443%20%u0432%u0437%u044F%u0442%20%u043A%u043E%u0434%20-%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%28%20Firefox%20%29%20%u043E%u0442%2011.05.2013%20%u0430%u0432%u0442%u043E%u0440%20bunda1%0A%0Avar%20delay%20%3D%20600%2C%20array%20%3D%20%5B%5D%2C%20symbList%2C%20myID%20%3D%20_id%2C%20symbName%20%3D%20myID%20+%20%22.symbols%22%2Cmynum%3D0%3B%0Avar%20symbListOrig%20%3D%20%22%A4%2C%A6%2C%A7%2C@%2C%A9%2C%AB%2C%BB%2C%AC%2C%AE%2C%B0%2C%B1%2C%B5%2C%B6%2C%u2014%2C%u2018%2C%u2019%2C%u201C%2C%u201D%2C%u2022%2C%u2030%2C%u2039%2C%u203A%2C%u2122%22%3B%20%0A%0Athis.onmousedown%20%3D%20function%28event%29%20%7Bthis._mouseDownTime%20%3D%20Date.now%28%29%3B%7D%3B%0A%20%20%20%20//if%28e.button%20%21%3D%200%29%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20//if%28event.button%20%3D%3D%202%29%20%20this._mouseDownTime%20%3D%20Date.now%28%29%3B%0A//%7D%3B%0A%0Athis.tooltipText%20%3D%20%0A%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0441%u043F%u0435%u0446%u0438%u0430%u043B%u044C%u043D%u044B%u0439%20%u0441%u0438%u043C%u0432%u043E%u043B%5Cn%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%u2014%5Cn%22%20+%0A%22Left%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%20%5Cn%22%20+%0A%22Left%20Long%20%20%20%20%20%u2014%20%20%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22%20+%0A%22Middle%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22%20+%0A%22Right%20%20%20%20%20%20%20%20%20%20%20%20%u2014%20%20%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22%20+%0A%22Right%20Long%20%20%u2014%20%20%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%20%22%3B%0A%0A/*%0Athis.tooltipText%20%3D%20%0A%22Left%20Short%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%3D%3E%20%u0412%u0441%u0442%u0430%u0432%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u0430%20%u0438%u0437%20%u0441%u043F%u0438%u0441%u043A%u0430%5Cn%22%20+%20%0A%22Left%20Long%20Or%20Left+Shift%20%20%20%20%20%20%20%3D%3E%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u0441%u043F%u0438%u0441%u043A%u0430%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22%20+%0A%22Middle%20Or%20Left+Ctrl%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%3E%20%u0412%u043E%u0437%u0432%u0440%u0430%u0442%20%u043A%20%u0438%u0441%u0445%u043E%u0434%u043D%u043E%u043C%u0443%20%u0441%u043F%u0438%u0441%u043A%u0443%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%5Cn%22%20+%0A%22%28Middle%20Or%20Left+Ctrl%29+Shift%20%3D%3E%20%u041C%u0435%u0440%u044F%u0442%u044C%20%u0434%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%20%u043A%u043B%u0438%u043A%u0430%5Cn%22%20+%0A%22Right%20Short%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%3D%3E%20%u0417%u0430%u043F%u0443%u0441%u043A%20%u0442%u0430%u0431%u043B%u0438%u0446%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20Windows%5Cn%22%20+%20%0A%22Right%20Long%20Or%20Right+Shift%20%3D%3E%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%20%u041A%u043D%u043E%u043F%u043A%u0438%20%22%3B%0A*/%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%20%20%20%20symbList%20%3D%20%28custombuttons.isPref%28symbName%29%29%3F%20unescape%28custombuttons.getPrefs%28symbName%29%29%3A%20symbListOrig%3B%0A%20%20%20%20if%28event.button%20%3D%3D%200%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%7B%0A%20%20%20%20%20%20array%20%3D%20symbList.split%28%22%2C%22%29%3B%0A%20%20%20%20%20%20var%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0A%20%20%20%20%20%20if%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0A%20%20%20%20%20%20var%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%20%20%20%20%20%20menuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%0A%20%20%20%20%20%20array.forEach%28function%28symbol%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20symbol%20%29%3B%0A%20%20%20%20%20%20%20%20%20menuItem.style.fontSize%20%3D%20%2212px%22%3B%20//%20%u0440%u0430%u0437%u043C%u0435%u0440%20%u0448%u0440%u0438%u0444%u0442%u0430%0A%20%20%20%20%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertText%2C%20false%29%3B%20%0A%20%20%20%20%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%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%7D%20%20%0A%20%20%20%20else%20if%28event.button%20%3D%3D%200%20%26%26%20%28%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3E%3D%20delay%29%7C%7C%28%21event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%29%20%7B%0A%20%20%20%20%20%20var%20a%3Dprompt%28%22%u0420%u0440%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0441%u0442%u0440%u043E%u043A%u0443%2C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u044F%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%u043B%u0438%20%u0433%u0440%u0443%u043F%u043F%u044B%20%u0441%u0438%u043C%u0432%u043E%u043B%u043E%u0432%20%u0447%u0435%u0440%u0435%u0437%20%u0437%u0430%u043F%u044F%u0442%u0443%u044E%3A%22%2CsymbList%29%3B%0A%20%20%20%20%20%20if%20%28a%29%20custombuttons.setPrefs%28symbName%2Cescape%28a%29%29%3B%20%20%20%20%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%28event.button%20%3D%3D%201%20%7C%7C%20%28event.button%20%3D%3D%200%20%26%26%20event.ctrlKey%20%29%29%20%26%26%20%28%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20//mbMouse%28%29%3B%0A%20%20%20%20%20%20%20%20custombuttons.clearPrefs%28symbName%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%28event.button%20%3D%3D%201%20%7C%7C%20%28event.button%20%3D%3D%200%20%26%26%20event.ctrlKey%20%29%29%20%26%26%20%28event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%29%20%7B%0A%20%20%20%20%20alert%28%22%u0414%u043B%u0438%u0442%u0435%u043B%u044C%u043D%u043E%u0441%u0442%u044C%3A%20%22+%28Date.now%28%29%20-%20this._mouseDownTime%29+%20%22%u043C%u0441%20%22%20+%20mynum%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20//if%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%20%20%20%20startProcess%28%22C%3A%5C%5CWindows%5C%5Csystem32%5C%5Ccharmap.exe%22%2C%5B%5D%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20if%28event.button%20%3D%3D%202%20%26%26%20%28%28Date.now%28%29%20-%20this._mouseDownTime%29%20%3C%20delay%29%20%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%20%7B%0A%20%20%20%20%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%0A%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20event.stopPropagation%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0Afunction%20startProcess%28path%2C%20args%29%20%7B%0A%20%20%20%20var%20file%20%3D%20Components.classes%5B%22@mozilla.org/file/local%3B1%22%5D%0A%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28path%29%3B%0A%20%20%20%20if%28file.exists%28%29%29%20%7B%0A%20%20%20%20%20%20%20var%20process%20%3D%20Components.classes%5B%22@mozilla.org/process/util%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIProcess%29%3B%0A%20%20%20%20%20%20%20process.init%28file%29%3B%0A%20%20%20%20%20%20%20%20process.run%28false%2C%20args%2C%20args.length%29%3B%0A%20%20%20%20%20%20%7D%20else%20custombuttons.%20alertBox%20%28%22%u0424%u0430%u0439%u043B%20%u043D%u0435%20%u043D%u0430%u0439%u0434%u0435%u043D%22%2C%20path%29%3B%20%0A%7D%3B%0A%0A//this.type%20%3D%20%22menu%22%3B%20%0A%0A//%20%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20............%0Afunction%20insertText%28%29%20%7B%20%0A%20%20%20var%20text%20%3D%20this.label%3B%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%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%20var%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Acustombutton%3A//%253C%253Fxml%2520version%253D%25221.0%2522%2520encoding%253D%2522UTF-8%2522%253F%253E%250D%250A%253Ccustombutton%2520xmlns%253Acb%253D%2522http%253A//xsms.nm.ru/custombuttons/%2522%253E%250A%2520%2520%253Cname%253EInsert%2520special%2520symbol%253C/name%253E%250A%2520%2520%253Cimage%253E%253C%2521%255BCDATA%255Bdata%253Aimage/png%253Bbase64%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%253D%255D%255D%253E%253C/image%253E%250A%2520%2520%253Cmode%253E0%253C/mode%253E%250A%2520%2520%253Cinitcode%253E%253C%2521%255BCDATA%255B/*Initialization%2520Code*/%250A%250A//%2520Indomito%2520%25u0438%2520Difabor%2520-%2520%25u0432%25u0435%25u0440%25u0441%25u0438%25u044F%2520%25u043E%25u0442%252027.05.2014%250A//%2520%25u0417%25u0430%2520%25u043E%25u0441%25u043D%25u043E%25u0432%25u0443%2520%25u0432%25u0437%25u044F%25u0442%2520%25u043A%25u043E%25u0434%2520-%2520%25u0412%25u0441%25u0442%25u0430%25u0432%25u043A%25u0430%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u0430%2520%25u0432%2520%25u0442%25u0435%25u043A%25u0441%25u0442%25u043E%25u0432%25u043E%25u0435%2520%25u043F%25u043E%25u043B%25u0435%2528%2520Firefox%2520%2529%2520%25u043E%25u0442%252011.05.2013%2520%25u0430%25u0432%25u0442%25u043E%25u0440%2520bunda1%250A%250Avar%2520delay%2520%253D%2520600%252C%2520array%2520%253D%2520%255B%255D%252C%2520symbList%252C%2520myID%2520%253D%2520_id%252C%2520symbName%2520%253D%2520myID%2520+%2520%2522.symbols%2522%252Cmynum%253D0%253B%250Avar%2520symbListOrig%2520%253D%2520%2522%25A4%252C%25A6%252C%25A7%252C@%252C%25A9%252C%25AB%252C%25BB%252C%25AC%252C%25AE%252C%25B0%252C%25B1%252C%25B5%252C%25B6%252C%25u2014%252C%25u2018%252C%25u2019%252C%25u201C%252C%25u201D%252C%25u2022%252C%25u2030%252C%25u2039%252C%25u203A%252C%25u2122%2522%253B%2520%250A%250Athis.onmousedown%2520%253D%2520function%2528event%2529%2520%257Bthis._mouseDownTime%2520%253D%2520Date.now%2528%2529%253B%257D%253B%250A%2520%2520%2520%2520//if%2528e.button%2520%2521%253D%25200%2529%2520%2520%2520%2520%2520%2520%2520%2520return%253B%250A%2520%2520%2520%2520//if%2528event.button%2520%253D%253D%25202%2529%2520%2520this._mouseDownTime%2520%253D%2520Date.now%2528%2529%253B%250A//%257D%253B%250A%250Athis.tooltipText%2520%253D%2520%250A%2522%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%25u0412%25u0441%25u0442%25u0430%25u0432%25u0438%25u0442%25u044C%2520%25u0441%25u043F%25u0435%25u0446%25u0438%25u0430%25u043B%25u044C%25u043D%25u044B%25u0439%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%255Cn%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%25u2014%255Cn%2522%2520+%250A%2522Left%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%25u2014%2520%2520%2520%25u0412%25u0441%25u0442%25u0430%25u0432%25u043A%25u0430%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u0430%2520%25u0438%25u0437%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0430%2520%255Cn%2522%2520+%250A%2522Left%2520Long%2520%2520%2520%2520%2520%25u2014%2520%2520%2520%25u0420%25u0435%25u0434%25u0430%25u043A%25u0442%25u0438%25u0440%25u043E%25u0432%25u0430%25u043D%25u0438%25u0435%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0430%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%255Cn%2522%2520+%250A%2522Middle%2520%2520%2520%2520%2520%2520%2520%2520%2520%25u2014%2520%2520%2520%25u0412%25u043E%25u0437%25u0432%25u0440%25u0430%25u0442%2520%25u043A%2520%25u0438%25u0441%25u0445%25u043E%25u0434%25u043D%25u043E%25u043C%25u0443%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0443%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%255Cn%2522%2520+%250A%2522Right%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%25u2014%2520%2520%2520%25u0417%25u0430%25u043F%25u0443%25u0441%25u043A%2520%25u0442%25u0430%25u0431%25u043B%25u0438%25u0446%25u044B%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%2520Windows%255Cn%2522%2520+%250A%2522Right%2520Long%2520%2520%25u2014%2520%2520%2520%25u0421%25u0442%25u0430%25u043D%25u0434%25u0430%25u0440%25u0442%25u043D%25u043E%25u0435%2520%25u041C%25u0435%25u043D%25u044E%2520%25u041A%25u043D%25u043E%25u043F%25u043A%25u0438%2520%2522%253B%250A%250A/*%250Athis.tooltipText%2520%253D%2520%250A%2522Left%2520Short%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253D%253E%2520%25u0412%25u0441%25u0442%25u0430%25u0432%25u043A%25u0430%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u0430%2520%25u0438%25u0437%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0430%255Cn%2522%2520+%2520%250A%2522Left%2520Long%2520Or%2520Left+Shift%2520%2520%2520%2520%2520%2520%2520%253D%253E%2520%25u0420%25u0435%25u0434%25u0430%25u043A%25u0442%25u0438%25u0440%25u043E%25u0432%25u0430%25u043D%25u0438%25u0435%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0430%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%255Cn%2522%2520+%250A%2522Middle%2520Or%2520Left+Ctrl%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253D%253E%2520%25u0412%25u043E%25u0437%25u0432%25u0440%25u0430%25u0442%2520%25u043A%2520%25u0438%25u0441%25u0445%25u043E%25u0434%25u043D%25u043E%25u043C%25u0443%2520%25u0441%25u043F%25u0438%25u0441%25u043A%25u0443%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%255Cn%2522%2520+%250A%2522%2528Middle%2520Or%2520Left+Ctrl%2529+Shift%2520%253D%253E%2520%25u041C%25u0435%25u0440%25u044F%25u0442%25u044C%2520%25u0434%25u043B%25u0438%25u0442%25u0435%25u043B%25u044C%25u043D%25u043E%25u0441%25u0442%25u044C%2520%25u043A%25u043B%25u0438%25u043A%25u0430%255Cn%2522%2520+%250A%2522Right%2520Short%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253D%253E%2520%25u0417%25u0430%25u043F%25u0443%25u0441%25u043A%2520%25u0442%25u0430%25u0431%25u043B%25u0438%25u0446%25u044B%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%2520Windows%255Cn%2522%2520+%2520%250A%2522Right%2520Long%2520Or%2520Right+Shift%2520%253D%253E%2520%25u0421%25u0442%25u0430%25u043D%25u0434%25u0430%25u0440%25u0442%25u043D%25u043E%25u0435%2520%25u041C%25u0435%25u043D%25u044E%2520%25u041A%25u043D%25u043E%25u043F%25u043A%25u0438%2520%2522%253B%250A*/%250A%250Athis.onclick%2520%253D%2520function%2528event%2529%2520%257B%250A%2520%2520%2520%2520symbList%2520%253D%2520%2528custombuttons.isPref%2528symbName%2529%2529%253F%2520unescape%2528custombuttons.getPrefs%2528symbName%2529%2529%253A%2520symbListOrig%253B%250A%2520%2520%2520%2520if%2528event.button%2520%253D%253D%25200%2520%2526%2526%2520%2528%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529%2520%253C%2520delay%2529%2520%2526%2526%2520%2521event.ctrlKey%2520%2526%2526%2520%2521event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2529%257B%250A%2520%2520%2520%2520%2520%2520array%2520%253D%2520symbList.split%2528%2522%252C%2522%2529%253B%250A%2520%2520%2520%2520%2520%2520var%2520node%2520%253D%2520document.getElementById%2528this.id%2520+%2520%2522-menuPopup%2522%2529%253B%250A%2520%2520%2520%2520%2520%2520if%2520%2528%2520node%2520%2526%2526%2520node.parentNode%2520%2529%2520node.parentNode.removeChild%2528node%2529%253B%2520//%2520%25u0431%25u043B%25u043E%25u043A%25u0438%25u0440%25u043E%25u0432%25u0430%25u0442%25u044C%2520%25u0434%25u0443%25u0431%25u043B%25u0438%25u0440%25u043E%25u0432%25u0430%25u043D%25u0438%25u0435%2520%25u043C%25u0435%25u043D%25u044E%250A%250A%2520%2520%2520%2520%2520%2520var%2520menuPopup%2520%253D%2520document.getElementById%2528%2522mainPopupSet%2522%2529.appendChild%2528document.createElement%2528%2522menupopup%2522%2529%2529%253B%250A%2520%2520%2520%2520%2520%2520menuPopup.id%2520%253D%2520this.id%2520+%2520%2522-menuPopup%2522%253B%250A%250A%2520%2520%2520%2520%2520%2520array.forEach%2528function%2528symbol%2529%2520%257B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520var%2520menuItem%2520%253D%2520document.createElement%2528%2522menuitem%2522%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520menuItem.setAttribute%2528%2522label%2522%252C%2520symbol%2520%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520menuItem.style.fontSize%2520%253D%2520%252212px%2522%253B%2520//%2520%25u0440%25u0430%25u0437%25u043C%25u0435%25u0440%2520%25u0448%25u0440%25u0438%25u0444%25u0442%25u0430%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520menuItem.addEventListener%2528%2522command%2522%252C%2520insertText%252C%2520false%2529%253B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520menuPopup.appendChild%2528menuItem%2529%253B%250A%2520%2520%2520%2520%2520%2520%257D%2529%253B%250A%2520%2520%2520%2520%2520%2520menuPopup.showPopup%2528this%252C%2520-1%252C%2520-1%252C%2520%2522popup%2522%252C%2520%2522bottomleft%2522%252C%2520%2522topleft%2522%2529%253B%250A%2520%2520%2520%2520%257D%2520%2520%250A%2520%2520%2520%2520else%2520if%2528event.button%2520%253D%253D%25200%2520%2526%2526%2520%2528%2528%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529%2520%253E%253D%2520delay%2529%257C%257C%2528%2521event.ctrlKey%2520%2526%2526%2520event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2529%2529%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520var%2520a%253Dprompt%2528%2522%25u0420%25u0440%25u0435%25u0434%25u0430%25u043A%25u0442%25u0438%25u0440%25u043E%25u0432%25u0430%25u0442%25u044C%2520%25u044D%25u0442%25u0443%2520%25u0441%25u0442%25u0440%25u043E%25u043A%25u0443%252C%2520%25u0432%25u0441%25u0442%25u0430%25u0432%25u043B%25u044F%25u044F%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u044B%2520%25u0438%25u043B%25u0438%2520%25u0433%25u0440%25u0443%25u043F%25u043F%25u044B%2520%25u0441%25u0438%25u043C%25u0432%25u043E%25u043B%25u043E%25u0432%2520%25u0447%25u0435%25u0440%25u0435%25u0437%2520%25u0437%25u0430%25u043F%25u044F%25u0442%25u0443%25u044E%253A%2522%252CsymbList%2529%253B%250A%2520%2520%2520%2520%2520%2520if%2520%2528a%2529%2520custombuttons.setPrefs%2528symbName%252Cescape%2528a%2529%2529%253B%2520%2520%2520%2520%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520else%2520if%2520%2528%2528event.button%2520%253D%253D%25201%2520%257C%257C%2520%2528event.button%2520%253D%253D%25200%2520%2526%2526%2520event.ctrlKey%2520%2529%2529%2520%2526%2526%2520%2528%2521event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2529%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520//%2520%25u0414%25u0435%25u0439%25u0441%25u0442%25u0432%25u0438%25u0435%2520%25u043F%25u0440%25u0438%2520%25u043A%25u043B%25u0438%25u043A%25u0435%2520%25u0421%25u041A%25u041C%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520//mbMouse%2528%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520custombuttons.clearPrefs%2528symbName%2529%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520else%2520if%2520%2528%2528event.button%2520%253D%253D%25201%2520%257C%257C%2520%2528event.button%2520%253D%253D%25200%2520%2526%2526%2520event.ctrlKey%2520%2529%2529%2520%2526%2526%2520%2528event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2529%2529%2520%257B%250A%2520%2520%2520%2520%2520alert%2528%2522%25u0414%25u043B%25u0438%25u0442%25u0435%25u043B%25u044C%25u043D%25u043E%25u0441%25u0442%25u044C%253A%2520%2522+%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529+%2520%2522%25u043C%25u0441%2520%2522%2520+%2520mynum%2529%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520else%2520if%2528event.button%2520%253D%253D%25202%2520%2526%2526%2520%2521event.ctrlKey%2520%2526%2526%2520%2521event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2520%2526%2526%2520%2528%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529%2520%253C%2520delay%2529%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520//%2520%25u0414%25u0435%25u0439%25u0441%25u0442%25u0432%25u0438%25u0435%2520%25u043F%25u0440%25u0438%2520%25u043A%25u043B%25u0438%25u043A%25u0435%2520%25u041F%25u041A%25u041C%2520%25u0431%25u0435%25u0437%2520%25u043C%25u043E%25u0434%25u0438%25u0444%25u0438%25u043A%25u0430%25u0442%25u043E%25u0440%25u043E%25u0432%250A%2520%2520%2520%2520%2520%2520%2520%2520//if%2520%2528%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529%2520%253C%2520delay%2529%2520startProcess%2528%2522C%253A%255C%255CWindows%255C%255Csystem32%255C%255Ccharmap.exe%2522%252C%255B%255D%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520startProcess%2528%2522C%253A%255C%255CWindows%255C%255Csystem32%255C%255Ccharmap.exe%2522%252C%255B%255D%2529%253B%250A%2520%2520%2520%2520%257D%250A%257D%253B%250Athis.oncontextmenu%2520%253D%2520function%2528event%2529%2520%257B%250A%2520%2520%2520%2520if%2528event.button%2520%253D%253D%25202%2520%2526%2526%2520%2528%2528Date.now%2528%2529%2520-%2520this._mouseDownTime%2529%2520%253C%2520delay%2529%2520%2520%2526%2526%2520%2521event.ctrlKey%2520%2526%2526%2520%2521event.shiftKey%2520%2526%2526%2520%2521event.altKey%2520%2526%2526%2520%2521event.metaKey%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520//%2520%25u0411%25u043B%25u043E%25u043A%25u0438%25u0440%25u0443%25u0435%25u043C%2520%25u043A%25u043E%25u043D%25u0442%25u0435%25u043A%25u0441%25u0442%25u043D%25u043E%25u0435%2520%25u043C%25u0435%25u043D%25u044E%2520%25u043F%25u0440%25u0438%2520%25u043A%25u043B%25u0438%25u043A%25u0435%2520%25u041F%25u041A%25u041C%2520%25u0431%25u0435%25u0437%2520%25u043C%25u043E%25u0434%25u0438%25u0444%25u0438%25u043A%25u0430%25u0442%25u043E%25u0440%25u043E%25u0432%250A%2520%2520%2520%2520%2520%2520%2520%2520event.preventDefault%2528%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520event.stopPropagation%2528%2529%253B%250A%2520%2520%2520%2520%257D%250A%257D%253B%250A%250Afunction%2520startProcess%2528path%252C%2520args%2529%2520%257B%250A%2520%2520%2520%2520var%2520file%2520%253D%2520Components.classes%255B%2522@mozilla.org/file/local%253B1%2522%255D%250A%2520%2520%2520%2520%2520%2520%2520%2520.createInstance%2528Components.interfaces.nsILocalFile%2529%253B%250A%2520%2520%2520%2520%2520file.initWithPath%2528path%2529%253B%250A%2520%2520%2520%2520if%2528file.exists%2528%2529%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520var%2520process%2520%253D%2520Components.classes%255B%2522@mozilla.org/process/util%253B1%2522%255D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.createInstance%2528Components.interfaces.nsIProcess%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520process.init%2528file%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520process.run%2528false%252C%2520args%252C%2520args.length%2529%253B%250A%2520%2520%2520%2520%2520%2520%257D%2520else%2520custombuttons.%2520alertBox%2520%2528%2522%25u0424%25u0430%25u0439%25u043B%2520%25u043D%25u0435%2520%25u043D%25u0430%25u0439%25u0434%25u0435%25u043D%2522%252C%2520path%2529%253B%2520%250A%257D%253B%250A%250A//this.type%2520%253D%2520%2522menu%2522%253B%2520%250A%250A//%2520%25u0412%25u0441%25u0442%25u0430%25u0432%25u0438%25u0442%25u044C%2520%25u0442%25u0435%25u043A%25u0441%25u0442%2520%25u0432%2520%25u0442%25u0435%25u043A%25u0441%25u0442%25u043E%25u0432%25u043E%25u0435%2520%25u043F%25u043E%25u043B%25u0435%2520............%250Afunction%2520insertText%2528%2529%2520%257B%2520%250A%2520%2520%2520var%2520text%2520%253D%2520this.label%253B%250A%2520%2520%2520var%2520cmd%2520%253D%2520%2522cmd_insertText%2522%253B%250A%2520%2520%2520var%2520controller%2520%253D%2520document.commandDispatcher.getControllerForCommand%2528cmd%2529%253B%250A%2520%2520%2520if%2520%2528%2520controller%2520%2526%2526%2520controller.isCommandEnabled%2528cmd%2529%2520%2529%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520controller%2520%253D%2520controller.QueryInterface%2528Components.interfaces.nsICommandController%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520params%2520%253D%2520Components.classes%255B%2522@mozilla.org/embedcomp/command-params%253B1%2522%255D.createInstance%2528Components.interfaces.nsICommandParams%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520params.setStringValue%2528%2522state_data%2522%252C%2520text%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520controller.doCommandWithParams%2528cmd%252C%2520params%2529%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%257D%253B%255D%255D%253E%253C/initcode%253E%250A%2520%2520%253Ccode%253E%253C%2521%255BCDATA%255B/*CODE*/%255D%255D%253E%253C/code%253E%250A%2520%2520%253Caccelkey%253E%253C%2521%255BCDATA%255B%255D%255D%253E%253C/accelkey%253E%250A%2520%2520%253Chelp%253E%253C%2521%255BCDATA%255B%255D%255D%253E%253C/help%253E%250A%2520%2520%253Cattributes/%253E%250A%253C/custombutton%253E%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

http://img11.lostpic.net/2018/08/03/3a3e15e898d638a9317e23828199c381.png

Отсутствует

 

Board footer

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