如何在不更改浏览器历史记录的情况下更改网址

问题描述 投票:0回答:1

到目前为止,我只知道如果我想更改 URL 而不重新加载整个页面,我必须使用 HTML 浏览器 history API。

我在我的网站中使用这个概念。让我们举个例子。假设用户在此页面上

 https://www.example.com/aboutus

然后他转到我们有过滤器的产品列表。单击任何过滤器系统都会生成类似这样的新网址

https://www.example.com/products?brands[]=song&brands[]=samsung&condition[]=new

在内部它只是调用

history.pushState({}, 'Title', link.href);

但是,它有一个问题。单击

back
按钮可转到上一个过滤器。 我不想要这个功能。我想要,单击浏览器后退按钮后,它应该转到
current
页面之前的页面。在我们的例子中,应该采取

https://www.example.com/aboutus

谢谢。

javascript html browser-history
1个回答
114
投票

您正在寻找

replaceState()
,它会替换历史中的当前位置,而不是像
pushState()
那样推送新位置

history.replaceState({}, 'Title', link.href);

来自MDN

History.replaceState() 方法修改当前历史记录条目,将其替换为方法参数中传递的状态对象和 URL。当您想要更新当前历史记录条目的状态对象或 URL 以响应某些用户操作时,此方法特别有用。

请记住,某些功能在旧版浏览器上不可用。但有一个图书馆 这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.