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

时间:2015-12-31 08:04:20

标签: javascript html5 firefox html5-audio web-audio

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

我的JavaScript代码如下所示:

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

相同的代码在最新的Chrome(47.0)

中运行良好

1 个答案:

答案 0 :(得分:1)

原来我的代码有2个问题。为防止浏览器崩溃,我需要删除我在autoplay元素上放置的<audio>属性,然后忘记:

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

在我这样做之后,浏览器不再完全崩溃,但是音频播放很麻烦并且很快就跳过了。

第二个问题在我阅读this question后解决,并在设置currentTime后删除了事件处理程序(结果设置currentTime导致canplay事件再次触发创建无限事件循环 - 但由于某些原因,仅限于Firefox而不是Chrome。)

我在Firefox和Chrome上工作的最终代码如下:

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