好的,所以我有这么简单的事情:
<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>
我尝试暂停onblur
,onunload
和onbeforeunload
无济于事。有没有办法阻止音频在后台播放?
答案 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上工作就像一个魅力。