一、webview中嵌套的是单页面应用:
单页面应用中A跳转到B,B提交了数据之后,返回A页面,A页面不刷新,接口也不重新获取
解决办法:
1、在A页面中 watch中监听 $route 变化,重新拉取数据 (推荐使用!!!)
2、window.on('pageshow', function() { // 重新获取数据 }) ------------ 试过了,这种方法在一些手机上好使,在一些手机上不好使,所以建议使用第一种方式
还可能出现的问题:接口不重新获取(开发的时候有个场景:一个页面的数据是分页的,先拉一组数据,操作完之后,提交再拉取下一页数据,发现下一页数据不拉取,还用的是上一组数据)
给接口加个时间戳,这个开发的时候,没试过,但应该好使
二、webview中嵌套的是多页应用:
多页应用不能监听$route了,所以单页应用第一种方案不试用
1、监测页面隐藏展示
(1)使用window.on('pageshow', function() { // 重新获取数据 }) ------------ 问题可能同单页面应用
(2)
var hidden, visibilityChange; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; } // 添加监听器 document.addEventListener(visibilityChange, function() { console.log("当前页面是否被隐藏:" + document[hidden]); }, false);
2、给页面路径上加上时间戳和接口url上加上时间戳(推荐使用!!!)
最后,如果上述都不好使,记得朋友说过,可以让ios同事加一个手动刷新的 action方法,h5调用(需要看ios开发同事帮不帮忙了😢)
以上是总结的可以尝试的解决办法,实在不行,也没辙了,如果有其他办法的朋友看到,评论可以分享一下