Event listener JavaScript: click, submit, scroll e delega

Event listener JavaScript

Event listener JavaScript: click, submit, scroll | We.Inc

Guarda gli eventi scattare in un log dal vivo, poi copia i pattern addEventListener per click, submit, scroll, delega, once, passive e pulizia con AbortController.

Un event listener è una funzione che il browser chiama quando succede qualcosa a un elemento, come un clic, l'invio di un modulo o uno scroll. Lo colleghi con element.addEventListener(type, handler, options). L'oggetto options attiva once, passive, capture o un segnale di abort, e removeEventListener scollega di nuovo la stessa funzione in seguito.

Opzioni di addEventListener

Gli eventi sono più facili da capire quando li puoi vedere. Il log degli eventi qui sotto registra ogni chiamata dei listener in una piccola area di test, così puoi cliccare, scrivere, inviare e scrollare e osservare l'ordine, il target e l'effetto di ogni opzione. Poi copia i pattern per i compiti che hai davvero.

Domande frequenti

Cos'è la delega degli eventi?

Invece di collegare un listener a ogni elemento, ne colleghi uno a un genitore comune. Poiché la maggior parte degli eventi risale per bubbling, il genitore riceve i clic di tutti i figli, compresi gli elementi aggiunti dopo, e usa event.target per capire quale è stato cliccato.

Perché removeEventListener non rimuove il mio listener?

Deve ricevere lo stesso riferimento alla funzione e la stessa impostazione di capture passati ad addEventListener. Due arrow function con codice identico sono comunque funzioni diverse, quindi definisci l'handler una volta e passa quella variabile in entrambi i casi.

Cosa fa passive: true?

Dice al browser che il tuo handler non chiamerà preventDefault, così la pagina può iniziare a scrollare subito invece di aspettare che il tuo codice finisca. I browser usano già passive come predefinito per i listener wheel e touch su window, document e body.

Qual è la differenza tra target e currentTarget?

target è l'elemento più interno da cui è partito l'evento, e resta lo stesso mentre l'evento risale. currentTarget è l'elemento il cui listener è in esecuzione in quel momento, e cambia a ogni livello.

form.submit() genera l'evento submit?

No. Chiamare form.submit() da uno script salta l'evento submit e salta la validazione. Chiama form.requestSubmit() quando vuoi che vengano eseguiti i tuoi listener submit e i controlli integrati.

addEventListener o onclick?

La proprietà onclick contiene una sola funzione, quindi assegnarne una seconda sostituisce la prima. addEventListener permette a più listener indipendenti di condividere un elemento e supporta l'oggetto options, quindi è la scelta predefinita migliore.

Come viaggia un evento

Scrollare senza rallentare la pagina

Ripulire i listener

I tipi di evento che userai di più

Eventi comuni e dove ascoltarli

Pattern da copiare

Click con un handler con nome che puoi rimuovere

Tenere la funzione in una variabile è ciò che fa funzionare removeEventListener.

Gestire l'invio di un modulo senza ricaricare

preventDefault blocca la navigazione del browser. event.submitter ti dice quale pulsante di invio è stato usato.

Delega degli eventi su una lista

Un solo listener sulla lista gestisce ogni pulsante elimina, comprese le righe aggiunte dopo il caricamento della pagina.

Un listener scroll passive limitato a un aggiornamento per frame

passive: true permette allo scroll di partire subito, e requestAnimationFrame limita il lavoro a una volta per frame.

once e AbortController

Il primo listener viene eseguito una sola volta. Gli altri vengono rimossi tutti insieme da una sola chiamata abort().

Scorciatoia da tastiera che ignora la digitazione nei campi

Controllare il target evita che la scorciatoia scatti mentre qualcuno digita una barra in una casella di ricerca.

click sul pulsante: target {target}

(once: ora rimosso)

click arrivato all'area di test (fase {phase}): target {target}, currentTarget {current}

input: il valore ora è "{value}"

change: valore confermato

submit sul modulo, submitter {submitter}; preventDefault ha bloccato il ricaricamento

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

click delegato sulla lista: elemento {item}

listener per elemento: {item}

Log degli eventi dal vivo

Clicca, scrivi, invia e scrolla nell'area di test. Ogni chiamata di un listener viene scritta nel log con tipo, target e current target.

Opzioni del listener

once sul pulsante

capture sull'area

delega sulla lista

Cliccami

Scrivi qui

Invia

Lista con delega

Aggiungi elemento alla lista

Elemento {n}

Riquadro scrollabile

Riga di scroll {n}

Log (dal più recente)

Svuota log

Ancora nessun evento.

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito