【iosH5页面调用window.history.go(-1)返回上一页不会刷新/重新加载】

项目场景:在ios中插入H5页面调用window.history.go(-1)返回上一页不会刷新/重新加载

问题描述:在H5页面的实际开发中,相信大家都会碰到这样一个问题,安卓使用window.history.go(-1)返回页面的时候会刷新,但是ios有时会直接调用缓存,不会刷新页面

解决方案:用onpageshow事件监听页面是直接从服务器上载入还是从缓存中读取。


```javascript
function pageShow(){
  // 通过persisted属性判断是否存在 BF Cache

  if (e.persisted && window.location.href.indexOf('/usercenter#/order-list') > -1) {
    window.location.reload();
  }

}
window.onpageshow = pageShow;

原理分析

onpageshow 事件在用户浏览网页时触发。

onpageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, onpageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。

为了查看页面是直接从服务器上载入还是从缓存中读取,你可以使用 PageTransitionEvent 对象的 persisted 属性来判断。 如果页面从浏览器的缓存中读取该属性返回 ture,否则返回 false

以下是几种使用方式:

1。直接在HTMl中使用,注意只能在body上进行事件注册

2.JS中通过元素获取绑定在body上

document.getElementsByTagName(“BODY”)[0].onpageshow = pageShow;

3.在window上注册这个方法

window.addEventListener(“pageshow”, pageShow);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值