访问 stackoverflow.com/#_=_
,window.location.hash
的计算结果为#_=_
。没问题。
现在执行window.location.hash = ''
来清除哈希值,URL就变成了stackoverflow.com/#
。(注意结尾的#
)
为什么window.location.hash
中的#
有时会包含在内,有时又不包含呢?如何在不重新加载页面的情况下从URL中删除#
?
(MDN 说:
【哈希值】是紧随着井号(#)后面的 URL 部分,包括井号。
但在空哈希的情况下,这并不正确。)
stackoverflow.com/#
也会导致window.location.hash === ''
,因此它是一致的行为。 - dev-null-dwellerhash
会导致 URL 中出现#
符号以及空的hash
属性。现在,只有#
符号存在于 URL 中,访问页面也会导致空的hash
属性。只有在#
符号后面还有其他字符时,hash
属性才会被填充,在所有浏览器中这都是一致的行为。 - dev-null-dweller