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

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№892604-08-2020 19:35:39

Duche
Участник
 
Группа: Members
Зарегистрирован: 07-02-2016
Сообщений: 197
UA: unknown 0.0

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

kokoss пишет

Значит что то не так сделали

Полтергейст какой то.

Путь.C:\Firefox_Good_NB\Profile\chrome\Icons

Код. #library-button { 
    list-style-image: url("./icons/book1.png") !important;
}

Отсутствует

 

№892704-08-2020 20:20:57

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

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

Duche пишет

Полтергейст какой то.

Проверьте только с этим кодом! Если и тогда не будет работать, тогда не знаю...


Add, если используйте "Firefox Good", то попробуйте добавить этот код в файл "FG_userChrome.css".

Отредактировано kokoss (04-08-2020 20:31:55)

На форуме

 

№892804-08-2020 20:34:26

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

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

_zt
Вот такое придумалось, но надо тестить
custom_script.js

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

Выделить код

Код:

try {
    (() => {
        var id = "ucf-toggle-tooltip-url",
        label = "Тултипы с URL",
        tooltiptext = "Переключить тултипы",
        img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><rect x='0' y='0' width='48' height='48' rx='3' ry='3' style='fill:rgb(0, 120, 173);'/><path style='opacity:0.25;fill:black;' d='M 32,5 24,12 22.8,20.3 24.2,21.7 21.7,24.3 20.3,22.9 12,24 5,31 7.7,43 12.7,48 H 45 C 46.7,48 48,46.7 48,45 V 12.8 L 40.2,5 Z'/><path style='fill:white;' d='M 40.4,5.23 C 37.5,2.26 32.9,2.26 29.8,5.23 L 24,11 C 21.5,13.5 21.2,17.4 22.8,20.3 L 25.8,17.3 C 25.2,15.4 25.7,14 27.2,12.6 L 31,8.8 C 33.3,6.55 36,6.55 38.1,8.8 L 39.3,9.9 C 41.4,12.1 41.4,14.7 39.2,17 L 35.4,20.8 C 33.9,22.4 32.1,23.2 30.2,22.7 L 27.8,25.2 C 30.6,26.9 34.4,26.5 37.1,24 L 42.7,18.2 C 45.7,15.2 45.7,10.5 42.7,7.49 L 40.4,5.23 M 33,15 C 32.3,14.5 31.4,14.3 30.6,14.8 L 14.8,30.6 C 14.3,31.3 14.5,32.3 15,33 15.6,33.5 16.7,33.7 17.4,33.2 L 33.2,17.4 C 33.7,16.7 33.5,15.6 33,15 M 20.3,22.9 C 17.4,21.2 13.4,21.5 11,24 L 5.23,29.8 C 2.26,32.9 2.26,37.6 5.23,40.4 L 7.48,42.8 C 10.5,45.8 15.3,45.8 18.2,42.8 L 24,37.1 C 26.5,34.5 26.8,30.6 25.1,27.7 L 22.2,30.7 C 22.7,32.6 22.3,34 20.8,35.5 L 17,39.3 C 14.8,41.5 12,41.5 9.8,39.4 L 8.8,38.2 C 6.55,36 6.55,33.3 8.8,31 L 12.5,27.3 C 14,25.7 15.4,25.3 17.2,25.7' /></g></svg>",
        img2 = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><rect x='0' y='0' width='48' height='48' rx='3' ry='3' style='fill:rgb(135, 135, 140);'/><path style='opacity:0.25;fill:black;' d='M 32,5 24,12 22.8,20.3 24.2,21.7 21.7,24.3 20.3,22.9 12,24 5,31 7.7,43 12.7,48 H 45 C 46.7,48 48,46.7 48,45 V 12.8 L 40.2,5 Z'/><path style='fill:white;' d='M 40.4,5.23 C 37.5,2.26 32.9,2.26 29.8,5.23 L 24,11 C 21.5,13.5 21.2,17.4 22.8,20.3 L 25.8,17.3 C 25.2,15.4 25.7,14 27.2,12.6 L 31,8.8 C 33.3,6.55 36,6.55 38.1,8.8 L 39.3,9.9 C 41.4,12.1 41.4,14.7 39.2,17 L 35.4,20.8 C 33.9,22.4 32.1,23.2 30.2,22.7 L 27.8,25.2 C 30.6,26.9 34.4,26.5 37.1,24 L 42.7,18.2 C 45.7,15.2 45.7,10.5 42.7,7.49 L 40.4,5.23 M 33,15 C 32.3,14.5 31.4,14.3 30.6,14.8 L 14.8,30.6 C 14.3,31.3 14.5,32.3 15,33 15.6,33.5 16.7,33.7 17.4,33.2 L 33.2,17.4 C 33.7,16.7 33.5,15.6 33,15 M 20.3,22.9 C 17.4,21.2 13.4,21.5 11,24 L 5.23,29.8 C 2.26,32.9 2.26,37.6 5.23,40.4 L 7.48,42.8 C 10.5,45.8 15.3,45.8 18.2,42.8 L 24,37.1 C 26.5,34.5 26.8,30.6 25.1,27.7 L 22.2,30.7 C 22.7,32.6 22.3,34 20.8,35.5 L 17,39.3 C 14.8,41.5 12,41.5 9.8,39.4 L 8.8,38.2 C 6.55,36 6.55,33.3 8.8,31 L 12.5,27.3 C 14,25.7 15.4,25.3 17.2,25.7' /></g></svg>";

        var branch = "extensions.ucf.", pref = "tooltip_url_enable";
        var tpurl = {
            initialised: false,
            get ext_branch() {
                delete this.ext_branch;
                return this.ext_branch = Services.prefs.getBranch(branch);
            },
            get framescript() {
                delete this.framescript;
                return this.framescript = "data:application/javascript;charset=utf-8," + encodeURIComponent(`(${(function() {
                    var timer;
                    var tooltipurl = {
                        init() {
                            addEventListener("mouseover", this, true);
                            addMessageListener("requestTooltipUrl", this);
                            var unload = () => {
                                this.destroy();
                            };
                            addEventListener("unload", unload);
                            this.removeUnload = () => {
                                removeEventListener("unload", unload);
                                this.removeUnload = null;
                            };
                        },
                        receiveMessage(msg) {
                            this.destroy();
                        },
                        handleEvent(e) {
                            if (!/^(?:https?|ftp|file):/.test(content.location.href)) {
                                this.destroy();
                                return;
                            }
                            timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
                            (this.handleEvent = e => {
                                timer.cancel();
                                timer.initWithCallback(() => {
                                    var elm = (e.composedTarget || e.explicitOriginalTarget || e.originalTarget || e.target || content), el, titl;
                                    do {
                                        if (!elm.matches) continue;
                                        if (elm.matches(":any-link")) {
                                            if (elm.matches("[href='#'], [href^='javascript']"))
                                                return;
                                            el = elm;
                                            if (elm.matches("[title]"))
                                                titl = elm;
                                            else
                                                while (elm = elm.flattenedTreeParentNode) {
                                                    if (!elm.matches) continue;
                                                    if (elm.matches("[title]")) {
                                                        titl = elm;
                                                        break;
                                                    }
                                                }
                                            break;
                                        }
                                        if (elm.matches("[title]")) {
                                            titl = elm;
                                            while (elm = elm.flattenedTreeParentNode) {
                                                if (!elm.matches) continue;
                                                if (elm.matches(":any-link")) {
                                                    if (elm.matches("[href='#'], [href^='javascript']"))
                                                        return;
                                                    el = elm;
                                                    break;
                                                }
                                            }
                                            break;
                                        }
                                    } while (elm = elm.flattenedTreeParentNode);
                                    if (!el) return;
                                    var href = el.href;
                                    if (titl) el = titl;
                                    titl = (el.title || "");
                                    var title = titl.trim(), pre = "", path = "";
                                    try {
                                        href = Services.io.newURI(href);
                                        pre = href.displayPrePath;
                                        path = `\n${href.pathQueryRef}`;
                                        if (path === "\n/") path = "";
                                        href = `${pre}${path}`;
                                    } catch (e) {}
                                    try {
                                        href = decodeURIComponent(href);
                                    } catch (e) {}
                                    el.title = title = `${href}${title === "" ? "" : `\nTitle: ${title}`}`;
                                    addEventListener("mouseout", () => {
                                        try {
                                            if (!el || title !== el.title) return;
                                            if (titl !== "")
                                                el.title = titl;
                                            else
                                                el.removeAttribute("title");
                                        } catch (e) {}
                                    }, { once: true });
                                }, 400, Ci.nsITimer.TYPE_ONE_SHOT);
                            })(e);
                        },
                        destroy() {
                            if (timer) {
                                timer.cancel();
                                timer = null;
                            }
                            removeEventListener("mouseover", this, true);
                            removeMessageListener("requestTooltipUrl", this);
                            this.removeUnload();
                        }
                    };
                    tooltipurl.init();
                })})();`);
            },
            init: function() {
                if (this.initialised) return;
                Services.prefs.getDefaultBranch(branch).setBoolPref(pref, true);
                Services.prefs.addObserver(`${branch}${pref}`, this);
                this.initialised = true;
            },
            observe: function(subject, topic, data) {
                var getW = CustomizableUI.getWidget(id), image, func;
                if (this.ext_branch.getBoolPref(pref) == true)
                    image = img, func = "loadframescript";
                else
                    image = img2, func = "destroyframescript";
                if (getW.instances.length)
                    for(let {node} of getW.instances)
                        try {
                            this[func](node.ownerGlobal);
                            node.setAttribute("image", image);
                        } catch(e) {}
                else
                    for (let win of CustomizableUI.windows)
                        try {
                            this[func](win);
                            getW.forWindow(win).node.setAttribute("image", image);
                        } catch(e) {}
            },
            uninit: function() {
                if (!this.initialised) return;
                Services.prefs.removeObserver(`${branch}${pref}`, this);
                this.ext_branch.deleteBranch("");
                this.initialised = false;
            },
            loadframescript: function(win) {
                var mm = win.getGroupMessageManager("browsers");
                mm.loadFrameScript(this.framescript, true);
            },
            destroyframescript: function(win) {
                var mm = win.getGroupMessageManager("browsers");
                mm.broadcastAsyncMessage("requestTooltipUrl");
                mm.removeDelayedFrameScript(this.framescript);
            },
        };
        CustomizableUI.createWidget({
            id: id,
            label: label,
            tooltiptext: tooltiptext,
            localized: false,
            defaultArea: CustomizableUI.AREA_NAVBAR,
            onCreated: function(btn) {
                tpurl.init();
                if (tpurl.ext_branch.getBoolPref(pref) == true) {
                    btn.setAttribute("image", img);
                    tpurl.loadframescript(btn.ownerGlobal);
                } else
                    btn.setAttribute("image", img2);
            },
            onDestroyed: function(doc) {
                tpurl.destroyframescript(doc.defaultView);
                tpurl.uninit();
            },
            onCommand: function(e) {
                tpurl.ext_branch.setBoolPref(pref, !tpurl.ext_branch.getBoolPref(pref));
            },
        });
    })();
} catch(e) {}


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


