解决ios  history.back()返回不刷新

需求 

当由A页面跳转到B页面, 将B页面的字段保存至localstorage中。返回A页面时,需要将B页面的某些字段从localstorage取出进行渲染。

B页面返回A页面时,我用的是history.back(),由于ios和安卓机制不同,安卓会重新刷新主页面的ready, ios则不会。

解决方法

①window.location.href=“pageA.html”

这是我们最容易想到的解决办法,但是存在问题。

pageA.html-->pageB.html-->pageC.html-->pageD.html,几个页面依次跳转,当在D页面使用window.location.href=“pageC.html”成功返回C页面时,对于C页面来说B不再是它的上一级页面了,上一级页面变成了D,此时在C页面使用history.back()就会跳转到D页面。

② onpageshow、onpagehide事件

经过实践,只需要将事件监听放置返回的页面(A页面)即可解决问题。

var isPageHide = false;
window.addEventListener('pageshow', function () {
    console.log('pageshow')
    if (isPageHide) {
        window.location.reload();
    }
});
window.addEventListener('pagehide', function () {
    console.log('pagehide')
    isPageHide = true;
}); 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值