HTML5 词条目录
前端Wiki/词条/MutationObserver DOM 监听

MutationObserver DOM 监听

定义高效监听 DOM 变化的 API,替代已废弃的 mutation events

老的 DOM mutation events(如 DOMNodeInserted)每次变化都同步触发,严重拖慢渲染,已被标准废弃。MutationObserver 是异步的:把多次变化收集起来,在微任务阶段一次性回调,还允许配置只观察子节点列表、属性或文本内容,精细控制监听范围。

调用方式:new MutationObserver(回调) 创建观察者,传入目标节点与配置对象(childList / attributes / subtree / characterData 等),变化会在回调的 mutations 数组里逐条给出 type 与目标节点,disconnect() 停止观察。适合第三方脚本监听框架渲染、实现撤销栈、做无限滚动的兜底检测。

JavaScript
var box = document.createElement('div');
document.body.appendChild(box);

var ob = new MutationObserver(function (mutations) {
  mutations.forEach(function (m) {
    console.log('变化类型:', m.type);
    m.addedNodes.forEach(function (n) { console.log('新增节点:', n); });
    m.removedNodes.forEach(function (n) { console.log('删除节点:', n); });
  });
});

ob.observe(box, { childList: true, subtree: true, attributes: true });

// 模拟框架渲染
box.innerHTML = '<p>动态插入的内容</p>';
setTimeout(function () { ob.disconnect(); }, 2000);
⚠ 常见误区
🔗 相关词条组件页面结构标签
← 返回来源章节组件