所以我們可以說,你有這樣的URL:http://yoursite.com/#stackoverflow讓瀏覽器重新加載時用戶將哈希到URL
如果我輸入一個新的哈希到地址欄,它會嘗試在網頁上找到該ID。有沒有辦法(可能用javascript?)檢測瀏覽器活動,然後強制頁面重新加載該URL?
謝謝!
所以我們可以說,你有這樣的URL:http://yoursite.com/#stackoverflow讓瀏覽器重新加載時用戶將哈希到URL
如果我輸入一個新的哈希到地址欄,它會嘗試在網頁上找到該ID。有沒有辦法(可能用javascript?)檢測瀏覽器活動,然後強制頁面重新加載該URL?
謝謝!
您需要綁定到hashchange
事件:
window.onhashchange = function() {
window.location.reload();
};
小心,但:一些舊的瀏覽器不支持此事件(see this),所以您需要爲那些填充工具。
下面是一個例子加上舊的瀏覽器輪詢技術:
if ('onhashchange' in window) {
window.onhashchange = function() {
window.location.reload();
};
} else {
var hash = window.location.hash;
setInterval(function() {
if (window.location.hash !== hash) {
window.location.reload();
}
}, 100);
}
在較新的瀏覽器上,您可以使用hashchange
event。實際上對它的支持是pretty good。在較舊的瀏覽器上,您必須輪詢location.hash
(例如,使用setInterval
或setTimeout
)。
通過輪詢,我該如何防止它不斷地刷新? Ionly希望在URL更改時進行刷新。 – alt 2012-07-07 18:26:40
@JacksonGariety:1.開始輪詢時,將初始散列存儲在變量中。 2.在輪詢功能中,將當前的'location.hash'與您存儲的名稱進行比較。 3.重新加載,如果他們不同。 :-) – 2012-07-07 18:27:51
@JacksonGariety:請參閱上面的鏈接,瞭解有關'hashchange'的瀏覽器支持。 – 2012-07-07 18:29:00
@ 999的答案只是這個更輕量級的版本。感謝壽! – alt 2012-07-07 18:43:59
注意,這不是一個特別好的主意。哈希不會被髮送到服務器,因爲它*不*應該導致獲取不同的資源:) – hobbs 2012-07-07 18:30:11