我发现以编程方式在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)
中运行良好答案 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;