Saber 酱的抱枕

Fly me to the moon

05/3
2017
学习

使用html5的document.hidden属性查询页面是否可见

document.hidden是HTML5里一个新增的属性,它会返回一个布尔值,用来指示当前页面(标签页)是否可见。

比如说你正在看这个页面,那么document.hidden就会返回true。如果你切换到别的标签页去了,或者最小化了浏览器之类的情况,document.hidden就会返回false。

手动检测document.hidden灵活性很差,我们可以为document添加visibilitychange事件来监听页面可见性的变化。

document.addEventListener("visibilitychange", function (argument) {
	if (document.hidden) {
		alert("看不见看不见");
	}else{
		alert("二狗子你又回来了");
	}
});

当然,上面的代码只是个示例,实际使用中不要照搬。因为当用户切换到其他页面时,这个页面就会弹窗“看不见看不见”。之后点掉弹窗,你就等于又切换回来了,这时候“二狗子你又回来了”百分之百触发←_←

visibilitychange的兼容性目前应该问题不大了,毕竟document.hidden都出现至少5年了,相关事件监听应该早就跟上了。
当然IE8是不要想了,它连document.msHidden都不支持。

三大浏览器的私有属性和方法示例如下(虽然对于不支持的老IE还是没办法):

var visibilityChange;
if (typeof document.hidden !== "undefined") {
	visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
	visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
	visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
	visibilityChange = "webkitvisibilitychange";
}
document.addEventListener(visibilityChange, function() {
	// code...
}, false);

使用html5的document.hidden属性查询页面是否可见