监听html元素是否被删除,删除之后重新生成被删除的元素

javascript 复制代码
/**
 * 监听水印是否清除和修改
 */
export function watermarkClear() {
  // 添加水印的盒子
  let box: any = document.querySelector('.dplayer-video-wrap')
  // 水印
  let watermark: any = document.querySelector('.dplayer-logo')
  // 观察器的配置(需要观察什么变动)
  const config = { attributes: true, childList: true, subtree: true };
  // 当观察到变动时执行的回调函数
  const callback = function (mutationsList: any, observer: any) {
    watermark = document.querySelector('.dplayer-logo')
    let watermarkImg = document.querySelector('.dplayer-logo img')
    if (!watermark || !watermarkImg) {
      watermark?.remove()
      const div = document.createElement("div");
      div.className = "dplayer-logo"
      div.innerHTML = `<img src="${'/_nuxt/assets/images/AppOverall/watermark.png'}" alt="">`
      box?.appendChild(div)
    }
  };

  // 创建一个观察器实例并传入回调函数
  const observer = new MutationObserver(callback);

  // 以上述配置开始观察目标节点
  observer.observe(box, config);

}

调用

javascript 复制代码
watermarkClear()

监听的元素

这个元素被删除之后在这个父盒子里面重新生成

扩展:

元素加 pointer-events: none; 属性使用开发工具就不能直接点到元素所在的代码位置

相关推荐
AI_56784 分钟前
Vue3组件通信的实战指南
前端·javascript·vue.js
烤麻辣烫4 分钟前
黑马大事件学习-16 (前端主页面)
前端·css·vue.js·学习
Dragon Wu7 分钟前
TanStack Query(React Query) 使用总结
前端·react.js·前端框架·react
鹏多多11 分钟前
flutter-使用EventBus实现组件间数据通信
android·前端·flutter
UpgradeLink12 分钟前
Electron项目使用electron-updater与UpgradeLink接入参考
开发语言·前端·javascript·笔记·electron·用户运营
程序员祥云21 分钟前
技能特⻓回答
前端·面试
m0_6161884922 分钟前
JS文件批量下载并打包成ZIP的功能
开发语言·javascript·ecmascript
xiaoxue..24 分钟前
React 新手村通关指南:状态、组件与魔法 UI
前端·javascript·react.js·ui
滿39 分钟前
Vue3 ElementPlus el-select 焦点事件数据不回显问题
javascript·vue.js·elementui
晚霞的不甘40 分钟前
Flutter + OpenHarmony 架构演进:从单体到模块化、微前端与动态能力的现代化应用体系
前端·flutter·架构