繁体   English   中英

如何更改网址而不更改浏览器历史记录

[英]how to change url without changing browser history

到现在为止,我只知道如果我想在不重新加载整个页面的情况下更改URL,我必须使用HTML浏览器历史记录 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

谢谢。

你正在寻找replaceState() ,它取代了历史中的当前位置而不是推新的位置,比如pushState()

来自MDN

history.replaceState()运行方式与history.pushState()完全相同,只是replaceState()修改当前历史记录条目而不是创建新条目。

当您想要更新当前历史记录条目的状态对象或URL以响应某些用户操作时, replaceState()特别有用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM