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

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

№1715130-03-2024 23:16:44

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 124.0

Re: Custom Buttons

VORON
Есть еще такое. Тема UserChromeFiles.


upd: Похоже, файл удален. (Можете восстановить - "Load diff". Там можно увидеть и запись в файл).
Если так трудно, можно было папку профиля скопировать и запустить. А там разобраться уже легко, главное настроить config.js, config-prefs.js. Пути файлов видны по ссылке. Дальше, копируем chrome в папку профиля, или же сам профиль. Запускаем, разбираемся.
Если уже есть UCF, добавить запись в CustomStylesScripts.mjs. Почитайте "встроенная Справка" - Полный список▼.


В контекстном меню, есть функцию вызова "менеджера паролей". Когда добавили не знаю, может он там всегда был. Не пользуюсь. Ну в общем, при вызове, он сразу подстраивает под домен с которого вызван. По идее, надобность в ucf_cooks-pass.js не имеет смысла. Потому наверно и был удален, за ненадобностью. Сам не пользовался, так как у меня сторонний менеджер. Куки же, можно настроить в настройках и нужен редко, нет нужды в постоянном его вызове.


momo2000, ucf_aom-button.js

Отредактировано b0ttle (31-03-2024 23:26:13)

Отсутствует

 

№1715231-03-2024 10:03:18

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

Re: Custom Buttons

VORON
А [CB]Toggle Restartless Add-ons рабочая есть?

Отредактировано momo2000 (31-03-2024 10:04:22)

Отсутствует

 

№1715331-03-2024 10:23:22

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

Re: Custom Buttons

momo2000
Давно не попадалась. Спроси у Dumby, может есть возможность починить.

Добавлено 31-03-2024 10:30:39
b0ttle
С этим вообще  не понял.
Скачал,закинул в папку   custom_scripts, перезапустил,с созданием нового кеша и ничего не появилось/не происходит.
Как это работает?

Отредактировано VORON (31-03-2024 10:30:39)

Отсутствует

 

№1715431-03-2024 16:07:03

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

Re: Custom Buttons

VORON - надо прописать скрипты в CustomStylesScripts.mjs.
В демо-профиле всё уже сделано, читайте шапку темы.

Отсутствует

 

№1715531-03-2024 16:22:14

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

Re: Custom Buttons

Dumby
Добрый день.
Можно Вас попросить подправить кнопку для 115.9.1esr

Показать пароль на странице

Выделить код

Код:

((script, ID, NSVO) => {
    var nsvo = eval(NSVO), u = code => "data:," + encodeURIComponent(code);
    if (!(ID in nsvo)) {
        var processURL = u(script.replace(/%ID%/g, ID).replace("%NSVO%", NSVO));
        Services.ppmm.loadProcessScript(processURL, true);
        nsvo[ID].processURL = processURL;
        Services.mm.loadFrameScript(nsvo[ID].frameURL = u(`${NSVO}["${ID}"].init(this);`), true);
    }
    addDestructor(reason => {
        if (reason[5] != "e" || !(ID in nsvo)) return;
        Services.mm.removeDelayedFrameScript(nsvo[ID].frameURL);
        Services.mm.loadFrameScript(u(`${NSVO}["${ID}"].destroy(this);`), false);
        Services.ppmm.removeDelayedProcessScript(nsvo[ID].processURL);
        Services.ppmm.loadProcessScript(u(`${NSVO}["${ID}"].forget();`), false);
    });
})(`\
    (nsvo => nsvo["%ID%"] = {
        dblclick({target}) {
            if (target.hasAttribute("typechanged")) {
                target.type = "password";
                target.removeAttribute("typechanged");
            } else if (
                target.hasAttribute("type") &&
                target.getAttribute("type").toLowerCase() == "password"
            ) {
                target.type = "text";
                target.setAttribute("typechanged", true);
            }
        },
        init(cpmm) {
            cpmm.addEventListener("dblclick", this);
            cpmm.addEventListener("unload", this);
        },
        destroy(cpmm) {
            cpmm.removeEventListener("dblclick", this);
            cpmm.removeEventListener("unload", this);
        },
        handleEvent(e) {this[e.type](e);},
        unload(e) {this.destroy(e.target);},
        forget() {delete nsvo["%ID%"];}

    })(%NSVO%);`,
    `CB${_id.slice(20)}:PasswordTypeToggler`,
    `Components.utils.import("resource://gre/modules/Services.jsm", {})`
);

