1、当其选项卡的内容变得可见或被隐藏时,会在 document 上触发 visibilitychange 事件。
2、该事件不可取消。
使用情景
让我们来看看页面可见性 API 的几个使用案例。
1、网站有图片轮播效果,只有在用户观看轮播的时候,才会自动展示下一张幻灯片。
2、显示信息仪表盘的应用程序不希望在页面不可见时轮询服务器进行更新。
3、页面想要检测何时正在预渲染,以便可以准确的计算页面浏览量。
4、当设备进入待机模式(用户按下电源键关闭屏幕)时,网站想要关闭设备声音。
1、Document.hidden (只读属性)返回布尔值,表示页面是(true)否(false)隐藏。
document.addEventListener("visibilitychange", function () {
console.log(document.hidden);
// Modify behavior...
});
2、Document.visibilityState (只读属性), 返回document的可见性,即当前可见元素的上下文环境。由此可以知道当前文档 (即为页面) 是在背后,或是不可见的隐藏的标签页,或者 (正在) 预渲染。可用的值如下:
‘visible’ : 此时页面内容至少是部分可见。即此页面在前景标签页中,并且窗口没有最小化。
‘hidden’ : 此时页面对用户不可见。即文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 ‘锁屏状态’ .
‘prerender’ : 页面此时正在渲染中,因此是不可见的 (considered hidden for purposes of document.hidden). 文档只能从此状态开始,永远不能从其他值变为此状态。注意:浏览器支持是可选的。
当此属性的值改变时,会递交 visibilitychange 事件给Document.
典型用法是防止当页面正在渲染时加载资源,或者当页面在背景中或窗口最小化时禁止某些活动。
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
//在页面可见时的操作
try {
} catch (e) {
debug.log(e);
}
}else {
//在页面不可见时的操作
}
});