0
如果我有以下代碼:添加在頁面加載一個hashchange不添加歷史事件
var hash = window.location.hash;
if(hash == '' || hash == '/#' || hash == '#') {
// Add trailing slash
hash = '#/home/';
// Update the hash
window.location.hash = hash;
}
我稱之爲在頁面加載,如果不出現亂碼那麼這將哈希更改爲/#/home/
但是,這不會創建一個歷史記錄條目,如果你通過瀏覽器按鈕返回,那麼你將在訪問該網站(如果有的話)之前轉到頁面,而不是在hashchange之前的根目錄。
這是一件好事!因爲我不想在hash-hash頁面輸入內容,但我不明白爲什麼會出現這種情況。任何人都可以解釋嗎?
更新 - 如果我這樣做
if(hash == '' || hash == '/#' || hash == '#') {
setTimeout(function(){
// Add trailing slash
hash = '#/home/';
// Update the hash
window.location.hash = hash;
}, 2000);
}
它將創造的歷史記錄條目...爲什麼???
閱讀[歷史API](http://devdocs.io/dom/history#Methods)和[操縱瀏覽器歷史記錄]的pushState(https://developer.mozilla.org/en-US/docs/ Web/Guide/API/DOM/Manipulating_the_browser_history) – hitautodestruct