2

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

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

但,

window.location.hash = null => #

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

有什么解决方法吗?诚然,这更像是一种审美动机,但我仍然希望所有浏览器的行为一致。

4

2 回答 2

0

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

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

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

于 2009-08-31T22:37:14.323 回答
0

将 hash 设置为空字符串,而不是 null。Null 不是哈希属性(始终是字符串)的有效值。在 Safari 3.2.1/Win 中为我工作。(虽然不是,出于某种原因在 Opera 10 中......但是谁在乎呢?在 URL 的末尾有一个空白的哈希部分是一件坏事吗?)

于 2009-08-31T22:38:23.447 回答