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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№1025122-05-2021 15:39:37

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

7 консоль вроде не очень поддерживает utf-8 и батники то ещё извращение

Да, консольные скрипты в винде кошмар, даже powershell имеет проблемы с буфером обмена…


_zt пишет

С nircmd уже не извращение, а полезности.

Вряд ли! Я много батников писал на винде, но перейдя на Линукс, убедился, что в нём работа со скриптами многократно проще и удобнее.

Отсутствует

 

№1025222-05-2021 16:50:22

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 159
UA: Firefox 68.0

Re: Настройка внешнего вида Firefox в userChrome.css

С помощью кода удалось сделать рамку вокруг кнопок на панели закладок, но почему-то он работает только в aero-теме ОС. Как сделать, чтобы он работал также в упрощенной и классической темах?
Код:

скрытый текст
@media not all and (-moz-windows-classic) {
  #PersonalToolbar #PlacesToolbarItems toolbarbutton:not(#PlacesChevron) {
    -moz-appearance: toolbarbutton !important;
    background: unset !important;
    box-shadow: unset !important;
    }
}

Вот так выглядит в aero и классической темах соответственно:
скрытый текст
b12353f9594c.jpg

Отсутствует

 

№1025322-05-2021 17:17:27

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

Re: Настройка внешнего вида Firefox в userChrome.css

Алексей У.
Возьмите переводчик и переведите первую строку своего кода пословно.
В первую очередь уберите эту обертку.

Отсутствует

 

№1025422-05-2021 17:48:36

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 159
UA: Firefox 68.0

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Алексей У.
Возьмите переводчик и переведите первую строку своего кода пословно.
В первую очередь уберите эту обертку.

Убирал, все равно применяется только к aero.

Отсутствует

 

№1025522-05-2021 18:07:44

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

Re: Настройка внешнего вида Firefox в userChrome.css

Алексей У.
Ничего удивительного, этот стиль сам по себе никаких рамок не создает.
   
    -moz-appearance: toolbarbutton !important;
Назначает для "#PlacesToolbarItems toolbarbutton" вид как у обычных кнопок панелей.
    background: unset !important;
Отменяет фон.
    box-shadow: unset !important;
Отменяет тень кнопки.
   
Вот вам рамки, цвета и прозрачность свои назначьте.

Выделить код

Код:

#PlacesToolbarItems toolbarbutton {
  border: 1px solid rgba(0,0,0, 0.9) !important;
}

Отсутствует

 

№1025622-05-2021 18:59:32

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 159
UA: Firefox 68.0

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Алексей У.
Ничего удивительного, этот стиль сам по себе никаких рамок не создает.
   
    -moz-appearance: toolbarbutton !important;
Назначает для "#PlacesToolbarItems toolbarbutton" вид как у обычных кнопок панелей.
    background: unset !important;
Отменяет фон.
    box-shadow: unset !important;
Отменяет тень кнопки.
   
Вот вам рамки, цвета и прозрачность свои назначьте.

Выделить код

Код:

#PlacesToolbarItems toolbarbutton {
  border: 1px solid rgba(0,0,0, 0.9) !important;
}

Я имел в виду не это. Как я понимаю, указанный мной выше код отменяет для кнопок стиль оформления браузера и позволяет применить стиль оформления ОС. В теме aero этот способ работает, в остальных темах (упрощенной и классической) снова вылезает оформление браузера (т. е. серый фон). Как мне заставить его работать везде? Конечно, можно нарисовать рамки вокруг всех кнопок вручную (за идею, кстати, благодарю, попробую использовать ее для других случаев), но это совершенно разные вещи.

Отсутствует

 

№1025722-05-2021 20:01:26

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

Re: Настройка внешнего вида Firefox в userChrome.css

Алексей У.
Ждите Vitaliy V., может он чего подскажет. И не надо цитировать предыдущее сообщение.
Попробуйте пока -moz-appearance: none !important;

Отсутствует

 

№1025822-05-2021 21:29:25

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 159
UA: Firefox 68.0

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Алексей У.
Ждите Vitaliy V., может он чего подскажет. И не надо цитировать предыдущее сообщение.
Попробуйте пока -moz-appearance: none !important;

Не помогает. При наведении на кнопки вообще никакой реакции.

Отсутствует

 

№1025922-05-2021 21:55:18

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Слетает постоянно, при перезагрузке, а иногда и просто так, в 78 реже чем в 89. Можете исправить, если есть чего?

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

Выделить код

Код:

((btnID, btnTitle) => ({
    init() {
        ChromeUtils.defineModuleGetter(this, "ExtensionParent", "resource://gre/modules/ExtensionParent.jsm");
        XPCOMUtils.defineLazyGetter(this, "browserActionFor", () => {
            return this.ExtensionParent.apiManager.global.browserActionFor;
        });
        var getW = CustomizableUI.getWidget(btnID);
        if (getW?.instances?.length)
            for(let {node} of getW.instances)
                this.addNodeListener(node);
        CustomizableUI.addListener(this);
    },
    onWidgetAfterDOMChange(node) {
        if (node.id == btnID && !node._ucf_change)
            this.addNodeListener(node);
    },
    addNodeListener(node) {
        node._ucf_change = true;
        try {
            this.browserActionFor(this.ExtensionParent.WebExtensionPolicy.getByID(node.dataset.extensionid).extension)
            .action.defaults.title = btnTitle;
        } catch (e) {}
        node.addEventListener("contextmenu", function(e) {
            e.preventDefault();
            e.stopPropagation();
        }, true);
        node.addEventListener("click", function(e) {
            if (e.button == 2) {
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
                e.view.undoCloseTab();
            }
        });
    },
}).init())(
    "undoclosedtabsrev_button-browser-action",
    "ЛКМ: Undo Closed Tabs Button\nПКМ: Восстановить вкладку",
);

