HTML5音频:即使在离开网站后,音乐也不会停止

时间:2012-04-04 22:11:33

标签: javascript iphone ipad html5 html5-audio

我正在使用HTML5制作手机游戏。在游戏过程中有一个背景音乐,一旦我导航到另一个页面,理想情况下应该停止...逻辑在旧的iPhone和Android上正常工作。 但是,在iPhone 4和iPad上,音乐不会停止并继续播放(即使我导航到其他网站),直到浏览器关闭。 当然,代码中有一个调用

music_var.pause()
函数以及卸载处理程序......但这似乎不起作用。 关于这里发生了什么的任何想法?

3 个答案:

答案 0 :(得分:0)

audio标记存在各种差异,有些浏览器在被告知时甚至不会pause(将其添加到不正确发布回调,预加载甚至工作)。

要解决此问题,您可以在暂停前将volume参数设置为0

答案 1 :(得分:0)

尝试使用onbeforeunload来停止音乐,因为当iphone上的safari播放音乐时,即使应用程序退出,音乐也会继续在后台播放(有点像音乐可以在后台播放)。如果您双击主页按钮,请按住Safari图标,直到出现减号按钮,然后点击减号,音乐应该停止。这是因为较旧的iphone可能没有运行iOS4或更高版本(具有多任务处理功能,即使在未运行的情况下也可以在后台播放safari的音乐)。

答案 2 :(得分:0)

管理以找到解决方案,I've posted here

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

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

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

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