const observer = new MutationObserver(list => {
console.log('mutation list', list);
});
observer.observe(document.body, {
attributes: true,
childList: true,
subtree: true
});
// perform any DOM change action in your page. e.g. show/hide/remove
var fnCallback = function (mutations) {
mutations.forEach(function (mutation) {
alert(mutation.target.id, "added: " + mutation.addedNodes.length + " nodes");
alert(mutation.target, "removed: " + mutation.removedNodes.length + " nodes");
});
};
var observer = new MutationObserver(fnCallback),
elTarget = document.querySelector("#divTarget"),
objConfig = {
childList: true,
subtree : true,
attributes: true,
characterData : true,
attributeFilter : ['style', 'id'],
attributeOldValue : true
};
observer.observe(elTarget, objConfig);
//below here is just the test code
var btnUpdate = document.querySelector("#btnUpdate"),
fnHandler = function () {
elTarget.innerHTML = "<h2>New content</h2>";
};
btnUpdate.addEventListener("click", fnHandler, false);
let mList = document.getElementById('myList'),
options = {
childList: true,
attributes: true,
subtree: true
},
observer = new MutationObserver(mCallback);
function mCallback(mutations) {
for (let mutation of mutations) {
// If you remove a child from the container you are watching
if (mutation.type === 'childList') {
console.log('Mutation Detected: A child node has been added or removed.');
}
// If you use setAttribute to add a class or ID to an element
if (mutation.type === 'attributes') {
console.log('Mutation Detected: An attribute has been added or removed.');
}
if (mutation.type === 'subtree') {
console.log('Mutation Detected: A subtree has been added or removed.');
}
}
}
observer.observe(mList, options);