博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操纵浏览器的历史记录
阅读量:7040 次
发布时间:2019-06-28

本文共 976 字,大约阅读时间需要 3 分钟。

浏览器的 window 对象提供的 history 对象给予了我们访问和操纵历史记录(仅针对当前文档)的能力。


history api

window.history.back(); 浏览器返回一页。

window.history.forward(); 浏览器前进一页。
window.history.go(i); 浏览器前进(后退)i 页,如果 i 为 0 ,则刷新当前页面。
window.history.length; 浏览器历史记录栈中一共有多少页。
window.history.state; 当前的状态对象


window.history.replaceState(obj, title, url)

window.history.pushState(obj, title, url);
两个方法都可以达到替换当前浏览器地址而不刷新页面的作用:让浏览器的地址栏显示为我们传入的地址,但不会加载该页面也不会检查该页面是否存在。
区别在于前者会修改当前历史记录条目,而后者是创建新历史记录条目。

方法接受三个参数

  1. 状态对象(state object),任何可序列化的对象都可以被当做状态对象,大小限制为 640K。

  2. 标题(title) ,暂时大多数浏览器都会忽略此参数,传入空字符串即可

  3. 地址(URL),传入的 url 应与原地址同源,否则会报错


popstate事件

每当同一个文档的浏览历史(即 history 对象)出现变化时,就会触发 popstate 事件。但是pushStatereplaceState 两个方法不会触发该事件

事件的回调函数的 event 参数的state 属性指向 pushStatereplaceState 方法为当前 url 所提供的状态对象(即这两个方法的第一个参数)。

window.addEventListener('popstate', function(event) {    console.log("location: " + document.location);  console.log("state: " + JSON.stringify(event.state));    // 或者通过 var currentState = history.state; 来获取状态对象});

转载地址:http://bexal.baihongyu.com/

你可能感兴趣的文章
android在线API地址
查看>>
Verson Magic problem
查看>>
Passcode
查看>>
TapKu Graph
查看>>
面试需要的基础知识-合并排序数组
查看>>
关于Unity 2018的实体组件系统(ECS)一
查看>>
Echarts---添加渐变功能
查看>>
linux 下解压命令大全
查看>>
深入了解 Linux下安装DNS+Sendmail服务
查看>>
python在类中实现swith case功能
查看>>
Maven com.sun.jdmk:jmxtools:jar 下载不下来
查看>>
DevExpress之Skin自定义使用
查看>>
可变参数
查看>>
[日推荐]『饿了么外卖服务』饿了么官方小程序,无需下载安装!
查看>>
JavaScript 作用域
查看>>
Linux Ubuntu 16.04 主机名设置
查看>>
CCNP 静态路由
查看>>
单链表二[不带头节点链表]
查看>>
Spring mvc 拦截器
查看>>
MySQL GROUP BY 和GROUP_CONCAT的一些用法
查看>>