Отсутствует

 

№1715631-03-2024 20:58:39

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

Re: Custom Buttons

Alex_one пишет

Можно Вас попросить

Попросить-то можно, ...

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

Выделить код

Код:

(frag => {
	var g = Cu.getGlobalForObject(Cu);
	var ID = `CB${_id.slice(20)}:PasswordTypeToggler`;
	var u = code => "data:," + encodeURIComponent(code);
	if (!(ID in g)) {
		var processURL = u(`(id => globalThis[id] = ${frag})("${ID}");`);
		Services.ppmm.loadProcessScript(processURL, true);
		g[ID].processURL = processURL;
		Services.mm.loadFrameScript(g[ID].frameURL = u(`globalThis["${ID}"].init(this);`), true);
	}
	addDestructor(reason => {
		if (reason[5] != "e" || !(ID in g)) return;
		Services.mm.removeDelayedFrameScript(g[ID].frameURL);
		Services.mm.loadFrameScript(u(`globalThis["${ID}"].destroy(this);`), false);
		Services.ppmm.removeDelayedProcessScript(g[ID].processURL);
		Services.ppmm.loadProcessScript(u(`globalThis["${ID}"].forget();`), false);
	});
})(`\
{
	dblclick(e) {
		var trg = e.target, ed = trg.editor;
		if (ed instanceof Ci.nsIEditor && ed.flags & ed.eEditorPasswordMask)
			trg.revealPassword = !trg.revealPassword;
	},
	init(cfmm) {
		cfmm.addEventListener("dblclick", this);
		cfmm.addEventListener("unload", this);
	},
	destroy(cfmm) {
		cfmm.removeEventListener("dblclick", this);
		cfmm.removeEventListener("unload", this);
	},
	handleEvent(e) {this[e.type](e);},
	unload(e) {this.destroy(e.target);},
	forget: () => delete globalThis[id]
}`);

Отредактировано Dumby (31-03-2024 23:37:24)

Отсутствует

 

№1715731-03-2024 23:04:04

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 124.0

Re: Custom Buttons

Alex_one
Для чего код? Показать пароль под звездочками в контекстном меню? Вроде такая функция встроена в контекстном меню.
Похоже в какой-то версий добавили. В esr наверно еще нет. Пробовал проверить код, так и не понял что делает.

Отредактировано b0ttle (31-03-2024 23:12:27)

Отсутствует

 

№1715831-03-2024 23:38:04

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

Re: Custom Buttons

b0ttle пишет

Для чего код? Показать пароль под звездочками в контекстном меню? Вроде такая функция встроена в контекстном меню.

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


Но, кстати да, с пунктом контекстного меню,
получается, не гармонирует, переделал как в нём.

Отсутствует

 

№1715901-04-2024 02:14:45

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

Re: Custom Buttons

Dumby придумай исчезающий диалог !
Идея такая: при опасных действиях (перезапуск браузера и т.п.) открываем диалог с текстом предупреждения или панель или подсказку.
Диалог или панель должны исчезнуть через пару секунд, не выполняя опасную команду.
Если юзер кликнул по кнопке «Да» или по форме/панели/предупреждению с текстом, то выполняем опасное действие.

Отсутствует

 

№1716001-04-2024 12:39:18

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

Re: Custom Buttons

Dumby,
Спасибо большое, код заработал.
thank-you.gif


b0ttle
Как сказал Dumby,

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

А так да, в контекстном меню есть эта фишка на 115.9.1esr.

Отсутствует

 

№1716102-04-2024 07:32:00

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

Re: Custom Buttons

Dobrov пишет

Dumby придумай исчезающий диалог !
Идея такая: при опасных действиях (перезапуск браузера и т.п.) открываем диалог с текстом предупреждения или панель

Нашёл кого спросить. Ну, допустим, <panel>'ь

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

Выделить код

Код:

var ask = (...args) => {
	var popup = document.createXULElement("panel");
	var popupset = document.getElementById("mainPopupSet");

	popup.setAttribute("onpopupshown", "move();");
	popup.setAttribute("onpopuphidden", "this.remove()");
	
	var box = popup.appendChild(document.createXULElement("box"));
	box.style.cssText = "font-size: 32px; margin: 1em 2em 1.3em 2em; font-weight: bold; max-width: 680px;";
	var tn = box.appendChild(new Text());
	var hide = () => {
		popup.hidePopup();
		popup.onclick = null;
	}
	var {style} = popup;
	popup.move = () => {
		var sc = window.screen;
		var pr = popup.getOuterScreenRect();
		popup.moveTo((sc.width - pr.width) / 2, (sc.height - pr.height) / 2.7);
		style.opacity = "1";
	}

	(ask = (text, onclick, timeout = 2e3) => {
		tn.data = text;
		style.opacity = "0";
		popupset.append(popup);
		popup.onclick = onclick;
		popup.openPopup();
		setTimeout(hide, timeout);
	})(...args);
}

ask(
	"Кликните здесь, чтобы стереть диск Цэ.",
	() => alert("Диск Цэ стёрт!")
);

Отсутствует

 

№1716202-04-2024 16:00:08

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

Re: Custom Buttons

Dumby спасибо! Но перенос строки не пашет!
И желательно добавить ниже мелким шрифтом текст пояснения, например: выполнение команды «format C:»


нашёл только такой способ:

Выделить код

Код:

// var tn = box.appendChild(new Text());
const div = document.createElement("div");
var tn = box.appendChild(div);
div.insertAdjacentHTML("afterbegin", '<p>afterbegin -  В начало элемента</p>');
div.insertAdjacentHTML("beforeend", '<p>beforeend - В конец элемента</p>');

Отредактировано Dobrov (02-04-2024 16:22:45)

Отсутствует

 

№1716303-04-2024 07:47:23

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

Re: Custom Buttons

Dobrov пишет

перенос строки не пашет

white-space: pre-wrap; или типа того.

createElement("div")

Можно и div

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

Выделить код

Код:

var ask = (...args) => {
	var popup = document.createXULElement("panel");
	var popupset = document.getElementById("mainPopupSet");

	popup.setAttribute("onpopupshown", "move();");
	popup.setAttribute("onpopuphidden", "this.remove()");
	
	var div = popup.appendChild(document.createElement("div"));
	div.style.cssText = "font-size: 32px; margin: 1em 2em 1.3em 2em; font-weight: bold; max-width: 680px; white-space: pre-wrap;";

	var header = div.appendChild(document.createElement("div")).appendChild(new Text());

	var footer = div.appendChild(header.parentNode.cloneNode(true));
	footer.style.cssText = "font-size: 16px; font-style: italic; margin-top: 1em;";
	footer = footer.firstChild;

	var hide = () => {
		popup.hidePopup();
		popup.onclick = null;
	}
	var {style} = popup;
	popup.move = () => {
		var sc = window.screen;
		var pr = popup.getOuterScreenRect();
		popup.moveTo((sc.width - pr.width) / 2, (sc.height - pr.height) / 2.7);
		style.opacity = "1";
	}

	(ask = (text, explainer, onclick, timeout = 2e3) => {
		header.data = text;
		footer.data = explainer;

		style.opacity = "0";
		popupset.append(popup);
		popup.onclick = onclick;
		popup.openPopup();
		setTimeout(hide, timeout);
	})(...args);
}

ask(
	"Кликните здесь,\nчтобы стереть диск Цэ.",
	"выполнение команды «format C:»\n(не рекомендуется)",
	() => alert("Диск Цэ стёрт!")
);


Но, ты же понимаешь, что писать uй это совсем не моё.

Отсутствует

 

