video无法触发oncanplay事件

视频的地址是本地的文件就无法触发oncanplay事件 把地址改成某一个网址就可以 这是为什么

相关代码

// <video id="video" controls width="100%">

     <source src="1.mp4" type="video/mp4">
         <!-- <source src="https://media.w3.org/2010/05/sintel/trailer.mp4" type="video/mp4"> -->
</video>
<script>    
    window.onload = function() {    
        var video = document.getElementById("video");
        video.addEventListener('canplay', function() {
        console.log(video.duration);
        })
    }


阅读 6.5k
1 个回答
新手上路,请多包涵

或許是加載太快了,例如從緩存加載了,而Canplay事件是只要可以開始播放就會觸發且只觸發一次。因此他有兩個特點:
1.不需要完整加載視頻
2.只觸發一次

因此它可能在window.onload之後video.addEventListener之前就觸發了,而第二點問題是,你的script放在後面,就不需要window.onload了,因為網頁自上而下加載,加載到腳本才執行,因此本身就已經是把上面的頁面加載完成的,你這時綁定onload事件,可能因為加載過快使得綁定之前onload就已經觸發了,所以裡面的都會失效。

排錯的一個技巧:給不同的執行階段加上console.log或是alert,看看有哪些是執行了的,有哪些沒有被執行,代碼停在了什麼地方。你這個可能是onload本身就沒執行,你在裡面綁定事件監聽自然沒用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题