页面跳转从a->b->b1->c,然后从c返回到b再到a。(监听popstate)
IOS版的微信,是会立即触法popstate事件,导致直接从C页面跳转到A页面
解决办法:::
var bool = false;
window.addEventListener('pageshow',function(){
bool = false;
setTimeout(function(){
bool = true;
},1000)//延迟1秒 防止ios微信返回立即执行popstate事件
pushHistory();
})
window.addEventListener(
"popstate",
function(e) {
if (bool) {
location.href ='页面b的地址';
}
pushHistory();
},
false
);
function pushHistory() {
var state = {
title: "title",
url: window.location.pathname + window.location.search
};
window.history.pushState(state, state.title, state.url);
}
原理:
因为在IOS微信浏览器里,返回上一个页面时,必定会触法popstate事件,就会导致立即执行返回到a页面。通过pageshow事件先延迟1秒的事件,让执行popstate事件时无法返回,等定时器把isRun的值改成true,然后再点击返回按钮,就会再次执行popstate事件,就可以返回到你想要的页面。
网友评论