document.queryselectorall('video')可获取页面中所有原生video元素节点;它返回静态nodelist,不包含未插入dom的动态创建元素,支持css伪类;需配合mutationobserver监听动态新增video。

可以用 document.querySelectorAll('video') 获取当前页面中所有原生 <video></video> 元素节点。
获取所有 video 元素(基础方式)
这是最直接、兼容性最好的方法:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
document.querySelectorAll('video')返回一个 静态 NodeList,包含所有匹配的<video></video>标签(无论是否已加载、是否在视口内、是否被隐藏) - 它不包括通过 JavaScript 动态创建但尚未插入 DOM 的 video 元素
- 支持 CSS 伪类,例如
document.querySelectorAll('video:played')(需浏览器支持)
如果还要包含自定义视频容器(如 div 模拟播放器)
有些页面用 <div> + canvas + WebRTC 实现视频渲染,此时原生 <code>video 标签不存在。可结合语义或 class 判断:
- 按 class 名查找:
document.querySelectorAll('video, .my-video-player, [data-role="video-container"]') - 按属性筛选:
document.querySelectorAll('video, [data-video-src], [data-is-video="true"]') - 注意:这类扩展依赖项目约定,无法通用,需根据实际 HTML 结构调整选择器
获取后常用操作示例
拿到 NodeList 后,通常需要遍历处理:
- 转为数组方便使用数组方法:
Array.from(document.querySelectorAll('video')) - 检查是否静音:
video.muted或video.volume === 0 - 监听播放状态:
video.addEventListener('play', () => { ... }) - 暂停全部:
document.querySelectorAll('video').forEach(v => v.pause())
注意动态加载的视频(如懒加载、SPA 路由切换)
页面初始加载后新增的 <video></video> 不会被上述方法自动捕获:
- 可在关键时机(如路由变化后、滚动到底部触发加载后)重新执行查询
- 用
MutationObserver监听 DOM 变化(适合复杂场景): -
示例:
new MutationObserver(() => console.log('新 video 出现了?')).observe(document.body, { childList: true, subtree: true });