Алексей У. пишет

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

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

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

Выделить код

Код:

toolbarbutton.bookmark-item:not(.subviewbutton) {
    -moz-default-appearance: toolbarbutton !important;
    -moz-appearance: toolbarbutton !important;
    appearance: toolbarbutton !important;
    background-color: transparent !important;
}
@media (-moz-windows-classic) {
toolbarbutton.bookmark-item:not(.subviewbutton) {
    border: 1px solid transparent !important; 
    padding: 3px !important;
}	
toolbarbutton.bookmark-item:hover:not(.subviewbutton):not([disabled="true"]) {
    border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight !important;
}
toolbarbutton.bookmark-item:hover:active:not(.subviewbutton):not([disabled="true"]), 
toolbarbutton.bookmark-item[open="true"]:not(.subviewbutton) {
    border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow !important;
    padding-top: 4px !important;
    padding-bottom: 2px !important;
    padding-inline-start: 4px !important;
    padding-inline-end: 2px !important;
}
}

Отредактировано Vitaliy V. (23-05-2021 00:16:29)

Отсутствует

 

№1026023-05-2021 04:21:19

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.


Сделал, чтобы обычная иконка #PanelUI-menu-button была в виде крестика с красным фоном, а при наведении возвращается родной значок.
Но когда меняю PNG на svg иконку, то ничего не работает, иконка не меняется!

менять иконку нужно для скрипта: доп. клики на кнопке Меню

Выделить код

Код:

