JavaScript event listeners: click, submit, scroll en delegatie

JavaScript event listeners

JavaScript event listeners: click, submit, scroll | We.Inc

Zie events live in een log verschijnen en kopieer daarna addEventListener-patronen voor click, submit, scroll, delegatie, once, passive en opruimen met AbortController.

Een event listener is een functie die de browser aanroept wanneer er iets met een element gebeurt, zoals een klik, het verzenden van een formulier of scrollen. U koppelt er een met element.addEventListener(type, handler, options). Het options-object schakelt once, passive, capture of een abort-signaal in, en removeEventListener koppelt dezelfde functie later weer los.

Opties van addEventListener

Events zijn makkelijker te begrijpen als u ze kunt zien. Het eventlog hieronder registreert elke aanroep van een listener in een klein testgebied, zodat u kunt klikken, typen, verzenden en scrollen en de volgorde, het target en het effect van elke optie kunt bekijken. Kopieer daarna de patronen voor de taken die u echt hebt.

Veelgestelde vragen

Wat is event delegation?

In plaats van aan elk item een listener te koppelen, koppelt u er één aan een gemeenschappelijke parent. Omdat de meeste events omhoog bubbelen, hoort de parent klikken van al zijn children, ook van items die later zijn toegevoegd, en gebruikt hij event.target om te bepalen waarop is geklikt.

Waarom verwijdert removeEventListener mijn listener niet?

Het moet dezelfde functiereferentie en dezelfde capture-instelling krijgen als addEventListener kreeg. Twee arrow functions met identieke code zijn nog steeds verschillende functies, dus definieer de handler één keer en geef die variabele beide keren mee.

Wat doet passive: true?

Het vertelt de browser dat uw handler preventDefault niet aanroept, zodat de pagina direct kan beginnen met scrollen in plaats van te wachten tot uw code klaar is. Browsers gebruiken voor wheel- en touch-listeners op window, document en body al standaard passive.

Wat is het verschil tussen target en currentTarget?

target is het binnenste element waar het event begon, en dat blijft gelijk terwijl het event omhoog bubbelt. currentTarget is het element waarvan de listener op dit moment draait, en dat verandert op elk niveau.

Activeert form.submit() het submit-event?

Nee. Als u form.submit() vanuit een script aanroept, worden het submit-event en de validatie overgeslagen. Roep form.requestSubmit() aan als u wilt dat uw submit-listeners en de ingebouwde controles draaien.

addEventListener of onclick?

De property onclick bevat één functie, dus een tweede toewijzen vervangt de eerste. Met addEventListener kunnen meerdere onafhankelijke listeners een element delen en het ondersteunt het options-object, dus het is de betere standaardkeuze.

Hoe een event reist

Scrollen zonder de pagina te vertragen

Listeners opruimen

Eventtypes die u het meest gebruikt

Veelgebruikte events en waar u ernaar luistert

Patronen om te kopiëren

Click met een benoemde handler die u kunt verwijderen

Door de functie in een variabele te bewaren, werkt removeEventListener.

Een formulier verzenden zonder herladen

preventDefault stopt de eigen navigatie van de browser. event.submitter vertelt u welke verzendknop is gebruikt.

Event delegation op een lijst

Eén listener op de lijst handelt elke verwijderknop af, ook in rijen die na het laden van de pagina zijn toegevoegd.

Een passive scroll-listener, beperkt tot één update per frame

passive: true laat het scrollen meteen beginnen, en requestAnimationFrame beperkt het werk tot één keer per frame.

once en AbortController

De eerste listener draait één keer. De andere worden allemaal samen verwijderd door één aanroep van abort().

Sneltoets die typen in velden negeert

Door het target te controleren, gaat de sneltoets niet af terwijl iemand een slash in een zoekvak typt.

click op knop: target {target}

(once: nu verwijderd)

click bereikte testgebied ({phase}-fase): target {target}, currentTarget {current}

input: waarde is nu "{value}"

change: waarde vastgelegd

submit op formulier, submitter {submitter}; preventDefault voorkwam het herladen

scroll (passive, één per frame): scrollTop {n}

gedelegeerde click op lijst: item {item}

listener per item: {item}

Live eventlog

Klik, typ, verzend en scroll in het testgebied. Elke aanroep van een listener wordt in het log gezet met type, target en currentTarget.

Opties van de listener

once op knop

capture op gebied

delegatie op lijst

Klik op mij

Typ hier

Verzenden

Delegatielijst

Lijstitem toevoegen

Item {n}

Scrollvak

Scrollregel {n}

Log (nieuwste eerst)

Log wissen

Nog geen events.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap