Aller au contenu

Gestion des événements dans le DOM

Introduction aux événements JavaScript

JavaScript désigne les actions ou événements qui se produisent dans le navigateur et qui peuvent être détectés et gérés par JavaScript. Les événements constituent un élément central du développement web, nous permettant de créer des applications web interactives. Dans cet article, nous explorerons les événements courants, la manière d'ajouter et de supprimer des écouteurs d'événements, et nous fournirons des exemples pratiques pour vous aider à maîtriser les événements JavaScript.

Événements courants en JavaScript

Événement clic

L'événement clic se produit lorsque l'utilisateur clique sur un élément. Il s'agit de l'un des événements les plus fréquemment utilisés.


html
<button id="clickButton">Click Me</button>

<script>
  document.getElementById("clickButton").addEventListener("click", function () {
    alert("Button was clicked!");
  });
</script>

Dans cet exemple, un écouteur d'événements est ajouté à un bouton ayant l'ID clickButton. Lorsque le bouton est cliqué, une boîte de dialogue d'alerte affichant le message "Le bouton a été cliqué !" apparaîtra.

Événement survol (mouseover)

L'événement mouseover se produit lorsque le pointeur de la souris est déplacé sur un élément.


html
<p id="mouseoverText">Hover over me!</p>

<script>
  document.getElementById("mouseoverText").addEventListener("mouseover", function () {
    this.style.color = "red";
  });
</script>

Dans cet exemple, un écouteur d'événements est ajouté à un paragraphe ayant l'ID mouseoverText. Lorsque la souris survole le paragraphe, sa couleur de texte devient rouge.

Événement touche enfoncée (keydown)

L'événement keydown se produit lorsque l'utilisateur appuie sur une touche du clavier.


html
<input type="text" id="inputField" placeholder="Type something..." />

<script>
  document.getElementById("inputField").addEventListener("keydown", function (event) {
    alert(`Key pressed: ${event.key}`);
    this.value = '';
  });
</script>

Dans cet exemple, un écouteur d'événements est ajouté à un champ de saisie ayant l'ID inputField. Lorsqu'une touche est appuyée tandis que le champ de saisie est focus, la touche pressée s'affiche dans une boîte de dialogue d'alerte.

Ajout d'écouteurs d'événements

La méthode addEventListener()

La méthode addEventListener() attache un gestionnaire d'événements à un élément sans écraser les gestionnaires existants. Cette méthode permet d'ajouter plusieurs écouteurs d'événements à un seul élément.


html
<button id="multiEventButton">Click or Hover</button>

<script>
  const button = document.getElementById("multiEventButton");

  button.addEventListener("click", function () {
    alert("Button clicked!");
  });

  button.addEventListener("mouseover", function () {
    button.style.backgroundColor = "lightblue";
  });
</script>

Dans cet exemple, deux écouteurs d'événements sont ajoutés au bouton ayant l'ID multiEventButton. L'un déclenche une alerte lorsque le bouton est cliqué, et l'autre modifie la couleur de fond du bouton lorsque la souris le survole.

INFO

Utilisez addEventListener() pour attacher plusieurs écouteurs d'événements au même élément sans écraser les gestionnaires existants.

Suppression d'écouteurs d'événements

La méthode removeEventListener()

La méthode removeEventListener() supprime un gestionnaire d'événements qui a été attaché avec addEventListener().


html
<button id="removeEventButton">Click Me</button>

<script>
  function showAlert() {
    alert("This will be removed after first click");
  }

  const button = document.getElementById("removeEventButton");
  button.addEventListener("click", showAlert);

  button.addEventListener("click", function () {
    button.removeEventListener("click", showAlert);
  });
</script>

Dans cet exemple, un écouteur d'événements qui déclenche une alerte est ajouté au bouton ayant l'ID removeEventButton. Un autre écouteur est ajouté pour supprimer l'écouteur d'alerte après le premier clic. Notez que removeEventListener nécessite une référence vers le même objet de fonction exact utilisé dans addEventListener. C'est pourquoi les fonctions anonymes ne peuvent pas être supprimées ultérieurement—chaque déclaration crée un nouvel objet de fonction distinct.

INFO

Utilisez la délégation d'événements pour de meilleures performances, en particulier lors du travail avec un grand nombre d'éléments enfants.

Bonnes pratiques

Utilisez la délégation d'événements

Ajoutez un seul écouteur d'événements à un élément parent pour gérer les événements de tous les éléments enfants. Cela améliore les performances et réduit le nombre d'écouteurs d'événements.

Évitez les fonctions anonymes pour les gestionnaires d'événements

L'utilisation de fonctions nommées pour les gestionnaires d'événements facilite leur suppression ultérieure et améliore la lisibilité du code.

Nettoyez les écouteurs d'événements

Assurez-vous que les écouteurs d'événements sont supprimés lorsqu'ils ne sont plus nécessaires pour éviter les fuites de mémoire et améliorer les performances.

Minimisez le nombre d'écouteurs d'événements

Attachez les écouteurs d'événements à des éléments de niveau supérieur plutôt qu'à de nombreux éléments individuels pour réduire l'utilisation de la mémoire et améliorer les performances.

Utilisez l'option once dans addEventListener

Utilisez l'option once pour supprimer automatiquement l'écouteur d'événements après sa première exécution, ce qui empêche les fuites de mémoire potentielles.

js
button.addEventListener("click", function handler() {
  console.log("Triggered once");
}, { once: true });

Prévenez les actions par défaut et arrêtez la propagation de manière appropriée

Utilisez event.preventDefault() et event.stopPropagation() avec discernement pour contrôler le comportement des événements sans interférer avec les autres gestionnaires.

Appliquez le debounce ou le throttle aux gestionnaires d'événements

Utilisez des techniques de debounce ou de throttle pour optimiser les performances des gestionnaires d'événements déclenchés fréquemment, comme les événements de défilement ou de redimensionnement.

Conclusion

Maîtriser les événements JavaScript est essentiel pour créer des applications web dynamiques et interactives. En comprenant comment utiliser des événements tels que click, mouseover et keydown, ainsi que comment ajouter et supprimer des écouteurs d'événements avec addEventListener() et removeEventListener(), vous pouvez considérablement améliorer les interactions utilisateur sur vos pages web.

Pratique

Parmi les affirmations suivantes concernant la gestion des événements dans le DOM, lesquelles sont vraies ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.