4

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

4

2 回答 2

2

查看replaceState 方法

于 2013-04-17T03:00:34.217 回答
1

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

于 2013-04-17T03:10:35.433 回答