MutationObserver的使用

通过MutationObserver的方式监听是否有DOM元素插入。当vue渲染页面后会对<div id="app"></div>重新挂载。这时要观察的目标节点内会有节点挂载,此时隐藏骨架屏。

js 复制代码
<svg id="skeletonViewBase"></svg>
<div id="app"></div>
<script>
const skeleton_view_base = document.querySelector('#skeletonViewBase')
const observers = new MutationObserver((mutationsList, observer) => {
  // 遍历每个发生变化的 mutation
  for (const mutation of mutationsList) {
    // 检查是否有节点添加
    if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
      // 遍历新添加的节点
      mutation.addedNodes.forEach((node) => {
        if (node.classList) {
          skeleton_view_base && skeleton_view_base.remove()
          observer.disconnect()
        }
      })
    }
  }
})
// 要观察的目标节点
const targetNode = document.querySelector('#app')
// 配置 MutationObserver 来监听子节点的添加
const config = {
  childList: true, // 监听子节点的添加或移除
  subtree: true // 在整个 DOM 树中观察更改
}
// 开始观察
observers.observe(targetNode, config)
</script>
相关推荐
wordbaby1 分钟前
用 window.matchMedia 实现高级响应式开发:API 全面解析与实战技巧
前端·javascript
晚星star13 分钟前
在 Web 前端实现流式 TTS 播放
前端·vue.js
huabuyu13 分钟前
基于 Taro 的 Markdown AST 渲染器实现
前端
薄雾晚晴13 分钟前
Rspack 性能优化实战:JS/CSS 压缩 + 代码分割,让产物体积直降 40%
前端·javascript
本末倒置18313 分钟前
前端面试高频题:18个经典技术难点深度解析与解决方案
前端·vue.js·面试
狗头大军之江苏分军34 分钟前
Meta万人裁员亲历者自述:小扎尝到了降本的甜头
前端·后端·github
秃顶老男孩.39 分钟前
web中的循环遍历
开发语言·前端·javascript
龙在天1 小时前
vue 请求接口快慢 覆盖 解决方案
前端
跟橙姐学代码1 小时前
Python 类的正确打开方式:从新手到进阶的第一步
前端·python·ipython
Jagger_1 小时前
SonarQube:提升代码质量的前后端解决方案
前端·后端·ai编程