从当iOS的Safari浏览器被关闭循环停止HTML5音频(Stop HTML5 audio fro

2019-07-18 10:12发布

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

<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'和重放它onended使用JavaScript, 和这样的作品,但声音是约1.5分钟长,它仍然是非常恼人。 但没有工作,要么是因为ended即使在未打开浏览器事件触发。

演示中的声音是第一个,我可以在网上找到,但要注意,我实际的声音是相当长的,所以我需要pause它在关闭浏览器窗口。

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

Answer 1:

好不容易才找到一个解决方案:

利用循环的,要检查如果用户是在网页上。 存储所需的时间。

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音频元素事件触发持续,如果它玩,我只需要检查的时候我的循环最后调用。 如果它被称为前100ms以上,我暂停音乐。 工作就像在iPad上我测试上的魅力。



文章来源: Stop HTML5 audio from looping when iOS Safari is closed