場景是這樣子的,頁面在初始化時有一個ajax請求,在頁面上有一個按鈕,點擊的時候執行window.location.reload(),正常情況reload()后頁面依然會向后台發出請求,但在安卓的微信瀏覽器中reoad后請求的一直是第一次打開頁面時請求的數據。可以理解為請求被緩存了,但沒有實測,也不知道是否是緩存。
解決方法是,使用window.location.href="window.location.href+隨機數" 代替 window.location.reload()。切記,一定要加隨機數,否則一樣不會起作用。當然也可以用一個a標簽,然后設置href="window.location.href + 隨機數"。
再進一步的話可以只針對微信瀏覽器作此設置,那么就得判斷是否微信瀏覽器。可以通過window.navigator.userAgent進行判斷,結果是,Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.3.16。根據關鍵字 MicroMessenger 來判斷是否是微信內置的瀏覽器。判斷函數如下
function isWeiXin(){ var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == 'micromessenger'){ return true; }else{ return false; } }