html5 audio:更改currentTime会触发多个canplay事件

时间:2016-09-11 14:56:45

标签: javascript jquery html5-audio

我需要更改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>

can check it on jsfiddle, too

实际上,它似乎与 loadedmetadata 事件有关,但每个人都认为canplay更好,并且与更多浏览器兼容

1 个答案:

答案 0 :(得分:1)

您可以使用.one而不是.bind,以便仅在第一次收听

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