Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

HTMLSlotElement : événement slotchange

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨janvier 2020⁩.

L'évènement slotchange est déclenché sur une instance de HTMLSlotElement (élément HTML <slot>) lorsque le ou les nœuds contenus dans cet emplacement changent.

Note : L'évènement slotchange n'est pas déclenché si les enfants d'un nœud assigné changent — seulement si vous modifiez (par exemple, ajoutez ou supprimez) les nœuds eux-mêmes.

Pour déclencher un évènement slotchange, il faut définir ou supprimer l'attribut slot.

Cet évènement n'est pas annulable.

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété gestionnaire d'évènement.

js
addEventListener("slotchange", (event) => { })

onslotchange = (event) => { }

Type d'évènement

Un objet Event générique.

Exemples

js
element.setAttribute("slot", slotName);
// element.assignedSlot = $slot
element.removeAttribute("slot");
// element.assignedSlot = null

L'extrait suivant est tiré de notre exemple de slotchange (angl.) (voir aussi en direct (angl.)).

js
let slots = this.shadowRoot.querySelectorAll("slot");
slots[1].addEventListener("slotchange", (e) => {
  let nodes = slots[1].assignedNodes();
  console.log(
    `L'élément dans l'emplacement "${slots[1].name}" a changé pour "${nodes[0].outerHTML}".`,
  );
});

Ici, nous récupérons les références de tous les emplacements <slot>, puis nous ajoutons un gestionnaire d'évènement slotchange au deuxième emplacement du modèle — c'est celui dont le contenu change dans l'exemple.

Chaque fois que l'élément inséré dans l'emplacement change, nous enregistrons un rapport dans la console indiquant quel emplacement a changé et quel est le nouveau nœud à l'intérieur de l'emplacement.

Spécifications

Specification
DOM
# eventdef-htmlslotelement-slotchange
HTML
# handler-onslotchange

Compatibilité des navigateurs

Voir aussi