解决苹果手机返回不刷新问题
问题描述:
js返回上一页的实现 : 1) history.go(-1);
2) history.back();
3) history.back(-1);
第一种方法在苹果手机上返回上一页并不刷新,导致在上一个页面中的状态未更新,第二三中方法没实验,估计也会有这个问题,在安卓手机上功能正常。
解决办法:
比如现在有 a.html 和 b.html ,从 a.html 跳到 b.html 进行操作,b.html 中的操作更改状态传到后端保存,返回到a.html时重新请求下数据就可以将对应的状态更新过来。
1、在 a.html 中的ajax请求url中添加随机数
这个方法在微信端ios 系统9之前的版本可以,但是在app中无效。
2、spa(单页路由)
这个方法可以完美解决该问题。
3、window.location.href = './a.html'
该方法能解决这个问题,但是会带来一个新问题:返回进入死循环
4、监听 pageshow 和 pagehide 方法
感觉这个是最好的办法了,对页面的改动不太大,只需在js中添加如下代码即可
$(function () {
var isPageHide = false;
window.addEventListener('pageshow', function () {
if (isPageHide) {
window.location.reload();
}
});
window.addEventListener('pagehide', function () {
isPageHide = true;
});
});