DOM-Änderungen effektiv erkennen
Das Beobachten von Änderungen im DOM ist entscheidend für die Erstellung dynamischer Webanwendungen, die auf Benutzerinteraktionen reagieren. Ein weit verbreiteter Ansatz besteht darin, MutationObserver zu nutzen, eine moderne API, mit der Sie auf DOM-Änderungen achten können. Dieser Ansatz wird von den meisten modernen Browsern unterstützt, einschließlich IE11, Firefox und WebKit.
Um dies zu implementieren, können Sie die folgenden Schritte verwenden:
var observeDOM = (function() { var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; return function(obj, callback) { if (!obj || obj.nodeType !== 1) { return; } if (MutationObserver) { var mutationObserver = new MutationObserver(callback); mutationObserver.observe(obj, {childList: true, subtree: true}); return mutationObserver; } else if (window.addEventListener) { // browser support fallback obj.addEventListener('DOMNodeInserted', callback, false); obj.addEventListener('DOMNodeRemoved', callback, false); } } })();
Diese Funktion benötigt ein Element (obj ) und eine Callback-Funktion (Callback) als Argumente. Der Rückruf wird immer dann ausgeführt, wenn eine Änderung am Element oder seinen untergeordneten Elementen vorgenommen wird.
Um die Verwendung zu veranschaulichen, betrachten Sie dieses Beispiel:
<ol> <li><button>list item (click to delete)</button></li> </ol> <script> // add item var itemHTML = '<li><button>list item (click to delete)</button></li>'; var listEl = document.querySelector('ol'); // delete item listEl.onclick = function(e) { if (e.target.nodeName == 'BUTTON') { e.target.parentNode.parentNode.removeChild(e.target.parentNode); } }; // Observe a specific DOM element: 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); }); </script>
Dieses Beispiel zeigt Folgendes:
Das obige ist der detaillierte Inhalt vonWie kann ich DOM-Änderungen in JavaScript effektiv erkennen und darauf reagieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!