№1716405-04-2024 13:13:44

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

Re: Custom Buttons

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


Использую кнопку для Custom Buttons

Рестарт

Выделить код

Код:

Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart)

и установлено расширение Group Speed Dial, и вот после перезагрузки (если не открыты какие-либо вкладки)
то само расширение не загружается, а открывается просто белое окно.
Тогда приходится в ручную закрывать эту вкладку и только тогда загружается само расширение.
А если просто закрыть браузер и открыть то такой проблемы нет.


Вот собственно в этом и вопрос, что нужно сделать, чтобы после перезагрузки браузера загружалось это расширение?

Отсутствует

 

№1716505-04-2024 17:37:04

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1432
UA: Firefox 115.0

Re: Custom Buttons

Alex_one
У меня так же при рестарте, только расширение другое и кнопка скриптовая, а не CB.

Отсутствует

 

№1716605-04-2024 18:48:12

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

Re: Custom Buttons

_zt
Спасибо за ответ!
Понятно, значит это дело никак не победить :(

Отсутствует

 

№1716705-04-2024 23:27:20

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

Re: Custom Buttons

Alex_one
Тоже иногда бывает. И даже не при рестарте, а просто при запуске браузера. У меня это происходит, обычно, после бэкапа профиля. Когда чищу профиль, частично куки и удаляю кэш. Приложение Group Speed Dial. Давно писал об этой проблеме автору, он поправил, но проблема вернулась.

Alex_one пишет

значит это дело никак не победить

:angry:

Отсутствует

 

№1716816-04-2024 16:21:39

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

Re: Custom Buttons

Dumby подскажи где ошибка

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

Выделить код

Код:

//Вызвать окно поиска по текущему сайту по правому клику на search-go-button.................................................................................................... 
(bar => {
 
   if (!bar) return;
 
   var searchbar = window.document.getElementById("searchbar");
	      if (!searchbar)
	        return;
        var btn = searchbar.querySelector(".search-go-button") ||
			        window.document.getAnonymousElementByAttribute(searchbar, "class", "search-go-button");
		        
		btn.setAttribute("hidden", "false");	        

var UpdateExt = function(event) {

 var Sel="javascript: var getSel=function(w){ var s,d=w.document; if(d.selection){ var r=d.selection.createRange(); s=r?r.text:''} else {s=d.getSelection().toString(); if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length; while(e=(i>0)?t[--i]:u[-i--]) try{ if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}}; if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}}; return s}; var w=content,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w)); if(s){open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname) } void(0);";

    if (event.button != 2)
            return;
        //отключать реакцию по умолчанию
        event.preventDefault();
        event.stopPropagation();
 gBrowser.fixupAndLoadURIString(Sel, {
    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
});
       };
// добавляем обработчик для кнопки поиска..........
    btn.addEventListener("click", UpdateExt, false);

    })(BrowserSearch.searchBar);

Отредактировано Andrey_Krropotkin (17-04-2024 01:14:30)

Отсутствует

 

№1716917-04-2024 01:08:19

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

Re: Custom Buttons

Подскажите последнюю рабочую версию кнопки - вставка спец. символов

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

Выделить код

Код:

(this.type != "menu" && (this.type = "menu") && !this.hasAttribute("is")) || (popup => {
    var columns = [
        ' \u0027 " ‘ ’ ‚ ; “ ” „ “ ” ` // ',
        ' /* */ ( ) { } [ ] « » ‹ › ¦ ',
        ' … ≈ ≠ × ± — № => → # • ° ¤ ',
        ' Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ    ',
        ' \uD83E\uDD8A \uD83D\uDE0E § & \u0027 \u002Fn \u002Fb \u002F @ ✓ ✗ ¬  '
    ];
    var css = //0&&
    `
        #${_id} menuitem > .menu-text {
            font-size: 18px;
            font-family: Consolas, Rockwell, Verdana;
            text-align: center;
            -moz-appearance: none;
            margin: 0;
            padding: 0 14px;
        }
        #${_id} menuitem > :not(.menu-text) {
            display: none;
        }
        #${_id} menugroup,
        #${_id} > menupopup > arrowscrollbox {
            background-color: menu;
        }
    `.replace(/;/g, " !important;");

    var inserter = {
        get docShell() {
            delete this.docShell;
            return this.docShell = "docShell" in document
                && document.docShell instanceof Ci.nsIDocShell
                ? document.docShell : window.docShell;
        },
        get insertText() {
            delete this.insertText;
            return this.insertText = text => {
                if (!this.docShell.isCommandEnabled("cmd_insertText")) return;
                var params = "createCommandParams" in Components.utils
                    ? Cu.createCommandParams()
                    : Components.classes["@mozilla.org/embedcomp/command-params;1"]
                        .createInstance(Components.interfaces.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(
                `data:,(${this.insertText})${encodeURIComponent(text.toSource())}`
            , false, true);
        }
    };
    this.onclick = function(e) { 
    if (e.button == 1) {
        var profileDir1 = Components.classes["@mozilla.org/file/directory_service;1"]
            .getService(Components.interfaces.nsIProperties)
            .get("SysD", Components.interfaces.nsIFile)
           .path;
        var tracepath = profileDir1 + "\\..\\system32\\charmap.exe";
        Components.Constructor("@mozilla.org/file/local;1", "nsIFile", "initWithPath")(tracepath).launch();
        }
    };
    addEventListener("popupshowing", function ps() {
        removeEventListener("popupshowing", ps, true, popup);
        if (css) {
            var dwu = "windowUtils" in window && windowUtils instanceof Ci.nsIDOMWindowUtils
                ? windowUtils : window.QueryInterface(Ci.nsIInterfaceRequestor)
                    .getInterface(Ci.nsIDOMWindowUtils);
            var type = dwu.AGENT_SHEET;
            var url = "data:text/css," + encodeURIComponent(css);
            dwu.loadSheetUsingURIString(url, type);
            addDestructor(() => dwu.removeSheetUsingURIString(url, type));
        }
        var df = document.createDocumentFragment();
        for(var symbols of columns) {
            var menugroup = popup.appendChild(document.createElementNS(xulns, "menugroup"));
            menugroup.setAttribute("orient", "vertical");
            for(var sym of symbols.split(" ")) menugroup.appendChild(
                document.createElementNS(xulns, "menuitem")
            ).setAttribute("label", sym);
        }
        popup.append(df);
        var parent = "boxObject" in menugroup
            ? menugroup.boxObject.parentBox
            : menugroup.flattenedTreeParentNode;
        if (parent.localName == "slot") parent = parent.parentNode;
        parent.setAttribute("orient", "horizontal");
        if (parent.localName == "scrollbox")
            parent.style.setProperty("-moz-box-orient", "horizontal", "important");
        popup.setAttribute("context", "");
        popup.inserter = inserter;
        popup.setAttribute("oncommand", "inserter.insert(event.target.label);");
        popup.onauxclick = e => {
            var sym = e.target.label;
            sym && inserter.insert(sym);
        }
    }, true, popup);
    this.prepend(popup);
})(document.createElementNS(xulns, "menupopup"));
this.tooltipText="Вставка символов.\n\nЛКМ - Вставить симвлоы\nСКМ - Таблица символов Windows\nПКМ - Меню кнопки";

Отсутствует

 

№1717017-04-2024 07:29:39

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

Re: Custom Buttons

Andrey_Krropotkin пишет

подскажи где ошибка

Консоль подскажет.
Может content заменить на window

вставка спец. символов

raf, вроде, помогает, если ты об этом

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

Выделить код

Код:

/*
    addEventListener("popupshowing", function ps() {
*/
    addEventListener("popupshowing", async function ps() {


/*
        popup.append(df);
*/
        popup.append(df);
        await new Promise(requestAnimationFrame);

Отсутствует

 

№1717117-04-2024 12:08:38

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

Re: Custom Buttons

Dumby большое спасибо

Отредактировано Andrey_Krropotkin (17-04-2024 12:09:47)

Отсутствует

 

Board footer

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