摘要:場(chǎng)景頁(yè)面上有一個(gè)按鈕,點(diǎn)擊的時(shí)候執(zhí)行,正常情況后會(huì)向后臺(tái)發(fā)出請(qǐng)求,但在安卓的微信瀏覽器中后,通過(guò)抓包發(fā)現(xiàn),并沒(méi)有發(fā)送請(qǐng)求。假設(shè)原頁(yè)面鏈接是,則等于如下在中,處理如下然而經(jīng)抓包測(cè)試,只有第一次刷新時(shí)有效,再次刷新,安卓微信瀏覽器仍然會(huì)緩存。
場(chǎng)景:
頁(yè)面上有一個(gè)按鈕,點(diǎn)擊的時(shí)候執(zhí)行window.location.reload(),正常情況reload()后會(huì)向后臺(tái)發(fā)出請(qǐng)求,但在安卓的微信瀏覽器中reload后,通過(guò)fiddler抓包發(fā)現(xiàn),并沒(méi)有發(fā)送請(qǐng)求。應(yīng)該是微信緩存的問(wèn)題。
解決方法:最常用的方法,更新時(shí)間戳:window.location.href+隨機(jī)數(shù)。寫(xiě)了一個(gè)小函數(shù),添加或更新鏈接后的時(shí)間戳。這里,第二個(gè)參數(shù)表示時(shí)間戳的key,不傳參時(shí),默認(rèn)變量名為“t”。
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){ //有時(shí)間戳,直接更新 return url.replace(reg,key+timestamp); }else{ //沒(méi)有時(shí)間戳,加上時(shí)間戳 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"); //傳入自定義的變量名
親測(cè),有效。如果有更好的寫(xiě)法,歡迎糾正。
另解還想過(guò)一個(gè)方法,這里是針對(duì)php的情況,就是將location.href指向一個(gè)新的鏈接,在新鏈接中再重定向本頁(yè)面。
假設(shè)原頁(yè)面鏈接是://xxx.xxx.com/xxx/index?fsid=1001039610100510,則location.href等于如下:
var url=location.href; location.+encodeURIComponent(url);
在PHP中,function update()處理如下:
function again(){ $url=$this->input->get("curl"); header("Location: ".$url); }
然而經(jīng)fiddler抓包測(cè)試,只有第一次刷新時(shí)有效,再次刷新,安卓微信瀏覽器仍然會(huì)緩存。 所以,還是更改時(shí)間戳最有效,這也是解決緩存最常用的方法。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30390.html
摘要:場(chǎng)景頁(yè)面上有一個(gè)按鈕,點(diǎn)擊的時(shí)候執(zhí)行,正常情況后會(huì)向后臺(tái)發(fā)出請(qǐng)求,但在安卓的微信瀏覽器中后,通過(guò)抓包發(fā)現(xiàn),并沒(méi)有發(fā)送請(qǐng)求。假設(shè)原頁(yè)面鏈接是,則等于如下在中,處理如下然而經(jīng)抓包測(cè)試,只有第一次刷新時(shí)有效,再次刷新,安卓微信瀏覽器仍然會(huì)緩存。 場(chǎng)景: 頁(yè)面上有一個(gè)按鈕,點(diǎn)擊的時(shí)候執(zhí)行window.location.reload(),正常情況reload()后會(huì)向后臺(tái)發(fā)出請(qǐng)求,但在安卓的微信...
摘要:但在微信頁(yè)面中也會(huì)保存上一頁(yè)面最后執(zhí)行的狀態(tài),不會(huì)重新執(zhí)行。原因微信中調(diào)整到下一頁(yè)面后并未將上一頁(yè)面修改的保持在歷史記錄中,以代碼為例,返回上一頁(yè)并未返回到,而是返回到中。 前言 這篇文章主要講解決思路,不對(duì)各種概念進(jìn)行過(guò)多講解。 問(wèn)題描述 開(kāi)發(fā)微信H5頁(yè)面的時(shí)候,在Ios微信內(nèi)置瀏覽器中點(diǎn)擊返回按鈕返回上一頁(yè)時(shí),上一頁(yè)面不會(huì)被刷新。在瀏覽器緩存機(jī)制中,在返回上一頁(yè)的操作中, html...
摘要:返回上一頁(yè)第一次在手機(jī)端用到返回上一頁(yè)的時(shí)候,只寫(xiě)了這一句。但是只在安卓手機(jī)有效果,兼容蘋(píng)果手機(jī)需要在跳轉(zhuǎn)代碼后加上這句。方法阻止元素發(fā)生默認(rèn)的行為。 1、返回上一頁(yè)第一次在手機(jī)端用到返回上一頁(yè)的時(shí)候,只寫(xiě)了window.history.go(-1);這一句。但是只在安卓手機(jī)有效果,兼容蘋(píng)果手機(jī)需要在跳轉(zhuǎn)代碼后加上return false;這句。跳轉(zhuǎn)后刷新頁(yè)面加上self.locati...
摘要:返回上一頁(yè)第一次在手機(jī)端用到返回上一頁(yè)的時(shí)候,只寫(xiě)了這一句。但是只在安卓手機(jī)有效果,兼容蘋(píng)果手機(jī)需要在跳轉(zhuǎn)代碼后加上這句。方法阻止元素發(fā)生默認(rèn)的行為。 1、返回上一頁(yè)第一次在手機(jī)端用到返回上一頁(yè)的時(shí)候,只寫(xiě)了window.history.go(-1);這一句。但是只在安卓手機(jī)有效果,兼容蘋(píng)果手機(jī)需要在跳轉(zhuǎn)代碼后加上return false;這句。跳轉(zhuǎn)后刷新頁(yè)面加上self.locati...
閱讀 2936·2021-11-16 11:55
閱讀 2702·2021-09-29 09:34
閱讀 3620·2021-09-01 14:21
閱讀 3874·2019-08-29 12:36
閱讀 748·2019-08-26 10:55
閱讀 4123·2019-08-26 10:20
閱讀 1092·2019-08-23 18:19
閱讀 1254·2019-08-23 17:56