JavaScript Event Listener: Click, Submit, Scroll und Delegation

JavaScript Event Listener

JavaScript Event Listener: Click, Submit, Scroll | We.Inc

Sieh im Live-Log, wie Events ausgelöst werden, und kopiere dann addEventListener-Muster für click, submit, scroll, Delegation, once, passive und das Aufräumen mit AbortController.

Ein Event Listener ist eine Funktion, die der Browser aufruft, wenn mit einem Element etwas passiert, etwa ein Klick, das Absenden eines Formulars oder ein Scrollen. Du hängst ihn mit element.addEventListener(type, handler, options) an. Das Options-Objekt aktiviert once, passive, capture oder ein Abort-Signal, und removeEventListener entfernt dieselbe Funktion später wieder.

Optionen von addEventListener

Events sind leichter zu verstehen, wenn du sie sehen kannst. Das Event-Log unten zeichnet jeden Listener-Aufruf in einem kleinen Testbereich auf. So kannst du klicken, tippen, absenden und scrollen und dabei die Reihenfolge, das Ziel und die Wirkung jeder Option beobachten. Danach kopierst du die Muster für die Aufgaben, die du wirklich hast.

Häufige Fragen

Was ist Event Delegation?

Statt an jeden Eintrag einen Listener zu hängen, hängst du einen an ein gemeinsames Elternelement. Weil die meisten Events nach oben bubbeln, bekommt das Elternelement Klicks von allen Kindern mit, auch von später hinzugefügten Einträgen, und erkennt über event.target, welcher angeklickt wurde.

Warum entfernt removeEventListener meinen Listener nicht?

Es muss dieselbe Funktionsreferenz und dieselbe capture-Einstellung bekommen, die addEventListener erhalten hat. Zwei Arrow Functions mit identischem Code sind trotzdem verschiedene Funktionen. Definiere den Handler also einmal und übergib beide Male diese Variable.

Was bewirkt passive: true?

Es sagt dem Browser, dass dein Handler preventDefault nicht aufruft. Die Seite kann also sofort scrollen, statt zu warten, bis dein Code fertig ist. Browser verwenden für wheel- und touch-Listener auf window, document und body bereits standardmäßig passive.

Was ist der Unterschied zwischen target und currentTarget?

target ist das innerste Element, an dem das Event ausgelöst wurde, und bleibt gleich, während das Event nach oben bubbelt. currentTarget ist das Element, dessen Listener gerade läuft, und ändert sich auf jeder Ebene.

Löst form.submit() das submit-Event aus?

Nein. Ein Aufruf von form.submit() aus einem Skript überspringt das submit-Event und die Validierung. Rufe form.requestSubmit() auf, wenn deine submit-Listener und die eingebauten Prüfungen laufen sollen.

addEventListener oder onclick?

Die Eigenschaft onclick enthält genau eine Funktion, eine zweite Zuweisung ersetzt also die erste. Mit addEventListener können sich mehrere unabhängige Listener ein Element teilen, und es unterstützt das Options-Objekt. Deshalb ist es die bessere Standardwahl.

Wie ein Event wandert

Scrollen, ohne die Seite zu bremsen

Listener aufräumen

Die Event-Typen, die du am häufigsten brauchst

Häufige Events und wo du auf sie lauschst

Muster zum Kopieren

Klick mit einem benannten Handler, den du entfernen kannst

Erst dadurch, dass die Funktion in einer Variable steht, funktioniert removeEventListener.

Formular absenden ohne Neuladen

preventDefault stoppt die eigene Navigation des Browsers. event.submitter verrät dir, welcher Submit-Button benutzt wurde.

Event Delegation auf einer Liste

Ein Listener auf der Liste verarbeitet jeden Löschen-Button, auch in Zeilen, die nach dem Laden der Seite hinzugekommen sind.

Ein passiver Scroll-Listener, gedrosselt auf ein Update pro Frame

passive: true lässt das Scrollen sofort starten, und requestAnimationFrame beschränkt die Arbeit auf einmal pro Frame.

once und AbortController

Der erste Listener läuft genau einmal. Die anderen werden alle zusammen mit einem einzigen abort()-Aufruf entfernt.

Tastenkürzel, das Eingaben in Feldern ignoriert

Die Prüfung des Ziels verhindert, dass das Kürzel auslöst, während jemand einen Schrägstrich in ein Suchfeld tippt.

click auf Button: target {target}

(once: jetzt entfernt)

click hat Testbereich erreicht ({phase}-Phase): target {target}, currentTarget {current}

input: Wert ist jetzt "{value}"

change: Wert übernommen

submit am Formular, submitter {submitter}, preventDefault hat das Neuladen verhindert

scroll (passiv, einmal pro Frame): scrollTop {n}

delegierter click auf Liste: Eintrag {item}

Listener pro Eintrag: {item}

Live-Event-Log

Klicke, tippe, sende ab und scrolle im Testbereich. Jeder Listener-Aufruf wird mit Typ, target und currentTarget ins Log geschrieben.

Listener-Optionen

once am Button

capture am Bereich

Delegation an der Liste

Klick mich

Hier tippen

Absenden

Delegationsliste

Listeneintrag hinzufügen

Eintrag {n}

Scrollbox

Scrollzeile {n}

Log (neueste zuerst)

Log leeren

Noch keine Events.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap