关于 html5 <audio> 事件的一些疑问

audio 的 canplaythrough 事件表示的是音频能够不停顿地一直播放,可是这个事件为什么发生在表示浏览器正在下载指定的音频的事件之前(progress事件),而且这两个事件为什么都触发了不止一次?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Audio-demo</title>
</head>

<body>
    <audio id="audio-demo" src="http://www.sample-videos.com/audio/mp3/india-national-anthem.mp3" controls preload="metadata">
    </audio>
    <script>
        var audio = document.getElementById('audio-demo');
        audio.onloadstart = function() {
            console.log('loadstart');
        }
        audio.onprogress = function() {
            console.log('progress');
        }
        audio.oncanplaythrough = function() {
            console.log('canplaythrough');
        }
    </script>
</body>

</html>

图片描述

阅读 3.2k
1 个回答

因为你的音视频不是一次性下载下来的,而是分段下载播放的,所以会重复触发progress和canplaythrough。

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