动态更改URL而不添加上一个历史堆栈

时间:2013-04-17 02:57:47

标签: javascript

stackoverflow问题URL包括servlet,id#和标题,如此...

stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page

我的网站与网址的工作方式相同......

localhost:8443/user/1/admin

我在后端进行查询以获取用户信息只需要id号。之后的用户名称仅用于显示。因此,如果您在localhost:8443/user/1/a的浏览器中输入此内容,则会为您提供与此localhost:8443/user/1/admin完全相同的页面

Stackoverflow能够注意到URL的末尾部分缺失并将其添加回来。所以如果你把它放到地址栏

stackoverflow.com/questions/824349/modify

他们会将其动态更改为

stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page

现在我读过有关在stackoverflow上动态更改URL的内容,每个人都在引用history.pushstate,所以我试了一下。这样做的问题是它将错误的URL添加到历史堆栈中。我想要完成的是将URL更改为它应该是的路径,而不是包含错误的URL到历史堆栈。因此,如果用户决定返回,则返回到他们最后所在的实际页面stackoverflow.com/questions/824349/modify。就像stackoverflow那样。我怎么能这样做??

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

尝试使用history.replaceState而不是history.pushState