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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№1595110-10-2021 12:30:49

Алексей78
Участник
 
Группа: Members
Откуда: Беларусь г.Витебск
Зарегистрирован: 01-05-2007
Сообщений: 177
UA: Firefox 93.0

Re: Custom Buttons

Ладно, допустим UCF уже развёрнут, обновлён и работает.

Развернут, но не обновлен и соответственно не работает. Обновил, сделал все как Вы описали и аллилуя - все заработало! Большое спасибо!

Отсутствует

 

№1595210-10-2021 14:28:27

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 144
UA: Firefox 91.0

Re: Custom Buttons

Доброго дня.
Есть у меня старая кнопка - Switch Keyboard Layout

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

Выделить код

Код:

(keybUtils => {
    var btn = this;
    var listener = {
        handleEvent(e) {
            if(e.target != btn)
                return;
            e.preventDefault();
            e.stopPropagation();
            this.switch();
        },
        switch() {
            var br = document.activeElement;
            br && br.localName == "browser" && br.isRemoteBrowser
                ? br.messageManager.loadFrameScript(this.url, false)
                : this.keybUtils.switchSelKeybLayout();
        },
        get url() {
            delete this.url;
            return this.url = `data:;charset=utf-8,(${
                encodeURIComponent(keybUtils)
            }).switchSelKeybLayout()`;
        },
        get keybUtils() {
            delete this.keybUtils;
            var url = "data:;charset=utf-8,this.keybUtils = " + encodeURIComponent(keybUtils);
            Services.scriptloader.loadSubScript(url, this);
            this.keybUtils.button = btn;
            this.keybUtils.getFocusedElement = function(_subCall, _focusFixed) {
                if(
                    !_focusFixed
                    && "closeMenus" in window
                    && document.commandDispatcher.focusedElement == this.button
                ) {
                    closeMenus(this.button);
                    setTimeout(function(_this) {
                        _this.switchSelKeybLayout(_subCall, true);
                    }, 0, this);
                    return;
                }
                return document.commandDispatcher.focusedElement;
            }
            return this.keybUtils;
        }
    };
    if(btn instanceof XULElement && addEventListener.length > 3) {
        addEventListener("command", listener, true, this.parentNode);
    }
    listener.switch();
})(`{
    //== Options
    noSelBehavior: { // Shift+Home
        ctrlKey:  false,
        altKey:   false,
        shiftKey: true,
        metaKey:  false,
        keyCode:  KeyEvent.DOM_VK_HOME,
        charCode: 0
    },
    // 0 - do nothing
    // 1 - convert all text
    // Or use object like following to simulate "keypress" event:
    /*
    noSelBehavior: { // Ctrl+Shift+Left
        ctrlKey:  true,
        altKey:   false,
        shiftKey: true,
        metaKey:  false,
        keyCode:  KeyEvent.DOM_VK_LEFT,
        charCode: 0
    }
    */
    convTableForward: { // ru -> en
        "\\"": "@",
        ":": "^",
        ";": "$",
        "?": "&",
        ",": "?",
        "/": "|",
        ".": "/",
        "э": "'",
        "б": ",",
        "ю": ".",
        "Ж": ":",
        "ж": ";",
        "Б": "<",
        "Ю": ">",
        "Э": "\\"",
        "х": "[",
        "ъ": "]",
        "ё": "\`",
        "Х": "{",
        "Ъ": "}",
        "Ё": "~",
        "№": "#",
        "Ф": "A",
        "ф": "a",
        "И": "B",
        "и": "b",
        "С": "C",
        "с": "c",
        "В": "D",
        "в": "d",
        "У": "E",
        "у": "e",
        "А": "F",
        "а": "f",
        "П": "G",
        "п": "g",
        "Р": "H",
        "р": "h",
        "Ш": "I",
        "ш": "i",
        "О": "J",
        "о": "j",
        "Л": "K",
        "л": "k",
        "Д": "L",
        "д": "l",
        "Ь": "M",
        "ь": "m",
        "Т": "N",
        "т": "n",
        "Щ": "O",
        "щ": "o",
        "З": "P",
        "з": "p",
        "Й": "Q",
        "й": "q",
        "К": "R",
        "к": "r",
        "Ы": "S",
        "ы": "s",
        "Е": "T",
        "е": "t",
        "Г": "U",
        "г": "u",
        "М": "V",
        "м": "v",
        "Ц": "W",
        "ц": "w",
        "Ч": "X",
        "ч": "x",
        "Н": "Y",
        "н": "y",
        "Я": "Z",
        "я": "z",
        __proto__: null
    },
    //== End of options

    get convTableBackward() {
        var ctb = { __proto__: null };
        var ctf = this.convTableForward;
        for(var c in ctf)
            ctb[ctf[c]] = c;
        delete this.convTableBackward;
        return this.convTableBackward = ctb;
    },
    inPrimaryLayout: function(s) {
        for(var i = 0, l = s.length; i < l; ++i) {
            var c = s.charAt(i);
            if(c in this.convTableForward)
                return true;
            if(c in this.convTableBackward)
                return false;
        }
        return false;
    },
    switchKeybLayout: function(s, convTable) {
        var res = "";
        for(var i = 0, l = s.length; i < l; ++i) {
            var c = s.charAt(i);
            res += c in convTable ? convTable[c] : c;
        }
        return res;
    },
    getFocusedElement: function() {
        return Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager)
            .getFocusedElementForWindow(content, true, {});
    },
    switchSelKeybLayout: function(_subCall, _focusFixed) {
        var fe = this.getFocusedElement(_subCall, _focusFixed);
        if(!fe)
            return;
        if(fe instanceof HTMLInputElement || fe instanceof HTMLTextAreaElement) {
            var ta = fe;
            try {
                var val = ta.value;
                var sel = val.substring(ta.selectionStart, ta.selectionEnd);
            }
            catch(e) { // Non-text HTMLInputElement
                return;
            }
            if(!sel && val && this.noSelBehavior && !_subCall) {
                if(this.noSelBehavior == 1) {
                    ta.selectionStart = 0;
                    ta.selectionEnd = val.length;
                    sel = val;
                }
                else {
                    this.handleNoSel(ta);
                    return;
                }
            }
            if(!sel)
                return;
            var res = this.switchKeybLayout(
                sel,
                this.inPrimaryLayout(sel)
                    ? this.convTableForward
                    : this.convTableBackward
            );
            if(res != sel)
                this.insertText(ta, res);
        }
        else if(fe.contentEditable == "true") {
            var doc = fe.ownerDocument;

            var docURI = doc.documentURI;
            if(
                docURI.substr(0, 5) == "data:"
                && docURI.indexOf("chrome://browser/skin/devtools/") != -1
            ) {
                //~ todo: seems like we only can use paste from clipboard here...
                return;
            }

            var sel = doc.defaultView.getSelection();
            var rng = sel.rangeCount && sel.getRangeAt(0);
            var tmpNode;
            if(!rng || rng.collapsed) {
                if(!this.noSelBehavior || _subCall)
                    return;
                if(this.noSelBehavior == 1) {
                    var r = doc.createRange();
                    r.selectNodeContents(fe);
                    sel.removeAllRanges();
                    sel.addRange(r);
                    tmpNode = fe.cloneNode(true);
                }
                else {
                    this.handleNoSel(fe);
                    return;
                }
            }
            else {
                tmpNode = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                tmpNode.appendChild(rng.cloneContents());
            }

            var orig = tmpNode.innerHTML;
            var convTable = this.inPrimaryLayout(tmpNode.textContent)
                ? this.convTableForward
                : this.convTableBackward;

            var _this = this;
            var parseChildNodes = function(node) {
                if(node instanceof Element) {
                    var childNodes = node.childNodes;
                    for(var i = childNodes.length - 1; i >= 0; --i)
                        parseChildNodes(childNodes[i]);
                }
                else if(node.nodeType == node.TEXT_NODE) {
                    var text = node.nodeValue;
                    var newText = _this.switchKeybLayout(node.nodeValue, convTable);
                    if(newText != text)
                        node.parentNode.replaceChild(doc.createTextNode(newText), node);
                }
            }
            parseChildNodes(tmpNode);

            var res = tmpNode.innerHTML;
            if(res != orig)
                doc.execCommand("insertHTML", false, res);
        }
    },
    handleNoSel: function(node) {
        this.select(node);
        this.switchSelKeybLayout(true);
    },
    select: function(node) {
        var e = this.noSelBehavior;
        if(!e || typeof e != "object")
            return;
        var evt = node.ownerDocument.createEvent("KeyboardEvent");
        evt.initKeyEvent(
            "keypress", true /*bubbles*/, true /*cancelable*/, node.ownerDocument.defaultView,
            e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
            e.keyCode, e.charCode
        );
        node.dispatchEvent(evt);
    },
    insertText: function(ta, text) {
        //var editor = ta.QueryInterface(Components.interfaces.nsIDOMNSEditableElement).editor
        var editor = ta.editor
            .QueryInterface(Components.interfaces.nsIPlaintextEditor);
        if(editor.flags & editor.eEditorReadonlyMask)
            return;

        var sTop = ta.scrollTop;
        var sHeight = ta.scrollHeight;
        var sLeft = ta.scrollLeft;
        // var sWidth = ta.scrollWidth;

        if(text)
            editor.insertText(text);
        else
            editor.deleteSelection(0, 0);

        ta.scrollTop = sTop + (ta.scrollHeight - sHeight);
        ta.scrollLeft = sLeft; // + (ta.scrollWidth - sWidth);
    }
}`);


Можно починить,чтоб с 91й версией заработало?

Отсутствует

 

№1595310-10-2021 16:43:13

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 129
UA: Firefox 92.0

Re: Custom Buttons

Dumby пишет

Да мне особо проверить негде. Попробуй так
скрытый текст

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

Отредактировано ALEX_45_ORP (10-10-2021 16:46:02)

Отсутствует

 

№1595410-10-2021 17:21:44

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

Re: Custom Buttons

VORON пишет

Можно починить,чтоб с 91й версией заработало?

Удалить строку, на которую ругается консоль.


ALEX_45_ORP пишет

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

«Проверить» и «попробовать» — имелось в виду как поиск пойдёт.
А «не появиться» в панели поиска он не может, не сочиняй.

Отсутствует

 

№1595510-10-2021 21:57:25

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 144
UA: Firefox 91.0

Re: Custom Buttons

Dumby
Вот честно - я вообще без понятия о чём ты.Пальцем ткни:D

скрытый текст
Сидит чукча с удочкой на берегу Берингова пролива. Всплывает американская подводная лодка:
Американец:
— Куда русская подводная лодка поплыла видел?
Чукча:
— Норд-ост.
— ОК.
Американцы уплывают на северо-восток.
Всплывает русская подводная лодка:
— Эй, чукча, куда американская подводная лодка поплыла видел?
Чукча:
— Норд-ост.
Командир подлодки:
— Ты не умничай, ты мне пальцем покажи.


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