(async (id, func) => { // дополнительные клики на downloads-button, PanelUI-menu для custom_script_win.js
	await window.delayedStartupPromise;
	var btn = document.getElementById("downloads-button"), pui = document.getElementById("PanelUI-menu-button");
	if (!btn) return; btn.tooltipText = GetDynamicShortcutTooltipText(btn.id) +`

ПКМ:	Сохранить как единый html
	всё | выделенное на странице
…Shift	Обзор папки [Загрузки]\n
Ролик:	Сохранить как файл .txt
…Shift	Сайт: графика Вкл/Выкл\n
СКМ или Тащить рисунок вправо:
…cохранить в [Загрузки]/_Images\n
Alt⇧S	нажать кнопку SingleSave` // нет SingleSave - выполнить save()

pui.tooltipText =
`Браузер Firefox, версия ${Services.appinfo.platformVersion}\n
Правый клик:	⇲ Свернуть окно
…Alt		Персонализация\n
Ролик:		Закрыть браузер`

	var addDestructor = nextDestructor => {
		var {destructor} = ucf[id];
		ucf[id].destructor = () => {
			try {destructor();} catch(ex) {Cu.reportError(ex);}
			nextDestructor();
		}
	},
	showInStatusPanel = (info, time = 5000) => {
		var win = Services.wm.getMostRecentWindow("navigator:browser"); StatusPanel = win.StatusPanel;
		if (StatusPanel.update.tid)
			clearTimeout(StatusPanel.update.tid)
		else {
			var {update} = StatusPanel;
			StatusPanel.update = () => {};
			StatusPanel.update.ret = () => {
				StatusPanel.update = update;
				StatusPanel.update();
			}
		}
		StatusPanel.update.tid = setTimeout(StatusPanel.update.ret, time);
		StatusPanel._label = info;
	},
	saveSelectionToTxt = async () => { // сохранить страницу или выделенный текст как файл .txt
		var splice = saveURL.length == 10;
		var msgName = id + ":Save:GetSelection";
		var receiver = msg => {
			var title = document.title || gBrowser.selectedTab.label;
			var args = [
				"data:text/plain," + encodeURIComponent(gBrowser.currentURI.spec + "\n\n" + msg.data),
				title.replace(/[:\\\/<>?*|"]+/g,'_').replace(/\s+/g,' ').slice(0, 100).trim() + '_' + new Date().toLocaleString('ru').replace(', ','-').replace(/:/g, '։') + '.txt',
				null, false, true, null, window.document
			];
			splice && args.splice(5, 0, null);
			saveURL(...args) && showInStatusPanel("√ текст сохранён: " + title.slice(0, 60));
		}
		messageManager.addMessageListener(msgName, receiver);
		addDestructor(() => messageManager.removeMessageListener(msgName, receiver));
		var func = fm => {
			var res, fed, win = {}, fe = fm.getFocusedElementForWindow(content, true, win);
			var sel = (win = win.value).getSelection();
			if (sel.isCollapsed) {
				var ed = fe && fe.editor;
				if (ed && ed instanceof Ci.nsIEditor)
					sel = ed.selection, fed = fe;
			}
			if (sel.isCollapsed)
				fed && fed.blur(), docShell.doCommand("cmd_selectAll"),
				res = win.getSelection().toString(), docShell.doCommand("cmd_selectNone"),
				fed && fed.focus();
			res = res || sel.toString();
			/\S/.test(res) && sendAsyncMessage("saveSelectionToTxt", res);
		}
		var url = "data:;charset=utf-8," + encodeURIComponent(`(${func})`.replace("saveSelectionToTxt", msgName)) + '(Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager));';
		(saveSelectionToTxt = () => gBrowser.selectedBrowser.messageManager.loadFrameScript(url, false))();
	}, // end

	save = async () => { // автор: Лекс, правка: Dumby, Dobrov
		var msgName = id + "ucfDwnldsBtnSaveSnapshotToHTML";
		if (typeof IOUtils != "object") { // Firefox 78 ESR
			var {OS} = ChromeUtils.import("resource://gre/modules/osfile.jsm");
			var PathUtils = {join: (...args) => OS.Path.join(...args)};
			var IOUtils = {writeUTF8: (path, txt) => OS.File.writeAtomic(path, new TextEncoder().encode(txt))};
		}
		var write = IOUtils.writeUTF8 ? "writeUTF8" : "writeAtomicUTF8";

		var Title = (type) => { // получить заголовок (без обрезки, если type не указан) или домен (type <0)
			var title = (document.title || gBrowser.selectedTab.label);
			if ( !type ) return title; // заголовок
			if ( type > 0 ) return title.slice(0, type).replace(/ \| Форум Mozilla Россия$| — Mozilla Firefox|[\\\/?*\"'`]+/g,'').replace(/\s+/g,' ').replace(/[|<>]+/g,'_').replace(/:/g,'։').trim(); // ограничить длину имени
			var host = (/^file:\/\//.test(gURLBar.value)) ? '' : gURLBar.value.replace(/^.*url=|https?:\/\/|www\.|\/.*/g,'');
			return host.replace(/^ru\.|^m\.|forum\./,'').replace(/^club\.dns/,'dns');
		}
		var msgListener = async msg => {
			var [fileContent, fileName] = msg.data, dir;
			try {dir = prefs.getComplexValue("browser.download.dir", Ci.nsIFile);} catch {dir = dirsvc.get("DfltDwnld", Ci.nsIFile);}
			var arr = prefs.getStringPref("ucf_save.dirs", "_Web||_Images|0").split('|').slice(0, 2); // [Загрузки]/папки ucf_save/файл
			arr[1] = (arr[1] == "0") ? Title(100) : (arr[1] == "1") ? Title(-1) : ""; // имя вкладки или домен
			arr.forEach(dir.append); // ucf_save.dirs: путь для html|имя или домен|папка графики|имя вкладки
			dir.exists() && dir.isDirectory() || dir.create(dir.DIRECTORY_TYPE, 0o777); // создать папку, если не существует…
			var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
			file.initWithPath(dir.path);
			dir.append(fileName);
			await IOUtils[write](dir.path, fileContent) && showInStatusPanel("√ страница записана: " + fileName.slice(0, 60));
			var d = await Downloads.createDownload({ source: "about:blank", target: FileUtils.File(dir.path)}); // Fake download
			(await Downloads.getList(Downloads.ALL)).add(d);
			d.refresh(d.succeeded = true); // кнопка Загрузки мигает
		}
		messageManager.addMessageListener(msgName, msgListener);
		addDestructor(() => messageManager.removeMessageListener(msgName, msgListener));

		var svc = 'globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services';
		var url = "data:;charset=utf8," + encodeURIComponent(`(${func})(${svc});`.replace("%MSG_NAME%", msgName));
		(save = () => gBrowser.selectedBrowser.messageManager.loadFrameScript(url, false))();
	}, // end save

	listener = e => { var trg = e.target; // Downloads Clicks
		if (e.button == 1) {
			if (e.shiftKey) { // СКМ + Shift
				if ( prefs.getIntPref("permissions.default.image", 1) == 1)
					prefs.setIntPref("permissions.default.image", 2), trg.style.filter = "hue-rotate(180deg) brightness(95%)"
				else
					prefs.setIntPref("permissions.default.image", 1), trg.style.filter = "";
				BrowserReload();
			} else	// СКМ Click
				saveSelectionToTxt(); // сохранить .txt
		} else if (e.button == 2) {
			if (e.shiftKey)
				Downloads.getSystemDownloadsDirectory().then(path => FileUtils.File(path).launch(), Cu.reportError) // Обзор папки «Загрузки»
			else	// ПКМ Click
				save(); // Single HTML
		}
	},
	listener_pui = e => { // PanelUI-menu Clicks
		if (e.button == 1) e.shiftKey // middle
			? null : close()
		else if (e.button == 2) if (e.altKey) return
		else event.stopPropagation(), window.minimize();
	}, // end Clicks

	keydown_win = e => { // нажатие клавиш
		if (!(e.keyCode == 83 && e.shiftKey && e.altKey)) return;
		var singlesave = document.getElementById("_531906d3-e22f-4a6c-a102-8057b88a1a63_-browser-action"); // SingleSave
		singlesave ? singlesave.click() : save(); // имитировать клик по кнопке, используя её ID
	},
	{prefs, dirsvc} = Services, tmax = btn.tooltipText.split("\n")[0].length, dw;
	btn.setAttribute("context", "event.stopPropagation()");
	prefs.setBoolPref("browser.download.autohideButton", false); // не скрывать кнопку Загрузки

	btn.addEventListener("click", listener), pui.addEventListener("click", listener_pui);
		window.addEventListener("keydown", keydown_win);
	var ucf = window.ucf_custom_script_win || window.ucf_custom_script_all_win;
	ucf[id] = {destructor() {
		btn.removeEventListener("click", listener), pui.removeEventListener("click", listener_pui);
		window.removeEventListener("keydown", keydown_win);
	}};
	ucf.unloadlisteners.push(id);

})("downloads-button-click-listener", ({io, focus}) => {

	var resolveURL = function (url, base) {
		try { return io.newURI(url, null, io.newURI(base)).spec;
		} catch {}
	},
	getSelWin = function (w) {
		if (w.getSelection().toString()) return w;
		for (var i = 0, f, r; f = w.frames[i]; i++) {
			try { if (r = getSelWin(f)) return r;
			} catch(e) {}
		}
	},
	encodeImg = function (src, obj) {
		var canvas, img, ret = src;
		if (/^https?:\/\//.test(src)) {
			canvas = doc.createElement('canvas');
			if (!obj || obj.nodeName.toLowerCase() != 'img') {
				img = doc.createElement('img');
				img.src = src;
			} else
				img = obj;
			if (img.complete) try{
				canvas.width = img.width;
				canvas.height = img.height;
				canvas.getContext('2d').drawImage(img, 0, 0);
				ret = canvas.toDataURL((/\.jpe?g/i.test(src) ? 'image/jpeg' : 'image/png'));
			} catch (e) {};
			if (img != obj) img.src = 'about:blank';
		};
		return ret;
	},
	toSrc = function (obj) {
		var strToSrc = function (str) {
			var chr, ret = '', i = 0, meta = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\x22' : '\\\x22', '\\': '\\\\'};
			while (chr = str.charAt(i++)) {
				ret += meta[chr] || chr;
			};
			return '\x22' + ret + '\x22';
		},
		arrToSrc = function (arr) {
			var ret = [];
			for (var i = 0; i < arr.length; i++) {
				ret[i] = toSrc(arr[i]) || 'null';
			};
			return '[' + ret.join(',') + ']';
		},
		objToSrc = function (obj) {
			var val, ret = [];
			for (var prop in obj) {
				if (obj.hasOwnProperty(prop) && (val = toSrc(obj[prop]))) ret.push(strToSrc(prop) + ': ' + val);
			};
			return '{' + ret.join(',') + '}';
		};
		switch (Object.prototype.toString.call(obj).slice(8, -1)) {
			case 'Array': return arrToSrc(obj);
			case 'Boolean':
			case 'Function':
			case 'RegExp': return obj.toString();
			case 'Date': return 'new Date(' + obj.getTime() + ')';
			case 'Math': return 'Math';
			case 'Number': return isFinite(obj) ? String(obj) : 'null';
			case 'Object': return objToSrc(obj);
			case 'String': return strToSrc(obj);
			default: return obj ? (obj.nodeType == 1 && obj.id ? 'document.getElementById(' + strToSrc(obj.id) + ')' : '{}') : 'null';
		}
	},
	mainWin = {};
	focus.getFocusedElementForWindow(content, true, mainWin);
	mainWin = mainWin.value;

	var selWin = getSelWin(mainWin), win = selWin || mainWin, doc = win.document, loc = win.location;
	var ele, pEle, clone, reUrl = /(url\(\x22)(.+?)(\x22\))/g;

	if (selWin) {
		var rng = win.getSelection().getRangeAt(0);
		pEle = rng.commonAncestorContainer;
		ele = rng.cloneContents();
	} else {
		pEle = doc.documentElement;
		ele = (doc.body || doc.getElementsByTagName('body')[0]).cloneNode(true);
	};
	while (pEle) {
		if (pEle.nodeType == 1) {
			clone = pEle.cloneNode(false);
			clone.appendChild(ele);
			ele = clone;
		};
		pEle = pEle.parentNode
	};
	var sel = doc.createElement('div');
	sel.appendChild(ele);

	for (var el, all = sel.getElementsByTagName('*'), i = all.length; i--;) {
		el = all[i];
		if (el.style && el.style.backgroundImage) el.style.backgroundImage = el.style.backgroundImage.replace(reUrl, function (a, prev, url, next) {
			if (!/^[a-z]+:/.test(url)) url = resolveURL(url, loc.href);
			return prev + encodeImg(url) + next;
		});
		switch (el.nodeName.toLowerCase()) {
			case 'link':
			case 'style':
			case 'script': el.parentNode.removeChild(el); break;
			case 'a':
			case 'area': if (el.hasAttribute('href') && el.getAttribute('href').charAt(0) != '#') el.href = el.href; break;
			case 'img':
			case 'input': if (el.hasAttribute('src')) el.src = encodeImg(el.src, el); break;
			case 'audio':
			case 'video':
			case 'embed':
			case 'frame':
			case 'iframe': if (el.hasAttribute('src')) el.src = el.src; break;
			case 'object': if (el.hasAttribute('data')) el.data = el.data; break;
			case 'form': if (el.hasAttribute('action')) el.action = el.action; break;
		}
	};
	var head = ele.insertBefore(doc.createElement('head'), ele.firstChild), meta = doc.createElement('meta'), sheets = doc.styleSheets, title = doc.getElementsByTagName('title')[0];
	meta.httpEquiv = 'content-type';
	meta.content = 'text/html; charset=utf-8';
	head.appendChild(meta);
	if (title) head.appendChild(title.cloneNode(true));

	head.copyScript = function (unsafeWin) {
		if ('$' in unsafeWin) return;
		var f = doc.createElement('iframe');
		f.src = 'about:blank';
		f.setAttribute('style', 'position:fixed;left:0;top:0;visibility:hidden;width:0;height:0;');
		doc.documentElement.appendChild(f);
		var str, script = doc.createElement('script');
		script.type = 'text/javascript';
		for (var name in unsafeWin) {
			if (name in f.contentWindow || !/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)) continue;
			try {
				str = toSrc(unsafeWin[name]);
				if (!/\{\s*\[native code\]\s*\}/.test(str)) {
					script.appendChild(doc.createTextNode('var ' + name + ' = ' + str.replace(/<\/(script>)/ig, '<\\/$1') + ';\n'));
				}
			} catch (e) {};
		};
		f.parentNode.removeChild(f);
		if (script.childNodes.length) this.nextSibling.appendChild(script);
	};
	head.copyScript(win.wrappedJSObject || win);

	head.copyStyle = function (s) {
		if (!s) return;
		var style = doc.createElement('style');
		style.type = 'text/css';
		if (s.media && s.media.mediaText) style.media = s.media.mediaText;
		try {
			for (var i = 0, rule; rule = s.cssRules[i]; i++) {
				if (rule.type != 3) {
					if((!rule.selectorText || rule.selectorText.indexOf(':') != -1) || (!sel.querySelector || sel.querySelector(rule.selectorText))) {
						var css = !rule.cssText ? '' : rule.cssText.replace(reUrl, function (a, prev, url, next) {
							if (!/^[a-z]+:/.test(url)) url = resolveURL(url, s.href || loc.href);
							if(rule.type == 1 && rule.style && rule.style.backgroundImage) url = encodeImg(url);
							return prev + url + next;
						});
						style.appendChild(doc.createTextNode(css + '\n'));
					}
				} else {
					this.copyStyle(rule.styleSheet);
				}
			}
		} catch(e) {
			if (s.ownerNode) style = s.ownerNode.cloneNode(false);
		};
		this.appendChild(style);
	};
	for (var j = 0; j < sheets.length; j++) head.copyStyle(sheets[j]);
	head.appendChild(doc.createTextNode('\n'));

	var doctype = '', dt = doc.doctype;
	if (dt && dt.name) {
		doctype += '<!DOCTYPE ' + dt.name;
		if (dt.publicId) doctype += ' PUBLIC \x22' + dt.publicId + '\x22';
		if (dt.systemId) doctype += ' \x22' + dt.systemId + '\x22';
		doctype += '>\n';
	};

	var fileName = selWin ? win.getSelection().toString() : (title && title.text ? title.text : loc.pathname.split('/').pop());
	fileName = fileName.replace(/[:\\\/<>?*|"]+/g, '_').replace(/\s+/g, ' ').slice(0, 100).trim();
	fileName += "_" + new Date().toLocaleDateString('ru', {day: 'numeric', month: 'numeric', year: '2-digit'}) +'-'+ new Date().toLocaleTimeString().replace(/:/g, "։");
	if (!/\.html?$/.test(fileName)) fileName += '.html';

	sendAsyncMessage("%MSG_NAME%", [doctype + sel.innerHTML +'\n<a href='+ (loc.protocol != 'data:' ? loc.href : 'data:uri') +'><small><blockquote>источник: '+ new Date().toLocaleString("ru") +'</blockquote></small></a>', fileName]);

}); // END hookClicks

Выделить код

Код:

#PanelUI-menu-button:not(:hover) .toolbarbutton-icon {
	list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMA AA7EAAAOxAGVKw4bAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAKJQTFRF AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoBElOgAAADZ0 Uk5TAAEEBQYKCw0TFBYXISQuMDIzNEBBREZLWFlnaGl3eXx+f4uMjZCRnJ2foKipq6yztbm6u76/ C39FMwAAALlJREFUOI3VkkcSwjAMRRXTIfRO6L2XxO/+V2PBDGBD4i1opT9PY6t8kT8K1TV1V5na G9F7130mnlFQBd1+ybaGqvlEAFHjWR7CwOrBG8O1/Mj9C0w9q0DUHM4lEZHCEVapzzkyG9jnRLJb 2OU+uUj+AOu0WsKp+I0//p7N4OJ/5yKVG0BUi+MiLQ26Fc+lqUF34nklBIjqcdzVZP6YPKZrUWqR vGrnsYb2uQOTOw1jW65nW85p2t+OO5s+HGmx0zpjAAAAAElFTkSuQmCC") !important;
	-moz-image-region: auto!important;
	background-color: #f8cccd !important;
}
/* // Значок Крестик
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g fill="none" stroke="#000" stroke-width="3" opacity=".78"><path d="M1 1l46 46M1 47L47 1"/></g></svg>
*/

Отсутствует

 

№1026123-05-2021 10:13:35

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

Dobrov

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

Выделить код

Код:

#PanelUI-menu-button:not(:hover) {
	list-style-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16'><g><rect x='0' y='0' width='16' height='16' rx='3' ry='3' style='fill:rgb(248, 204, 205);'/><path d='M 3,3 13,13 M 3,13 13,3' style='fill:none;stroke:black;stroke-width:2;stroke-linecap:round;'/></g></svg>") !important;
	-moz-image-region: auto !important;
}

Отредактировано Vitaliy V. (23-05-2021 10:14:29)

Отсутствует

 

№1026223-05-2021 10:26:45

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. - благодарю!

Я заметил, что в git-архиве VitaliyVstyle.github.io нет полезного стиля: Вкладки снизу. Может стоит его добавить?

Отсутствует

 

№1026323-05-2021 11:01:05

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

Dobrov пишет

нет полезного стиля: Вкладки снизу. Может стоит его добавить?

Он противоречит стилю для меню

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

Это у тебя на [macos] меню работает не так как у всех...

Отредактировано Vitaliy V. (23-05-2021 11:02:33)

Отсутствует

 

№1026423-05-2021 11:34:41

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Спасибо. Еще нарисовалось:
В #webextpanels-window, #webext-panels-stack, #webext-panels-browser
при запуске браузера с открытой панелью TST и темной темой, мигает белым. Можно это как то предотвратить? Хоть скриптом, если стилем не получится.
Пробовал к тем id что выше применять разные стили, но эффекта нет.

Отсутствует

 

№1026523-05-2021 12:06:24

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

нет полезного стиля: Вкладки снизу. Может стоит его добавить?
Он противоречит стилю для меню

Только что проверил на IceWM всё нормально. На работе на kwin тоже не было визуальных проблем со стилем Вкладки снизу.
Вот только стиль меню я не подключал. Тема и фон окна системные.
Virtual-Box-Arch-23-05-2021-17-02-51.png

Отредактировано Dobrov (23-05-2021 12:07:33)

Отсутствует

 

№1026623-05-2021 15:55:47

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

при запуске браузера с открытой панелью TST и темной темой, мигает белым

Похоже это проблема только самого TST

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

Выделить код

Код:

@-moz-document regexp("moz-extension:\/\/.+\/sidebar\/sidebar\.html.*") {
:root,
#background {
    background-color: var(--browser-background, var(--tabbar-bg, #1c1b22)) !important;
}
}

Dobrov пишет

Вот только стиль меню я не подключал

Тогда о каком git-архиве ты толкуешь если user_chrome_files, то там не нужны лишние стили которые мало как относятся к добавленным панелям.
Я думал речь о full_theme

Отсутствует

 

№1026723-05-2021 17:21:15

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

Тогда о каком git-архиве ты толкуешь если user_chrome_files, то там не нужны лишние стили которые мало как относятся к добавленным панелям.
Я думал речь о full_theme

Лля меня вкладки вверху непривычны - все мои браузеры я настраивал по-другому.
Я просмотрел архив VitaliyVstyle.github.io-master и не нашёл там полезного стиля - вкладки снизу:

tabs_bellow.css

Выделить код

Код:

@-moz-document url("chrome://browser/content/browser.xhtml") {
*|*:root { /* вкладки снизу: стиль плюс скрипты https://forum.mozilla-russia.org/viewtopic.php?pid=784310#p784310 */
    --v-toolbar-menubar-height: 28px; /* =28px высота панели меню, только чётные числа не меньше 20px для macos = 0 */
    --v-toolbar-menubar-height-content: url("data:image/svg+xml,<svg width='28' height='56' xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='100%' height='100%' style='fill:transparent;'/></svg>");  /* =56 height='2 * --v-toolbar-menubar-height' */
}
#navigator-toolbox {
    border-block: none !important;
    box-shadow: none !important;
    padding-top: 0 !important;
    -moz-appearance: none !important;
    appearance: none !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar] #navigator-toolbox {
    position: relative !important;
}
#navigator-toolbox > toolbar {
    -moz-box-ordinal-group: 10 !important;
}
#navigator-toolbox > #nav-bar {
    margin-block: 0 !important;
    box-shadow: none !important;
    -moz-box-ordinal-group: 0 !important;
    padding-inline: 0 !important;
}
*|*:root:not([inFullscreen]) #navigator-toolbox > #nav-bar {
    margin-top: var(--v-toolbar-menubar-height) !important;
}
#navigator-toolbox > #PersonalToolbar {
    -moz-box-ordinal-group: 1 !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar] > *|body::before {
    content: var(--v-toolbar-menubar-height-content) !important;
    display: -moz-box !important;
    -moz-box-flex: 0 !important;
    -moz-box-orient: vertical !important;
    -moz-box-pack: start !important;
    -moz-box-align: stretch !important;
    -moz-box-ordinal-group: 0 !important;
    margin-bottom: calc(-2 * var(--v-toolbar-menubar-height)) !important;
    box-sizing: content-box !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][sizemode="normal"] > *|body::before {
    -moz-appearance: -moz-window-titlebar !important;
    appearance: -moz-window-titlebar !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][sizemode="maximized"] > *|body::before {
    -moz-appearance: -moz-window-titlebar-maximized !important;
    appearance: -moz-window-titlebar-maximized !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar]:-moz-lwtheme > *|body::before {
    visibility: hidden !important;
}
#navigator-toolbox > #titlebar {
    -moz-appearance: none !important;
    appearance: none !important;
    -moz-box-ordinal-group: 100 !important;
    position: static !important;
}
#toolbar-menubar {
    padding-block: 0 !important;
    margin-block: 0 !important;
    border: none !important;
    background: none !important;
    --toolbarbutton-outer-padding: 0px !important;
    --toolbarbutton-inner-padding: calc((var(--v-toolbar-menubar-height) - 16px) / 2) !important;
    -moz-appearance: none !important;
    appearance: none !important;
}
*|*:root:not(:is([inFullscreen],[chromehidden~="menubar"])) #toolbar-menubar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    flex-direction: row !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    min-height: 0 !important;
    height: var(--v-toolbar-menubar-height) !important;
    overflow: hidden !important;
}
#toolbar-menubar *|*.toolbarbutton-badge {
    margin-inline-end: calc(-1 * (var(--toolbarbutton-outer-padding) + var(--toolbarbutton-inner-padding))) !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > :is(toolbaritem,toolbarbutton) {
    align-self: center !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > :is(#menubar-items,#wrapper-menubar-items,.titlebar-buttonbox-container) {
    align-self: flex-start !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > * {
    padding-block: 0 !important;
    margin-block: 0 !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar[autohide="true"][inactive="true"]:not([customizing="true"]) > *:not(.titlebar-buttonbox-container) {
    opacity: 0 !important;
    pointer-events: none !important;
}
*|*:root[inFullscreen] #toolbar-menubar {
    visibility: collapse !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > :is(*[style*="-moz-box-ordinal-group: 1000;"],.titlebar-buttonbox-container) {
    order: 1000 !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > :is(toolbarspring,spacer,[id^="wrapper-customizableui-special-spring"]) {
    flex-grow: 1 !important;
}
*|*:root:not([inFullscreen]) #toolbar-menubar > :is(#search-container,#wrapper-search-container) {
    flex-grow: 100 !important;
}
#toolbar-menubar #search-container {
    padding-block: 0 !important;
}
#toolbar-menubar #searchbar {
    min-height: calc(var(--v-toolbar-menubar-height) - 2px) !important;
}
#TabsToolbar {
    -moz-appearance: none !important;
    appearance: none !important;
    padding-block: 0 !important;
    margin-block: 0 !important;
    box-shadow: 0 -1px 0 var(--tabs-border-color, rgba(0,0,0,.3)) inset !important;
    position: static !important;
    background-color: var(--toolbar-bgcolor, -moz-dialog) !important;
    background-image: var(--toolbar-bgimage, none) !important;
    color: var(--toolbar-color, -moz-dialogtext) !important;
    --lwt-toolbarbutton-icon-fill: inherit !important;
}
#TabsToolbar #tabbrowser-tabs {
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
}
#TabsToolbar .tabbrowser-tab {
    background-color: transparent !important;
    border-top: none !important;
}
#TabsToolbar > .toolbar-items {
    padding-top: 0 !important;
    margin-top: 0 !important;
}
#TabsToolbar .tab-background {
    border-top-style: solid !important;
}
#TabsToolbar .titlebar-buttonbox-container,
#navigator-toolbox::after,
#TabsToolbar::after,
#TabsToolbar .titlebar-spacer:is([type="pre-tabs"],[type="post-tabs"]) {
    display: none !important;
}
*|*:root[inFullscreen] #window-controls {
    position: absolute !important;
    display: flex !important;
    align-items: start !important;
    top: 0 !important;
    left: auto !important;
    right: 0 !important;
    margin: 0 !important;
}
*|*:root[inFullscreen] #window-controls:-moz-locale-dir(rtl) {
    left: 0 !important;
    right: auto !important;
}
*|*:root[inFullscreen] #navigator-toolbox > #nav-bar {
    padding-inline-end: var(--v-titlebar-buttonbox-container-width, 108px) !important;
}
*|*:root:not([inFullscreen])[v_menubar_autohide="true"] #navigator-toolbox > #nav-bar {
    margin-top: 0 !important;
    padding-inline-end: var(--v-titlebar-buttonbox-container-width, 108px) !important;
}
*|*:root:not([inFullscreen])[v_menubar_autohide="true"] #toolbar-menubar {
    pointer-events: none !important;
}
*|*:root:not([inFullscreen])[v_menubar_autohide="true"] #toolbar-menubar .titlebar-buttonbox-container {
    pointer-events: auto !important;
}
@media (-moz-os-version: windows-win7), (-moz-os-version: windows-win8) {
*|*:root[sizemode="normal"] #TabsToolbar {
    border-inline: 1px solid hsla(240,5%,5%,0.3) !important;
    background-clip: padding-box !important;
}
    @media (-moz-windows-classic: 0) {
*|*:root:not([inFullscreen])[v_menubar_autohide="true"][tabsintitlebar][sizemode="normal"] #navigator-toolbox > #nav-bar {
    margin-top: 1px !important;
}
*|*:root:not([inFullscreen])[sizemode="normal"] #toolbar-menubar:not([autohide="true"]) > #menubar-items {
    margin-top: 1px !important;
}
    }
}
@media (-moz-windows-classic) {
*|*:root:not([inFullscreen])[tabsintitlebar][sizemode="normal"] #navigator-toolbox::before {
    content: "" !important;
    display: -moz-box !important;
    height: 4px !important;
    -moz-box-ordinal-group: 0 !important;
    visibility: visible !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][sizemode="normal"]:-moz-lwtheme #navigator-toolbox::before {
    background-image: linear-gradient(to bottom, ThreeDLightShadow 0, ThreeDLightShadow 1px, ThreeDHighlight 1px, ThreeDHighlight 2px, ActiveBorder 2px, ActiveBorder 4px, transparent 4px) !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][sizemode="normal"] #toolbar-menubar {
    margin-top: 4px !important;
}
}
*|*:root[data-l10n-id="browser-main-window-mac"] {
    --v-toolbar-menubar-height: 0px !important;
    --v-toolbar-menubar-height-content: none !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][data-l10n-id="browser-main-window-mac"] #nav-bar {
    margin-inline-start: calc(var(--toolbarbutton-outer-padding, 2px) + var(--v-titlebar-button-horizont-padding, 6px) * 6 + var(--v-titlebar-button-image-width, 12px) * 3) !important;
}
*|*:root:not([inFullscreen])[tabsintitlebar][data-l10n-id="browser-main-window-mac"] #TabsToolbar .titlebar-buttonbox-container {
    visibility: visible !important;
    display: -moz-box !important;
    position: absolute !important;
    display: flex !important;
    top: 0 !important;
}
}

