1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. milupo

Beiträge von milupo

  • Firefox v136.0a1 - Skript „Tooltip with URL“ funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 19:51

    Ich denke, das Einfachste ist, die Schaltfläche in das Anpassen-Fenster zu schieben.

  • Firefox v136.0a1 - Skript „Tooltip with URL“ funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 19:06

    lenny2 Im Moment bin ich etwas ratlos. Probiere mal Folgendes. Teste mal diese Skriptversion:

    JavaScript
    // ==UserScript==
    // 
    // @description      Displays target URL in tooltip, when hovering over a link
    // Button has “tooltips on”/“tooltips off” positions
    // ==/UserScript==
    try {CustomizableUI.createWidget(({
        label: "Links in pop-up tooltips", 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.addEventListener('command', () => {
    				owner.toggle();						
    		});
          //  btn.setAttribute("onmouseenter", "owner.mouseenter()");
    		btn.addEventListener('mouseenter', () => {
    			owner.mouseenter();						
    		});
    		
        },
        mouseenter() {
            this.btn.tooltipText = this.label +' – '+ `${this.state ? "enabled" : "disabled"}`;
        },
        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.importESModule("resource://gre/modules/TooltipTextProvider.sys.mjs").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 = ChromeUtils.importESModule("resource:///modules/UrlbarInput.sys.mjs", {}).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);}
    Alles anzeigen
  • addonbar.us.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 18:41
    Zitat von FuchsFan

    Das Problem ist aber damit auch nicht gelöst.

    Danke, aber da kann ich meine Skriptversion auch behalten. Das neue Skript von Aris weicht ziemlich stark von meiner Version ab. Bei Aris kommt jetzt z. B. die ID addonbar_v nur noch im neuen Zusatzcode vor. Irgendwie scheint mir, als wird hier auf etwas Bezug genommen, was es nicht mehr gibt.

  • Entwicklung Firefox

    • milupo
    • 26. Januar 2025 um 18:14
    Zitat von AngelOfDarkness

    Die jeweils letzte Version bekomme ich ja über das Mozilla Repo automatisch.

    Mehr kann ich dir da leider nicht helfen. Ich nutze ja kein Linux.

  • Firefox v136.0a1 - Skript „Tooltip with URL“ funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 17:55

    Ach Gott, habe ich doch das .button vergessen. Das kann nicht funktionieren. Man wird eben alt.

  • Entwicklung Firefox

    • milupo
    • 26. Januar 2025 um 17:46

    Auf archive.mozilla.org ist das letzte von heute.

    Directory Listing: /pub/firefox/nightly/latest-mozilla-central-l10n/linux-x86_64/deb-l10n/

  • Das Script Forward_Back_Button.uc.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 17:37

    Da sind noch Inline-Eventhandler wie onclick drin. Du verwendest Fx 136, ab dieser Version funktionieren diese nicht mehr.

  • addonbar.us.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 17:13

    Also ich hatte mir nur den Update-Code an meine Skriptversion drangehängt. Die beiden Symbole funktionierten immer noch nicht. Habe jetzt das aktuelle von Aris getestet, da erscheint gar nichts mehr, weder Leiste, noch Button, noch der Leisteneintrag im Anpassen-Fenster.

  • addonbar.us.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 16:50

    Ah, war noch an mir vorbei gegangen, dass es dafür jetzt eine Änderung im Skript für die vertikale Add-on-Leiste gibt.

    Zitat von BrokenHeart

    Den zusätzlichen Update-Code, der das Problem angeblich beheben soll, durchschaue ich überhaupt nicht...

    Wem sagst du das …

  • Übersetzungsbutton fehlt plötzlich

    • milupo
    • 26. Januar 2025 um 16:42

    Könnte aber auch der Button von einem Übersetzungsskript sein.

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 16:40
    Zitat von 2002Andreas

    Ich habe das jetzt in 2 meiner Nightlys getestet, keine dauerhafte Funktion

    Hm. :/

  • addonbar.us.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 16:36
    Zitat von BrokenHeart

    Den zusätzlichen Update-Code, der das Problem angeblich beheben soll, durchschaue ich überhaupt nicht...

    Welcher Update-Code?

  • addonbar.us.js funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 16:21
    Zitat von BrokenHeart

    Wie deine beiden Beispiele zeigen, funktionieren die Buttons nur in Toolbars, die Kinderknoten von #navigator-toolbox sind.

    Danke. Und siehst du eine Lösung? Du hast auf jeden Fall bessere JavaScript-Kenntnisse als ich.


    Zitat von BrokenHeart

    Könnte vielleicht auch schon mit den inlineEvent Änderungen zusammenhängen...?!

    Auch in Fx 134 funktionieren die Symbole schon in der unteren Leiste nicht. Da sollten Inline-Eventhandler ja noch erlaubt sein.

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 16:17
    Zitat von 2002Andreas

    Auch mit deinem Skript passiert nichts nach Klick auf den Button.

    Kein Problem hier, auch nicht nach dem Neustart.

  • Firefox v136.0a1 - Skript „Tooltip with URL“ funktioniert nicht mehr

    • milupo
    • 26. Januar 2025 um 16:09

    Äh, ich sehe gerade, da gibt es noch zwei Inline-Eventhandler in Zeile 18 und 19 (oncommand und onmouseenter, eben für den Button. Ab 136 müssen wir ja in .addEventListener umbauen. Ich versuche mein Glück.


    Ersetze mal die Zeile 18 und 19 durch folgenden Code:

    JavaScript
    //btn.setAttribute("oncommand", "owner.toggle()");
    		btn.addEventListener('command', event => {
    			if (event == 0) {
    			owner.toggle();
    			}			
    		});
          //  btn.setAttribute("onmouseenter", "owner.mouseenter()");
    		btn.addEventListener('mouseenter', event => {
    			if (event == 0) {
    			owner.mouseenter();
    			}			
    		});
    Alles anzeigen
  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 15:59
    Zitat von 2002Andreas

    Zumindest hier funktioniert es auch nicht

    Hier mein Code:

    JavaScript
    //  browserkonsole.uc.js
    
    (function() {
    
        if (location != 'chrome://browser/content/browser.xhtml')
            return;
    
        try {
            CustomizableUI.createWidget({
                id: 'browser-konsole-button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {
                    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                    var props = {
                        id: 'browser-konsole-button',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'Konsola wobhladowaka',
                        tooltiptext: 'Konsolu wobhladowaka wočinić',
                        style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADaSURBVHjaYvz//z8DJYAJn+SFuYy+IEyWAUCN0/iEGDaBMIhNkgFQDZlK2gwMIAxi4zIElwsyDWwRHCg7kygD8DkXmxwTVtsdeBgYmFExWAyLK5iw2sAqCMZZvbEMAcXOcD42VzBh2O5lBFQsCsbPnz9nePLkCZwPlkNzBROm7SJw/PjxY4YfP36giKG7ghGWEoGC/w2Cw4lKfRfWrmQwSP7PCHcB3ES0gNO2vsyganoWQxxZD9gFYNvDkknKAxdWzQW7gomBQsACpacDTcwkUe90lEAkFwAEGACHlFPNBrHqNAAAAABJRU5ErkJggg==)',
                   			   
                    };
                    for (var p in props)
                        toolbaritem.setAttribute(p, props[p]);
    					toolbaritem.addEventListener('command', event => {				   
    					document.getElementById("menu_browserConsole").click();
    			   });
                    return toolbaritem;
                }
            });
            CustomizableUI.registerToolbarNode(tb);
           } catch(e) { };  
    
        function onCommand() {
            var document = event.target.ownerDocument;
            if (!document.getElementById('menu_browserConsole')) {
                let { require } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs", {});
                require("resource://devtools/client/webconsole/browser-console-manager");
            };
            document.getElementById('menu_browserConsole').click();
        };
    
    })();
    Alles anzeigen

    Natürlich in Sorbisch. :) Symbol ist ein gelbes Dreieck mit einem Ausrufezeichen. Das wollte wohl Boersenfeger geändert haben.

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 15:53
    Zitat von Boersenfeger

    Ich hatte jedenfalls ein Script, das einen Button erzeugt hat, der nach Anklicken die Konsole gleich öffnete.

    Das macht doch das Skript aus Beitrag #1. :/ Dafür ist der base64-Code doch drin. Ich habe das übrigens hier auch und in die vertikale Add-on-Bar geschoben, wo es auch funktioniert. Ich habe das fehlerconsole.uc.js. getauft. Ich habe noch ein anderes Skript, das die Browserwerkzeuge öffnet.

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 15:22
    Zitat von Boersenfeger

    Keins, das ist ja das Problem

    In deinem Eingangsbeitrag hast du geschrieben, dass beide Male die Konsole geöffnet wird. Da wäre alles in Butter. Also nochmal: Beim Klick auf welches Symbol soll was geöffnet werden?

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 15:16
    Zitat von Boersenfeger

    Wie auch immer es also heißt, es ändert nichts daran, dass der erzeugte Button nicht das in #20 gezeigte Fenster öffnet.

    Na und welches wird denn dann geöffnet?

  • Ein Icon ins base64 Format umwandeln

    • milupo
    • 26. Januar 2025 um 15:10
    Zitat von Boersenfeger

    Wenn ich den von Haus aus mitgelieferten, Button mit dem identischen Icon aus dem Anpassen-Fenster auf meine Addon-Bar ziehe, dort dann aus dem Menü die Browser-Konsole aufrufe, diese dann wieder schließe und nun auf das Icon, das durch das Script erzeugt wird, klicke, öffnet sich auch dann die Konsole. Also irgendwas passt doch nicht.

    Verstehe ich nicht. Wenn du zwei Symbole mit der gleichen Funktion öffnest, muss auch die gleiche Funktion ausgeführt werden. Das passiert hier offenbar bei dir. Was ist da das Problem. Ein Problem gäbe es, wenn beide Symbole eine identische ID hätten. Das hatte ich letztens mit about:config. Ich habe das als Einzelskript und in diesem Sammelskript. Das im Sammelskript funktionierte da nicht, bis ich die ID änderte.

Unterstütze uns!

Jährlich (2026)

21,3 %

21,3% (138,31 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon