我需要更改 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>
实际上,它似乎可以与 loadedmetadata 事件一起使用,但每个人都认为 canplay 更好并且与更多浏览器兼容
最佳答案
您可以使用 .one 而不是 .bind,以便仅在第一次收听
$('audio').one('canplay', function(event) {
console.log("fire!");
event.target.currentTime = 0.5;
});
关于javascript - html5音频: changing currentTime fires multiple canplay events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437369/