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

时间:2014-01-05 18:15:23

标签: javascript html5 browser-history

到目前为止,我只知道如果我想更改网址而不重新加载整个页面,我必须使用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

感谢。

1 个答案:

答案 0 :(得分:67)

您正在寻找replaceState(),它会替换历史记录中的当前位置而不是推送新位置,例如pushState()

来自MDN

  

history.replaceState()的运作方式与history.pushState()完全相同   除了replaceState()修改当前历史记录条目   创建一个新的。

     当您想要更新时,

replaceState()特别有用   响应某些状态的当前历史条目的状态对象或URL   用户行动。

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