关于浏览器的history

最近遇到一个很奇特的问题:app上一个按钮绑定了一个链接,现在需要更换这个链接,但是app不支持更换链接,那么从前端角度考虑,我采用加载该页面脚本,然后跳转到新的页面,但是这样做会有一个问题,跳到自信的页面后点击返回按钮会一直跳到新的页面,导致返回按钮失效。后来查看资料使用了window.location.replace()方法,这种方法在谷歌浏览器是可以的,但是在app里面还是会存在上面的问题。
最后我从window对象的history入手解决了这个问题。

即history.replaceState();方法,这个方法接受三个参数,第一个是状态对象,第二个是页面标题,第三个是页面链接。具体代码如下

if (history.replaceState) {
   history.replaceState(null,document.tittle,"http://******");  
   history.go(0);  
} else {
  window.location.replace("http://*****");
}

history.replaceState();发放会替换当前页面的浏览记录,及页面标题替换为:document.tittle,地址栏的链接替换为“http://****”,至于是不是存在“http://****”则不会去验证的;history.go(0)做到了页面刷新,及刷新我想看到的页面,history.go(1)前进一页,history.go(-1)后退一页,这样,用户进入了老的页面但是去自动跳转到我希望出现的新的页面,而且浏览器的历史记录里面是记录的新的页面的地址,完美解决。

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/History

猜你喜欢

转载自www.cnblogs.com/zhangbob/p/9268348.html