Chrome浏览器Video脚本失效问题求助,附所用脚本代码
修复Chrome中视频脚本失效的问题
嘿,我来帮你搞定这个Chrome里视频脚本不工作的问题!
首先说下问题根源:你把<script>直接嵌套在<video>标签里的写法其实不符合HTML规范——<video>的合法子元素只有<source>、<track>这类媒体相关标签,Firefox对这种“违规”写法做了兼容,但Chrome的处理更严格,导致document.currentScript.parentElement无法正确获取到video元素,所以设置音量的代码没生效。
给你两个靠谱的修复方案:
方案1:把脚本移到video标签外(推荐)
给video加个ID,然后在外部脚本里通过ID获取元素,写法更规范,兼容性也更好:
<video autoplay loop id="targetVideo"> <source src="lust.mp4#t=33" type="video/mp4" /> </video> <script> // 确保DOM加载完成后执行,避免元素未初始化的问题 document.addEventListener('DOMContentLoaded', () => { const video = document.getElementById('targetVideo'); // 可选:监听视频元数据加载完成事件,确保设置音量时视频已就绪 video.addEventListener('loadedmetadata', () => { video.volume = 0.8; }); // 直接设置也可以,加事件监听会更稳妥 video.volume = 0.8; }); </script>
方案2:兼容现有结构的临时修复
如果不想调整HTML结构,可以换一种方式获取video元素,避开document.currentScript的兼容性问题:
<video autoplay loop> <source src="lust.mp4#t=33" type="video/mp4" /> <script> // 直接通过选择器获取页面中的video元素 const video = document.querySelector('video'); if (video) { video.volume = 0.8; } </script> </video>
不过还是更推荐方案1,因为把脚本放在video内部始终是不标准的写法,未来浏览器可能都会不再兼容这类场景。
另外提个小提醒:Chrome对自动播放的限制比较严格,如果视频没有静音,可能会被浏览器阻止自动播放。如果遇到自动播放失效的情况,可以先把音量设为0,等用户和页面产生交互后再调整音量~
内容的提问来源于stack exchange,提问作者Zaar - CSGO And More
相关产品推荐
相关产品推荐

