Das Script "QuickLinkButton-about-config.uc.js" funktioniert nicht mehr.

  • Firefox-Version
    Firefox 149.0
    Betriebssystem
    Windows 11 Pro 64 Bit

    Hallo zusammen,

    obiges Script funktioniert leider nicht mehr, Button ist vorhanden, hat aber keine Funktion. Funktion des Scripts ist, das öffnen von about:config in einem neue Tab.

    Es grüßt,

    Ralf

  • Bitte testen und gegebenenfalls anpassen. Siehe Kommentare:!:

    Mit <3lichem Gruß

    Mira

  • Kein Problem hier :/

    Hm, andere Script funktionieren hier ohne Probleme, z.B. Restart-Scripts, oder das Profil-Backup-Script, das Start-any-aplication-Script, das Extra-Config-Menü-Script und das Firefox-Menü-Script und andere.


    Bitte testen und gegebenenfalls anpassen.

    Das läuft ohne Probleme, Dankeschön.

    Es grüßt,

    Ralf

    Einmal editiert, zuletzt von Dharkness (28. März 2026 um 11:10) aus folgendem Grund: Ein Beitrag von Dharkness mit diesem Beitrag zusammengefügt.

  • obiges Script funktioniert leider nicht mehr, Button ist vorhanden, hat aber keine Funktion. Funktion des Scripts ist, das öffnen von about:config in einem neue Tab.

    Kann es sein, dass der Button nicht funktioniert hatte, direkt nachdem du ihn im Anpassenfenster in eine Symbolleiste gezogen hast? :/

  • Das Fragezeichen in Zeile 54 kommt mir etwas suspekt vor. Es gibt zwar wirklich den Fragezeichen-Operator, aber irgendwie passt er für mich hier nicht. Er ist wohl nur eine andere Schreibweise für die if … else-Konstruktion. Die aber kommt aber erst danach.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Das Fragezeichen ist korrekt. Damit wird überprüft, ob das Element überhaupt existiert.

    JavaScript
    document.getElementById('aboutconfig_button')?.addEventListener('click', event => {
      // code …
    });

    Ist das Gleiche wie:

    JavaScript
    if (
      document.getElementById('aboutconfig_button') !== undefined &&
      document.getElementById('aboutconfig_button') !== null
    ) {
      document.getElementById('aboutconfig_button').addEventListener('click', event => {
        // code …
      });
    }

    Auf die eine oder andere Weise muss man das prüfen, wenn man nicht garantieren kann, dass das Element existiert. Ansonsten bricht das Script beim Aufruf von addEventListener mit einem Fehler ab, wenn es das Element nicht gibt.

  • Auf die eine oder andere Weise muss man das prüfen, wenn man nicht garantieren kann, dass das Element existiert. Ansonsten bricht das Script beim Aufruf von addEventListener mit einem Fehler ab, wenn es das Element nicht gibt.

    Ah, danke. Wieder etwas gelernt.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Funktioniert hier auch in Fx 151 Nightly einwandfrei: :/

    Das ist in der Tat sehr merkwürdig, aber vielleicht liegt es auch an der Leiste, in der der Button liegt, ist teste es mal eben.


    Nope, es liegt nicht an der Leiste, es funktioniert hier schlicht und ergreifend nicht.

    Es grüßt,

    Ralf

    Einmal editiert, zuletzt von Dharkness (28. März 2026 um 12:30) aus folgendem Grund: Ein Beitrag von Dharkness mit diesem Beitrag zusammengefügt.

  • Das Fragezeichen ist korrekt. Damit wird überprüft, ob das Element überhaupt existiert.

    Auf die eine oder andere Weise muss man das prüfen, wenn man nicht garantieren kann, dass das Element existiert. Ansonsten bricht das Script beim Aufruf von addEventListener mit einem Fehler ab, wenn es das Element nicht gibt.

    Wobei in Mira's Code aus #3 die (function add_button ....) mit dem Timeout dieses Problem abdecken sollte; wir hatten das und weitere diesbezügliche Button Probleme mal hier diskutiert.

  • Ja, aber nicht wegen des Timeouts. Das löst unterschiedliche Probleme. Der Timeout-„Hack” stellt sicher, dass der Code ausgeführt wird, auch wenn das Element erst später verfügbar ist. Das macht der obige Code nicht. Der prüft nur, ob das Element existiert. Diese Überprüfung ist auch im Code von Mira_Belle vorhanden und hat nichts mit dem Timeout zu tun, sondern ist die Abfrage if (button) an dieser Stelle. Sowohl undefined als auch null sind „falsy”, womit diese Schreibweise kürzer für das ist, was ich ausführlich geschrieben habe, um die exakte Bedeutung des „Optional Chaining”-Operators zu erklären.

  • Im Prinzip könnte auch in meinem Skript
    document.getElementById(id)?.addEventListener('click', event => { stehen.

    Könnte es, dann bräuchtest du die zusätzliche if-Abfrage nicht mehr. Aber mit der Schreibweise gibt es eben auch kein else. Und zwei Mal prüfen, ist unnötig. Insofern sehe ich da keinen Bedarf, etwas zu verändern.

  • Könnte es, dann bräuchtest du die zusätzliche if-Abfrage nicht mehr. Aber mit der Schreibweise gibt es eben auch kein else.

    Habe ich getestet, nur so aus Neugierde.
    Funktioniert nicht, da es dann eine Schleife gibt und der Tab zig mal geöffnet wird.
    Aber das mit der "Farbe" geht auch an anderer Stelle. Musste ich einfach ausprobieren.

    Mit <3lichem Gruß

    Mira

  • Wie gesagt, es gibt kein else für diese Schreibweise. Und du kannst die Methode nicht jedes Mal ohne Überprüfung sich selbst aufrufen lassen. Das gibt dann natürlich eine Endlosschleife. Wenn du es über ein if-Konstrukt löst, wie es aktuell der Fall ist, gibt es keinen Grund, das darin ein weiteres Mal zu prüfen. Deswegen sage ich ja, dass ich keinen Bedarf sehe, an deinem Code etwas zu ändern. Diese Schreibweise ist dann praktisch, weil viel kürzer, wenn du wirklich nur auf die Existenz prüfen musst, um dann direkt darauf etwas ausführen zu können, und du das Ergebnis ansonsten ignorieren kannst.