gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:07:40 36 4
gpt4 key购买 nike

直到现在,我只知道如果我想在不重新加载整个页面的情况下更改 URL,我必须使用 HTML 浏览器 history API。

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

 https://www.example.com/aboutus

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

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

内部只是调用

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

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

https://www.example.com/aboutus

谢谢。

最佳答案

你正在寻找 replaceState(),它会替换历史中的当前位置,而不是像 pushState() 那样推送一个新位置

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

来自 MDN

history.replaceState() operates exactly like history.pushState()except that replaceState() modifies the current history entry insteadof creating a new one.

replaceState() is particularly useful when you want to update thestate object or URL of the current history entry in response to someuser action.

记住,some functions are not available on older browsers .但是有一个library这可以帮助你。

关于javascript - 如何在不更改浏览器历史记录的情况下更改网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937280/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com