Отсутствует

 

№1026823-05-2021 19:06:47

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

Dobrov пишет

архив VitaliyVstyle.github.io-master

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

Отсутствует

 

№1026923-05-2021 22:07:26

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 88.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. Сделайте пожалуйста если это возможно что бы в этом скрипте menupopup был бы только на зведочке и нопке appMenu

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

Выделить код

Код:

// Автоматически открывать меню у некоторых кнопок...............		
(this.mouseoveropentoolbarbutton = {
            delay: 350,
            get buttonID() {
                delete this.buttonID;
                return this.buttonID = new Map([
                    ["PanelUI-menu-button", "appMenu-popup"],
                    ["library-button", "customizationui-widget-panel"],
                    ["fxa-toolbar-menu-button", "customizationui-widget-panel"],
                    ["nav-bar-overflow-button", "widget-overflow"],
                    ["star-button", "editBookmarkPanel"],
                    ["pageActionButton", "pageActionPanel"],
                ]);
            },
            get timer() {
                delete this.timer;
                return this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
            },
            init(that) {
                var arrayelem = this.arrayelem = document.querySelectorAll(`
                    #navigator-toolbox,
                    #browser-bottombox,
                    toolbar#add-additional-vertical-bar
                `);
                for (let elem of arrayelem)
                    elem.addEventListener("mouseover", this);
                that.unloadlisteners.push("mouseoveropentoolbarbutton");
            },
            handleEvent(event, node = event.target, popupID) {
                if (!node?.matches("toolbarbutton, image.urlbar-icon:not(:is(#star-button:not([starred='true'])))")) return;
                if (node.getAttribute("type") === "menu")
                    this.openPopup(node, node.menupopup);
                else if (node.getAttribute("widget-type") === "view")
                    this.openPopup(node);
                else if (node.classList.contains("toolbarbutton-combined-buttons-dropmarker"))
                    this.openPopup(node, null, true);
                else if (popupID = this.buttonID.get(node.id))
                    this.openPopup(node, null, false, popupID);
            },
            openPopup(node, menupopup, dropmarker, popupID) {
                this.timer.cancel();
                this.timer.initWithCallback(() => {
                    if (node.open) return;
                    if (this.curbut?.open) {
                        this.curbut.menupopup
                        ? this.curbut.menupopup.hidePopup()
                        : document.querySelector(`panel[viewId='${this.curid}'], panel[id='${this.curid}'], menupopup[id='${this.curid}']`)?.hidePopup();
                    } else
                       document.querySelector(":is(menupopup,panel)[panelopen='true'], toolbarbutton[open='true'] > menupopup")?.hidePopup();
                    this.curbut = node;
                    this.curid = !popupID ? CustomizableUI.getWidget(`${!dropmarker ? node.id : node.parentNode.id}`).viewId : popupID;
                    menupopup ? menupopup.openPopup() : (!popupID ? node.doCommand() : node.click());
                }, this.delay, Ci.nsITimer.TYPE_ONE_SHOT);
                node.addEventListener("mouseleave", () => {
                    this.timer.cancel();
                }, { once: true });
            },
            destructor() {
                for (let elem of this.arrayelem)
                    elem.removeEventListener("mouseover", this);
            },
        }).init(this);

