前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

一、历史记录前进与后退

1.后退:

window.history.back() -- 相当于用户在浏览器的工具栏上点击返回按钮;

2.前进:

window.history.forward() -- 相当于用户在浏览器的工具栏上点击前进按钮;

3.移动到指定历史记录点:

通过go()方法,指定一个相对于当前页面位置的数值,从当前会话的历史记录中加载页面(当前位置页面索引:0,上一页:-1,下一页:1);

window.history.go(-2)--后退2页,相当于调用两次back();

window.history.go(1)--前进1页,相当于调用forward();

*可以通过window.history.length,得到历史记录栈中一共有多少页。

二、添加/修改历史记录条目

1.pushState(stateObject,title,URL):

逐条添加历史记录条目,

a.状态对象(stateObject)--一个JavaScript对象,与用pushState()方法创建的新历史记录条目关联。无论何时用户导航到新创建的状态,popstate事件都会被触发,并且事件对象的state属性都包含历史记录条目的状态对象的拷贝;(ps:FireFox浏览器强行限制状态对象的大小为640k,超出则抛异常,可通过sessionStorage或localStorage存储大的数据)

b.标题(title)--传入一个简短的标题,标明将要进入的状态;(FireFox浏览器目前会忽略该参数,但是传一个空字符串会比较安全)

c.地址(URL)--新的历史记录条目的地址(可选,不指定的话则为文档当前URL);浏览器不会在调用pushState()方法后加载该地址;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。

*某种意义上,调用pushState()有点类似于设置window.location='#foo',它们都会在当前文档内创建和激活新的历史记录条目。

(拓展:window.location--待研究)

2.replaceState():

history.replaceState()操作类似于history.pushState(),不同之处在于replaceState()方法会修改当前历史记录条目而并非创建新的条目。

3.popstate():

每当激活的历史记录发生变化时,都会触发popstate事件。如果被激活的历史记录条目是由pushState所创建,或是被replaceState方法影响到的,popstate事件的状态属性将包含历史记录的状态对象的一个拷贝。

读取当前状态:

如果页面中使用pushState()或replaceState()方法设置了一个状态对象,然后用户重启了浏览器。当页面重新加载时,页面会触发onload事件,但不会触发popstate事件。可以使用history.state直接读取当前历史记录条目的状态,而不需要等待popstate事件

调用history.pushState()或者history.replaceState()不会触发popstate事件.pushState事件只会在其他浏览器操作时触发, 比如点击后退按钮(或者在JavaScript中调用history.back()方法)。

调用方法:

window.onpopstate = function(event) {//做一些操作event.state; //  当前历史记录条目的状态
};
或者:
window.addEventListener('popstate', function(event) {//做一些操作
});
 

操纵浏览器历史记录 : popstate() 、 history.pushState() 、 window.history.pushState()相关推荐

  1. popstate_操纵浏览器历史记录--popstate() history.pushState()

    一.历史记录前进与后退 1.后退: window.history.back()--相当于用户在浏览器的工具栏上点击返回按钮: 2.前进: window.history.forward()--相当于用户 ...

  2. HTML5的popstate、pushState、replaceState如何玩转浏览器历史记录

    一.popstate用来做什么的? 简而言之就是HTML5新增的用来控制浏览器历史记录的api. 二.过去如何操纵浏览器历史记录? window.history对象,该对象上包含有length和sta ...

  3. popstate_图解用HTML5的popstate如何玩转浏览器历史记录

    一.popstate用来做什么的? 简而言之就是HTML5新增的用来控制浏览器历史记录的api. 二.过去如何操纵浏览器历史记录? window.history对象,该对象上包含有length和sta ...

  4. 利用popstate事件和window下的history对象处理浏览器跳转问题

    引子 之前,偶尔在项目中用过history接口做返回上一页功能,当时是用的history.go(-1),前几天面试中遇到一个控制浏览器跳转的问题时有点懵,特意查了文档记录一下,并且列出一些目前能想到的 ...

  5. 用history api偷换浏览器历史记录

    HTML5提供了新的history接口,例如pushstate,以及popstate.通常情况下,浏览器的历史记录能保存访问历史,但是因为有了history api,pushstate和replace ...

  6. window.history.pushState()和window.history.replaceState()

    今天在项目中遇到 要实现修改地址栏但是页面不可以刷新的需求 查阅资料发现可以用window.history.pushState(state, title, url)和window.history.re ...

  7. ajax怎么找回地址栏,使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL...

    HTML5里引用了新的API,就是history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的. 与传统的AJAX的区别 传统的ajax有如 ...

  8. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" ...

  9. 「无刷新跳转」window.history两个新方法pushState和replaceState详解

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

最新文章

  1. 57 Node.js异步编程
  2. c语言 python-C语言和python的区别
  3. 没有统计学基础可以学python-统计学专业应该学Java还是Python?
  4. Linux中su 和 su -的区别
  5. Oracle-HWM(High Water Mark) 高水位解读
  6. html语言中,定义文档中一个正在打开的链接的颜色的代码是,2017微软认证考试精选练习(附答案)...
  7. 数据结构Java06【赫夫曼树、概述、原理分析、代码实现(数据压缩、创建编码表、解码、压缩文件、解压文件)】
  8. 【C++】max_element() 和 min_element()
  9. Educational Codeforces Round 54 (Rated for Div. 2): D. Edge Deletion(最短路树)
  10. 孤读Paper——《CenterNet:Objects as Points》
  11. Java线程池 面试考点
  12. 联想小新潮7000黑苹果教程_联想小新潮7000-15笔记本安装win10系统操作教程
  13. 【web前端性能优化】12.css sprite(图片精灵)-雪碧图实现原理
  14. Cheat Engine游戏脚本修改器通关教程(脑残版Step1-Step8)
  15. Linux终端出现:To run a command as administrator (user “root“), use “sudo <command>“.
  16. ARP攻击-流量分析
  17. 中国2019最有价值的科幻类影视游戏IP 网络科幻小说《公元2119年》、
  18. SWUSTOJ #78 计算生日是星期几
  19. Android Framework-操作系统基础
  20. Illustrator CS中字体丢失或缺失问题的解决方法

热门文章

  1. sharepoint 2013 网站集解锁
  2. mq集群要建传输队列吗_面试官:消息队列这些我必问!
  3. 数据结构 - 链表(双向链表学习)
  4. element.style内联样式修改
  5. 执行本地sql_实用!5个在线 SQL 数据库环境
  6. 【Python学习】 - sklearn学习 - 自带数据集sklearn.datasets.x
  7. 【AtCoder - 2554】Choose Integers (找规律,或枚举)
  8. 【HDU - 3410 】 Passing the Message(单调栈)
  9. 动手学PaddlePaddle(3):猫脸识别
  10. Apollo进阶课程⑪ | Apollo地图生产技术