加载中...
MutationObserver 是一个浏览器 API,用于异步监听 DOM 树的结构或属性变化。它以批量、高效的方式替代了已废弃的 Mutation Events,常用于监测第三方脚本注入、内容变化和自动化处理。

| 类型 | 浏览器观察器 API |
| 监听内容 | DOM 结构与属性变化 |
| 执行方式 | 异步、批量 |
| 取代对象 | Mutation Events |
| 停止方法 | disconnect |
变动观察器(MutationObserver) 是浏览器提供的一个用于监听 DOM 变化的 API。它可以异步观察某个节点及其子树的属性变更、子节点增删以及文本内容变化,并在变动发生后批量派发记录。
早期浏览器提供过 Mutation Events,但因每次 DOM 变动都同步触发事件,严重拖累性能,已被废弃。MutationObserver 作为替代方案,采用异步、批量的模型:在一批 DOM 操作完成后,将所有变动记录一次性交给回调处理,大幅降低了开销。
MutationObserver 常用于监测由第三方脚本或用户操作动态插入的内容,例如广告拦截、自动化脚本、富文本编辑器同步。前端框架和组件库也用它检测宿主环境变化,浏览器扩展则借助它在目标页面出现特定元素时执行处理逻辑。
问:它和 Mutation Events 有何区别?答:Mutation Events 是同步触发且已废弃,每次变动都打断执行;MutationObserver 是异步批处理,性能好且是当前推荐方案。
问:观察大范围子树会不会很耗性能?答:观察范围越大、变动越频繁,回调需处理的记录越多。应尽量缩小观察范围并精确配置观察类型,及时 disconnect 不再需要的观察。

| 类型 | 浏览器观察器 API |
| 监听内容 | DOM 结构与属性变化 |
| 执行方式 | 异步、批量 |
| 取代对象 | Mutation Events |
| 停止方法 | disconnect |
登录 后参与讨论
暂无讨论,来发表第一条评论吧