MutationObserver是监听页面DOM变化的高效API,通过new MutationObserver(callback)创建实例并调用observe()方法监听目标节点,支持childList、subtree、attributes等配置项,可精准监控节点增删、属性或文本变化,适用于广告拦截、表单监控、内容加载检测等场景,使用后需调用disconnect()避免内存泄漏。

MutationObserver 是 JavaScript 提供的一个强大 API,用于监听 DOM 树的变化。相比旧的 Mutation Events,它性能更好、更灵活,适合在现代 Web 开发中监控元素的增删、属性修改、文本内容变更等场景。
MutationObserver 通过构造函数创建实例,并传入一个回调函数。当监听的 DOM 发生变化时,该回调会被异步触发。
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
console.log('变化类型:', mutation.type);
if (mutation.type === 'childList') {
console.log('新增节点:', mutation.addedNodes);
console.log('删除节点:', mutation.removedNodes);
}
});
});
创建观察者后,需要调用 observe() 方法指定目标节点和配置项:
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
characterData: true
});
observe() 的第二个参数是一个配置对象,用来精确控制监听范围:
立即学习“Java免费学习笔记(深入)”;
合理设置这些选项可以避免不必要的回调,提升性能。
MutationObserver 常用于以下情况:
例如,监听某个容器内是否有新元素插入并做处理:
const target = document.getElementById('list-container');
const observer = new MutationObserver(() => {
console.log('列表已更新');
// 执行重新绑定事件、刷新样式等操作
});
observer.observe(target, { childList: true });
使用完后应手动断开连接,防止内存泄漏:
通常在组件销毁或页面跳转前调用 disconnect()。
基本上就这些。MutationObserver 虽然功能强大,但也不宜滥用,只在真正需要响应 DOM 变化时才使用。正确配置能有效减少性能损耗。
以上就是使用MutationObserver监听DOM变化_javascript API的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号