动态更改URL,而不需要将前一个添加到历史堆栈

Change URL Dynamically Without Adding Previous To History Stack

本文关键字:一个 添加 堆栈 历史 URL 不需要 动态      更新时间:2023-09-26

一个stackoverflow问题URL包含一个servlet, id#和标题,像这样…

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

我的网站工作方式与URL相同,如…

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一样。我怎么能这么做?

查看replaceState方法

尝试使用历史记录。replace estate代替history.pushState