当前位置: 首页 > ds >正文

在vue/react项目中单独引入一个js文件,在js文件中使用DOMContentLoaded函数querySelectorAll为空数组解决办法

因为copy的一个网站源码,菜单按钮需要单独添加事件处理函数,但是在一个js脚本中等带DOMContentLoaded完成事件后执行querySelectorAll为空数组:但页面上是有元素的

在Vue3中,由于组件的异步渲染特性,在DOMContentLoaded事件中尝试获取DOM元素可能会得到空数组,因为此时Vue组件可能还没有完成渲染,所以需要单独处理。

1.使用MutationObserver监听DOM变化

在js脚本文件中使用MutationObserver监听页面变化,然后等可以获取到要查找的元素后,就停止监听,这个时候再执行相应的事件处理函数:

2.轮询检查元素是否存在

原理和第一种方式差不多,推荐使用第一种方式

// 在单独的JS文件中
function pollForElement(selector, callback, interval = 100, timeout = 5000) {const startTime = Date.now();const check = () = >{const elements = document.querySelectorAll(selector);if (elements.length > 0) {callback(elements);return;}if (Date.now() - startTime >= timeout) {console.log('超时: 未找到元素');return;}setTimeout(check, interval);};check();
}pollForElement('.NavigationMenu_menu__05DPv', (elements) = >{console.log('找到元素:', elements);
});

3.自定义事件通知

在window上添加一个事件函数,在vue中等页面渲染完成后,触发这个函数

// 在Vue组件中
onMounted(() = >{window.dispatchEvent(new CustomEvent('vue-mounted'));
});// 在单独的JS文件中
window.addEventListener('vue-mounted', () = >{const elements = document.querySelectorAll('.NavigationMenu_menu__05DPv');console.log('找到元素:', elements);
});

http://www.xdnf.cn/news/19256.html

相关文章:

  • OpenCV轮廓近似与Python命令行参数解析
  • 第四十七天(jndi注入)
  • 柳州市委常委、统战部部长,副市长潘展东率队首访深兰科技集团新总部,共探 AI 赋能制造大市与东盟合作新局
  • 前端vue框架实现反向代理详解
  • 响应式编程框架Reactor【3】
  • 【物联网】关于 GATT (Generic Attribute Profile)基本概念与三种操作(Read / Write / Notify)的理解
  • OpenAI Sora深度解析:AI视频生成技术如何重塑广告电商行业?影业合作已落地
  • WebGIS开发智慧校园(8)地图控件
  • 【实时Linux实战系列】实时自动化测试框架
  • [vmware][ubuntu]一个linux调用摄像头截图demo
  • 常见视频封装格式对比
  • LeetCode 317 离建筑物最近的距离
  • 科技赋能医疗:陪诊小程序系统开发,让就医不再孤单
  • mysql中表的约束
  • weblogic JBoss漏洞 Strcts2漏洞 fastjson漏洞
  • 计算机视觉第一课opencv(四)保姆级教学
  • solidity地址、智能合约、交易概念
  • 【完整源码+数据集+部署教程】高速公路施工区域物体检测系统源码和数据集:改进yolo11-RepNCSPELAN
  • FOC-双电阻采样-无刷-AC/DC(吹风筒项目)
  • 笔记本电脑频繁出现 vcomp140.dll丢失怎么办?结合移动设备特性,提供适配性强的修复方案
  • 函数的逆与原象
  • flutter-使用url_launcher打开链接/应用/短信/邮件和评分跳转等
  • LoraConfig target modules加入embed_tokens(64)
  • Java项目打包成EXE全攻略
  • Spring Boot 项目文件上传安全与优化:OSS、MinIO、Nginx 分片上传实战
  • 用 C++ 创建单向链表 forward list
  • “我店 + RWA”来袭:重构商业价值,解锁消费投资新密码
  • HarmonyOS权限管理应用
  • 【序列晋升】20 Spring Cloud Function 函数即服务(FaaS)
  • FPGA实现1553B BC控制器IP方案