摘要:所以再做頁(yè)面跳轉(zhuǎn)的時(shí)候如果不想留下記錄,還是用比較保險(xiǎn),如果想留下記錄,應(yīng)該幾百毫秒再跳轉(zhuǎn)。解決辦法先用給瀏覽器添加一條記錄,然后用的方法替換掉添加的記錄,這樣記錄里存的就是和解決方案
空 | location.href = url | location.reload() | location.replace(url) |
---|---|---|---|
url完全不變的情況下 | 刷新Docment,不會(huì)產(chǎn)生記錄 | 刷新Docment,不會(huì)產(chǎn)生記錄 | 刷新Docment,不會(huì)產(chǎn)生記錄 |
只改變hash | 不會(huì)刷新Docment,會(huì)在瀏覽器產(chǎn)生記錄,但是如果連續(xù)改變hash,也會(huì)丟失記錄 是 | 空 | 不刷新Docment 也不產(chǎn)生記錄 |
改變url,只hash不算,hash從有到無算 | 刷新Document,會(huì)產(chǎn)生記錄,但是如果頁(yè)面加載時(shí)執(zhí)行不會(huì)產(chǎn)生記錄,setTimeout里面執(zhí)行就會(huì)有記錄 | 空 | 刷新Document,不會(huì)產(chǎn)生記錄 |
在頁(yè)面加載的時(shí)候直接location.href 到其他的頁(yè)面,會(huì)在瀏覽器里不留下當(dāng)前頁(yè)面的記錄,
試驗(yàn)用 setTimeout 0秒后再location.href 到其他的頁(yè)面則會(huì)留下記錄。
所以再做頁(yè)面跳轉(zhuǎn)的時(shí)候如果不想留下記錄,還是用replace比較保險(xiǎn),如果想留下記錄,應(yīng)該setTimeout幾百毫秒再跳轉(zhuǎn)。
通過瀏覽器的前進(jìn)和后退到頁(yè)面,頁(yè)面的Document會(huì)從緩存中取,js重新執(zhí)行。所以如果頁(yè)面的數(shù)據(jù)是從模板中下發(fā)的,
會(huì)導(dǎo)致回退回來的時(shí)候頁(yè)面的模板數(shù)據(jù)不會(huì)刷新。
解決方案
var url = window.location.href; var ps = url.split("#"); try{ if(ps[1] != 1){ url += "#1"; }else{ //當(dāng)訪問頁(yè)面的時(shí)候是有hash =1 證明是從別的url中過來的,所以replace成沒有hash的url(這里就會(huì)刷新Document) window.location.replace(ps[0]); return; } }catch(ex){ url += "#1"; } //頁(yè)面第一次進(jìn)來的時(shí)候,沒有hash = 1,用replace加上hash,這樣在跳轉(zhuǎn)到其他頁(yè)面再返回來的時(shí)候是帶著hash window.location.replace(url);問題3:
頁(yè)面中當(dāng)連續(xù)改變hash的時(shí)候,也會(huì)導(dǎo)致瀏覽器的歷史記錄會(huì)有丟失,所以快速切換hash也有問題。
但是有的需求是當(dāng)進(jìn)入頁(yè)面的時(shí)候需要立刻變成hash2,然后可以點(diǎn)擊返回到hash1,
如果從頁(yè)面中直接從hash1變成hash2會(huì)發(fā)現(xiàn)hash1的記錄消失。
解決辦法 先用history.pushState 給瀏覽器添加一條記錄,然后用replace (hash2)的方法替換掉添加的記錄,這樣記錄里存的就是hash1和hash2
解決方案
history.pushState({},document.title, "#/order") this.$router.replace({ name: "Edit" })
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85165.html
摘要:模塊更新時(shí)部分不需被替換的模塊,檢測(cè)到或參數(shù)變化增加移除或修改參數(shù)時(shí)觸發(fā),如所有頁(yè)面的部分總是不變,此時(shí)它將不會(huì)被替換。模塊函數(shù)將在模板指令與狀態(tài)數(shù)據(jù)中講解繼續(xù)學(xué)習(xí)下一節(jié)教程模板指令與狀態(tài)數(shù)據(jù)也可回顧上一節(jié)教程啟動(dòng)路由 正如它的名字,模塊用于amaplejs單頁(yè)應(yīng)用的頁(yè)面分割,所有的跳轉(zhuǎn)更新和代碼編寫都是以模塊為單位的。 定義一個(gè)模塊 一個(gè)模塊由標(biāo)簽對(duì)包含,內(nèi)部分為template模板...
摘要:模塊更新時(shí)部分不需被替換的模塊,檢測(cè)到或參數(shù)變化增加移除或修改參數(shù)時(shí)觸發(fā),如所有頁(yè)面的部分總是不變,此時(shí)它將不會(huì)被替換。模塊函數(shù)將在模板指令與狀態(tài)數(shù)據(jù)中講解繼續(xù)學(xué)習(xí)下一節(jié)教程模板指令與狀態(tài)數(shù)據(jù)也可回顧上一節(jié)教程啟動(dòng)路由 正如它的名字,模塊用于amaplejs單頁(yè)應(yīng)用的頁(yè)面分割,所有的跳轉(zhuǎn)更新和代碼編寫都是以模塊為單位的。 定義一個(gè)模塊 一個(gè)模塊由標(biāo)簽對(duì)包含,內(nèi)部分為template模板...
摘要:模塊更新時(shí)部分不需被替換的模塊,檢測(cè)到或參數(shù)變化增加移除或修改參數(shù)時(shí)觸發(fā),如所有頁(yè)面的部分總是不變,此時(shí)它將不會(huì)被替換。模塊函數(shù)將在模板指令與狀態(tài)數(shù)據(jù)中講解繼續(xù)學(xué)習(xí)下一節(jié)教程模板指令與狀態(tài)數(shù)據(jù)也可回顧上一節(jié)教程啟動(dòng)路由 正如它的名字,模塊用于amaplejs單頁(yè)應(yīng)用的頁(yè)面分割,所有的跳轉(zhuǎn)更新和代碼編寫都是以模塊為單位的。 定義一個(gè)模塊 一個(gè)模塊由標(biāo)簽對(duì)包含,內(nèi)部分為template模板...
摘要:原理架構(gòu)作為與之間相互通信的橋梁部分在環(huán)境中注入的實(shí)現(xiàn)代碼,包含了協(xié)議的拼裝發(fā)送參數(shù)池回調(diào)池等一些基礎(chǔ)功能。部分在客戶端中的功能映射代碼,實(shí)現(xiàn)了攔截與解析環(huán)境信息的注入通用功能映射等功能。 原理架構(gòu) JSBridge 作為native 與 JS 之間相互通信的橋梁JS部分(bridge): 在JS環(huán)境中注入 bridge 的實(shí)現(xiàn)代碼,包含了協(xié)議的拼裝/發(fā)送/參數(shù)池/回調(diào)池等一些基礎(chǔ)功能...
閱讀 1446·2021-11-24 09:39
閱讀 3626·2021-09-29 09:47
閱讀 1571·2021-09-29 09:34
閱讀 3067·2021-09-10 10:51
閱讀 2536·2019-08-30 15:54
閱讀 3216·2019-08-30 15:54
閱讀 869·2019-08-30 11:07
閱讀 1004·2019-08-29 18:36