在Safari 3+中将window.location.hash设置为null会导致将其设置为#

时间:2009-08-31 22:21:10

标签: javascript browser safari location

在Safari 3+中将window.location.hash设置为null会导致将其设置为#,例如

  

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

但是,

  

window.location.hash = null => #

如果将其设置为空字符串而不是null,则会出现相同的情况。行为肯定发生在Safari 3 + 4中,并且发生在FF 3或4中。

这有什么变通方法吗?当然,它更像是一种美学上的动机,但我仍然喜欢在所有浏览器中保持一致的行为。

2 个答案:

答案 0 :(得分:0)

在Safari 4中(不知道3)这会使#消失,页面不会重新加载。

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

然而,它显然会混淆浏览器历史记录。如果他们点击向前,则会将他们带到http://whatever.com/#foo

答案 1 :(得分:0)

将哈希设置为空字符串,而不是空。 Null不是hash属性的有效值(始终为字符串)。适用于Safari 3.2.1 / Win。 (虽然不是,出于某些原因在Opera 10中...但是那时候谁在乎?在URL的末尾有一个空白的哈希部分这么糟糕吗?)