Отредактировано VORON (10-10-2021 22:11:11)

Отсутствует

 

№1595610-10-2021 22:41:34

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

Re: Custom Buttons

VORON
296-я строка
            .QueryInterface(Components.interfaces.nsIPlaintextEditor);
Удалить

Отсутствует

 

№1595711-10-2021 07:43:20

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 129
UA: Firefox 92.0

Re: Custom Buttons

Dumby пишет

ALEX_45_ORP пишет

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

«Проверить» и «попробовать» — имелось в виду как поиск пойдёт.
А «не появиться» в панели поиска он не может, не сочиняй.

Уважаемый Dumby, у меня 92 сборка ВВП, я сделал из вашего кода manifest .json, положил его в папку, добавил иконку и сунул эту папку в omni.ja - не появилось в панели поиска, а youtube после таких манипуляций - появился там, вот я о чем ...
upd.
вставил код в кнопку СВ, появился в панели адреса - работает как положено, всем спасибо.

Отредактировано ALEX_45_ORP (11-10-2021 15:33:10)

Отсутствует

 

№1595811-10-2021 15:35:10

Okralis
Участник
 
Группа: Members
Зарегистрирован: 11-10-2021
Сообщений: 5
UA: Firefox 93.0

Re: Custom Buttons

Я новичок, можете подсказать как установить это дополнение? Пишет - не удалось установить дополнение, оно видимо повреждено.

