到目前为止,我只知道如果我想更改网址而不重新加载整个页面,我必须使用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
感谢。
答案 0 :(得分:67)
您正在寻找replaceState()
,它会替换历史记录中的当前位置而不是推送新位置,例如pushState()
来自MDN
当您想要更新时,
history.replaceState()
的运作方式与history.pushState()
完全相同 除了replaceState()
修改当前历史记录条目 创建一个新的。
replaceState()
特别有用 响应某些状态的当前历史条目的状态对象或URL 用户行动。
请记住,some functions are not available on older browsers。但有一个library 这可以帮助你。