任务场景是,企业微信环境下,通过鉴权页面跳转到目标页面,但是目标页面返回总是跳回到鉴权页面,然后又直接跳到目标页面了,导致页面关闭异常。

提供解决方法

方法1:监听页面返回事件popstate,再手动关闭页面。

前端用的环境是vue。

// 挂载时
mounted () {
  history.pushState(null, null, document.URL)
  window.addEventListener('popstate', this.backChange, false)
},
// 销毁前
beforeUnmount () {
  window.removeEventListener('popstate', this.backChange, false)
},
methods: {
  // 调用方法
  backChange (e) {
    // 页面返回前做一些操作
    window.wx && window.wx.closeWindow && window.wx.closeWindow() // 企业微信环境下,页面关闭,注:wx对象需要引入企业微信的js文件  // ios、安卓都可

    // window.close && window.close() // ios可以,安卓失效
  }
}

方法1对于少数机型未生效,提供方法2可尝试成功。

方法2:企业微信提供的监听返回事件,处理关闭页面。

if (window.location.pathname === '/aaa/bbb/') {
  window.wx.onHistoryBack(function () {
    console.log('鉴权后的返回事件触发了')
    if (window.location.hash.startsWith('#/detail')) {
        window.wx.closeWindow();
      return false; // 对返回页面拦截,false不再返回,true返回页面 // 若是和popstate事件都写了,将会先执行onHistoryBack,若是return false,然后会再执行popstate事件。
    }
  })
}
posted on 2023-05-30 11:14  ╰透在骨子里的小傲娇  阅读(316)  评论(0)    收藏  举报