Отсутствует

 

№1027023-05-2021 23:51:16

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2077
UA: Firefox 89.0

Re: Настройка внешнего вида Firefox в userChrome.css

egorsemenov06 пишет

Сделайте пожалуйста если это возможно что бы в этом скрипте menupopup был бы только на зведочке и нопке appMenu

menupopup? нет невозможно

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

Выделить код

Код:

(this.mouseoveropentoolbarbutton = {
            delay: 350,
            get buttonID() {
                delete this.buttonID;
                return this.buttonID = new Map([
                    ["PanelUI-menu-button", "appMenu-popup"],
                    ["star-button", "editBookmarkPanel"],
                ]);
            },
            get timer() {
                delete this.timer;
                return this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
            },
            init(that) {
                var arrayelem = this.arrayelem = document.querySelectorAll(`
                    #star-button,
                    #PanelUI-menu-button
                `);
                for (let elem of arrayelem)
                    elem.addEventListener("mouseover", this);
                that.unloadlisteners.push("mouseoveropentoolbarbutton");
            },
            handleEvent(event, node = event.target) {
                this.openPopup(node, this.buttonID.get(node.id));
            },
            openPopup(node, popupID) {
                this.timer.cancel();
                this.timer.initWithCallback(() => {
                    if (node.open) return;
                    if (this.curbut?.open) {
                        this.curbut.menupopup
                        ? this.curbut.menupopup.hidePopup()
                        : document.querySelector(`panel[viewId='${this.curid}'], panel[id='${this.curid}'], menupopup[id='${this.curid}']`)?.hidePopup();
                    } else
                       document.querySelector(":is(menupopup,panel)[panelopen='true'], toolbarbutton[open='true'] > menupopup")?.hidePopup();
                    this.curbut = node;
                    this.curid = popupID;
                    node.click();
                }, this.delay, Ci.nsITimer.TYPE_ONE_SHOT);
                node.addEventListener("mouseleave", () => {
                    this.timer.cancel();
                }, { once: true });
            },
            destructor() {
                for (let elem of this.arrayelem)
                    elem.removeEventListener("mouseover", this);
            },
        }).init(this);

