2011-10-14 239 views
1

我找過以前的一些開發人員的代碼和我碰到這條線:我在哪裏可以找到支持此行爲的文檔?

location.href = '#' + variable; 

其中有更新location.hash的效果。刪除'#',當然它會重定向到不存在的url。玩了一下,似乎我可以通過location.href設置散列,只要值以'#'開頭。這條線或類似的用途很多,但我似乎無法找到任何文件支持這種行爲更新location.hash通過設置location.href這種方式。

我希望看到顯示此內容的東西不僅僅是一個幸運的事故,因此我不需要重新編寫所有使用這些事件的情況。任何你可以鏈接到我會幫助。

無論如何只是改變這些以正確設置location.hash會更好嗎?

Thnks

回答

2

在猜測這是因爲location.href設置爲應該有相同的行爲,其點擊HREF鏈接= 會;它不應該取代地址欄的內容,因爲那麼你每次想要使用location.href就必須建立絕對URL。

locationlocation.href指定值顯然存在於Javascript 1.0中,所以完全有可能在任何地方都沒有正確指定 - Mozilla和Microsoft文檔都沒有詳細說明。 HTML5 specifies the behaviour,最有可能追溯。

1

這是個好地方開始您的位置屬性的旅程。

https://developer.mozilla.org/en/window.location

順便說一句,#something是一個有效的URL,並分配一個新的URL來了window.location會導致瀏覽器導航到新的目標。

#something被稱爲散列並將瀏覽器定向到當前文檔上的定位點,或者如果定位符不存在,則將定向到文檔的頂部。

0

這個帶有'#' char的網址被稱爲基於錨點的URL,它們不應該將用戶從頁面重定向,而是隻更新頁面的位置一些偏移量,就像設置location.hash那樣引用。

正如SII說這個作品,因爲當你改變location.href值就好像你點擊一個鏈接,例如,那麼你有以下等價:

<a href="#toc" >Go to Table of Contents</a> 

是一樣的:

location.href = "#toc"; 

他們都將導致您的location.hash變量擁有價值toc

相關問題