我正在使用HTML5制作手机游戏。在游戏过程中有一个背景音乐,一旦我导航到另一个页面,理想情况下应该停止...逻辑在旧的iPhone和Android上正常工作。 但是,在iPhone 4和iPad上,音乐不会停止并继续播放(即使我导航到其他网站),直到浏览器关闭。 当然,代码中有一个调用
music_var.pause()函数以及卸载处理程序......但这似乎不起作用。 关于这里发生了什么的任何想法?
答案 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上工作就像一个魅力。