在开发微信公众号时,经常遇到返回拦截的问题,这里我有一个开发中遇到的例子,大家可以参考一下:
//退出微信公众号‘
WeixinCloseWindow = ()=>{
//这个可以关闭安卓系统的手机
document.addEventListener("WeixinJSBridgeReady",()=>{WeixinJSBridge.call("closeWindow")},false);
//这个可以关闭ios系统的手机
WeixinJSBridge.call("closeWindow");
},
//返回阻止功能
WeixinReturnBlock = {
addEvent : (type,fun) =>{
if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL);
window.addEventListener('popstate',type=='2'?fun:WeixinCloseWindow, false);
}
},
removeEvent : (type,fun) =>{
window.removeEventListener('popstate',type=='2'?fun:WeixinCloseWindow, false);
}
}
这是我在Vue项目中使用的方法,我们可以在 mounted的里面添加事件
//方法一
WeixinReturnBlock.addEvent();
//方法二 如果不是想直接退出公众号,可以添加回调函数
WeixinReturnBlock.addEvent('2',this.goBackPageFn);
//返回我的页面,并执行某些操作
goBackPageFn () {
//1.可以在这里写 拦截操作
alert('这里写操作')
//2. 一直停留在当前页
window.history.pushState(null, null, document.URL);
}
记得离开页面时destroyed 销毁
//方法一
WeixinReturnBlock.removeEvent('2',this.goBackPageFn);
//方法二
WeixinReturnBlock.removeEvent()