在Safari 3+中将window.location.hash设置为null会导致将其设置为#,例如
window.location.hash ='#foo'=> #foo
但是,
window.location.hash = null => #
如果将其设置为空字符串而不是null,则会出现相同的情况。行为肯定发生在Safari 3 + 4中,并且不发生在FF 3或4中。
这有什么变通方法吗?当然,它更像是一种美学上的动机,但我仍然喜欢在所有浏览器中保持一致的行为。
答案 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的末尾有一个空白的哈希部分这么糟糕吗?)