Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 当进程处于后台时,我如何在Android Chrome中禁用音频播放?_Javascript_Android_Google Chrome - Fatal编程技术网

Javascript 当进程处于后台时,我如何在Android Chrome中禁用音频播放?

Javascript 当进程处于后台时,我如何在Android Chrome中禁用音频播放?,javascript,android,google-chrome,Javascript,Android,Google Chrome,如何以编程方式禁止在Chrome Android进程的后台播放歌曲 下面是一个用Chrome播放歌曲的页面的简单示例: 请注意歌曲将如何在背景中继续播放。虽然对于自动点唱机来说不错,但它会让网络游戏玩家发疯 有没有办法禁用Chrome中单个音频元素的背景播放?或者,当页面失去焦点时是否至少有一个回调,以便我可以运行song.stop()?您可以尝试使用visibilitychange: document.addEventListener('visibilitychange', function

如何以编程方式禁止在Chrome Android进程的后台播放歌曲

下面是一个用Chrome播放歌曲的页面的简单示例:

请注意歌曲将如何在背景中继续播放。虽然对于自动点唱机来说不错,但它会让网络游戏玩家发疯


有没有办法禁用Chrome中单个
音频
元素的背景播放?或者,当页面失去焦点时是否至少有一个回调,以便我可以运行
song.stop()

您可以尝试使用
visibilitychange

document.addEventListener('visibilitychange', function(){
    if (document.hidden) {
        // Document is hidden 

        // This re-initialize the audio element
        // to release the audio focus
        song.load(); 
    }
    else {
        // Document is focused
    }
},false);
这里提供了完整的示例


在Android 5.0和Chrome 43.0.2357.78上测试,使用HTML5可见性API


var song=新音频文件http://zyu.me:1337/audio/Evasion.ogg');
song.loop='loop';
button=document.getElementById('play');
addEventListener(“单击”,函数(){
歌曲。游戏();
});
var vis=(函数(){
var stateKey,
eventKey,
钥匙={
隐藏:“可视性更改”,
webkitHidden:“webkitvisibilitychange”,
mozHidden:“mozvisibilitychange”,
msHidden:“msvisibilitychange”
};
for(状态键输入键){
if(文档中的stateKey){
eventKey=keys[stateKey];
打破
}
}
返回函数(c){
如果(c)文件。添加事件列表器(事件键,c);
return!文档[stateKey];
}
})();
vis(函数(){
if(vis()){
console.log(“选项卡可见”);
歌曲。游戏();
}否则{
console.log(“选项卡不可见”);
歌曲。暂停();
}
});

您说模糊事件不会触发。
document.hasFocus()
是否发生变化?有关此用例和其他特定用例的更多信息,请参阅“像符咒一样工作!”!另外,令人惊讶的是,我能够在else子句中执行song.play()。显然,
visibilitychange
事件在Android Chrome中属于人类交互。
document.addEventListener('visibilitychange', function(){
    if (document.hidden) {
        // Document is hidden 

        // This re-initialize the audio element
        // to release the audio focus
        song.load(); 
    }
    else {
        // Document is focused
    }
},false);