iOS Safariclosures时停止HTML5audio循环播放

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

<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设备上播放audio时,它会很好地循环播放, 但是 ,当我closures浏览器窗口或切换标签时,它会一直循环播放,暂停播放的唯一方法是closures浏览器标签。 我尝试删除loop='loop'并重播它用JavaScript的话, 这工作,但与audio约1.5分钟长,它仍然可以很烦人。 但是这并不起作用,因为即使浏览器未打开, ended事件也会触发。

演示中,声音是我可以在网上find的第一个,但请注意,我的实际声音很长,所以当浏览器窗口closures时,我确实需要pause

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

pipe理find解决scheme:

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

 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事件在播放audio元素时会持续触发,所以我只需要检查最后一次调用循环的时间。 如果它被称为超过100毫秒前,我暂停音乐。 就像我testing的iPad上的魅力一样。