Par*_*war 42 javascript html5 browser-history
到现在为止,我只知道如果我想在不重新加载整个页面的情况下更改URL,我必须使用HTML浏览器历史记录 API.
我在我的网站上使用这个概念.我们举个例子吧.假设用户在此页面上
https://www.example.com/aboutus
Run Code Online (Sandbox Code Playgroud)
然后他进入我们有过滤器的产品列表.点击任何过滤器系统会生成类似这样的新网址
https://www.example.com/products?brands[]=song&brands[]=samsung&condition[]=new
Run Code Online (Sandbox Code Playgroud)
在内部,它只是在呼唤
history.pushState({}, 'Title', link.href);
Run Code Online (Sandbox Code Playgroud)
但是,它有一个问题.单击back按钮将转到上一个过滤器.我不想要这个功能.我想,点击浏览器后退按钮,它应该到页面之前的current页面.在我们的例子中,它应该采取
https://www.example.com/aboutus
Run Code Online (Sandbox Code Playgroud)
谢谢.
ade*_*neo 78
你要找的replaceState(),它代替了历史的当前位置,而不是推一个新的,像pushState()做
来自MDN
history.replaceState()操作完全一样history.pushState(),只是replaceState()修改当前的历史条目,而不是创建一个新的.
replaceState()当您想要更新当前历史记录条目的状态对象或URL以响应某些用户操作时,此功能特别有用.
请记住,某些功能在旧版浏览器中不可用.但是有一个图书馆 可以帮助你.
| 归档时间: |
|
| 查看次数: |
17616 次 |
| 最近记录: |