IOS微信浏览器返回事件popstate监听 会立即执行一次

页面跳转从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事件,就可以返回到你想要的页面。

你可能感兴趣的:(IOS微信浏览器返回事件popstate监听 会立即执行一次)