[Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event.

  • Betroffene Version
    WoltLab Suite 5.4
    Betroffene App
    WoltLab Suite Core

    In WS 5.3.10 und 5.4 RC2 erscheinen beim Aufruf von Content in der Browserkonsole folgende Meldung:

    Auch hier z. B. beim Lesen von Beiträgen im Forum, von "Blog"-Einträgen oder Einträgen im Plugin-Shop.

    Eigentlich kein Fehler, der die Funktion beeinträchtigt, aber unschön.

    lg,

    Chris

  • Alexander Ebert 10. Juli 2021 um 22:40

    Hat das Label Wird nicht behoben hinzugefügt.
    • Offizieller Beitrag

    Das lässt sich nicht beheben, diese entstammen dem WYSIWYG-Editor. Auch wenn jQuery einem eine einfache API vorgaukelt, gibt es bei Event-Listener eine tückische Eigenheit: Zum Entfernen eines Event-Listener müssen die identischen Parameter angegeben werden.

    JavaScript
    const callback = () => {};
    someElement.addEventListener("click", callback, { passive: false });
    
    // Funktioniert nicht
    someElement.removeEventListener("click", callback);
    someElement.removeEventListener("click", callback, { passive: true });
    someElement.removeEventListener("click", () => {}, { passive: false });
    
    // Funktioniert
    someElement.removeEventListener("click", callback, { passive: false });

    Sobald wir also den Event-Listener beim Bind auf passiv (oder explizit als nicht-passiv) setzen, verändern wir die Signatur. Beim Entfernen des Events an anderer Stelle (auch durch Plugins) müsste diese Änderung ebenfalls berücksichtigt werden.

    Effektiv hat die Warnung in der Browser-Console einen ernsten Hintergrund, aber kann auf absehbare Zeit (wir reden hier von Jahren!) ignoriert werden (*). Würde die Warnung zu einer Fehlermeldung hochgestuft werden, würde das halbe Internet tot umfallen. Und wir haben heute noch <font> in den Browsern…


    (*) Bei allem aktuellen Code achten wir penibel darauf, Event-Listener korrekt als passiv/nicht-passiv zu deklarieren.

    • Offizieller Beitrag

    Ich wurde von einem User darauf hingewiesen, dass unser Forum "defekt" wäre. Überlege gerade, wie ich ihm das erklären werde ;)

    Vielleicht so, bewusst abstrakt formuliert:

    Es handelt sich um keinen Defekt, sondern um eine Empfehlung. Diese besagt, dass Vorgehen X veraltet ist und es besser ist, Vorgehen Y zu verwenden. Vorgehen X ist dennoch weiterhin akzeptabel und ohne Funktionseinbußen zulässig.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!