ios h5 返回上一頁(yè) 頁(yè)面不刷新(ios h5 無法獲取緩存)

問題描述

ios內(nèi)嵌h5頁(yè)面,從a頁(yè)面跳轉(zhuǎn)到b頁(yè)面,b頁(yè)面設(shè)置了緩存,然后走h(yuǎn)5的返回,到a頁(yè)面時(shí),a頁(yè)面無法獲取到緩存

問題原理

其實(shí)并不是a頁(yè)面拿不到緩存,而是因?yàn)閕os的緩存機(jī)制造成。返回本頁(yè)面時(shí),頁(yè)面沒有重新請(qǐng)求,所以你拿到的緩存實(shí)際是你第一次進(jìn)入本頁(yè)面時(shí)拿到的緩存值,所以自然無法走得通。

解決辦法

通過windows頁(yè)面監(jiān)聽,監(jiān)聽頁(yè)面隱藏顯示,當(dāng)從另一個(gè)頁(yè)面返回時(shí),刷新當(dāng)前頁(yè)面即可。

var isPageHide;
if (checkDevice() == "iOS") {        //checkDevice()是一個(gè)判斷設(shè)備類型的方法
  isPageHide = false;
  window.addEventListener('pageshow', function () {
    if (isPageHide) {
      window.location.reload();
    }
  });
  window.addEventListener('pagehide', function () {
    isPageHide = true;
  });
}

附帶一個(gè)我用的獲取設(shè)備類型的方法: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';
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容