Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5音频标签拒绝停止播放,即使被删除?_Javascript_Jquery_Html_Audio_Html5 Audio - Fatal编程技术网

Javascript HTML5音频标签拒绝停止播放,即使被删除?

Javascript HTML5音频标签拒绝停止播放,即使被删除?,javascript,jquery,html,audio,html5-audio,Javascript,Jquery,Html,Audio,Html5 Audio,我有一个音频标签: <audio src=".....mp3" autoplay id="aud"></audio> 但在所有这些之后,音频仍在播放 obj.remove()已成功删除音频标签,但音频仍在继续 console.log()。我没有错误。但是,尽管使用了几种方法来静音、暂停和删除音频标签,音频仍在继续 有人能解释为什么吗 我需要用盐和火焰清除这个音频。任何帮助都将不胜感激,这正慢慢地让我发疯……因此,我在写这篇文章作为答案时对其进行了修改,并得出以下结论:

我有一个音频标签:

<audio src=".....mp3" autoplay id="aud"></audio>
但在所有这些之后,音频仍在播放

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

console.log()。我没有错误。但是,尽管使用了几种方法来静音、暂停和删除音频标签,音频仍在继续

有人能解释为什么吗


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

因此,我在写这篇文章作为答案时对其进行了修改,并得出以下结论:

使用
autoplay
属性手动创建
audio
标记会导致它在添加到DOM树2次之前播放(在较旧的jquery实现中)。即使在将该元素添加到DOM树中之后,通常也不可能停止两个音频流——当播放第二个流时,其中一个流与该元素断开连接。没有深入挖掘。我在这里转载了这个问题:

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

还要注意的是,如果您将jQuery版本切换到1.8.3或更高版本,那么这个问题将不再发生,因此我们两人似乎都在使用旧的jQuery LIB^^


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

我认为html是对您使用autoplay媒体的报复。一旦有人点击“播放”按钮,音频标签就会写入页面。老实说,我不该受到惩罚!那应该有用。。。什么浏览器?jQuery版本?可能是JSFIDLE出现了问题?我知道它应该可以工作,我不能在JSFIDLE中重新创建问题-这表明它是我的代码,但我需要了解是什么原因导致音频在被删除后继续播放。也许一个更好的问题应该是“在标签被告知静音、暂停并被移除后,音频如何继续播放”-是否曾经发生过这种情况?我正在检查DOM,一旦删除,页面中的任何地方都没有其他音频标记。我使用的是Firefox 28和Chrome 25。您写道,您正在手动将音频标签添加到代码中。我相信在你将标签添加到DOM之前音频就已经被自动播放了,这会把事情搞砸(可能是开始播放2次?)。尝试在不使用autplay属性的情况下将音频标记附加到DOM树中,并在添加后对其调用
play()
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!!');