2009-08-31 73 views
2

在Safari 3+中將window.location.hash設置爲null會導致它被設置爲#例如,在Safari 3+中將window.location.hash設置爲null會導致它被設置爲#

window.location.hash = '#foo'=> #foo

但是,

window.location.hash = NULL =>#

如果將其設置爲空字符串而不是null,則會發生同樣的情況。行爲肯定會出現在Safari 3 + 4,一點不發生在FF 3或4

任何解決方法嗎?當然,它更多的是一種美學動機的東西,但我仍然希望所有瀏覽器的行爲一致。

+0

沒有FF 4(截至目前)。在FF 3.5.2中,將hash設置爲'null'也會將「#」附加到url。爲了一致的行爲,我會建議只分配字符串值來散列。在賦值之前強制將'null'強制爲''。 – kangax 2009-08-31 22:53:40

回答

0

在Safari 4(不知道大約3)這會使#消失,並且頁面不會重新加載。

window.location.hash = 'foo'; 
window.history.go(-1); 

但是,它顯然會混淆瀏覽器的歷史。如果他們點擊前進,則會將他們帶到http://whatever.com/#foo

+0

這是一個相當不完整的解決方案。如果原始網址中包含散列並且您想要將其刪除,則它不起作用。 – 2010-09-09 21:52:57

+0

這是因爲根據我的瞭解,目前還沒有完整的解決方案,否則請隨時啓發我們。這顯然只是一個破解,並不意味着超強大。 – David 2010-09-16 08:30:56

0

將散列設置爲空字符串,不爲null。空值不是散列屬性的有效值(始終是一個字符串)。適用於Safari 3.2.1/Win。 (雖然沒有,但在Opera 10中出於某種原因...但是誰在乎呢?URL末尾有一個空白哈希部分,這是件壞事?)

+3

setting location.hash ='';仍然會在網址中留下#號,這正是他想要避免的。 – David 2009-08-31 22:40:41

相關問題