UPD: Исправил обнаруженные недостатки

Отредактировано Vitaliy V. (19-08-2020 17:19:50)

Отсутствует

 

№892904-08-2020 21:39:50

Duche
Участник
 
Группа: Members
Зарегистрирован: 07-02-2016
Сообщений: 197
UA: unknown 0.0

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

kokoss пишет

этот код в файл "FG_userChrome.css".

Он там и есть.

Отсутствует

 

№893004-08-2020 22:06:46

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

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

Duche
Ну тогда не знаю, у меня работает:

скрин
4ad9797bc5f4.png

На форуме

 

№893104-08-2020 22:23:41

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

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

Vitaliy V. пишет

Вот такое придумалось

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


Вобщем, никаких эвент и мессадж листенеров,
вместо этого — врезка в TooltipTextProvider.prototype.
Ну, я просто на интерес показать, не как продукт, а как концепцию.

Выделить код

Код:

try {CustomizableUI.createWidget(({
	label: "Href in tooltip",
	icons: {
		true: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
		false: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="
	},
	id: "ucf-HrefInTooltip",
	pref: "ucf.HrefInTooltip.enabled",
	localized: false,
	get state() {
		return Services.prefs.getBoolPref(this.pref, false);
	},
	setIcon(btn, state = this.state) {
		btn.setAttribute("image", this.icons[state]);
	},
	onCreated(btn) {
		btn.owner = this;
		this.setIcon(btn);
		btn.tooltipText = this.label;
		btn.setAttribute("oncommand", "owner.toggle()");
	},
	toggle() {
		Services.prefs.setBoolPref(this.pref, !this.state);
	},
	observe(s, topic) {
		if (topic.startsWith("q")) return this.destroy();
		var {state} = this;
		for(var {node} of CustomizableUI.getWidget(this.id).instances)
			this.setIcon(node, state);
		state ? this.initTooltip() : this.destroyTooltip();
	},
	init() {
		Services.prefs.addObserver(this.pref, this);
		Services.obs.addObserver(this, "quit-application-granted", false);
		this.state && this.initTooltip();
		delete this.init; return this;
	},
	destroy() {
		Services.prefs.removeObserver(this.pref, this);
		Services.obs.removeObserver(this, "quit-application-granted");
	},
	initTooltip() {
		var url = this.initURL = this.createURL("psInit");
		(this.initTooltip = () => Services.ppmm.loadProcessScript(url, true))();
	},
	destroyTooltip() {
		var url = this.createURL("psDestroy");
		(this.destroyTooltip = () => {
			Services.ppmm.removeDelayedProcessScript(this.initURL);
			Services.ppmm.loadProcessScript(url, false);
		})();
		delete this.createURL;
	},
	createURL: function createURL(meth) {
		var subst = this.id + "-" + meth;
		(createURL.rph || (createURL.rph = Services.io.getProtocolHandler("resource")
				.QueryInterface(Ci.nsIResProtocolHandler)
		)).setSubstitution(subst, Services.io.newURI("data:text/javascript;charset=utf-8," + encodeURIComponent(
			`(${this[meth]})(ChromeUtils.import("resource://gre/modules/TooltipTextProvider.jsm").TooltipTextProvider.prototype)`
		)));
		delete this[meth]; return "resource://" + subst;
	},
	psInit: proto => {
		if (proto.getTextPlus) return proto.getNodeText = proto.getTextPlus.newGetNodeText;

		//================[ start content ]================

		proto.getTextPlus = node => {
			var href = getHref(node);
			if (!href || href == "#" || skipRe.test(href)) return;
			if (href.startsWith("data:")) return crop(href, 64);
			return crop(decode(href));
		}
		var skipRe = /^(?:javascript|addons):/;

		var getHref = node => {do {
			if (HTMLAnchorElement.isInstance(node) && node.href) return node.href;
		} while (node = node.flattenedTreeParentNode)}

		var crop = (url, max = 128) => url.length <= max
			? url : url.slice(0, --max) + "\u2026"; // ellipsis

		var decode = url => {
			var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
			var ldu = Cu.import("resource:///modules/UrlbarInput.jsm", {}).losslessDecodeURI;
			return (decode = url => {try {return ldu(ios.newURI(url));} catch {return url;}})(url);
		}

		//================[ end content ]==================

		var func = proto.getTextPlus.getNodeText = proto.getNodeText;
		proto.getTextPlus.newGetNodeText = proto.getNodeText = function(node, text) {
			var res = func.apply(this, arguments);
			if (!res && !(node?.localName != "browser" && node.ownerGlobal && node.ownerDocument))
				return false;
			var txt = this.getTextPlus(node);
			return txt ? text.value = res ? txt + "\n" + text.value : txt : res;
		}
	},
	psDestroy: proto => {
		proto.getNodeText = proto.getTextPlus.getNodeText;
	}
}).init())} catch(ex) {Cu.reportError(ex);}

Отредактировано Dumby (04-08-2020 22:28:31)

Отсутствует

 

№893204-08-2020 23:35:09

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

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

Vitaliy V. пишет

Вот такое придумалось, но надо тестить
custom_script.js

Прикольно, спасибо. А как бы тогда убрать тултип в строке статуса? Чтоб небыло лишнего мелькания и дублирования.



_zt
Хотел ответить, но после скрипта от Vitaliy V. это потеряло смысл. Тем более что вы скатились к откровенным глупостям.

Отредактировано voqabuhe (04-08-2020 23:39:47)

Отсутствует

 

№893304-08-2020 23:55:35

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

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

Vitaliy V.
Dumby
Спасибо за скрипт !!!

На форуме

 

№893405-08-2020 00:00:10

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

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

Vitaliy V.
Заметил, что скрипт не срабатывает, если вкладку выгрузить, а потом снова загрузить.

Добавлено 05-08-2020 00:19:27
Dumby
У меня почему-то твой скрипт не работает [firefox] 79.0. Засунул его в custom_script.js, правильно, или куда его?

Отредактировано voqabuhe (05-08-2020 00:19:27)

Отсутствует

 

№893505-08-2020 00:43:35

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

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

voqabuhe пишет

У меня почему-то твой скрипт не работает [firefox] 79.0. Засунул его в custom_script.js, правильно, или куда его?

Да, засунул правильно.
И да, вот прям после установки не работает.
Нужно либо создать true настройку, либо вытащить и нажать кнопку.

Отсутствует

 

№893605-08-2020 01:21:51

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

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

Vitaliy V.
Вроде хорошо. Поставил буду смотреть и сообщу если что. Спасибо.
   
Как убрать переход на новую строку после базового адреса? Достаточно, только в первой строке или во второй тоже?

Выделить код

Код:

path = `\n${href.pathQueryRef}`;
if (path === "\n/") path = "";

Хочу посмотреть как удобнее будет.
   
Обработку атрибута alt= добавлять не думаете? На предыдущей странице у моих картинок он есть (если для теста). Если вдруг надумаете, то возможно, alt стоит показывать, только если title нет, а то иногда в alt title дублируют.
   
voqabuhe

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

Отредактировано _zt (05-08-2020 01:22:59)

Отсутствует

 

№893705-08-2020 01:27:53

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

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

voqabuhe пишет

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

А на [nightly] не заметил такого, значит пусть будет DOMContentLoaded а не pageshow, заменил.

Dumby пишет

я тоже пытался придумать, и показалось приемлимым

Ну вот, если бы знал то и время бы не стал тратить на это, но два варианта лучше.
Будет время разберусь что это за концепция.

Добавлено 05-08-2020 01:33:09

_zt пишет

Как убрать переход на новую строку после базового адреса?

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

Выделить код

Код:

//path = `\n${href.pathQueryRef}`;
//if (path === "\n/") path = "";
path = href.pathQueryRef;
if (path === "/") path = "";


P.S. И это не базовый домен...
Добавлено 05-08-2020 01:36:42

_zt пишет

Обработку атрибута alt= добавлять не думаете?

А зачем, какой от него прок, когда картинки не загрузятся?

Отредактировано Vitaliy V. (05-08-2020 01:47:14)

Отсутствует

 

№893805-08-2020 01:38:17

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

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

Dumby

Dumby пишет

Да, засунул правильно.
И да, вот прям после установки не работает.
Нужно либо создать true настройку, либо вытащить и нажать кнопку.

Ах вон оно чё, ну кто ж  знал, что это целая кнопка. :) Спасибо, ну это совсем идеально. 


_zt

не скатывайтесь, как баба базарная, до откровенного хамства

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


Добавлено 05-08-2020 01:41:23

Vitaliy V. пишет

А на [nightly] не заметил такого, значит пусть будет DOMContentLoaded а не pageshow, заменил.

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

Отредактировано voqabuhe (05-08-2020 01:42:44)

Отсутствует

 

