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号