Отсутствует

 

№1595911-10-2021 16:18:59

Senflex
Участник
 
Группа: Members
Зарегистрирован: 18-07-2021
Сообщений: 28
UA: Chrome 94.0

Re: Custom Buttons

Как лучше сделать ожидание, к примеру несколько секунд. setTimeout не совсем то... Версия лисы 56.0.2.

Отсутствует

 

№1596011-10-2021 19:30:48

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

Re: Custom Buttons

ALEX_45_ORP пишет

вставил код в кнопку СВ, появился в панели

Да, это код-установщик. Предназначен быть запущенным единожды.
Устанавливает поисковик как пользовательский, то есть данные,
в конечном итоге, пишутся в search.json.mozlz4 в профиле.
Держать код в кнопке не нужно, разве что во вкладке Код, если потребуется поставить снова
(удаление и установка [просто заново, или со сменой иконки и/или названия]).


Okralis пишет

Я новичок

По рукам бы следовало шлёпать некоторых любителей втягивать непричастных,
даже несмотря на присутствующую там оговорку «если ...».


Senflex пишет

Как лучше сделать ожидание, к примеру несколько секунд. setTimeout не совсем то...

Ты свои вопросы со стороны видел? Буквы что ли по талонам выдают?
Вот отстранись, и представь, что это спросили тебя. Что бы ты ответил?

Правда же лучше приблизительно как-то так?

Написал код, в котором используется ожидание:

Выделить код

Код:

// Код

Как вы можете видеть, здесь применяется метод window.setTimeout();
Однако, мне кажется, что это «не совсем то» по следующим причинам:
1. ...
2. ...
3. ...


Полагаю, что можно сделать лучше, исходя из задачи достижения следующих целей:
1. ...
2. ...
3. ...


Какие будут комментарии?

Отсутствует

 

№1596111-10-2021 19:40:50

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

Re: Custom Buttons

Okralis
ну вот, сейчас мне по рукам настучат. )))) в общем - вот тут https://forum.mozilla-russia.org/viewtopic.php?pid=794132#p794132 добрый человек написал инструкцию, только .xpi надо брать отсюда https://forum.mozilla-russia.org/viewtopic.php?pid=795196#p795196 дублирую прямую ссылку на архив - https://a.pomf.cat/upgmgy.zip и еще, обычно CustomButton используют на ветке ESR, на релизах нужно будет все это дело переустанавливать раз в месяц и исправлять несовместимости, копаясь в ветках этого ресурса.

Отредактировано sonyas75 (11-10-2021 20:49:24)

Отсутствует

 

№1596211-10-2021 19:48:28

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 129
UA: Firefox 92.0

Re: Custom Buttons

Dumby

Dumby пишет

...в конечном итоге, пишутся в search.json.mozlz4 в профиле.
Держать код в кнопке не нужно...

спасибо за инфу, буду иметь ввиду.

Отсутствует

 

№1596311-10-2021 20:12:57

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

Re: Custom Buttons

sonyas75 пишет

ну вот, сейчас мне по рукам настучат

Разве не напрашивается :) :blush:


sonyas75 пишет

Senflex

Отсутствует

 

№1596411-10-2021 20:50:26

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

Re: Custom Buttons

Dumby пишет

sonyas75 пишет фигню всякую

упс, исправил

Отсутствует

 

№1596512-10-2021 01:10:17

Okralis
Участник
 
Группа: Members
Зарегистрирован: 11-10-2021
Сообщений: 5
UA: Firefox 93.0

Re: Custom Buttons

sonyas75 пишет

Okralis
ну вот, сейчас мне по рукам настучат. )))) в общем - вот тут https://forum.mozilla-russia.org/viewtopic.php?pid=794132#p794132 добрый человек написал инструкцию, только .xpi надо брать отсюда https://forum.mozilla-russia.org/viewtopic.php?pid=795196#p795196 дублирую прямую ссылку на архив - https://a.pomf.cat/upgmgy.zip и еще, обычно CustomButton используют на ветке ESR, на релизах нужно будет все это дело переустанавливать раз в месяц и исправлять несовместимости, копаясь в ветках этого ресурса.

