查看了不少解決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