iphone微信後退不刷新的問題

查看了不少解決ios微信返回不刷新頁面的文章,大部分都是利用H5的新特性history來進行解決的,並且不少人的想法都是用了pushstate和popstate來實現了這個功能,可是用pushstate以後會添加一個history實體,而後在監聽到時間觸發popstate的時候,刷新頁面的時候其實刷新的是剛纔添加的這個實體,這樣會陷入無限循環中,用戶將退不出這個頁面或者直接關閉這個頁面。下面的這種方法很好的解決了這個問題。ios

$(function() {
        pushHistory();
    });
    function pushHistory() {
        window.addEventListener("popstate", function(e) {
     //這裏監聽到了後退事件
            self.location.reload();
        }, false);
        var state = {
            title : "",
            url : "#"
        };
        window.history.replaceState(state, "", "#");
    };

Tips:微信

1.popState事件只有在做用go(-1),back(),forward()等操做時纔會觸發。 iphone

2.重點是self.location.reload();,後退後刷新當前頁面。其它人寫的文章裏缺乏這一塊,弄的我非常鬱悶。 url

3.微信裏在監聽到iphone後退事件後會觸發popState事件,在PopState事件裏執行:self.location.reload();便可刷新後退後的頁面。spa

4.pustate增長了history的長度,在後退的時候會出錯,每每跳不出循環,而replace很好的解決了這個問題。code

相關文章
相關標籤/搜索