HTML5 Audio标签即使被删除后仍拒绝停止播放?

Jim*_*ery 2 javascript audio jquery html5 html5-audio

所以我有这个音频标签:

<audio src=".....mp3" autoplay id="aud"></audio>
Run Code Online (Sandbox Code Playgroud)

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!!');
Run Code Online (Sandbox Code Playgroud)

但是毕竟,音频仍在播放吗?

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

console.log()正确的记录。我没有错误。但是,尽管使用了多种方法来静音,暂停和删除音频标签,但音频仍会继续播放。

谁能解释为什么?

我需要用盐和火焰清除此音频。任何帮助将不胜感激,这正使我发疯……

小智 5

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

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

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

当您单击Create w/o autoplay按钮时,可以适当地暂停它,但是当您单击Create autoplay它时,它会立即启动(甚至在添加到DOM树之前)2次!您可能没有注意到第二次播放(我也没有),因为当mp3在同一台机器上时,两个音频流几乎完全同步。按下Try stop将停止音频流之一(您需要等待5秒钟,注意setTimeout)。

另请注意,如果您切换到1.8.3或更高版本的jQuery版本,此问题将不再发生,因此似乎我们俩都当天都在使用旧的jQuery库。^^

因此,有2种解决方案:将jquery版本更新到1.8.3或更高版本,或创建没有autoplay属性的元素,然后再启动它。