[英]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.