1

好的,所以我有这样简单的东西:

<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 设备上播放音频时,它可以正常循环播放,但是,当我关闭浏览器窗口或切换选项卡时,它只会继续循环播放,而暂停它的唯一方法是关闭浏览器选项卡. 我尝试使用 JavaScript删除loop='loop'并重播它,这很有效,但是对于大约 1.5 分钟长的音频,它仍然很烦人。但这也不起作用,因为即使浏览器未打开,事件也会触发。onendedended

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

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

4

1 回答 1

3

设法找到解决方案:

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

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 上工作起来就像一个魅力。

于 2013-01-21T12:06:07.930 回答