aber es hat nichts genützt.
Kann und muss ich leider bestätigen.
In Firefox 149 beta2 funktioniert es nicht.
Mfg.
Endor
aber es hat nichts genützt.
Kann und muss ich leider bestätigen.
In Firefox 149 beta2 funktioniert es nicht.
Mfg.
Endor
2002Andreas URL Tooltip WE seit langer Zeit verhält es sich beim Ändern der Zoom-Seitenebene unangemessen und lässt sich nicht auf Version 149 installieren, da es sich über die Manifestversion beschwert.
Probieren Sie das Skript „Hover Links“ für ...Monkey aus; es hat ein Problem mit der Anzeige von Tooltips neben Links in der unteren rechten Ecke des Browserfensters.![]()
Sie finden dort auch „Hover Links v2“.
Hallo lenny2
Ich habe hier eine Alternatives Script:
// ==UserScript==
// @name URL Tooltip Toggle (149+)
// @description Shows link target URL near mouse cursor (multiline, no truncation)
// ==/UserScript==
(function () {
if (!window.gBrowser || !window.CustomizableUI) return;
const { Services } = globalThis;
const PREF = "urltooltip.enabled";
let originalSetOverLink;
let tooltip;
let lastMouseX = 0;
let lastMouseY = 0;
/* ================= MOUSE TRACKING ================= */
window.addEventListener("mousemove", e => {
lastMouseX = e.screenX;
lastMouseY = e.screenY;
}, true);
/* ================= TOOLTIP ================= */
function createTooltip() {
if (tooltip) return;
tooltip = document.createXULElement("tooltip");
tooltip.id = "ucjs-url-tooltip";
tooltip.setAttribute("noautohide", "true");
// Multiline + wrapping
tooltip.style.maxWidth = "600px";
tooltip.style.whiteSpace = "pre-wrap";
tooltip.style.wordBreak = "break-word";
document.documentElement.appendChild(tooltip);
}
function showTooltip(url) {
if (!tooltip) createTooltip();
url = cleanURL(url);
if (!url) return;
tooltip.label = url;
tooltip.openPopupAtScreen(
lastMouseX + 0,
lastMouseY + 2,
false
);
}
function hideTooltip() {
if (tooltip && tooltip.state !== "closed")
tooltip.hidePopup();
}
/* ================= PATCH ================= */
function patch() {
if (originalSetOverLink) return;
originalSetOverLink = XULBrowserWindow.setOverLink;
XULBrowserWindow.setOverLink = function (url, anchorElt) {
originalSetOverLink.apply(this, arguments);
if (!Services.prefs.getBoolPref(PREF, true))
return;
if (!url) {
hideTooltip();
return;
}
showTooltip(url);
};
}
function restore() {
if (!originalSetOverLink) return;
XULBrowserWindow.setOverLink = originalSetOverLink;
originalSetOverLink = null;
hideTooltip();
}
/* ================= URL CLEAN ================= */
function cleanURL(url) {
if (/^(javascript|data|mailto|about):/i.test(url))
return "";
try {
const { UrlbarUtils } =
ChromeUtils.importESModule(
"resource:///modules/UrlbarUtils.sys.mjs"
);
url = UrlbarUtils.stripPrefixAndTrim(url);
} catch {}
return url;
}
/* ================= BUTTON ================= */
CustomizableUI.createWidget({
id: "urltooltip-toggle",
type: "button",
defaultArea: CustomizableUI.AREA_NAVBAR,
label: "URL Tooltip",
tooltiptext: "Toggle link URL tooltips",
onCreated(button) {
updateButton(button);
button.addEventListener("command", () => {
let state = !Services.prefs.getBoolPref(PREF, true);
Services.prefs.setBoolPref(PREF, state);
updateButton(button);
state ? patch() : restore();
});
if (Services.prefs.getBoolPref(PREF, true))
patch();
}
});
function updateButton(btn) {
let state = Services.prefs.getBoolPref(PREF, true);
btn.style.opacity = state ? "1" : "0.5";
btn.tooltipText = "URL Tooltip: " + (state ? "ON" : "OFF");
}
/* ================= INIT ================= */
if (Services.prefs.getBoolPref(PREF, true))
patch();
})();
Alles anzeigen
Das funktioniert hier in Firefox 149 und 150. Ob es auch im aktuellen 148 funktioniert
müsste ich noch testen. Das hat aber keine Schaltfläche zum aktivieren oder deaktivieren.
Rest wie gewohnt.
Mfg.
Endor
Das funktioniert hier in Firefox 149 und 150.
Es funktioniert, danke ![]()
Das hat aber keine Schaltfläche zum aktivieren oder deaktivieren.
Es hat einen Schaltfläche, und er funktioniert. Der Schaltfläche hat kein Symbol, deshalb ist er Ihnen nicht aufgefallen.![]()
Vielleicht kann ja jemand ein Symbol für einen Button in ein Skript oder in externes CSS einbetten.
Es hat einen Schaltfläche, und er funktioniert.
Ja Sie haben völlig recht. War mir nicht aufgefallen.
Vielen Dank für den Hinweis.
Mfg.
Endor
Symbol für einen Button
External CSS
Wenn hier UrlbarUtils.sys.mjs verwendet wird, statt UrlbarInput.sys.mjs, testet doch mal den obigen Pfad mit dem anderen Skript (Zeile 94).
Ich habe es versucht, es hat nicht geholfen. Ich bin mir nicht sicher, ob ich alles richtig gemacht habe.
Tut es
Welches Skript haben Sie getestet?
Welches Skript haben Sie getestet?
Aus Beitrag Nr. 43
Ich habe es versucht, es hat nicht geholfen. Ich bin mir nicht sicher, ob ich alles richtig gemacht habe.
Was hast du versucht? Das Skript aus Beitrag #143 oder das andere Skript? Hast du in Beitrag #43 in Zeile 104 den von mir angegebenen Pfad auch in Anführungszeichen gesetzt?
Aus Beitrag Nr. 43
Ich habe Beitrag #22 noch einmal überprüft. Das Ersetzen von UrlbarInput.sys.mjs durch UrlbarUtils.sys.mjs hat geholfen, das Skript und der Button funktionieren ![]()
Beitrag #43 in Zeile 104
Es funktioniert, aber am Ende des Tooltips werden zwei zusätzliche Kommas angezeigt. Optisch ist das Skript aus Beitrag 22 besser.
Hier dann das Script erweitert mit Icon für den Button, ON und OFF extra.
// ==UserScript==
// @name URL Tooltip Toggle (Nightly 150)
// @description Shows link target URL near mouse cursor (multiline, no truncation)
// ==/UserScript==
(function () {
if (!window.gBrowser || !window.CustomizableUI) return;
const { Services } = globalThis;
const PREF = "urltooltip.enabled";
const ICON_ON = "file:///C:/FoxIcons2/on.png";
const ICON_OFF = "file:///C:/FoxIcons2/off.png";
let originalSetOverLink;
let tooltip;
let lastMouseX = 0;
let lastMouseY = 0;
/* ================= MOUSE TRACKING ================= */
window.addEventListener("mousemove", e => {
lastMouseX = e.screenX;
lastMouseY = e.screenY;
}, true);
/* ================= TOOLTIP ================= */
function createTooltip() {
if (tooltip) return;
tooltip = document.createXULElement("tooltip");
tooltip.id = "ucjs-url-tooltip";
tooltip.setAttribute("noautohide", "true");
tooltip.style.maxWidth = "600px"; // ist Url länger, so erfolgt Zeilenumbruch
tooltip.style.whiteSpace = "pre-wrap";
tooltip.style.wordBreak = "break-word";
document.documentElement.appendChild(tooltip);
}
function showTooltip(url) {
if (!tooltip) createTooltip();
url = cleanURL(url);
if (!url) return;
tooltip.label = url;
tooltip.openPopupAtScreen( // Lage zur Maus
lastMouseX + 4,
lastMouseY + 10,
false
);
}
function hideTooltip() {
if (tooltip && tooltip.state !== "closed")
tooltip.hidePopup();
}
/* ================= PATCH ================= */
function patch() {
if (originalSetOverLink) return;
originalSetOverLink = XULBrowserWindow.setOverLink;
XULBrowserWindow.setOverLink = function (url, anchorElt) {
originalSetOverLink.apply(this, arguments);
if (!Services.prefs.getBoolPref(PREF, true))
return;
if (!url) {
hideTooltip();
return;
}
showTooltip(url);
};
}
function restore() {
if (!originalSetOverLink) return;
XULBrowserWindow.setOverLink = originalSetOverLink;
originalSetOverLink = null;
hideTooltip();
}
/* ================= URL CLEAN ================= */
function cleanURL(url) {
if (/^(javascript|data|mailto|about):/i.test(url))
return "";
try {
const { UrlbarUtils } =
ChromeUtils.importESModule(
"resource:///modules/UrlbarUtils.sys.mjs"
);
url = UrlbarUtils.stripPrefixAndTrim(url);
} catch {}
return url;
}
/* ================= BUTTON ================= */
CustomizableUI.createWidget({
id: "urltooltip-toggle",
type: "button",
defaultArea: CustomizableUI.AREA_NAVBAR,
label: "URL Tooltip",
tooltiptext: "Toggle link URL tooltips",
onCreated(button) {
updateButton(button);
button.addEventListener("command", () => {
let state = !Services.prefs.getBoolPref(PREF, true);
Services.prefs.setBoolPref(PREF, state);
updateButton(button);
state ? patch() : restore();
});
if (Services.prefs.getBoolPref(PREF, true))
patch();
}
});
function updateButton(btn) {
let state = Services.prefs.getBoolPref(PREF, true);
// Icon wechseln
btn.style.listStyleImage = `url("${state ? ICON_ON : ICON_OFF}")`;
// Optional: visuelles Feedback
btn.style.opacity = state ? "1" : "0.6";
btn.tooltipText = "URL Tooltip: " + (state ? "ON" : "OFF");
}
/* ================= INIT ================= */
if (Services.prefs.getBoolPref(PREF, true))
patch();
})();
Alles anzeigen
Und hier die Icon dazu: Icons.zip
Hallo FuchsFan
Vielen Dank!!!
Funktioniert bestens.
Mfg.
Endor
Vielen Dank!!!
Funktioniert bestens.
Gerne doch, Endor ![]()