这个功能可以进行传参,还可以解决ajax无法前进和倒退的问题

首先,history新增的两个方法history.replaceState()和history.pushState()方法属于HTML5浏览器新增的属性,所以IE9以下的是不支持的。

直接上代码:

history.replaceState() 顾名思义就是替换的意思,所以它的作用就是替换当前地址栏的url

  1. <!DOCTYPE HTML>
  2. <head>
  3. <script src="jquery-1.8.2.min.js"></script>
  4. <style>
  5. </style>
  6. <script>
  7. $(function(){
  8. $("#bt").click(function(){
  9. history.replaceState({data:111},"1222","aa.html");
  10. return false;
  11. });
  12. })
  13. </script>
  14. </head>
  15. <body class="sapUiBody">
  16. <input type="button" id="bt" value="show">
  17. </body>

点击按钮后,可以看到页面地址栏的地址变了,但是页面并没有刷新。

history.replaceState(data,"页面的title","需要改变的url") 接收三个参数

history.pushState() 看到push大家首先应该想到的是数组,没错,这个方法就是往浏览器的history里压入一条url,就像数据结构里的栈一样,这个压入的url会在栈

的最顶端,当你点击浏览器的前进或者倒退按钮时,便会拿出栈顶的url来定位,从而达到改变history的作用但是并不刷新!

  1. <!DOCTYPE HTML>
  2. <head>
  3. <script src="jquery-1.8.2.min.js"></script>
  4. <style>
  5. </style>
  6. <script>
  7. $(function(){
  8. $("#bt").click(function(){
  9. history.pushState({data:111},"1222","aa.html");
  10. history.pushState({data:111},"1222","ab.html");//多压入几条
  11. return false;
  12. });
  13. })
  14. </script>
  15. </head>
  16. <body class="sapUiBody">
  17. <input type="button" id="bt" value="show">
  18. </body>

其次是

window.addEventListener('popstate', function(event) {     
   console.log(event.state);//data 
});

还记得上面的pushState方法么,当你往history的栈里通过调用这个方法压入多条数据时,并且你通过点击浏览器的前进倒退按钮进行改变的时候,这个事件就触发了,然后就

是event.state就是上面方法的第一个参数data,并且是和url一一对应的,这样就实现了传值

  1. <!DOCTYPE HTML>
  2. <head>
  3. <script src="jquery-1.8.2.min.js"></script>
  4. <style>
  5. </style>
  6. <script>
  7. $(function(){
  8. $("#bt").click(function(){
  9. history.pushState({data:111},"1222","aa.html");
  10. history.pushState({data:111},"1222","ab.html");//多压入几条
  11. return false;
  12. });
  13. window.addEventListener('popstate', function(event) {
  14. console.log(event.state);
  15. });
  16. })
  17. </script>
  18. </head>
  19. <body class="sapUiBody">
  20. <input type="button" id="bt" value="show">
  21. </body>

最后,通过这种方法可以在popstate的事件里写自己的逻辑了,如发送ajax等

html5 history 信息api pushState的更多相关文章

  1. HTML5 history新特性pushState、replaceState

    DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退. 从HTML5开始,我们可以开始操作这个历史记录堆栈. 1.Histo ...

  2. HTML5 history新特性pushState、replaceState,popstate

    http://blog.csdn.net/tianyitianyi1/article/details/7426606 https://developer.mozilla.org/zh-CN/docs/ ...

  3. HTML5 History API 实现无刷新跳转

     在HTML5中, 1. 新增了通过JS在浏览器历史记录中添加项目的功能. 2. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 3. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三 ...

  4. HTML5 History API实现无刷新跳转

    在HTML5中, 新增了通过JS在浏览器历史记录中添加项目的功能. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三点,可以实现在不刷新 ...

  5. HTML5 history API实践

    一.history API知识点总结 在HTML4中,我们已经可以使用window.history对象来控制历史记录的跳转,可以使用的方法包括: history.forward();//在历史记录中前 ...

  6. 转: html5 history api详解~很好的文章

    从Ajax翻页的问题说起 请想象你正在看一个视频下面的评论,在翻到十几页的时候,你发现一个写得稍长,但非常有趣的评论.正当你想要停下滚轮细看的时候,手残按到了F5.然后,页面刷新了,评论又回到了第一页 ...

  7. HTML5 History API让ajax能回退到上一页

    HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL.这个功能很有用,例如通过一段JavaScript代码局部加载页面的内容,你希望通过改变当前页面的 ...

  8. window.history的跳转实质-HTML5 history API 解析

    在上一浏览器跳转行为的测试中,我们看到了通过不同的方法操作浏览器跳转时,它的刷新表现有所不同,在这一文章中,将看看,为何会产生这样的不同?其背后的实质是什么?浏览器的访问历史记录到底是如何运作的呢? ...

  9. HTML5 history API,创造更好的浏览体验

    HTML5 history API有什么用呢? 从Ajax翻页的问题说起 请想象你正在看一个视频下面的评论,在翻到十几页的时候,你发现一个写得稍长,但非常有趣的评论.正当你想要停下滚轮细看的时候,手残 ...

随机推荐

  1. listen()函数中backlog参数分析

    实例分析1 将服务器端的listen函数backlog设置为2,用20个客户端与服务器建立连接,查看连接的建立情况. 服务器代码: #include <stdio.h> #include& ...

  2. AnswerOpenCV一周佳作欣赏(0615-0622)

    一.How to make auto-adjustments(brightness and contrast) for image Android Opencv Image Correction i' ...

  3. (12网络化部署深化下)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署

    网络化部署一直是我非常想做的,现在已经基本看到了门路.今天早上实验,发现在手机上的支持也非常好(对于相机的支持还差一点),证明B/S结构的框架是非常有生命力的.下一步就是要将这个过程深化.总结,并且封 ...

  4. JS实现对数器

    对数器的概念和使用 对数器一般用于验证你写的算法是否正确,因为自己写的测试用例可能写的考虑不够全面. 0.有一个你想测试的方法a 1.实现一个绝对正确但是时间复杂度不好的方法b 2.实现一个随机样本产 ...

  5. CEF 文件下载

    转载:https://blog.csdn.net/liuyan20092009/article/details/53819473?locationNum=6&fps=1 转载:https:// ...

  6. 【Python31--pickle函数】

    一.含义 1.pickle的实质是什么 答:利用一些算法把数据对象转换成“二进制文件”,存储在硬盘上,当然也可以放在数据库或者是另外一台计算机上 2.存放:picking,读取:unpicking 3 ...

  7. noip模拟【tea】

    tea [题目描述]有n个容量为V的瓶子,第i个瓶子中装着a[i]个单位的tea,使所有瓶子内的tea在不 超过其容量的前提下,非空的瓶子最少.在一个单位时间内,可以同时将多个瓶子中的tea倒入另外多 ...

  8. SpringBoot 使用Hikaricp连接池

    1.添加pom.xml依赖 如果是SpringBoot2.0,那么默认的连接池就是Hikaricp,不需要配置 其他的,如果继承 <parent> <groupId>org.s ...

  9. SpringBoot 通过token进行身份验证,存储redis

    代码: public interface TokenManager { /** * 创建token * @param userInfo * @return */ String getToken(Use ...

  10. HIHOcoder 1457 后缀自动机四·重复旋律7

    思路 后缀自动机题目,题目本质上是要求求出所有不同的子串的和,SAM每个节点中存放的子串互不相同,所以对于每个节点的sum,可以发现是可以递推的,每个点对子节点贡献是sum[x]*10+c*sz[x] ...