【微信公众号】H5 vue 监听页面刷新

应项目需求 在刷新页面时重新登录到首页

则利用了路由守卫beforeEach 进行监听 刷新页面动作

首先监听是否授权过 只在授权过后的刷新 进入逻辑处理 不然会在授权的时候跳转回调页会出现问题

监听刷新方法 Android 和ios 方式不一样这一点是大部分人出现的问题

因为ios 有自己的方法 所以在处理逻辑的时候 先通过自带方法 navigator.userAgent.toLowerCase() 获取判断当前手机的类型

1.android的刷新则很简单 就是直接使用js的监听刷新方法 window.onbeforeunload  注意return (true,false,' ')三种 或者 return 处理函数 这边我是直接把处理的 放在方法内 如果刷新的时候要用户点击确认才能刷新 return true或者提示的文字 

2.ios 用户离开网页时触发 pagehide 设定pagehide window.addEventListener("pagehide", myUnloadHandler,false)

myUnloadHandler为相对应要处理的函数 

router.beforeEach(async function (to, from, next) {
  console.log([to, 54])
  console.log([from, 55])
  var ua = navigator.userAgent.toLowerCase()
  if (store.getters.code) {
    // H5页面刷新时触发
    let isAndroid = ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1
    console.log([isAndroid, 'isAndroid'])
    if (!isAndroid) {
      window.addEventListener("pagehide", myUnloadHandler, false)
      function myUnloadHandler () {
        store.commit('code', '')
        store.commit('doctorInfo', '')
        store.commit('userInfo', '')
        store.commit('userData', '')
        store.commit('roleType', '')
        store.commit('unload', to.path)
      }
    } else {
      window.onbeforeunload = function (e) {
        e = e || window.event;
        store.commit('code', '')
        store.commit('doctorInfo', '')
        store.commit('userInfo', '')
        store.commit('userData', '')
        store.commit('roleType', '')
        store.commit('unload', to.path)
        return ''
      }
    }
  }
  next()
})

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值