所以我有这个音频标签:
<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 树后,通常也无法停止两个音频流 - 当播放第二个流时,其中一个流可能会与该元素断开连接。没有深入探讨这一点。我在这里重现了这个问题:
当您单击创建不自动播放
按钮时,您可以正确暂停它,但是当您单击创建自动播放
时,它将立即开始(甚至在添加到 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/