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

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

№1587609-10-2021 20:09:57

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

Re: Custom Buttons

Dumby пишет
Алексей78 пишет

возможно этот вопрос уже поднимался, а я просто не внимательно эту тему читал

Да нет, вроде никто не спрашивал.
Я когда-то давно его в jsm'ку перекладывал, а затем родили баг :usch:,
и пришлось на mousedown переделывать.


Вобщем, сейчас такой. В новом UCF, импортировать созданный модуль
можно добавив в конфигурационный CustomStylesScripts.jsm
в массив UcfStylesScripts.scriptsbackground объект вида
{ func: 'ChromeUtils.import("chrome://user_chrome_files/content/custom_scripts/MMPaste.jsm");' },

MMPaste.jsm

Выделить код

Код:

var MMPasteChild, EXPORTED_SYMBOLS = ["MMPasteChild"];
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");

var sel = ":is(textarea,input):not([readonly],[disabled])";
var x, y, sn = Ci.nsISelectionController.SELECTION_NORMAL;
var inRect = r => y > r.top && y < r.bottom && x < r.right && x > r.left;

var mousedown = e => {
	if (e.button != 1) return;
	var trg = (e.originalTarget || e.target).closest(sel);
	if (!trg) return;

	var ed = trg.editor;
	if (!ed || ed.selection.isCollapsed || !ed.canPaste(sn)) return;

	x = e.clientX; y = e.clientY;
	var rng = ed.selection.getRangeAt(0);
	if (!inRect(rng.getBoundingClientRect())) return;

	var list = rng.getClientRects();
	if (list.length == 1 || Array.from(list).some(inRect))
		ed.paste(sn),
		trg.ownerGlobal.addEventListener(...args);
}
var args = ["auxclick", e => e.preventDefault(), {once: true, capture: true}];

if (ChromeUtils.domProcessChild.childID)
	(MMPasteChild = class extends JSWindowActorChild {}).prototype.handleEvent = mousedown;

else ((pref, gmon) => ({
	mousedown,
	get pref() {
		return Services.prefs.getBoolPref(pref);
	},
	startup() {
		this.handleEvent = e => this[e.type](e);
		this.unload = e => this.listen(e.target.ownerGlobal);
		this.e10s = Services.appinfo.browserTabsRemoteAutostart;

		Services.prefs.addObserver(pref, this);
		Services.obs.addObserver(this, "quit-application-granted", false);
		this.pref && this.init();
		this.gmon();
	},
	async gmon() {
		Cu.importGlobalProperties(["fetch"]);
		var url = "chrome://custombuttons/content/editExternal.js";
		try {var src = await (await fetch(url)).text();} catch {return;}
		src = src.replace(/function gmon_edit_mouseclick[^}]+?}/, gmon);
		var arr = [["override", url, "data:," + encodeURIComponent(src)]];
		url = Services.io.getProtocolHandler("resource").getSubstitution("gre");
		this.gmonHelper = Cc["@mozilla.org/addons/addon-manager-startup;1"]
			.getService(Ci.amIAddonManagerStartup).registerChrome(url, arr);
	},
	shutdown() {
		this.pref && this.destroy();
		Services.prefs.removeObserver(pref, this);
		Services.obs.removeObserver(this, "quit-application-granted");
		this.gmonHelper?.destruct();
	},
	opts: {
		allFrames: true,
		remoteTypes: ["w", "file", "extension", "privileged"],
		child: {moduleURI: __URI__, events: {mousedown: {capture: true}}}
	},
	init() {
		this.e10s && ChromeUtils.registerWindowActor("MMPaste", this.opts);
		Services.obs.addObserver(this, "widget-first-paint", false);
		this.wins("addEventListener");
	},
	destroy() {
		this.e10s && ChromeUtils.unregisterWindowActor("MMPaste");
		Services.obs.removeObserver(this, "widget-first-paint");
		this.wins();
	},
	observe(subj, topic, data) {
		var char = topic[0];
		if (char == "w") return this.listen(subj, "addEventListener");
		if (char == "q") return this.shutdown();
		data == pref && this[this.pref ? "init" : "destroy"]();
	},
	wins(arg) {
		for(var win of Services.wm.getEnumerator(null)) this.listen(win, arg);
	},
	listen(trg, meth = "removeEventListener") {
		trg[meth]("mousedown", this, true);
		trg[meth]("unload", this);
	}
}).startup())("middlemouse.paste", `function gmon_edit_mouseclick(e) {
	var mmp = Cc["@mozilla.org/preferences-service;1"]
		.getService(Ci.nsIPrefBranch).getBoolPref.bind(null, "middlemouse.paste");
	(gmon_edit_mouseclick = e => e.button != 1 || mmp() || edittarget(e.target))(e);
}`);

