清除URL哈希值
Clearing URL hash
访问stackoverflow.com/#_=_
, window.location.hash
求值为#_=_
。好。
现在执行window.location.hash = ''
来清除哈希,URL变成stackoverflow.com/#
。(注意后面的#
)
为什么window.location.hash
中的#
不一致地被包括或排除?如何从URL中删除#
而不重新加载页面?
(MDN说
[哈希值是]URL中#符号后面的部分,包括#符号。
,但对于空散列则不成立)
回答第二个问题(删除#
而不刷新页面):
history.pushState('', document.title, window.location.pathname);
回答你的第一个问题:
根据窗户。" URL中#符号后面的部分,如果有的话,包括#符号。如果url不包含#或#之后没有任何内容,则为空字符串。"
奇怪的是,该文档在2013年8月4日刚刚更新。不确定是否在您检查文档后添加了。
顺便说一下(参考答案),window.location.hash和pushState是不同的概念,尽管关系密切。
有两个因素驱动这种行为:
- "设置hash属性将导航到指定的锚,而无需重新加载文档。"(这里)
- "当你设置位置对象或它的任何属性时,除了hash[…]在JavaScript 1.1和更高版本中,设置位置的效果取决于用户在网络上比较文档和原始文档的设置。(这里)
所以基本上,设置hash属性不应该导致重新加载,设置任何其他属性应该导致重新加载(或者可能是E-Tag/modified-since头检查,取决于浏览器设置)。
我假设为了一致性,浏览器构建器将设置空散列转换为设置'#'作为散列。这样,位置栏中的url就不会导致重新加载。但后半部分纯属猜测。
相关文章:
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 在Javascript中实现对哈希值的暴力攻击
- 使用Javascript从url中获取空哈希值
- 如何使用JS重定向到具有哈希值的引用URL
- 单击一页滚动菜单时更改URL哈希值
- 如何获得新的哈希值的URL没有页面重新加载
- 使用JavaScript搜索URL的哈希值,而不是特定的字符串
- 需要移除url参数前的哈希值
- 在jquery的url(锚)中获得许多#哈希值
- 在单击事件/函数期间获取URL哈希值
- 将类切换到特定元素取决于URL的哈希值
- 在nodejs中通过url获取哈希值
- toState.Url值不是嵌套状态的绝对哈希值
- 当只有url哈希值发生变化时,我如何重新加载整个页面?
- 更改URL不会重新加载文档->如何检查哈希值
- 清除URL哈希值
- 在IE9浏览器返回按钮的url中更改了哈希值
- 使用JavaScript检测URL哈希值的更改
- 如果页面 URL 中存在哈希值,则添加类
- JQuery Ajax在url中添加哈希值