移动端IOS返回上一个页面不刷新的问题

场景:在OAS中,有A,B两个页面,A页面点击 ‘去签名’,进入到  B页面(签名页面),在B页面修改了签名状态(此时为已签名);返回到A页面时,还是展示 ‘去签名’,并且不调用接口。

原因:ios 是两个webview,进入到下一个页面时,会保留之前的页面快照(相当于页面进行了缓存);在安卓系统中,共用一个webview,因此会进行替换,从而返回的时候会进行刷新。

解决办法:

  1. 跳转签名时时 history replace,让它回不去   
  2. 增加 onpageshow,onpagehide 事件刷新页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * ios 解决页面返回不刷新问题
 */
export function refreshPageByBack() {
  if (getPlatform() === "iOS") {
    let isPageHide = false;
    console.log("------> page <--------");
    window.addEventListener("pageshow", function () {
      if (isPageHide) {
        console.log("------> pageshow <------");
        window.location.reload();
      }
    });
    window.addEventListener("pagehide", function () {
      console.log("------> pagehide <------");
      isPageHide = true;
    });
  }
}
 
/**
 * 获取当前平台:android还是iOS
 */
function getPlatform() {
  let u = navigator.userAgent;
  let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //判断是否是 android终端
  let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //判断是否是 iOS终端
  if (isAndroid) {
    return "android";
  } else if (isIOS) {
    return "iOS";
  } else {
    return "PC";
  }
}

  

posted @   木杉呀  阅读(1149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示