Neujahrspeppi: removeEventListener ohne addEventListener zulässig?

Ein frohes Neues!

Kurze letzte Frage zu 2020:

Ist es eigentlich unzulässig / eine Sünde / EINFACH SCHLECHT, einen EventListener zu entfernen [removeEventListener], wenn selbiger auf dem Element vielleicht [noch] gar nicht existiert (weil z.B. die eigentliche addEventListener Aufforderung erst nach dem ersten Funktionsaufruf erfolgt) --

-- eine removeEventListener Aufforderung also, die gelegentlich ins Leere geht?

Danke, Neujahrspeppi

  1. Ein frohes Neues!

    auch so viel...😉

    Ist es eigentlich unzulässig / eine Sünde / EINFACH SCHLECHT, einen EventListener zu entfernen [removeEventListener], wenn selbiger auf dem Element vielleicht [noch] gar nicht existiert (weil z.B. die eigentliche addEventListener Aufforderung erst nach dem ersten Funktionsaufruf erfolgt) --

    Nachdem der Browser keine Fehlermeldung wirft, wird's wohl ok sein, oder was meinst Du...?

  2. Hallo Neujahrspeppi,

    Die aktuelle Spec des DOM API findest Du hier

    Bei removeEventListener steht:

    If this’s event listener list contains an event listener whose type is type, callback is callback, and capture is capture, then remove an event listener with this and that event listener.

    Fett von mir, das ist in der Spec ein Link auf die remove-Prozedur.

    Also. Da steht: If (listener vorhanden) then (mach ihn weg)

    Da steht nicht: If (listener ist nicht vorhanden) then (reg Dich auf)

    Das If ist nicht erfüllt, wenn Du einen unregistrierten Listener löschst. Also passiert nicht nur gemäß der Beobachtung durch klawischnigg, sondern auch gemäß der Spec nichts.

    Ob das guter Stil ist? Tjaaa. Kommt drauf an. Gibt's einen guten Weg, das Problem ohne hin- und her-registrieren zu lösen? Dafür müsste man mehr vom Problem wissen.

    Rolf

    --
    sumpsi - posui - obstruxi
  3. @@Neujahrspeppi

    Was ist überhaupt ein Anwendungsfall für removeEventListener?

    Wenn man einen Eventlistener nur einmalig haben will, kann man das gleich so angeben.

    😷 LLAP

    --
    “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
    1. Hallo Gunnar Bittersmann,

      Was ist überhaupt ein Anwendungsfall für removeEventListener?

      Wenn man einen Eventlistener nur einmalig haben will, kann man das gleich so angeben.

      +1 für Heydon.

      Bis demnächst
      Matthias

      --
      Du kannst das Projekt SELFHTML unterstützen,
      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
      1. Hallo Matthias,

        Was ist überhaupt ein Anwendungsfall für removeEventListener?

        Wenn man einen Eventlistener nur einmalig haben will, kann man das gleich so angeben.

        +1 für Heydon.

        und für unser Wiki.

        Gruß
        Jürgen

        1. Hallo JürgenB,

          und für unser Wiki.

          Danke ✍️ 😉

          Rolf

          --
          sumpsi - posui - obstruxi
    2. Hallo Gunnar,

      add/removeEventListener kommt aus der DOM Events Level 2 Spec von 2000, und da gab's als dritten Parameter nur das useCapture boolean.

      Es verblüfft mich zwar, aber die Erweiterung auf ein Options-Objekt scheint selbst in der DOM4 Spec von 2015 bei W3C nicht drin zu sein, das finde ich erst in der WhatWG Spec (Historie bis 2018).

      Andererseits kann ich mir auch vorstellen, dass man nicht ständig auf bestimmte Events lauschen will und aus Performancegründen die Bindung aufheben möchte (z.B. bei mousemove oder resize). In Extremfällen mag das die Schwuppdizität der Seite von "hakelig" zu "träge" aufbessern - wobei man in dieser Situation wohl besser das Grundkonzept überarbeitet.

      Rolf

      --
      sumpsi - posui - obstruxi