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

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

№103-01-2024 14:05:49

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Есть вот такой скрипт

И ещё вопрос.
Есть вот такой скрипт:

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

Выделить код

Код:

// ==UserScript==
// @name             Toggle URL Tooltip
// @version          1.7.8
// @author           Dumby
// @backgroundmodule
// @homepageURL      https://forum.mozilla-russia.org/viewtopic.php?pid=783765#p783765
// @description      Displays target URL in tooltip, when hovering over a link.
// @backgroundmodule
// ==/UserScript==

try {CustomizableUI.createWidget(({
	label: "Ссылки во всплывающих подсказках", localized: false,
	id: "URLTooltip", pref: "URLTooltip.enabled",
	get state() {
		return Services.prefs.getBoolPref(this.pref, true); // по-умолчанию включено
	},
	setIcon(btn, state = this.state) {
		btn.setAttribute("image", "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' style='fill:context-fill rgb(142, 142, 152);'><path d='M9.618 6.721a2.483 2.483 0 0 0-.39-.317l-.735.734A1.486 1.486 0 0 1 8.91 9.55l-2.12 2.122a1.486 1.486 0 0 1-2.122 0 1.486 1.486 0 0 1 0-2.121l.605-.605a3.53 3.53 0 0 1-.206-1.209L3.961 8.843a2.506 2.506 0 0 0 0 3.535 2.506 2.506 0 0 0 3.535 0l2.122-2.121a2.506 2.506 0 0 0 0-3.536z'/><path d='M6.79 9.55c.12.121.25.226.389.317l.734-.734a1.486 1.486 0 0 1-.417-2.411L9.618 4.6a1.486 1.486 0 0 1 2.121 0 1.486 1.486 0 0 1 0 2.121l-.605.605c.137.391.211.798.206 1.209l1.106-1.107a2.506 2.506 0 0 0 0-3.535 2.506 2.506 0 0 0-3.535 0L6.789 6.014a2.506 2.506 0 0 0 0 3.536z'/><circle style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round' cx='8' cy='8' r='7.4'/></svg>");
		btn.style.setProperty("fill", `${state ? "color-mix(in srgb, currentColor 20%, #e31b5d)" : ""}`);
	},
	onCreated(btn) {
		this.setIcon(btn), this.btn = btn, btn.owner = this;
		btn.setAttribute("oncommand", "owner.toggle()");
		btn.setAttribute("onmouseenter", "owner.mouseenter()");
	},
	mouseenter() {
		this.btn.tooltipText = this.label +' – '+ `${this.state ? "включены" : "выключены"}`;
	},
	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), add = "";
			return txt ? text.value = res ? text.value + "\n" + txt + add : txt + add : res;
		}
	},
	psDestroy: proto => {
		proto.getNodeText = proto.getTextPlus.getNodeText;
	}
}).init())} catch(ex) {Cu.reportError(ex);}


Он показывает всплывающую подсказку с url под курсором мыши при наведении на собственно url. В Firefox 115.x он прекрасно работал, в 121 перестал. Можно как-то поправить?

Отсутствует

 

№203-01-2024 15:21:45

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

Re: Есть вот такой скрипт

Злой Буратино пишет

Есть вот такой скрипт:
// @homepageURL      https://forum.mozilla-russia.org/viewtopic.php?pid=783765#p783765

На всякий случай поинтересуюсь каким загрузчиком вы пользуетесь?


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

На форуме

 

№303-01-2024 15:24:40

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Re: Есть вот такой скрипт

Мне тут уже писали, что загрузчик какой-то навороченный :)
Но вроде ничего особенно страшного.
https://github.com/MrOtherGuy/fx-autoconfig

Отсутствует

 

№403-01-2024 15:32:07

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

Re: Есть вот такой скрипт

оригинал до сих пор исправно работает включая [firefox] 122, но правда он для UCF custom_script.js, а вы его подключили как JSM module...


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

На форуме

 

№503-01-2024 15:46:34

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Re: Есть вот такой скрипт

Значит не судьба :)

Отсутствует

 

№603-01-2024 15:48:40

fuchsfan
Участник
 
Группа: Members
Зарегистрирован: 07-08-2023
Сообщений: 130
UA: Firefox 121.0

Re: Есть вот такой скрипт

Злой Буратино пишет

И ещё вопрос.
Есть вот такой скрипт:

Скрипт работает в v121 при активации методом Aris-t2. К нему можно добавить стиль тултипа- цвет фона-текста, тип-размер текста и пр.

Отредактировано fuchsfan (03-01-2024 15:51:15)

Отсутствует

 

№703-01-2024 16:03:16

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Re: Есть вот такой скрипт

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

Отсутствует

 

№803-01-2024 16:18:15

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

Re: Есть вот такой скрипт

Злой Буратино пишет

Значит не судьба :)

ешё как судьба для загрузчика https://github.com/MrOtherGuy/fx-autoconfig проверял на [firefox] 122

ToggleURLTooltip.uc.js

Выделить код

Код:

// ==UserScript==
// @name             Toggle URL Tooltip
// @version          1.7.8.1
// @author           Dumby
// @include          main
// @homepageURL      https://forum.mozilla-russia.org/viewtopic.php?pid=783765#p783765
// @description      Displays target URL in tooltip, when hovering over a link.
// ==/UserScript==

