链接可从网址中删除“#”而无需重新加载页面

时间:2019-05-25 14:23:58

标签: javascript html url anchor single-page-application

我有一个名为address的示例html页面

4

我已添加警报,以便我可以知道页面何时重新加载。

如果我单击第一个链接,则URL会按预期更改为pound.html。如果单击第二个链接,它将再次更改为<body onload="alert('loading')"> <a href="#something">something after #</a><br /> <a href="#">nothing after #</a><br /> <a href="">no # at all</a><br > </body> ,而无需重新加载。但是,如果我单击第三个链接,虽然它会将网址放回pound.html#something(没有pound.html#),但它会重新加载页面。

在启动时,我总是看到没有pound.html的单页应用程序,但是一旦转到其他地方然后返回首页,您将得到#。有没有办法使它从URL中删除#而无需重新加载页面(例如当您返回首页时)?


如果您从#开始,然后单击第一个链接并转到#,则浏览器后退箭头可以使您回到pound.html,而无需重新加载页面。

如评论中所述,How to remove the hash from window.location (URL) with JavaScript without page refresh?

这里有很多javascript解决方案

但是,有人知道是否有删除链接的方法吗?

1 个答案:

答案 0 :(得分:0)

怎么样:

window.location.hash = '1' // add the `#1` to URL (adds hash if its not already there)
window.location.hash = '' // just leave the `#` symbol in URL
window.history.replaceState(null,document.title,location.href.slice(0, -1))

它将从您的网址中删除最后一个字符(在本例中为#