№893905-08-2020 01:51:30

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

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

voqabuhe
стилем

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

Выделить код

Код:

#statuspanel[type="overLink"] {
    transition: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
}

Отсутствует

 

№894005-08-2020 01:56:16

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

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

Vitaliy V.

alt

А он только у картинок используется? Значит я чего то не понял. Тогда вопрос снимается. Просто я пока скрипты гонял несколько раз наткнулся, но не понял, что только у картинок.

P.S. И это не базовый домен...

Я писал базовый адрес, а не домен. Не знаю как правильно его назвать.

Отсутствует

 

№894105-08-2020 10:28:10

Neytrino
Участник
 
Группа: Extensions
Зарегистрирован: 05-02-2006
Сообщений: 132
UA: Firefox 79.0

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

Всем привет, есть:
Расширения Classical Search Bar и Purple Private Windows
Когда (в приватном режиме) активно второе, иконки поисковых систем из первого и иконки поисковых систем в самом фоксе - не инвертируются (а хотелось бы чтобы они не выбивались из общего дизайна).

скрытый текст
9d10278bd9f1af4948aa502b2e58f2c3.jpg

Можно ли что-нибудь с этим сделать..? (p.s. если это имеет значение, все иконки поисковых систем у меня в *.svg)

Отредактировано Neytrino (05-08-2020 11:52:55)


© уважением Neytrino.

Отсутствует

 

№894205-08-2020 12:12:20

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

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

_zt
ну да для ссылок он бесполезен,  используется в тегах
<img>
<area>
<input type="image">
Neytrino
Ну не знаю разве что фильтр применить но будет всё одним цветом

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

Выделить код

Код:

*|*:root[privatebrowsingmode] .searchbar-engine-image,
*|*:root[privatebrowsingmode] .searchbar-engine-one-off-item > .button-box > .button-icon {
    filter: url("data:image/svg+xml;charset=utf-8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='fill'><feComposite in='FillPaint' in2='SourceGraphic' operator='in'/></filter></svg>#fill") !important;
    fill: currentColor !important;
    color: inherit !important;
}


@-moz-document url("moz-extension://XXXXXXXX-XXXX-UUID-XXXX-XXXXXXXXXXXX/popup/popup.html") {
    :root[style] .menuitem .icon img {
        filter: url("data:image/svg+xml;charset=utf-8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='fill'><feComposite in='FillPaint' in2='SourceGraphic' operator='in'/></filter></svg>#fill") !important;
        fill: var(--popup-text) !important;
    }
}


второй код для Classical Search Bar, в userContent.css

Отсутствует

 

№894305-08-2020 12:22:28

qwerty1956
Участник
 
Группа: Members
Зарегистрирован: 30-06-2020
Сообщений: 2
UA: Firefox 69.0

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

После нажатии звездочки в адресной строке, в открывшемся окне нужно выбрать место сохранения и нажать Готово для закрытия. Недавно пробегал способ (стиль? / скрипт?) автозакрытия окна сразу после выбора места сохранения. Никак не могу теперь найти. Кто знает, подскажите, пожалуйста

