1. 程式人生 > >ios 上瀏覽器返回上一頁不會重新整理頁面問題,頁面初始化的方法不執行

ios 上瀏覽器返回上一頁不會重新整理頁面問題,頁面初始化的方法不執行

https://blog.csdn.net/yang450712123/article/details/79276102

https://blog.csdn.net/Chengbin_Huang/article/details/80271029

https://blog.csdn.net/k491022087/article/details/76576406

ios 上瀏覽器返回上一頁不會重新整理頁面問題,頁面初始化的方法不執行
問題描述
在 ios 上瀏覽器返回上一頁不會重新整理頁面問題,頁面初始化的方法不執行,造成了很多意外情況,這個問題不能忍;

解決方案
方法一:hack方法,加入iframe強制重新整理後,去除
function(title){
var u = navigator.userAgent;
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
document.title= title;//新增標題
if(isIOS){
// hack在IOS微信等webview中無法修改document.title的情況
var $iframe = $('<iframe src="/favicon.ico"></iframe>').on('load', function() {
setTimeout(function() {
$iframe.off('load').remove()
}, 0)
}).appendTo($('body'))
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
方法二:利用 onpageshow 事件觸發:
window.onpageshow=function(e){
if(e.persisted) {
window.location.reload()
}
};
---------------------
作者:FE-阿陽
來源:CSDN
原文:https://blog.csdn.net/yang450712123/article/details/79276102
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

* pageshow只使用於ios10以上。

 

微信公眾號開發時,在IOS系統下點選返回按鈕,發現返回後的頁面是沒有經過重新整理的,雖然這樣是有好處,不用再重新請求頁面資料,但是很多時候我們是需要重新去請求頁面資料的。

首先我們需要監聽手機的系統,然後在監聽返回事件,當用戶點選返回按鈕後,將頁面進行強制重新整理,程式碼如下


var ua = navigator.userAgent;
if (ua.indexOf('iPhone') > -1) {//蘋果手機
window.onload = function () {
setTimeout(() => {
window.addEventListener("popstate", function (e) {
// alert("我監聽到了瀏覽器的返回按鈕事件啦");
self.location = document.referrer;
});
}, 500)
}
}

popstate事件只會在瀏覽器某些行為下觸發, 比如點選後退、前進按鈕(或者在JavaScript中呼叫history.back()、history.forward()、history.go()方法)。當網頁載入時,各瀏覽器對popstate事件是否觸發有不同的表現,Chrome 和 Safari會觸發popstate事件, 而Firefox不會,因此需要加一個定時器進行延遲,這樣就不會因為頁面剛一載入就出發popstate事件。

referrer 屬性可返回載入當前文件的文件的 URL。
---------------------
作者:安靜的對摺
來源:CSDN
原文:https://blog.csdn.net/k491022087/article/details/76576406
版權宣告:本文為博主原創文章,轉載請附上博文連結!