問題:瀏覽器js執(zhí)行window.location.reload()徒像,正常情況下reload()后頁面依然會向后臺發(fā)出請求技潘,但在安卓版本的微信瀏覽器中reoad()后并沒有真正的向后臺發(fā)送請求晋控。因為微信默認(rèn)做為緩存來處理了。
解決方案
請求URL后添加隨機數(shù)或時間戳
window.location.href=window.location.href+隨機數(shù)(或時間戳)
方式代替reload()兑巾。代碼如下
function updateUrl(url,key){
var key= (key || 't') +'='; //默認(rèn)是"t"
var reg=new RegExp(key+'\\d+'); //正則:t=1472286066028
var timestamp=+new Date();
if(url.indexOf(key)>-1){ //有時間戳胡本,直接更新
return url.replace(reg,key+timestamp);
}else{ //沒有時間戳,加上時間戳
if(url.indexOf('\?')>-1){
var urlArr=url.split('\?');
if(urlArr[1]){
return urlArr[0]+'?'+key+timestamp+'&'+urlArr[1];
}else{
return urlArr[0]+'?'+key+timestamp;
}
}else{
if(url.indexOf('#')>-1){
return url.split('#')[0]+'?'+key+timestamp+location.hash;
}else{
return url+'?'+key+timestamp;
}
}
}
}
調(diào)用方式
window.location.href=updateUrl(window.location.href); //不傳參多搀,默認(rèn)是“t”
window.location.href=updateUrl(window.location.href,'v');//傳入自定義的變量名
更準(zhǔn)確的歧蕉,可以先判斷瀏覽器是否是微信自帶瀏覽器,然后再對應(yīng)處理康铭,代碼如下
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}