removeEventListener ohne addEventListener zulässig?
Neujahrspeppi
- javascript
0 klawischnigg1 Rolf B0 Gunnar Bittersmann0 Matthias Apsel0 Rolf B
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
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 eigentlicheaddEventListener
Aufforderung erst nach dem ersten Funktionsaufruf erfolgt) --
Nachdem der Browser keine Fehlermeldung wirft, wird's wohl ok sein, oder was meinst Du...?
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
@@Neujahrspeppi
Was ist überhaupt ein Anwendungsfall für removeEventListener
?
Wenn man einen Eventlistener nur einmalig haben will, kann man das gleich so angeben.
😷 LLAP
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
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
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