嗶嗶one
2018-10-12 10:11:35
a頁面初始化的時候 location.href = ‘b頁面’這種情況下瀏覽器是沒有a這條歷史記錄的如果 在a頁面 延遲調用location.href = ‘b頁面’ 就有a的歷史記錄
1 回答

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
正常情況下,location.href
會生成一條新的歷史記錄,location.replace
會替換當前歷史記錄。但 location.href
并不必然導致一條新的歷史記錄的產生,在當前頁面的 onload
事件發起之前,location.href
也是替換當前歷史記錄,瀏覽器的實現可以參見 NavigationScheduler::MustReplaceCurrentItem。
如果你希望確保 location.href
生成一條新的歷史記錄,建議監聽 onload
事件并起定時器執行 location.href
,應該與你當前實現的做法類似。想要更早跳轉的話就只能按照 @orangexc 的做法,先 pushState
再跳轉,跳轉建議用 location.replace
。
我不太清楚你這樣做的需求是什么,如果 a 頁面只是作為跳轉頁的話,不應該保存歷史記錄才對,而且過早跳轉又保存 a 的歷史記錄的話,a 頁面其實是不完整的,在有前進后退緩存的瀏覽器上會造成后退 a 頁面白屏等問題,在無前進后退緩存的瀏覽器上會陷入 b 頁面后退 a 頁面又調回 b 頁面的死循環,必須連續快速后退 2 次才能退出。
添加回答
舉報
0/150
提交
取消