在移動(dòng)web中,經(jīng)常會(huì)使用window.location.href去跳轉(zhuǎn)頁(yè)面,這個(gè)方法在絕大多數(shù)瀏覽器中都不會(huì)
存在問題,但是在安卓手機(jī)的微信自帶瀏覽器中,會(huì)出現(xiàn)一個(gè)奇怪的bug。
原來的代碼:
window.location.reload(location.href);
初步判斷可能是緩存的問題,首先想到的解決辦法就是在要跳轉(zhuǎn)的url后面加個(gè)時(shí)間戳,告知瀏覽器這是一個(gè)新的請(qǐng)求;
window.location.reload(location.href+'?time='+((new Date()).getTime()));
然而并沒有什么卵用,看了下js文檔:
href是location對(duì)象的一個(gè)屬性,reload()則是location對(duì)象的方法
所以對(duì)于href,可以為該屬性設(shè)置新的 URL,使瀏覽器讀取并顯示新的 URL 的內(nèi)容。
對(duì)于reload()則是重新加載當(dāng)前文檔,如果該方法沒有規(guī)定參數(shù),或者參數(shù)是 false,它就會(huì)用 HTTP 頭 If-Modified-Since 來檢測(cè)服務(wù)器上的文檔是否已改變。如果文檔已改變,reload() 會(huì)再次下載該文檔。如果文檔未改變,則該方法將從緩存中裝載文檔。這與用戶單擊瀏覽器的刷新按鈕的效果是完全一樣的。如果把該方法的參數(shù)設(shè)置為 true,那么無(wú)論文檔的最后修改日期是什么,它都會(huì)繞過緩存,從服務(wù)器上重新下載該文檔。這與用戶在單擊瀏覽器的刷新按鈕時(shí)按住 Shift 健的效果是完全一樣。
但對(duì)于安卓手機(jī)微信中的瀏覽器,reload只是從緩存中裝載文檔,所以當(dāng)你使用該方法,是失效的;
解決辦法就是,使用location.href代替reload(),而且在以后的使用中也強(qiáng)烈建議大家使用location.href來進(jìn)行刷新或者跳轉(zhuǎn)
window.location.href = location.href+'?time='+((new Date()).getTime());
如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