Écouteurs d'événements JavaScript : click, submit, scroll et délégation

Écouteurs d'événements JavaScript

Écouteurs d'événements JavaScript : click, submit, scroll | We.Inc

Observez les événements se déclencher dans un journal en direct, puis copiez les modèles addEventListener pour click, submit, scroll, la délégation, once, passive et le nettoyage avec AbortController.

Un écouteur d'événement est une fonction que le navigateur appelle quand il se passe quelque chose sur un élément, comme un clic, l'envoi d'un formulaire ou un défilement. On l'attache avec element.addEventListener(type, handler, options). L'objet options active once, passive, capture ou un signal d'annulation, et removeEventListener détache plus tard cette même fonction.

Options de addEventListener

Les événements sont plus faciles à comprendre quand on peut les voir. Le journal ci-dessous enregistre chaque appel d'écouteur dans une petite zone de test : vous pouvez cliquer, taper, envoyer et faire défiler, et observer l'ordre, la cible et l'effet de chaque option. Copiez ensuite les modèles correspondant à vos besoins réels.

Questions fréquentes

Qu'est-ce que la délégation d'événements ?

Au lieu d'attacher un écouteur à chaque élément, vous en attachez un seul à un parent commun. Comme la plupart des événements remontent, le parent reçoit les clics de tous ses enfants, y compris ceux ajoutés plus tard, et utilise event.target pour savoir lequel a été cliqué.

Pourquoi removeEventListener ne supprime-t-il pas mon écouteur ?

Il doit recevoir la même référence de fonction et le même réglage capture que ceux passés à addEventListener. Deux fonctions fléchées au code identique restent deux fonctions différentes : définissez le gestionnaire une seule fois et passez cette variable les deux fois.

Que fait passive: true ?

Il indique au navigateur que votre gestionnaire n'appellera pas preventDefault, la page peut donc commencer à défiler immédiatement au lieu d'attendre la fin de votre code. Les navigateurs utilisent déjà passive par défaut pour les écouteurs wheel et touch sur window, document et body.

Quelle est la différence entre target et currentTarget ?

target est l'élément le plus profond où l'événement a démarré, et il reste le même pendant la remontée. currentTarget est l'élément dont l'écouteur s'exécute en ce moment, il change donc à chaque niveau.

form.submit() déclenche-t-il l'événement submit ?

Non. Appeler form.submit() depuis un script saute l'événement submit et la validation. Appelez form.requestSubmit() si vous voulez que vos écouteurs submit et les vérifications natives s'exécutent.

addEventListener ou onclick ?

La propriété onclick contient une seule fonction : en assigner une deuxième remplace la première. addEventListener permet à plusieurs écouteurs indépendants de partager un élément et prend en charge l'objet options, c'est donc le meilleur choix par défaut.

Le trajet d'un événement

Faire défiler sans ralentir la page

Nettoyer les écouteurs

Les types d'événements que vous utiliserez le plus

Événements courants et où les écouter

Modèles à copier

Clic avec un gestionnaire nommé que l'on peut supprimer

C'est le fait de garder la fonction dans une variable qui permet à removeEventListener de fonctionner.

Gérer l'envoi d'un formulaire sans rechargement

preventDefault bloque la navigation propre au navigateur. event.submitter indique quel bouton d'envoi a été utilisé.

Délégation d'événements sur une liste

Un seul écouteur sur la liste gère tous les boutons de suppression, y compris les lignes ajoutées après le chargement de la page.

Un écouteur scroll passif limité à une mise à jour par image

passive: true permet au défilement de démarrer immédiatement, et requestAnimationFrame limite le travail à une fois par image.

once et AbortController

Le premier écouteur s'exécute une seule fois. Les autres sont tous supprimés ensemble par un seul appel à abort().

Raccourci clavier qui ignore la saisie dans les champs

Vérifier la cible empêche le raccourci de se déclencher pendant que quelqu'un tape une barre oblique dans un champ de recherche.

click sur le bouton : target {target}

(once : désormais supprimé)

click arrivé dans la zone de test (phase {phase}) : target {target}, currentTarget {current}

input : la valeur est maintenant "{value}"

change : valeur validée

submit sur le formulaire, submitter {submitter} ; preventDefault a bloqué le rechargement

scroll (passif, un par image) : scrollTop {n}

click délégué sur la liste : élément {item}

écouteur par élément : {item}

Journal d'événements en direct

Cliquez, tapez, envoyez et faites défiler dans la zone de test. Chaque appel d'écouteur est inscrit dans le journal avec son type, sa cible et sa cible courante.

Options de l'écouteur

once sur le bouton

capture sur la zone

délégation sur la liste

Cliquez-moi

Tapez ici

Envoyer

Liste de délégation

Ajouter un élément

Élément {n}

Boîte de défilement

Ligne de défilement {n}

Journal (plus récent en premier)

Vider le journal

Aucun événement pour l'instant.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site