Спасибо Вам за Ваш ответ! Но к сожалению, я в скриптах как свинья в апельсинах. Не могли бы Вы подробнее описать, как это все сделать. Спасибо :)

Отсутствует

 

№1587709-10-2021 20:28:48

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 93.0

Re: Custom Buttons

Dumby пишет

Да нет, вроде никто не спрашивал.

Я давно собирался спросить, да всё как-то не доходило... :) Спасибо, теперь всё замечательно втыкает.

Отсутствует

 

№1587809-10-2021 21:42:27

Farby
Участник
 
Группа: Members
Зарегистрирован: 21-11-2012
Сообщений: 306
UA: Google 2.1

Re: Custom Buttons

Dumby пишет

тяп-ляп скопировал

Спасибо у меня работает bootstrap-loader.js на 91esr...


Жизнь иногда такое выкидывает, что хочется подобрать...

Отсутствует

 

№1587909-10-2021 22:01:41

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

Re: Custom Buttons

Dumby
https://www.kino-teatr.ru/
Не могу поисковик сделать даже кнопкой . Параметр не найду .

Отсутствует

 

№1588010-10-2021 11:26:50

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

Re: Custom Buttons

Алексей78 пишет

Не могли бы Вы подробнее описать, как это все сделать.

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

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

1. Идём в папку %Профиль%\chrome\user_chrome_files\custom_scripts
и создаём там текстовый файл с названием MMPaste.jsm
Расширение чтоб было .jsm, а не какой-нибудь .jsm.txt
Открываем файл на редактирование и заполняем содержимым скрипта,
кодировка подойдёт UTF-8 без BOM, сохраняем.


2. Теперь редактируем файл CustomStylesScripts.jsm (лежит в той же папке).
Добавляем предложенную строку после scriptsbackground: [ в скобки ], сохраняем.
Скриншот.


3. Осталось убедиться, что вкючена настройка middlemouse.paste
и в настройках UCF чтоб стояла галка
Включить скрипты:
[✔] В фоне [System Principal]


Всё. Там же, в настройках, жмём «Перезапустить*», и должно работать
как написано, только вставка не по клику СКМ, а по нажатию.
И в Fission OOP-фреймах теперь тоже должно работать.

ВВП пишет

Не могу поисковик сделать

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

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

Выделить код

Код:

Services.search.addPolicyEngine({

	iconURL: "data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8P8A/NL8APm0+QD2lvYA83jzAPBa8ADtPO0A6h7qAOcA5wDPAM8AtwC3AJ8AnwCHAIcAbwBvAFcAVwBAAEAA9Ov/AOjO/ADcsfkA0JT2AMR38wC4WvAArD3tAKAg6gCRAOcAggDPAHMAtwBkAJ8AVQCHAEYAbwA3AFcAKABAAODg/wDExPwAqKj5AIyM9gBwcPMAVFTwADg47QAcHOoAAADnAAAAzwAAALcAAACfAAAAhwAAAG8AAABXAAAAQADg9f8AxOj8AKjc+QCM0PYAcMTzAFS48AA4rO0AHKDqAACR5wAAgs8AAHO3AABknwAAVYcAAEZvAAA3VwAAKEAA4P//AMT8/ACo+fkAjPb2AHDz8wBU8PAAOO3tABzq6gAA5+cAAM/PAAC3twAAn58AAIeHAABvbwAAV1cAAEBAAOD/8ADE/OsAqPnmAIz24QBw89wAVPDXADjt0gAc6s0AAOfJAADPsgAAt5sAAJ+EAACHbQAAb1YAAFc/AABAKADg/+AAxPzEAKj5qACM9owAcPNwAFTwVAA47TgAHOocAADnAAAAzwAAALcAAACfAAAAhwAAAG8AAABXAAAAQAAA8P/gAOv8xADm+agA4faMANzzcADX8FQA0u04AM3qHADJ5wAAss8AAJu3AACEnwAAbYcAAFZvAAA/VwAAKEAAAP//4AD8/MQA+fmoAPb2jADz83AA8PBUAO3tOADq6hwA5+cAAM/PAAC3twAAn58AAIeHAABvbwAAV1cAAEBAAAD/+OAA/PLEAPnsqAD25owA8+BwAPDaVADt1DgA6s4cAOfLAADPtgAAt6EAAJ+MAACHdwAAb2IAAFdNAABANwAA//DgAPzoxAD54KgA9tiMAPPQcADwyFQA7cA4AOq4HADnrgAAz5wAALeKAACfeAAAh2YAAG9UAABXQgAAQDAAAP/o4AD82sQA+cyoAPa+jADzsHAA8KJUAO2UOADqhhwA53QAAM9oAAC3XAAAn1AAAIdEAABvOAAAVywAAEAcAAD/4OAA/MTEAPmoqAD2jIwA83BwAPBUVADtODgA6hwcAOcAAADPAAAAtwAAAJ8AAACHAAAAbwAAAFcAAABAAAAA/+jwAPzL5AD5rtgA9pHMAPN0wADwV7QA7TqoAOodnADnAJEAzwCCALcAcwCfAGQAhwBVAG8ARgBXADcAQAAoAP///wDw8PAA6OjoAODg4ADY2NgA0NDQAMjIyADAwMAAuLi4ALCwsACoqKgAoKCgAJiYmACQkJAAiIiIAICAgACAgIAAcHBwAGhoaABgYGAAWFhYAFBQUABISEgAQEBAADg4OAAwMDAAKCgoACAgIAAYGBgAEBAQAAgICAAAAAAA4ODg4ODg4ODgLS0tLeDg4ODg4ODg4ODg4C0tLS3g4ODg4ODg4ODg4OAdLS0t4ODg4ODg4ODg4ODgLC0tLeDg4ODg4ODg4ODg4C0tLS3g4ODg4ODg4ODg4OAdLS0t4ODg4ODg4ODgLC0tLS0tLS0tLPHx8eDg4P7+/vItLS0tLS3x8fHg4OD+/v7+LS0tLS0t8fHx4O7x8fHx4ODg4ODg4PHx8fHx8fHv4ODg4ODg4ODx8fHx8fHp4ODg4ODg4ODg8fHx8fHx6eDg4ODg4ODg4PHx8fHx8fHx4ODg4ODg4OD+/vHg5fHx8fHx4ODg4ODg8fHx4ODg6fHx8eDg4ODg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAA=",
	chrome_settings_overrides: {
		search_provider: {
			encoding: "WINDOWS-1251",
			name: "Поиск по сайту - Кино-Театр.Ру",
			search_form: "https://www.kino-teatr.ru/",
			search_url: "https://www.kino-teatr.ru/search",
			search_url_post_params: "text={searchTerms}"
		}
	}
});

Отсутствует

 

№1588110-10-2021 12:15:50

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

Re: Custom Buttons

Dumby
search_url_post_params: "text={searchTerms}"  Ни в одном поисковике нет такого....Encoding то догадался , но это...

Отсутствует

 

№1588210-10-2021 12:30:49

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

Re: Custom Buttons

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

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

Отсутствует

 

№1588310-10-2021 14:28:27

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 158
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й версией заработало?

Отсутствует

 

№1588410-10-2021 16:43:13

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

Re: Custom Buttons

Dumby пишет

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

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

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


Win 10х64

Отсутствует

 

№1588510-10-2021 17:21:44

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

Re: Custom Buttons

VORON пишет

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

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


ALEX_45_ORP пишет

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

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

Отсутствует

 

№1588610-10-2021 21:57:25

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

Re: Custom Buttons

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

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


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

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

Отсутствует

 

№1588710-10-2021 22:41:34

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

Re: Custom Buttons

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

Отсутствует

 

№1588811-10-2021 07:43:20

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 162
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)


Win 10х64

Отсутствует

 

№1588911-10-2021 15:35:10

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

Re: Custom Buttons

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

Отсутствует

 

№1589011-10-2021 16:18:59

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

Re: Custom Buttons

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

Отсутствует

 

№1589111-10-2021 19:30:48

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

Re: Custom Buttons

ALEX_45_ORP пишет

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

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


Okralis пишет

Я новичок

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


Senflex пишет

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

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

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

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

Выделить код

Код:

// Код

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


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


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

Отсутствует

 

№1589211-10-2021 19:40:50

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
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)

Отсутствует

 

№1589311-10-2021 19:48:28

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

Re: Custom Buttons

Dumby

Dumby пишет

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

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


Win 10х64

Отсутствует

 

№1589411-10-2021 20:12:57

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

Re: Custom Buttons

sonyas75 пишет

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

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


sonyas75 пишет

Senflex

Отсутствует

 

№1589511-10-2021 20:50:26

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

Re: Custom Buttons

Dumby пишет

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

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

Отсутствует

 

№1589612-10-2021 01:10:17

Okralis
Участник
 
Группа: Members
Зарегистрирован: 11-10-2021
Сообщений: 7
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, на релизах нужно будет все это дело переустанавливать раз в месяц и исправлять несовместимости, копаясь в ветках этого ресурса.

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

Отсутствует

 

№1589712-10-2021 11:44:50

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

Re: Custom Buttons

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

Отсутствует

 

№1589812-10-2021 18:35:06

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

Re: Custom Buttons

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

Отсутствует

 

№1589912-10-2021 19:33:05

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 162
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)


Win 10х64

Отсутствует

 

№1590012-10-2021 19:46:14

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

Re: Custom Buttons

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

Отсутствует

 

Board footer

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