关闭iOS Safari时停止循环播放HTML5音频

时间:2013-01-19 13:01:35

标签: javascript ios html5 ios6 html5-audio

好的,所以我有这么简单的事情:

<audio autoplay='autoplay' loop='loop' id='audio' controls>
  <source src='http://www.w3schools.com/html/horse.ogg'/>
  <source src='http://www.w3schools.com/html/horse.mp3'/>
</audio>

现在,当我在iOS设备上播放音频时,它会很好地循环播放所有内容,然而,当我关闭浏览器窗口或切换标签时,它只是继续循环而且是唯一的方式如果我关闭浏览器选项卡,暂停它。我尝试删除loop='loop'并使用JavaScript重播onended 这样可行,但是音频大约为1.5分钟,它仍然非常烦人。 但这不起作用,因为即使浏览器没有打开,ended事件也会触发。

Demo其中声音是我在网上找到的第一个声音,但请注意我的实际声音很长,所以当浏览器窗口关闭时我需要pause。< / p>

我尝试暂停onbluronunloadonbeforeunload无济于事。有没有办法阻止音频在后台播放?

1 个答案:

答案 0 :(得分:2)

管理以找到解决方案:

使用循环来检查用户是否在网页上。存储时间。

var lastSeen;
var loop = function (){
    lastSeen = Date.now();
    setTimeout(loop, 50);
};
loop();

var music = document.getElementById('music');
music.addEventListener('timeupdate', function (){
    if(Date.now() - lastSeen > 100){
        this.pause();
    }
}, false);

这大致与我的档案相似。由于timeupdate事件在播放时不断触发音频元素,因此我只需要检查上次调用我的循环的时间。如果超过100毫秒之前调用它,我会暂停音乐。在我测试的iPad上工作就像一个魅力。