移动端IOS返回上一个页面不刷新的问题
场景:在OAS中,有A,B两个页面,A页面点击 ‘去签名’,进入到 B页面(签名页面),在B页面修改了签名状态(此时为已签名);返回到A页面时,还是展示 ‘去签名’,并且不调用接口。
原因:ios 是两个webview,进入到下一个页面时,会保留之前的页面快照(相当于页面进行了缓存);在安卓系统中,共用一个webview,因此会进行替换,从而返回的时候会进行刷新。
解决办法:
- 跳转签名时时 history replace,让它回不去
-
增加 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" ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?