2012-07-07 71 views
0

所以我們可以說,你有這樣的URL:http://yoursite.com/#stackoverflow讓瀏覽器重新加載時用戶將哈希到URL

如果我輸入一個新的哈希到地址欄,它會嘗試在網頁上找到該ID。有沒有辦法(可能用javascript?)檢測瀏覽器活動,然後強制頁面重新加載該URL?

謝謝!

+3

注意,這不是一個特別好的主意。哈希不會被髮送到服務器,因爲它*不*應該導致獲取不同的資源:) – hobbs 2012-07-07 18:30:11

回答

1

您需要綁定到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); 
} 
+0

對此的瀏覽器支持是什麼樣的? – alt 2012-07-07 18:27:42

+0

@JacksonGariety http://caniuse.com/hashchange – James 2012-07-07 18:29:23

+0

哇,感謝您編寫代碼!很酷。 – alt 2012-07-07 18:31:16

0

在較新的瀏覽器上,您可以使用hashchange event。實際上對它的支持是pretty good。在較舊的瀏覽器上,您必須輪詢location.hash(例如,使用setIntervalsetTimeout)。

+0

通過輪詢,我該如何防止它不斷地刷新? Ionly希望在URL更改時進行刷新。 – alt 2012-07-07 18:26:40

+0

@JacksonGariety:1.開始輪詢時,將初始散列存儲在變量中。 2.在輪詢功能中,將當前的'location.hash'與您存儲的名稱進行比較。 3.重新加載,如果他們不同。 :-) – 2012-07-07 18:27:51

+0

@JacksonGariety:請參閱上面的鏈接,瞭解有關'hashchange'的瀏覽器支持。 – 2012-07-07 18:29:00

相關問題