场景:在OAS中,有A,B两个页面,A页面点击 ‘去签名’,进入到 B页面(签名页面),在B页面修改了签名状态(此时为已签名);返回到A页面时,还是展示 ‘去签名’,并且不调用接
场景:在OAS中,有A,B两个页面,A页面点击 ‘去签名’,进入到 B页面(签名页面),在B页面修改了签名状态(此时为已签名);返回到A页面时,还是展示 ‘去签名’,并且不调用接口。
原因:ios 是两个webview,进入到下一个页面时,会保留之前的页面快照(相当于页面进行了缓存);在安卓系统中,共用一个webview,因此会进行替换,从而返回的时候会进行刷新。
解决办法:
- 跳转签名时时 history replace,让它回不去
- 增加 onpageshow,onpagehide 事件刷新页面
/** * 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"; } }