使用history.go(-1)回退页面,结果数据不重新加载,处理过的数据还留在页面上,容易出现二次处理报错的问题。
安卓是没有问题的。
使用此方法可以解决加载问题。不限于ios或者android.只要页面显示就可以使用此方法。
```
window
.addEventListener('pageshow',function(e){
// 通过persisted属性判断是否存在 BF Cache
if(e.persisted) {
location.reload();
}
````
原理:pageShow事件在页面显示即会触发,无论页面是否来自BF Cache。通过检测persisted属性即可判断是否存在 BF Cache 行为。
优点:大部分浏览器都支持pageShow方法与persisted属性,并且需要的代码量只需要短短4行即可。
缺点:每种浏览器中BF Cache的机制是不同的,部分浏览器中的Bf Cache还是会重新执行js代码,会造成重复渲染效果。当然现在我们只考虑Ios中的微信页面, 所以是不存在问题。
网友评论