Отсутствует

 

№1027124-05-2021 00:08:12

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 88.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

menupopup? нет невозможно

Спасибо Вам большое!!!

Отсутствует

 

№1027224-05-2021 17:21:00

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

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Спасибо.
   
А как скрыть пункты контекстного меню
#context-viewimage,               /* Open Image in New Tab           */
#context-copyimage,               /* Copy Image Link                 */
#context-sep-setbackground,       /************ Separator ************/
для контекста "страница"? Такое вообще возможно?
   
Также есть еще несоответствия контекста, например при выделенном тексте и ПКМ по ссылке:

скрытый текст
2021.1621871500.jpg

   
И еще, как в ContextMenuOpenWith скрыть пункты/подменю меню страницы в полях ввода?

Отредактировано _zt (24-05-2021 18:54:28)

Отсутствует

 

№1027324-05-2021 18:16:46

classic81
Участник
 
Группа: Members
Зарегистрирован: 09-03-2021
Сообщений: 6
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Перешел с 68 ESR на 78 ESR.

В 68 ESR было 2021-05-24-175631-cr.png


В 78 ESR стало 2021-05-24-175749-cr.png

Как вернуть этот серый фон под кнопками поисковых систем? Поиском в теме не нашел, м.б. плохо искал.

Отредактировано classic81 (24-05-2021 18:19:17)

Отсутствует

 

№1027424-05-2021 23:43:14

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

classic81 пишет

Как вернуть этот серый фон под кнопками поисковых систем?

Так можно

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

Выделить код

Код:

#PopupSearchAutoComplete .search-panel-current-engine, 
#PopupSearchAutoComplete .search-one-offs {
	background-color: hsla(0,0%,80%,.35) !important;
}

Отсутствует

 

№1027524-05-2021 23:46:24

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

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79 пишет

Как вернуть этот серый фон под кнопками поисковых систем?

На Firefox 87 не работает. Добавлял и в custom_style_agent.css и в custom_style_user.css…

Отсутствует

 

Board footer

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