Vue移动端开发IOS浏览器通过history回退时页面不刷新或未正常发起请求,两种处理方法,原理都差不多
移动端微信公众号项目进行UAT测试时遇到一个问题,ios微信浏览器访问项目时回退上一级页面异常,未刷新。
网上看的是由于ios回退是从缓存中读取数据的,由于开发环境不方便测试,找到如下解决方法
经测试是有效的,判读用户设备为ios时强制刷新。
第一种,强制刷新
mounted () {
this.$nextTick(()=>{
//首页跳转返回 IOS不兼容页面自动刷新问题
var u = navigator.userAgent,
app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if(isiOS){
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
}
})
},
第二种,判断用户是通过历史记录返回的然后重新请求
mounted () {
this.$nextTick(()=>{
//首页跳转返回 IOS不兼容页面自动刷新问题
var u = navigator.userAgent,
app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if(isiOS){
window.onpageshow = function(event) {
if (event.persisted) {
在这个地方写请求方法
}
};
}
})
},