一尘不染

如何在不刷新页面的情况下使用JavaScript从window.location(URL)中删除哈希值?

javascript

我有以下网址:http://example.com#something,如何删除#something而不导致页面刷新?

我尝试了以下解决方案:

window.location.hash = '';

但是,这不会#从URL中删除哈希符号。


阅读 530

收藏
2020-04-25

共1个答案

一尘不染

最初的问题:

window.location.href.substr(0, window.location.href.indexOf('#'))

要么

window.location.href.split('#')[0]

两者都将返回不带哈希或其后的任何内容的URL。

关于您的编辑:

对的任何更改window.location都会触发页面刷新。您可以在window.location.hash不触发刷新的情况下进行更改(尽管如果您的哈希值与页面上的ID匹配,则窗口将跳出),但是您无法摆脱哈希符号。选哪个更差…

最新的答案

在不牺牲(完全重新加载或在其中保留哈希符号)的情况正确执行操作的正确答案就在这里。不过,就2009年的原始版本而言,此答案留在这里,而1.5年后才给出了利用新浏览器API的正确版本。

2020-04-25