【问题标题】:Setting currentTime on <audio> element crashes Firefox在 <audio> 元素上设置 currentTime 会使 Firefox 崩溃
【发布时间】:2016-04-05 05:38:22
【问题描述】:

我发现以编程方式在 HTML5 &lt;audio&gt; 元素上设置 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) 中运行良好

【问题讨论】:

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


    【解决方案1】:

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

    <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;
    

    【讨论】:

    • @Gothdo 因为代码更简单,我只需要 1 个侦听器来处理该事件,但使用 addEventListener 也可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多