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

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

作者: 杨wen慧 | 来源:发表于2019-02-21 16:14 被阅读0次

    页面跳转从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监听 会立即执行一次

          本文链接:https://www.haomeiwen.com/subject/rffdyqtx.html