判断H5是否成功打开APP替代方案

触发跳转事件时触发此方法,指定时间内页面没有隐藏,则判定为没有跳转成功

function checkOpen(timeout = 2300) {
  function getSupportedProperty() {
    let hidden
    let visibilityChange

    if (typeof document.hidden !== 'undefined') {
      hidden = 'hidden'
      visibilityChange = 'visibilitychange'
    } else if (typeof document.msHidden !== 'undefined') {
      hidden = 'msHidden'
      visibilityChange = 'msvisibilitychange'
    } else if (typeof document.webkitHidden !== 'undefined') {
      hidden = 'webkitHidden'
      visibilityChange = 'webkitvisibilitychange'
    }
    return {
      hidden,
      visibilityChange,
    }
  }
  function isPageHidden() {
    const ob = getSupportedProperty()
    const hidden = ob?.hidden
    if (typeof hidden === 'undefined') return false
    return document[hidden]
  }
  return new Promise((resolve, reject) => {
    const ob = getSupportedProperty()
    
    const visibilityChange = ob?.visibilityChange
    document.addEventListener(visibilityChange, function () {
      if(document.visibilityState == "hidden"){
        resolve()
      }
    });
    
    const check = () => {
      const pageHidden = isPageHidden()
      if (pageHidden) {
        resolve() // 页面被隐藏,说明唤醒成功
      } else {
        reject(new Error('唤醒超时'))
      }
    }
    const timer = setTimeout(() => {
      check()
    }, timeout)

  })
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容