問題描述
ios內嵌h5頁面,從a頁面跳轉到b頁面界牡,b頁面設置了緩存簿寂,然后走h5的返回,到a頁面時宿亡,a頁面無法獲取到緩存
問題原理
其實并不是a頁面拿不到緩存常遂,而是因為ios的緩存機制造成。返回本頁面時挽荠,頁面沒有重新請求克胳,所以你拿到的緩存實際是你第一次進入本頁面時拿到的緩存值,所以自然無法走得通坤按。
解決辦法
通過windows頁面監(jiān)聽毯欣,監(jiān)聽頁面隱藏顯示,當從另一個頁面返回時臭脓,刷新當前頁面即可。
var isPageHide;
if (checkDevice() == "iOS") { //checkDevice()是一個判斷設備類型的方法
isPageHide = false;
window.addEventListener('pageshow', function () {
if (isPageHide) {
window.location.reload();
}
});
window.addEventListener('pagehide', function () {
isPageHide = true;
});
}
附帶一個我用的獲取設備類型的方法:checkDevice()吧腹忽,有需要自取来累。
function checkDevice() {
var ua = window.navigator.userAgent.toLowerCase();
var u = navigator.userAgent;
u = u.toLowerCase();
if (u.indexOf('android') != -1) {
// 安卓端
return 'android';
} else if (ua.match(/mingtang_ios/) == "mingtang_ios") {
return 'iOS';
}
return 'other';
}