Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Gestion des Écouteurs d'Événements | Événements et Gestion des Événements
Maîtrise Avancée de JavaScript
course content

Contenu du cours

Maîtrise Avancée de JavaScript

Maîtrise Avancée de JavaScript

2. Manipulation du DOM
3. Événements et Gestion des Événements
4. JavaScript Asynchrone et APIs

book
Gestion des Écouteurs d'Événements

Les écouteurs d'événements sont essentiels pour rendre les applications web interactives, mais une mauvaise gestion des écouteurs d'événements peut entraîner des problèmes de performance et des fuites de mémoire, surtout dans les applications de longue durée ou dynamiques. Comprendre comment ajouter et supprimer correctement les écouteurs d'événements et savoir quand les nettoyer garantit des performances optimales et prévient les fuites de ressources.

Meilleures Pratiques pour Ajouter et Supprimer des Écouteurs d'Événements

Lorsque vous travaillez avec des écouteurs d'événements, il est essentiel de s'assurer qu'ils sont ajoutés et supprimés efficacement. Voici quelques meilleures pratiques :

Utilisez Toujours des Fonctions Nommées Lorsque C'est Possible

Lors de l'attachement d'un écouteur d'événement, il est préférable d'utiliser des fonctions nommées plutôt que des fonctions anonymes. Cela facilite la suppression ultérieure de l'écouteur et améliore la lisibilité du code.

Voici un exemple d'ajout et de suppression d'un écouteur d'événement :

html

index.html

css

index.css

js

index.js

copy

Une fonction nommée, handleClick, met à jour le texte de sortie pour afficher "Bouton cliqué !" chaque fois que le bouton est pressé. De plus, un compteur suit le nombre de clics. Une fois que le bouton est cliqué trois fois, removeEventListener() est utilisé pour détacher l'écouteur d'événements, arrêtant ainsi les mises à jour supplémentaires et affichant un message indiquant que l'écouteur a été supprimé.

Éviter les fuites de mémoire en nettoyant les écouteurs d'événements

Les écouteurs d'événements qui restent attachés aux éléments (surtout lorsque ces éléments sont retirés du DOM) peuvent causer des fuites de mémoire. Nettoyer les écouteurs d'événements inutilisés ou inutiles est crucial dans les applications dynamiques, en particulier dans les applications monopage (SPAs), où les composants ou les éléments du DOM sont créés et détruits fréquemment.

Scénario de fuite de mémoire

Imaginez un écouteur d'événements attaché à un bouton qui est retiré du DOM, mais l'écouteur d'événements reste actif en mémoire. Cela peut entraîner une dégradation des performances au fil du temps.

Solution : Supprimer les écouteurs d'événements lorsque les éléments sont supprimés

Si un élément est retiré du DOM, ses écouteurs d'événements doivent également être supprimés. Voici un exemple de suppression dynamique d'un élément et de nettoyage de ses écouteurs d'événements.

html

index.html

css

index.css

js

index.js

copy
  • removeEventListener(): Avant de retirer le bouton du DOM, son écouteur d'événements est détaché pour éviter les fuites de mémoire;
  • Gestion de la mémoire: Si vous ne retirez pas l'écouteur d'événements, il continue d'exister en mémoire, même si l'élément n'est plus dans le DOM.

Exemple Pratique : Gestionnaire de Liste de Tâches Dynamique avec Fonctions d'Ajout, de Suppression et d'Édition

Cette application de liste de tâches permettra aux utilisateurs de :

  • Ajouter des tâches dynamiquement;
  • Modifier des tâches en ligne en double-cliquant dessus;
  • Supprimer des tâches individuelles;
  • Effacer toutes les tâches, en s'assurant que tous les écouteurs d'événements sont correctement nettoyés.
html

index.html

css

index.css

js

index.js

copy

Fonctionnalités de gestion des tâches :

  • Ajout de tâches : Les nouvelles tâches sont ajoutées dynamiquement lorsque l'utilisateur entre une tâche dans le champ de saisie et clique sur "Ajouter une tâche". Chaque tâche a un bouton "Supprimer" ;
  • Suppression de tâches : Chaque tâche a son propre bouton "Supprimer" qui, lorsqu'il est cliqué, supprime la tâche du DOM. Cela se fait via la délégation d'événements, donc nous n'avons pas besoin d'ajouter des écouteurs individuels à chaque tâche ;
  • Modification de tâches : Un double-clic sur une tâche la rend modifiable, et appuyer sur "Entrée" enregistre les modifications en désactivant l'état modifiable.

Délégation d'événements :

L'ensemble du ul (liste de tâches) gère tous les clics en utilisant la délégation d'événements, donc peu importe combien de tâches sont ajoutées, nous n'avons besoin que d'un seul écouteur d'événements pour toutes les tâches. Cela rend l'application efficace, surtout à mesure que le nombre de tâches augmente.

Gestion de la mémoire :

Lorsque le bouton "Effacer toutes les tâches" est cliqué, l'ensemble de la liste des tâches est effacé, et l'écouteur d'événements est également supprimé en utilisant removeEventListener(). Cela garantit que nous évitons les fuites de mémoire, ce qui est important dans un scénario réel, surtout lorsqu'on traite de grandes listes dynamiques.

1. Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont supprimés du DOM ?

2. Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont supprimés du DOM ?

Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont supprimés du DOM ?

Sélectionnez la réponse correcte

Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
We're sorry to hear that something went wrong. What happened?
some-alt