美文网首页
关于Chrome 后台挂起处于不可见状态时,无法跳转页面的问题

关于Chrome 后台挂起处于不可见状态时,无法跳转页面的问题

作者: 刘圣凯 | 来源:发表于2023-03-23 15:18 被阅读0次

bug描述:

需求大概是收到 websocket 通知后自动给用户跳转到下个页面, 然后就遇到一个bug: 如果此时浏览器是处于后台挂起的状态(比如不在当前选项卡,或者在浏览其他的浏览器,亦或者电脑处于休眠状态),那么跳转新的url这个事件就会被浏览器给阻止,并且会在控制台留下一句 log Navigated to <url>... 如下

image.png

解决思路:

知道触发的条件后,就有了大概的解决思路:websocket 收到跳转通知后通过 document.hidden 判断当前页面是否处于可见,如果是 false 就正常走跳转的逻辑, 如果是 true , 那么就先订阅本次的跳转事件, 等到页面可见时再去执行跳转, 此时对用户而言, 效果是一样的。

代码

因为大家的项目不同,使用场景也不一致, 以下是根据实现解决思路的代码,希望对遇到相同问题的各位有帮助

   // 给window添加监听
   window.addEventListener('visibilitychange', handleToggleVisible)
   // 跳转代码逻辑如下
   var url = ''
   if (document.hidden) {
     // 订阅, 如果是多个函数需要处理,那么这里可以存一个函数数组
     url = 'www.xxx.com'
   } else {
     location.href = 'www.xxx.com'
   }

   funtion handleToggleVisible () {
     if (document.visibilityState === 'hidden') {
        // out tab, do something...
      } else {
        if (url ) {
          // 发布, 如果订阅是多个函数,此时可以循环执行
          window.location.href = url 
        }
      }
   }

相关文章

  • iOS 关于下载的一些记录

    国庆这几天,同学问了一个问题。app 进入后台就处于挂起休眠状态,为什么各大视频app都在在后台缓存(锁屏状态下也...

  • Chrome 无法直接浏览 Axure页面

    问题 使用 Chrome 打开 Axure 生成文件无法直接浏览,跳转至提示页面提示安装Chrome Extens...

  • element-ui @current-change有时失效

    今天在做后台的时候,有个页面的分页器出了问题,就是当页面跳转到某一页(例如25页),点击查询按钮,列表数据刷新后,...

  • 如何解决Chrome打开网页显示“喔唷 崩溃啦”?

    #现象 Chrome 打开任何网页都显示 “喔唷 崩溃啦”。 #尝试 关于页无法进入,没法升级浏览器;设置页无法进...

  • 后台延迟线程挂起

    问题:一般APP在切入后台5s后,线程挂起进入休眠状态。为了使APP进入后台后继续执行任务,则需要延迟后台休眠状态...

  • iOS后台任务的分类及实现

    前言 当用户将运行App切换到后台时,系统会更改其运行状态。对大多数的应用后台状态就是切换为挂起状态(suspen...

  • 获取app当前展示的ViewController

    场景需求:1:app在后台挂起状态下收到个远程推送,要进行页面跳转。2:类似微信,来个视频电话,在收到来电监听后要...

  • chrome 多个ajax请求pending状态

    问题 当有许多个ajax请求时,会发现排序靠后的请求会处于pending状态,或者chrome左下角显示“正在等待...

  • 小程序学习笔记

    1.跳转页面的方式 跳转目标页关闭当前页 - wx.redirectTo(OBJECT) 跳转目标页保留当前页 -...

  • TIDB-cluster-pd处于Pending

    keywords tidb-cluster-pd处于Pending/PD Server 处于挂起状态 backgr...

网友评论

      本文标题:关于Chrome 后台挂起处于不可见状态时,无法跳转页面的问题

      本文链接:https://www.haomeiwen.com/subject/fauirdtx.html