try {Cu.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUI.createWidget(({
	label: "Ссылки во всплывающих подсказках", localized: false,
	id: "URLTooltip", pref: "URLTooltip.enabled",
	get state() {
		return Services.prefs.getBoolPref(this.pref, true); // по-умолчанию включено
	},
	setIcon(btn, state = this.state) {
		btn.setAttribute("image", "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' style='fill:context-fill rgb(142, 142, 152);'><path d='M9.618 6.721a2.483 2.483 0 0 0-.39-.317l-.735.734A1.486 1.486 0 0 1 8.91 9.55l-2.12 2.122a1.486 1.486 0 0 1-2.122 0 1.486 1.486 0 0 1 0-2.121l.605-.605a3.53 3.53 0 0 1-.206-1.209L3.961 8.843a2.506 2.506 0 0 0 0 3.535 2.506 2.506 0 0 0 3.535 0l2.122-2.121a2.506 2.506 0 0 0 0-3.536z'/><path d='M6.79 9.55c.12.121.25.226.389.317l.734-.734a1.486 1.486 0 0 1-.417-2.411L9.618 4.6a1.486 1.486 0 0 1 2.121 0 1.486 1.486 0 0 1 0 2.121l-.605.605c.137.391.211.798.206 1.209l1.106-1.107a2.506 2.506 0 0 0 0-3.535 2.506 2.506 0 0 0-3.535 0L6.789 6.014a2.506 2.506 0 0 0 0 3.536z'/><circle style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round' cx='8' cy='8' r='7.4'/></svg>");
		btn.style.setProperty("fill", `${state ? "color-mix(in srgb, currentColor 20%, #e31b5d)" : ""}`);
	},
	onCreated(btn) {
		this.setIcon(btn), this.btn = btn, btn.owner = this;
		btn.setAttribute("oncommand", "owner.toggle()");
		btn.setAttribute("onmouseenter", "owner.mouseenter()");
	},
	mouseenter() {
		this.btn.tooltipText = this.label +' – '+ `${this.state ? "включены" : "выключены"}`;
	},
	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), add = "";
			return txt ? text.value = res ? text.value + "\n" + txt + add : txt + add : res;
		}
	},
	psDestroy: proto => {
		proto.getNodeText = proto.getTextPlus.getNodeText;
	}
}).init())} catch(ex) {Cu.reportError(ex);}


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

На форуме

 

№903-01-2024 16:29:51

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Re: Есть вот такой скрипт

Farby
Спасибо огромное! :beer:

Отсутствует

 

№1003-01-2024 21:32:45

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

Re: Есть вот такой скрипт

Злой Буратино пишет

я использую парочку скриптов

Поделитесь названиями, а может быть и ссылками, ну очень интересно?..


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

На форуме

 

№1105-01-2024 10:48:17

Злой Буратино
Участник
 
Группа: Members
Зарегистрирован: 09-12-2011
Сообщений: 98
UA: Firefox 121.0

Re: Есть вот такой скрипт

Farby
Пожалуйста. Скрипты из этого репозитория.
Я использую:
NavbarToolbarButtonSlider.uc.js — это, пожалуй, самое главное. Удобная штука, сильно привык :)
OneClickOneOffSearchButtons.uc.js
PrivateTabs.uc.js
ScreenshotPageActionButton.uc.js
UnreadTabMods.uc.js
UrlbarMods.uc.js
UrlbarMouseWheelScroll.uc.js

В общем, там много всего. Может и вам что-то интересным покажется.

Отсутствует

 

№1205-01-2024 16:13:02

oneliner
Участник
 
Группа: Members
Зарегистрирован: 20-03-2013
Сообщений: 22
UA: Firefox 121.0

Re: Есть вот такой скрипт

fuchsfan пишет

https://forum.ru-board.com/topic.cgi?fo … art=720#17

Спасибо)

kokoss пишет

1. https://forum.mozilla-russia.org/viewto … 60#p806960
2/4 как вариант -> user_pref("browser.uidensity", 1);
3.как убрать синюю обводку вокруг адресной строки когда открываешь новую вкладку?

Спасибо вам огромное,всё получилось!
Осталось только скролл-бар сделать тоньше так в половину,со скруглением если возможно :rolleyes:
И вопрос,занимался ли кто-то анимациями FF? скорость открытия/закрытия вкладок или ещё что-то
плавностью интерфейса грубо говоря,я бы скорость анимации открвтия вкладок раз в 5 понизил

Отсутствует

 

№1306-01-2024 13:48:35

f480185
Участник
 
Группа: Members
Зарегистрирован: 05-04-2012
Сообщений: 158
UA: Firefox 51.0

Re: Есть вот такой скрипт

Нашел тему о замене интерфейса на протон актуальна ли это  для версии 115 [firefox] ?
архив с темой Firefox-UI-Fix-photon-style. 
https://github.com/black7375/Firefox-UI-Fix/releases

Отредактировано f480185 (06-01-2024 16:48:56)

Отсутствует

 

Board footer

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