无刷新跳转—关于history中pushState和replaceState方法详解

Posted autofelix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无刷新跳转—关于history中pushState和replaceState方法详解相关的知识,希望对你有一定的参考价值。

〝 古人学问遗无力,少壮功夫老始成 〞

关于history中pushState和replaceState方法详解,常码字不易,出精品更难,没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。你必须特别努力,才能显得毫不费力。如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥一键三连,表示支持,谢谢各位小伙伴们。

目录

一、方法作用

二、参数详解

三、两者相同点

四、两者不同点


一、方法作用

  • html5新接口,可以改变网址而不刷新页面
  • 存在跨域问题,不支持重写到另一个域名下
  • 仅改变网址,网页不会真的跳转,也不会获取到新的内容,本质上网页还停留在原页面

二、参数详解

  • window.history.pushState( data,  title,  url )
  • data 状态对象:传给目标路由的信息,可为空
  • title 页面标题:目前所有浏览器都不支持,填空字符串即可
  • url 可选url:目标url,不会检查url是否存在,且不能跨域。如不传该项,即给当前url添加data

  • window.history.replaceState( data,  title,  url )
  • data 状态对象:传给目标路由的信息,可为空
  • title 页面标题:目前所有浏览器都不支持,填空字符串即可
  • url 可选url:目标url,不会检查url是否存在,且不能跨域。如不传该项,即给当前url添加data
  • 类似于pushState,但是会直接替换掉当前url,而不会在history中留下记录

三、两者相同点

  • 都可以无刷新修改url
  • 都不支持跨域,也就是不支持修改成其他域名的记录
  • 比如我在百度域名下,想将c站的域名放进历史记录

四、两者不同点

  • 是否会留下记录,这句话的意思就是说改了url后,是否可以通过back回撤
  • pushState因为留下记录,所以可以回撤
  • replaceState因为未留下记录,所以无法返回

 

 

以上是关于无刷新跳转—关于history中pushState和replaceState方法详解的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax和history.pushState无刷新改变页面URL

html5 history.pushState+ajax 实现无刷新,浏览器地址栏title修改

window.history.pushState 刷新浏览器

采用AJAX + history api做无刷新页面的分页

Html5无刷新修改Url

history(路由控制)