Uncaught TypeError错误求助:document.getElementById(...).contentWindow未定义
解决Uncaught TypeError: document.getElementById(...).contentWindow is undefined错误
错误原因
你代码里获取的是<div id="vid">元素,但contentWindow是iframe元素独有的属性,div元素不存在这个属性,因此会抛出undefined的错误。
修复步骤
- 给iframe添加专属ID,修改后的HTML代码:
<div id="vid"> <iframe id="video-frame" src="https://yewtu.be/embed/jfKfPfyJRdk" height="0px" width="0px" frameborder="0"></iframe> </div>
- 修改JavaScript代码,直接定位到iframe元素,同时增加加载完成判断(避免iframe未加载就执行操作):
function volume() { const videoIframe = document.getElementById("video-frame"); // 等待iframe加载完成后再操作内部元素 videoIframe.onload = function() { videoIframe.contentWindow.getElementById("player_html5_api").volume = 0.2; }; }
额外注意事项
如果执行后仍然无法修改音量,大概率是跨域限制导致的:yewtu.be的页面可能设置了禁止外部页面操作其iframe内容的策略。这种情况下,推荐直接通过嵌入链接的参数设置初始音量,比如修改iframe的src为:
https://yewtu.be/embed/jfKfPfyJRdk?volume=20
(参数值为0-100的数字,代表百分比音量)
内容的提问来源于stack exchange,提问作者ecjwthx
相关产品推荐
相关产品推荐

