是什么
本文探讨的是如何实现判断当前页面是否处于用户可见状态,如tab切换,浏览器最小化导致会当前页面非用户可见。
为什么
可以通过监听网页的可见性,判断网页的部分行为是否可以暂停,用于节省网络资源、逻辑优化等,比如当用户不看网页,下面这些网络行为可以尝试暂停。
- 接口的轮询。
- 网页动画。
- 正在播放的视频或音乐。
实现方式
事件监听 visibilityState
当其选项卡的内容变得可见或被隐藏时,会在文档上触发 visibilitychange (能见度更改) 事件。
document.addEventListener('visibilitychange', function() {
console.log('visibilityState==>', document.visibilityState)
})
document.visibilityState该属性返回一个字符串,代表当前可见状态,有三个可能值。
- hidden: 页面彻底不可见
- visible: 页面至少一部分可见
只要页面可见,document.visibilityState就会返回visible。以下四种情况会返回hidden
- 浏览器最小化
- 浏览器器没有最小化,但是当前tab页被切换,非当前显示的tab
- 浏览器即将要卸载页面(unload)页面
- 操作系统锁屏
下面我们尝试前两种