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

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

我发现以编程方式设置 currentTime HTML5 上的属性 <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) 中运行良好

最佳答案

原来我的代码有 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;

关于javascript - 在 <audio> 元素上设置 currentTime 会使 Firefox 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34543195/

相关文章:

Javascript执行存储在变量中的onclick事件

javascript - Jquery toggle div,允许点击div外部关闭,也允许点击div内部的所有内容

html - 使用 HTML 和 CSS 使列表居中

javascript - 渴望在 Rails 中为 AngularJS 加载 HTML/erb 模板

javascript - 图片悬停jquery效果

javascript - 如何使用站点 B 中的 iframe 调用站点 A 上的 jQuery 脚本?

javascript - 如何在按钮单击时聚焦下一个文本区域

html - 在 IE 和 Firefox 上显示不一致

javascript - JavaScript 中的对象返回自身

asp.net - 如何查看 Web 服务器 http 响应大小(以 KB 为单位)?