Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5音频:即使离开网站,音乐也不会停止_Javascript_Iphone_Ipad_Html_Html5 Audio - Fatal编程技术网

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

Javascript HTML5音频:即使离开网站,音乐也不会停止,javascript,iphone,ipad,html,html5-audio,Javascript,Iphone,Ipad,Html,Html5 Audio,我正在用HTML5制作一个手机游戏。有一个背景音乐,在游戏过程中运行,最好在我导航到另一个页面时停止。。。这种逻辑在较旧的iphone和android上运行正常。 然而,在iPhone4和iPad上,音乐不会停止并继续播放(即使我导航到另一个网站),直到浏览器关闭。 当然,代码中还有一个调用music_var.pause()函数以及卸载处理程序。。。但这似乎根本不起作用。 music_var.pause() 对这里发生的事情有什么想法吗?与audio标记有各种各样的差异,一些浏览器甚至在被告知时

我正在用HTML5制作一个手机游戏。有一个背景音乐,在游戏过程中运行,最好在我导航到另一个页面时停止。。。这种逻辑在较旧的iphone和android上运行正常。 然而,在iPhone4和iPad上,音乐不会停止并继续播放(即使我导航到另一个网站),直到浏览器关闭。 当然,代码中还有一个调用music_var.pause()函数以及卸载处理程序。。。但这似乎根本不起作用。 music_var.pause()
对这里发生的事情有什么想法吗?

audio
标记有各种各样的差异,一些浏览器甚至在被告知时不会暂停(再加上没有正确发出回调、预加载甚至工作)


为了避免此问题,您可以在暂停之前将
音量
参数设置为
0

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

设法找到了解决方案,如

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

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上工作得很有魅力。

零代表什么?我是说数组??你是说如果我有音乐_var.src=something.mp3。。。那么我应该有音乐\u var[0]。暂停()。。。对吧?好吧。。。问题是我没有在标签中初始化这个。。。但是在javascript中。但我认为它也应该在那里起作用。。。将尝试并发回邮件。谢谢@AlienWebguy,你在胡说八道。闭嘴。