Maison > interface Web > js tutoriel > Comment puis-je détecter et répondre aux éléments ajoutés dans le DOM ?

Comment puis-je détecter et répondre aux éléments ajoutés dans le DOM ?

Barbara Streisand
Libérer: 2024-12-15 19:05:15
original
136 Les gens l'ont consulté

How Can I Detect and Respond to Added Elements in the DOM?

Détection des modifications du DOM pour les éléments ajoutés

Introduction

Pour répondre aux modifications du modèle objet de document (DOM), les développeurs doivent souvent exécuter des fonctions lorsque des éléments sont ajoutés au HTML. Cet article propose une solution utilisant MutationObserver, offrant à la fois une approche avancée qui fonctionne sur les navigateurs modernes et une méthode de secours pour les navigateurs existants.

L'approche avancée : MutationObserver

MutationObserver est une API qui vous permet pour observer et répondre à des changements spécifiques dans le DOM. Pour détecter les éléments ajoutés, observeDOM(obj, callback) est utilisé, où obj est l'élément cible et callback est la fonction à exécuter en cas de modification. Voici un extrait de code :

var observeDOM = (function() {
  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

  return function(obj, callback) {
    if (MutationObserver) {
      var mutationObserver = new MutationObserver(callback);
      mutationObserver.observe(obj, {childList: true, subtree: true});
      return mutationObserver;
    }
    // Fallback for legacy browsers
    else if (window.addEventListener) {
      obj.addEventListener('DOMNodeInserted', callback, false);
      obj.addEventListener('DOMNodeRemoved', callback, false);
    }
  }
})();
Copier après la connexion

Pour utiliser observeDOM, fournissez l'élément DOM à observer et un rappel qui reçoit un tableau d'objets MutationRecord. Chaque MutationRecord représente un changement dans le DOM, et vous pouvez en extraire les nœuds ajoutés et supprimés.

Exemple et démo

Voici un exemple simplifié où un rappel est déclenché lorsqu'un élément est ajouté ou supprimé d'un élément de liste :

observeDOM(listEl, function(m) {
  var addedNodes = [], removedNodes = [];

  m.forEach(record => record.addedNodes.length && addedNodes.push(...record.addedNodes));
  m.forEach(record => record.removedNodes.length && removedNodes.push(...record.removedNodes));

  console.clear();
  console.log('Added:', addedNodes, 'Removed:', removedNodes);
});
Copier après la connexion

Cet article est accompagné d'une démo en direct qui affiche les journaux de la console au fur et à mesure que des éléments DOM sont ajoutés ou supprimé, présentant la fonctionnalité d'observation des modifications du DOM.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal