首页 > 技术文章 > 浏览器后退不刷新页面的解决办法

onesmail 2018-01-12 12:21 原文

在开发微信的H5页面的时候,发现ISO的微信内置浏览器后退不刷新了,然而业务实现需要刷新。

IOS上的微信内置浏览器为了优化用户体验,采用了后退不刷新的策略,也就是A页面打开B页面,B页面后退到A页面的时候,A页面不刷新(连JS都不执行)。

可以理解成A页面打开B页面的时候,A页面被隐藏了,后退的时候只是把A页面显示出来了。

这种情况禁缓存是没有效果的,可以通过监听onpageshow来刷新页面。

代码如下,在A页面的JS中添加

//解决IOS微信webview后退不执行JS的问题
window.onpageshow = function(event) {
  if (event.persisted) {
    window.location.reload();
  }
};

event.persisted为了查看页面是直接从服务器上载入还是从缓存中读取的。 

参考onpageshow用法

stackoverflow

推荐阅读