判断浏览器页面是否处于可见状态

358 阅读1分钟

是什么

本文探讨的是如何实现判断当前页面是否处于用户可见状态,如tab切换,浏览器最小化导致会当前页面非用户可见。

为什么

可以通过监听网页的可见性,判断网页的部分行为是否可以暂停,用于节省网络资源、逻辑优化等,比如当用户不看网页,下面这些网络行为可以尝试暂停。

  1. 接口的轮询。
  2. 网页动画。
  3. 正在播放的视频或音乐。

实现方式

事件监听 visibilityState

当其选项卡的内容变得可见或被隐藏时,会在文档上触发 visibilitychange (能见度更改) 事件。

document.addEventListener('visibilitychange', function() {
    console.log('visibilityState==>', document.visibilityState)
})

document.visibilityState该属性返回一个字符串,代表当前可见状态,有三个可能值。

  • hidden: 页面彻底不可见
  • visible: 页面至少一部分可见

只要页面可见,document.visibilityState就会返回visible。以下四种情况会返回hidden

  • 浏览器最小化
  • 浏览器器没有最小化,但是当前tab页被切换,非当前显示的tab
  • 浏览器即将要卸载页面(unload)页面
  • 操作系统锁屏

下面我们尝试前两种

5fb2c5f1-cc47-481b-981e-ba35c856a496.gif