[Script] [Nightly] Autopopup für Lesezeichenleiste funktioniert nicht mehr...

  • Firefox-Version
    86.0
    Betriebssystem
    Win 10

    Hallo,

    eben festgestellt, dass das oben genannte Script von aborix in der Nightly (bei mir?) nicht mehr funktioniert. Das Überfahren der Verzeichnisse in der Lesezeichenleiste mit der Maus öffnet keine Popups mehr.

    Der Grund scheint zu sein, dass die entsprechenden Listener für die mouse-Events gar nicht registriert werden, weil der Befehl

    let items = document.querySelectorAll('#PlacesToolbarItems > toolbarbutton[type="menu"]'); in Zeile 41

    anscheinend eine leere Node-Liste erzeugt. Ich kann aber im Inspector nicht erkennen, dass sich da irgendwelche Bezeichner oder Abhängigkeiten in der Lesezeichenleiste geändert hätten. Vielleicht habe ich auch nur was übersehen...

    Vielleicht hat ja der Autor oder eine anderer schlauer Mensch eine Idee/Lösung...;)

    Edit: Vergessen...hier das Script:


    Ok , "Fehler" gefunden.

    Wenn man den Timeout in Zeile 48 von 500 auf z.B. 1500 erhöht dann läuft's wieder.:)

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

    3 Mal editiert, zuletzt von BrokenHeart (17. Dezember 2020 um 12:29) aus folgendem Grund: Ein Beitrag von BrokenHeart mit diesem Beitrag zusammengefügt.

  • Wenn man den Timeout in Zeile 48 von 500 auf z.B. 1500 erhöht dann läuft's wieder.

    Wenn sich nur alle Probleme so schnell lösen ließen ... :)

    Ü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

  • Noch besser, wenn es gar kein Timeout gäbe. Denn alles, was von Timeouts wirklich abhängt, ist letztlich nur ein Workaround in der Hoffnung, dass die eingestellte Zeit ausreicht. Das ist also ziemlich fragil, wie auch dieser Fall zeigt. Was gestern noch reichte, reicht heute plötzlich nicht mehr. Für einen anderen Nutzer könnte es aber noch reichen, für wieder einen anderen könnten 1500 auch noch zu wenig sein. 1500 bedeutet, dass man 1 1/2 Sekunden auf etwas warten muss, das ist schon echt lange. Ich bin leider zu weit von diesem Thema entfernt, um eine bessere Lösung anzubieten, aber Timeouts sind halt irgendwo zwischen Glücks- und Geduldspiel: Je niedriger der Wert, desto eher kommt es zu keiner Ausführung (Glücksspiel), je höher, desto länger muss man warten (Geduldsspiel). ;)

  • 1500 bedeutet, dass man 1 1/2 Sekunden auf etwas warten muss, das ist schon echt lange. Ich bin leider zu weit von diesem Thema entfernt, um eine bessere Lösung anzubieten, aber Timeouts sind halt irgendwo zwischen Glücks- und Geduldspiel

    Im Prinzip hast du recht. Das Problem sehe ich hier aber in der zugrundeliegenden (temporären?) Implementation der Nightly. Bevor ich diesen "Fehler" mit diesem Skript überhaupt realisiert hatte, ist mir aufgefallen, dass es gefühlt Ewigkeiten gedauert hat, bis die Lesezeichenleiste dargestellt wurde. Daher ist die zusätzliche Wartezeit notwendig, weil sich eben die Nightly-Version sehr viel Zeit lässt, bis etwas dargestellt wird. Und wenn die Lesezeichenleiste und ihre Elemente noch nicht 'vorhanden' sind, läuft ein Skript, was diese Elemente anspricht, natürlich ins Leere. Der Zeitpunkt, wann die einzelnen Skripte gestartet werden, kann meines Wissens nicht verändert werden. Aber das Problem hatten wir ja schon bei etlichen Skripten und ist halt der Preis für diese Art des Hackens. ;)

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Ich weiß nicht, ob folgende Zeile hier hilft:

    JavaScript
    gBrowser.selectedBrowser.removeAttribute('blank');

    Es gab mal das Problem, dass bei Clipping alle Dialogfenster nach dem Start der Erweiterung leer waren. Man musste den Timeout-Wert zurechtschaukeln. Irgendjemand (Aris? oder aborix?) hat diese Zeile - statt des setTimeout-Codes - mal eingebracht, die das Problem behob.

    Ü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

  • Ich weiß nicht, ob folgende Zeile hier hilft:

    Meinst du diesen Beitrag dazu? Link

    So wie ich das verstanden habe, war diese Zeile dazu gedacht, zusätzliche (unbenutzbare) Tabs bei der Verwendung zusätzlicher Symbolleisten zu verhindern...:/. Aber ich hatte seinerzeit die Diskussion nicht mitverfolgt.

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Meinst du diesen Beitrag dazu?

    Ja.

    So wie ich das verstanden habe, war diese Zeile dazu gedacht, zusätzliche (unbenutzbare) Tabs bei der Verwendung zusätzlicher Symbolleisten zu verhindern...

    Das weiß ich auch nicht mehr so genau, ich hatte mir nur gemerkt, dass es da leere Fenster/Tabs in Erweiterungen waren und ich erinnere mich da an Clippings. Das konnte man mit einem veränderten Timeout-Wert lösen, man musste aber experimentieren. bis dann obige Zeile kam. Da konnte man sich den SetTimeout-Code sparen, wenn man obige Zeile in eine eigene Skriptdatei verfrachtete. So habe ich es auch noch. Aber das Gemeinsame mit deinem Problem scheint hier doch nur zu sein, dass beide Timeout-Probleme sind.

    Ü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

  • BrokenHeart 17. Dezember 2020 um 22:29

    Hat den Titel des Themas von „[Script] [Nightly] "Bookmark_Autopopup_3.uc.js" funktioniert nicht mehr...“ zu „[Script] [Nightly] Autopopup für Lesezeichenleiste funktioniert nicht mehr...“ geändert.
  • Die Listener werden jetzt registriert, sobald die Lesezeichen-Ordner vorhanden sind:

  • :thumbup::) Cool, vielen Dank aborix !

    Ich hatte auch schon an einen 'Observer' gedacht, hätte es aber in der Form wohl nicht (in vernünftiger Zeit) hinbekommen.

    Das Prinzip lässt sich wohl auch auf zeitkritische Aktionen (vor allem beim Start) in so manch anderen Skripten anwenden... :/

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Kann nachfolgendes Verhalten bitte mal jemand gegenchecken?

    Ich benutze den Code von aborix aus #8.

    Ich lasse die Lesezeichen-Symbolleiste mit Strg+Umschalt+B verschwinden und hol sie wieder.

    Autopopup funktioniert nicht.

    Überseh ich was bzw. mach ich was falsch?

    W11 Home 64bit - FF133.x

  • Ich lasse die Lesezeichen-Symbolleiste mit Strg+Umschalt+B verschwinden und hol sie wieder.

    Autopopup funktioniert nicht.

    Das war schon immer so. Durch das Verbergen der Leiste werden wohl auch die registrierten Listener gelöscht und müssen dann beim Anzeigen wieder neu gesetzt werden. So wie es aborix auch beim Aufruf von 'Symbolleiste anpassen' im Skript gemacht hat.

    Falls du das unbedingt geändert haben möchtest, dann kannst du ja aborix fragen, ob er das Skript (für dich) anpasst und diese Abfrage (Aktivierung/Deaktivierung) mit einbaut ...

    Mich stört dieses Verhalten überhaupt nicht, da ich die Lesezeichenleiste immer aktiviert lasse.

    Gruß BrokenHeart

    "success has many fathers, failure is an orphan"

  • Extrawurst ist glücklicherweise leicht machbar: