2010-10-08 124 views
2

我注意到在JSURL哈希古怪

一些奇怪的行爲
window.location.hash = ''; 
var hash = window.location.hash; 
alert(hash + ' = ' + hash.length); 
//outputs: ' = 0' 
window.location.hash = '#'; 
hash = window.location.hash; 
alert(hash + ' = ' + hash.length); 
//outputs: ' = 0' 
window.location.hash = '_'; 
hash = window.location.hash; 
alert(hash + ' = ' + hash.length); 
//outputs: '_ = 2' 

基本上我想要觸發三個條件

  1. 沒有哈希
  2. 只是湊
  3. 哈希文本

然而它看起來像J S沒有看到example.com/和example.com/# 之間的區別此外,我不知道如何完全刪除哈希。

任何幫助?

回答

2
  1. 一旦哈希設置,你不能完全刪除(例如,刪除#號),而不會導致重新加載頁面;這是正常的行爲。

  2. 設置空/空散列並將散列設置爲默認散列(#)的處理方式相同;這只是內部行爲。不確定所有的瀏覽器是否一致地處理它,但是IIRC就是這種情況。

最後,如果你想徹底刪除哈希值,你就必須做document.location.href = document.location.href,重新加載頁面(window.location.reload()將保持哈希)。

+0

所以不存在hash.length = 1的情況 – Moak 2010-10-08 05:53:15

+0

否 - 它將包含散列字符('#'),如果它是空的或者只有散列字符(與瀏覽器相同),則它報告0,而不管。 – mway 2010-10-08 05:54:44

+1

@Moak,這是正確的。你也無法判斷'window.location.hash =='#''。它對''和'#'都返回false。 – helloandre 2010-10-08 05:58:20