html5 音频:更改 currentTime 会触发多个 canplay 事件
html5 audio: changing currentTime fires multiple canplay events
我需要更改 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;
});
我需要更改 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;
});