спасибо, всё установил!

Отсутствует

 

№1596612-10-2021 11:44:50

vital32
Участник
 
Группа: Members
Зарегистрирован: 23-06-2012
Сообщений: 161
UA: Firefox 93.0

Re: Custom Buttons

как поставить новую кнопку то каким дополнением?

Отсутствует

 

№1596712-10-2021 18:35:06

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 150
UA: Firefox 93.0

Re: Custom Buttons

Кто тут за поисковик нагнетал...В search-extensions закинуть и профиль почистить.
https://www.upload.ee/files/13542403/kino.rar.html

Отсутствует

 

№1596812-10-2021 19:33:05

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 129
UA: Firefox 92.0

Re: Custom Buttons

ВВП пишет

Кто тут за поисковик нагнетал...В search-extensions закинуть и профиль почистить.https://www.upload.ee/files/13542403/kino.rar.html

проверил на чистой сборке, да тоже работает, теперь в раздумье - чей вариант предпочтительней?
.
upd. а ты смотрю не стоишь на месте, уже 93 кастрировал?smoke_in.gif или еще только примеряешься?
2021-10-12_193425.jpg

Отредактировано ALEX_45_ORP (12-10-2021 19:44:40)

Отсутствует

 

№1596912-10-2021 19:46:14

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 150
UA: Firefox 93.0

Re: Custom Buttons

ALEX_45_ORP
Вариант в .В search-extensions  - вечный  можно чистить search.json.mozlz4 , но все восстановиться ...Сборки - разницы никакой. Понты одни.

Отсутствует

 

№1597012-10-2021 19:57:35

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 129
UA: Firefox 92.0

Re: Custom Buttons

ВВП пишет

Сборки - разницы никакой. Понты одни.

понял, курю бамбук, занимаясь вечным вариантом, ждемс радикальных подвижек [firefox] ...

Отредактировано ALEX_45_ORP (12-10-2021 19:58:37)

Отсутствует

 

№1597113-10-2021 10:58:38

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 150
UA: Firefox 93.0

Re: Custom Buttons

ALEX_45_ORP пишет

ждемс радикальных подвижек [firefox] ...

Все ждут только одного , но не дождутся... Это декодер MP4.  Если не DTV-DVD video decoder системный , хрен ролик посмотришь с MP4. Только webm с ютуба....
Гугловоды все себе захапали в этом плане.

Отсутствует

 

№1597215-10-2021 10:51:17

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

Re: Custom Buttons

Всем доброго!
Подскажите пжа код.
Нужна кнопка по нажатию на которую открывалась бы папка заданная мной.

Отсутствует

 

№1597315-10-2021 11:08:09

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 150
UA: Firefox 93.0

Re: Custom Buttons

Dumby
this.onauxclick = e => e.button != 1 || gShowPopup(this);
popup появляется , но пункт "удалить с панели..." не работает. При ctrl + ПКМ - работает ....Это как код поменяли

скрытый текст
gCustomizeMode.removeFromArea(this.parentNode.triggerNode, 'toolbar-context-menu')

Отсутствует

 

№1597415-10-2021 11:21:22

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1112
UA: Firefox 52.0

Re: Custom Buttons

Alex_one пишет

Нужна кнопка по нажатию на которую открывалась бы папка заданная мной.

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

Выделить код

Код:

this.onclick =e=> {
   e.button == 0 && runApp();   // ЛКМ
};       
function runApp() {
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
   file.initWithPath( getPath() );
   file.launch();
};
function getPath() {
   try { return Services.prefs.getComplexValue(s, Ci.nsIPrefLocalizedString).data; }
   catch(e) { return "C:\\Путь..."; };
};/*Initialization Code*/


Win7

Отсутствует

 

№1597515-10-2021 12:49:04

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

Re: Custom Buttons

kokoss
Спасибо большое! :beer:

Отсутствует

 

Board footer

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