JavaScript

history.replaceState() 与pushStat

2019-03-05  本文已影响0人  凝黛色

场景需求:

如下图所示,用户可以在previousPage通过点击事件到达showcolor页面,showcolor页面有3个子页面,分别是red,green,yellow 页面,为了记录用户的点击行为,在用户进入子页面的时候在url上加上hash值加以区分。当用户点击浏览器的返回按钮时,可以正确的返回到前一页面,而不是在子页面之间层层返回。


demo.png

实现方式:

 window.history.replaceState("", document.title, '#Red');
 #url : https://test.bigtest.com/showcolor#Red
 window.history.pushState("", document.title, '#Red');
 #url : https://test.bigtest.com/showcolor#Red
window.location.hash ="#Red"
 #url : https://test.bigtest.com/showcolor#Red

这三种方式在展现hash方面的结果是一致的,但是对于浏览器的返回按钮被点击时的反应不同。

"
https://test.bigtest.com/showcolor#Red OR https://test.bigtest.com/showcolor---->https://test.bigtest.com/previousPage
"
"
https://test.bigtest.com/showcolor#Red ---->https://test.bigtest.com/showcolor---->https://test.bigtest.com/previousPage
"
init(){
 window.history.replaceState("", document.title, window.location.pathname);
}
上一篇下一篇

猜你喜欢

热点阅读