>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Поддержка пользователей http://forum.mozilla-russia.org/viewforum.php?id=26 >Есть вот такой скрипт http://forum.mozilla-russia.org/viewtopic.php?id=78753 |
Злой Буратино > 03-01-2024 14:05:49 |
И ещё вопрос. скрытый текст Выделить код Код:// ==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 перестал. Можно как-то поправить? |
Farby > 03-01-2024 15:21:45 |
Злой Буратино пишет
На всякий случай поинтересуюсь каким загрузчиком вы пользуетесь? |
Злой Буратино > 03-01-2024 15:24:40 |
Мне тут уже писали, что загрузчик какой-то навороченный |
Farby > 03-01-2024 15:32:07 |
оригинал до сих пор исправно работает включая 122, но правда он для UCF custom_script.js, а вы его подключили как JSM module... |
Злой Буратино > 03-01-2024 15:46:34 |
Значит не судьба |
fuchsfan > 03-01-2024 15:48:40 |
Злой Буратино пишет
Скрипт работает в v121 при активации методом Aris-t2. К нему можно добавить стиль тултипа- цвет фона-текста, тип-размер текста и пр. |
Злой Буратино > 03-01-2024 16:03:16 |
Но, к сожалению, я использую парочку скриптов, которые, судя по всему, совместимы только с тем загрузчиком, на который я давал ссылку выше. |
Farby > 03-01-2024 16:18:15 |
Злой Буратино пишет
ешё как судьба для загрузчика https://github.com/MrOtherGuy/fx-autoconfig проверял на 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);} |
Злой Буратино > 03-01-2024 16:29:51 |
Farby |
Farby > 03-01-2024 21:32:45 |
Злой Буратино пишет
Поделитесь названиями, а может быть и ссылками, ну очень интересно?.. |
Злой Буратино > 05-01-2024 10:48:17 |
Farby В общем, там много всего. Может и вам что-то интересным покажется. |
oneliner > 05-01-2024 16:13:02 |
fuchsfan пишет
Спасибо) kokoss пишет
Спасибо вам огромное,всё получилось! |
f480185 > 06-01-2024 13:48:35 |
Нашел тему о замене интерфейса на протон актуальна ли это для версии 115 ? |