使用情景:我发现视频网站只有当我们切换到当前的页面时,广告才播放;如果偷偷切换到其他页面了广告就暂停了,必须要重新切换回来广告才会重新播放。
直接上代码:
var a=0;
document.addEventListener("visibilitychange", function() {
++a;
document.title=a;
//document.title=document.hidden; //如果页面隐藏值true ,用户在当前页值为false
//document.title=document.visibilityState; //显示visible 隐藏hide
}, false);
效果:
当我们停留在当前页是不会触发的,只要我们切换到其他页面就会触发:

在当我们切回来时候,也会触发一次,更新状态

兼容性写法:
var hidden, visibilityChange;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") { //火狐
hidden = "mozHidden";
visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") { //ie10
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") { //谷歌
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
// 添加监听器
document.addEventListener(visibilityChange, function() {
console.log("当前页面是否被隐藏:" + document[hidden]);
}, false);
(注意:这个方法有一个bug,如果把页面独立出来不看页面函数也不会触发)
推荐:
用焦点和失去焦点 的方法,监听整个window
var count = 1;
var interval_output = null;
function output_number() {
count++;
document.title=count;
}
// window 失去焦点,停止输出
window.onblur = function() {
clearInterval(interval_output);
};
// window 每次获得焦点
window.onfocus = function() {
// 每 1 秒在页面输出一个数
interval_output = setInterval(function() {
output_number();
}, 1000);
}