html5 audio:改变currentTime触发多个可播放事件

html5 audio: changing currentTime fires multiple canplay events

本文关键字:播放 事件 audio 改变 currentTime html5      更新时间:2023-09-26

我需要更改HTML5音频元素的偏移时间。我写了一个函数来处理canplay事件并改变currentTime属性。

然而,似乎改变currentTime属性触发事件,因此它在循环中继续进行。当我注释掉currentTime变化时,它正常工作(即事件只触发一次)。

正确的做法是什么?这种行为(至少)出现在Firefox和Chrome中。结果,音乐不能正常播放

<audio id="current" src="http://www.music.helsinki.fi/tmt/opetus/uusmedia/esim/a2002011001-e02.wav" controls 
start="1000" end="2000">    
</audio>
<script>
 $('audio').bind('canplay', function(event) {
     alert("fire!");
    event.target.currentTime = 0.5;
 });
 </script>

也可以在jsfiddle上检查

实际上,它似乎与加载元数据事件一起工作,但每个人都建议canplay更好,与更多浏览器兼容

您可以使用。one而不是。bind,以便仅在第一次侦听它

$('audio').one('canplay', function(event) {
    console.log("fire!");
    event.target.currentTime = 0.5;
});