ios h5 返回上一页 页面不刷新(ios h5 无法获取缓存)

问题描述

ios内嵌h5页面,从a页面跳转到b页面,b页面设置了缓存,然后走h5的返回,到a页面时,a页面无法获取到缓存

问题原理

其实并不是a页面拿不到缓存,而是因为ios的缓存机制造成。返回本页面时,页面没有重新请求,所以你拿到的缓存实际是你第一次进入本页面时拿到的缓存值,所以自然无法走得通。

解决办法

通过windows页面监听,监听页面隐藏显示,当从另一个页面返回时,刷新当前页面即可。

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';
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容