javascript - HTML5 音频标签即使在被删除后也拒绝停止播放?

标签 javascript jquery html audio html5-audio

所以我有这个音频标签:

<audio src=".....mp3" autoplay id="aud"></audio>

20 秒后我触发了这段代码:

var obj=$('#aud')
obj[0].volume=0;
obj[0].pause();
obj.prop('volume',0);
obj.trigger('pause');
obj.attr('src','');
obj.remove();
console.log('REMOVED!!');

但是在这一切之后,音频仍在播放?

音频标签已被obj.remove()成功删除,但音频仍在继续。

console.log() 记录正确。我没有收到任何错误。但尽管使用了多种方法来静音、暂停和删除音频标签,音频仍然继续。

谁能解释一下为什么吗?

我需要用盐和火焰净化这个音频。任何帮助将不胜感激,这慢慢让我发疯......

最佳答案

所以我在写这篇文章作为答案时摆弄了这个,我得出以下结论:

使用 autoplay 属性手动创建 audio 标签会导致它在被添加到 DOM 树两次之前就开始播放(在较旧的 jquery 实现上)。即使将该元素添加到 DOM 树后,通常也无法停止两个音频流 - 当播放第二个流时,其中一个流可能会与该元素断开连接。没有深入探讨这一点。我在这里重现了这个问题:

http://jsfiddle.net/2gaBs/3/

当您单击创建不自动播放按钮时,您可以正确暂停它,但是当您单击创建自动播放时,它将立即开始(甚至在添加到 DOM 树之前) ) 2次!您可能没有注意到第二次播放(我也没有),因为当 mp3 在同一台机器上时,2 个音频流几乎完全同步。按 Try stop 将停止其中一个音频流(您需要等待 5 秒,注意 setTimeout)。

另请注意,如果您切换到 jQuery 版本到 1.8.3 或更高版本,则不会再出现此问题,因此看来我们俩那天都在处理旧的 jQuery 库^^

所以2个解决方案是:将jquery版本更新到1.8.3或更高版本,或者创建不带autoplay属性的元素并稍后启动。

关于javascript - HTML5 音频标签即使在被删除后也拒绝停止播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100461/

相关文章:

javascript - 如何在单个连接中用 Javascript 上传大文件?

javascript - 连接 javascript 和 html

javascript - 使用 JQuery 更改背景图像

jquery - 为什么我的弹出窗口样式困惑?

javascript - 垂直对齐居中图像旁边的多行文本响应

javascript - 为什么 (navigator.devicememory) 对于内存超过 6gb 的设备不准确?

javascript - 表情符号模板文字中的 Unicode 值

javascript - 根据带有组合框选项的选定复选框显示和隐藏 div

jquery - 筛选类别 根据另一个下拉选项选择下拉菜单

javascript - 使用 jQuery 选择列表值更改但不显示在 UI 中