// 获取目标节点
const targetNode = document.querySelector('#targetElement');
// 创建观察器实例
const observer = new MutationObserver((mutationsList) => {
for (let mutation of mutationsList) {
// 根据变化类型处理
switch (mutation.type) {
case 'childList':
console.log('子节点变化', mutation.addedNodes, mutation.removedNodes);
break;
case 'attributes':
console.log(`属性变化: ${mutation.attributeName} -> ${targetNode.getAttribute(mutation.attributeName)}`);
break;
case 'characterData':
console.log('文本内容变化', mutation.target.textContent);
break;
}
}
});
// 配置观察选项(要监听的变更类型)
const config = {
attributes: true, // 监听属性变化
attributeOldValue: true, // 记录旧值
childList: true, // 监听子节点增删
subtree: true, // 监听所有后代节点
characterData: true // 监听文本内容变化
};
// 开始观察节点
observer.observe(targetNode, config);
// 停止观察
// observer.disconnect();