将currentTime设置为<音频>元素导致Firefox崩溃

Setting currentTime on <audio> element crashes Firefox

本文关键字:元素 Firefox 崩溃 gt 音频 currentTime lt 设置      更新时间:2023-09-26

我发现在HTML5 <audio>元素上以编程方式设置currentTime属性会导致Firefox 43崩溃(实际上会杀死整个浏览器,而不仅仅是产生JS错误)

我的JavaScript代码如下所示:

// 'offset' variable set to valid numeric value elsewhere
audio.addEventListener("canplay", function() {
    audio.currentTime = offset;
});
audio.play();

相同的代码在最新的Chrome(47.0)中运行良好

我的代码出现了两个问题。为了防止浏览器崩溃,我需要删除<audio>元素上的autoplay属性,然后忘记了:

<audio id="player" autoplay></audio>

在我这样做之后,浏览器不再完全崩溃,但音频播放出现了故障,很快就跳过了。

第二个问题在我阅读了这个问题并在设置currentTime后删除了事件处理程序后得到了解决(事实证明,设置currentTime会导致canplay事件再次触发,从而创建一个无限的事件循环,但由于某种原因,仅在Firefox上,而不是Chrome上)。

我在Firefox和Chrome上的最后一段代码是这样的:

function onCanPlay(){
    audio.currentTime = offset;
    audio.oncanplay = null;
}
audio.oncanplay = onCanPlay;