微信里iphone后退不刷新问题解决方案,真实有效

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/achenyuan/article/details/77769992

网上有很多这些文章,但我觉得没一篇真正解决这个问题,倒是能给人一个解决方案的思路,对,就是posState事件。
要解决这个问题也不难,使用history的replaceState属性替换当前网页链接(其实作用是在不增加history长度的基础上,仍然使用当前网面链接不能使用popState,因为它的作用是增加了history的长度,后退时会出错,往往跳不出循环)。
完整代码如下:


$(function() {
        pushHistory();
    });
    function pushHistory() {
        window.addEventListener("popstate", function(e) {
//          alert("后退");
            self.location.reload();
        }, false);
        var state = {
            title : "",
            url : "#"
        };
        window.history.replaceState(state, "", "#");
    };

ps:
1.popState事件只有在作用go(-1),back(),forward()等操作时才会触发。
2.重点是self.location.reload();,后退后刷新当前页面。其它人写的文章里缺少这一块,弄的我很是郁闷。
3.微信里在监听到iphone后退事件后会触发popState事件,在PopState事件里执行:self.location.reload();即可刷新后退后的页面。

展开阅读全文