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树之后,通常也无法停止两个音频流-当播放第二个流时,其中一个流与该元素断开连接的可能性很大。没太深究。我在这里重现了这个问题:
当您单击Create w/o autoplay按钮时,可以适当地暂停它,但是当您单击Create autoplay它时,它会立即启动(甚至在添加到DOM树之前)2次!您可能没有注意到第二次播放(我也没有),因为当mp3在同一台机器上时,两个音频流几乎完全同步。按下Try stop将停止音频流之一(您需要等待5秒钟,注意setTimeout)。
另请注意,如果您切换到1.8.3或更高版本的jQuery版本,此问题将不再发生,因此似乎我们俩都当天都在使用旧的jQuery库。^^
因此,有2种解决方案:将jquery版本更新到1.8.3或更高版本,或创建没有autoplay属性的元素,然后再启动它。
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |