在 <audio> 元素上设置 currentTime 会使 Firefox 崩溃

Setting currentTime on <audio> element crashes Firefox

我发现以编程方式在 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)

中运行良好

原来我的代码有 2 个问题。为了防止浏览器崩溃,我需要删除我放在 <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;