Отсутствует

 

№894405-08-2020 12:35:52

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

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

qwerty1956 пишет

После нажатии звездочки в адресной строке, в открывшемся окне нужно выбрать место сохранения и нажать Готово для закрытия. Недавно пробегал способ (стиль? / скрипт?) автозакрытия окна сразу после выбора места сохранения.

После выбора места сохранения закладки, кликните ЛКМ на пустом месте страницы и это окно закроется.

На форуме

 

№894505-08-2020 12:56:50

qwerty1956
Участник
 
Группа: Members
Зарегистрирован: 30-06-2020
Сообщений: 2
UA: Firefox 69.0

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

kokoss пишет

После выбора места сохранения закладки, кликните ЛКМ на пустом месте страницы и это окно закроется.

Чем отличается от клика ЛКМ по кнопке Готово? То же лишнее действие. Вопрос про

автозакрытие окна

Отредактировано qwerty1956 (05-08-2020 12:58:42)

Отсутствует

 

№894605-08-2020 13:02:44

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

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

qwerty1956 пишет

Чем отличается от клика ЛКМ по кнопке Готово?

Тем что для меня так удобнее :)

На форуме

 

№894705-08-2020 14:33:40

Neytrino
Участник
 
Группа: Extensions
Зарегистрирован: 05-02-2006
Сообщений: 132
UA: Firefox 79.0

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

Vitaliy V., как всегда - очень круто, спасибо! но второй код (в "userContent.css" почему-то не работает)

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

Выделить код

Код:

@-moz-document url("moz-extension://6905b838-e843-4ee3-9df0-b4c79673b21c/popup/popup.html") {
    :root[style] .menuitem .icon img {
        filter: url("data:image/svg+xml;charset=utf-8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='fill'><feComposite in='FillPaint' in2='SourceGraphic' operator='in'/></filter></svg>#fill") !important;
        fill: var(--popup-text) !important;
    }
}


© уважением Neytrino.

Отсутствует

 

№894805-08-2020 15:16:39

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

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

Neytrino
Должен работать если в настройках Classical Search Bar
оформление auto + тема [firefox] в данном случае расширение Purple Private Windows
или тёмное - тема не обязательна.
А если так заменить
:root[style] --> удалить
var(--popup-text) --> currentColor
если нет, то возможно что-то с файлом userContent.css не того
или UUID не тот

Отредактировано Vitaliy V. (05-08-2020 15:21:19)

Отсутствует

 

№894905-08-2020 18:32:33

Neytrino
Участник
 
Группа: Extensions
Зарегистрирован: 05-02-2006
Сообщений: 132
UA: Firefox 79.0

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

Vitaliy V., и так - тоже не хочет...

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

Выделить код

Код:

@-moz-document url("moz-extension://6905b838-e843-4ee3-9df0-b4c79673b21c/popup/popup.html") {
    .menuitem .icon img {
        filter: url("data:image/svg+xml;charset=utf-8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='fill'><feComposite in='FillPaint' in2='SourceGraphic' operator='in'/></filter></svg>#fill") !important;
        fill: currentColor !important;
    }
}


Остальное содержимое userContent - работает корректно, пробовал перемещать код  в начало файла (если там дальше по тексту есть какие ошибки - в самом начале они не должны его затрагивать)...
UUID - тот, ну по крайней мере у *.xpi расширения (в папке "extensions") такое же имя (в фигурных скобках)...


© уважением Neytrino.

Отсутствует

 

№895005-08-2020 18:48:11

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

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

Neytrino пишет

UUID - тот, ну по крайней мере у *.xpi расширения (в папке "extensions") такое же имя (в фигурных скобках)...

А понятно, не обратил внимания - вы использовали ID расширения это не то.
Откройте about:debugging#/runtime/this-firefox и скопируйте Внутренний UUID

Отсутствует

 

Board footer

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