任务场景是,企业微信环境下,通过鉴权页面跳转到目标页面,但是目标页面返回总是跳回到鉴权页面,然后又直接跳到目标页面了,导致页面关闭异常。
提供解决方法
方法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事件。
}
})
}