如何监听浏览器当前页面是否处于活动页面(可见或未缩小)

Posted wheatcatcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何监听浏览器当前页面是否处于活动页面(可见或未缩小)相关的知识,希望对你有一定的参考价值。

背景:主要是考虑到定时器触发浪费接口调用,造成资源浪费

实例;

核心方法:

    getHidden () { // 判断当前页面是否处于活动状态
      let prefixs = [‘webkit‘, ‘moz‘, ‘mos‘, ‘o‘]
      if (‘hidden‘ in document) { return document.hidden }
      for (let i = 0; i < prefixs.length; i++) {
        if (`${prefixs[i]}Hidden` in document) {
          return document[`${prefixs[i]}Hidden`]
        }
      } // not support
      return null
    },

添加与销毁监听:

        document.addEventListener(‘visibilitychange‘, this.pageHiddenHandler, false)

    pageHiddenHandler () { // 触发定时器
      let _this = this
      let isHidden = _this.getHidden()
      if (isHidden) {
        // console.log(‘暂时离开页面‘)
        _this.clearSetInterval()
      } else {
        // console.log(new Date(), ‘立即调用2‘)
        _this.loadData()
        _this.clearSetInterval()
        this.$nextTick(function () {
          _this.setInterval = setInterval(function () {
            // console.log(new Date(), ‘定时调用2‘)
            _this.loadData()
          }, _this.timeInterval)
        })
      }
    }

  beforeDestroy() {// 在合适的时机销毁定时器+监听
    this.clearSetInterval()
    document.removeEventListener(‘visibilitychange‘, this.pageHiddenHandler)
  }

 

以上是关于如何监听浏览器当前页面是否处于活动页面(可见或未缩小)的主要内容,如果未能解决你的问题,请参考以下文章

JS 监听浏览器标签页显示隐藏

如何判断浏览器/选项卡是不是处于活动状态[重复]

vue监听页面宽度高度

学习video相关事件及vue中监听切出页面方法

Vue 页面跳转提示和回退问题

页面重新加载后,如何使用 twitter bootstrap 保持当前选项卡处于活动状态?