momopia 发表于 2022-8-31 16:11:18

谷歌浏览器播放视频的时候获取不到元素

如题,点击播放视频后通过指令document.querySelector("video").playbackRate=16,报错,看了下document.querySelector("video")获取到的元素是null,如果用鼠标右键在视频处点击检查后,再运行上述指令就可以正常获取到并且倍速,这是为什么呢?

steven026 发表于 2022-8-31 16:28:05

说明这个video是在iframe里面的
控制台默认的作用域是top,document.querySelector的document指向的是top中的document,而不是iframe的document
!(data/attachment/forum/202208/31/162011q7083cf0h7hq8wkh.png)

如果你右键检查iframe中的元素,控制台作用域会自动切换到iframe中,这时document.querySelector的document指向的是iframe的document

(Devtools直接输代码的)解决办法就是
1.手动切换控制台作用域(麻烦 但无视跨域)
然后输入```document.querySelector("video").playbackRate=16```

2.将选择器的document指向iframe的contentWindow(方便 但不适用于跨域iframe)
大致代码(默认只有1个iframe 如果有多个iframe要用querySelectorAll或者其他选择器选择)
```document.querySelector("iframe").contentWindow.document.querySelector("video").playbackRate=16```

李恒道 发表于 2022-8-31 16:57:26

楼上正解

unity韩 发表于 2022-8-31 18:50:14

楼楼上正解

momopia 发表于 2022-9-8 14:39:56

steven026 发表于 2022-8-31 16:28
说明这个video是在iframe里面的
控制台默认的作用域是top,document.querySelector的document指向的是t ...

强劲!ggnb!
页: [1]
查看完整版本: 谷歌浏览器播放视频的时候获取不到元素