MutationObserver будет работать. (Напротив, события мутации через addEventListener
устарели и медленны, лучше их избегать.) Например:
console.log('script start');
const myDiv = document.getElementById("my-div");
new MutationObserver((mutations, observer) => {
console.log('Change observed');
// Once the change is seen, don't need the observer anymore
observer.disconnect();
})
.observe(myDiv, { childList: true });
setTimeout(() => {
myDiv.appendChild(document.createElement('span')).textContent = 'span content';
}, 3000);
<div id="my-div">my div </div>
childList: true
будет следить за изменениями в любых прямых потомках наблюдаемого элемента. Если вы хотите следить за изменениями любого потомка , используйте также subtree: true
:
{ childList: true, subtree: true }
Но глубокие наблюдатели обходятся дорого - не забудьте удалить их, когда они выполнят то, что вы нужно.