JavaScript History 对象

摘要:
History对象是窗口对象的一部分,可以通过窗口访问。历史记录属性。同时,这些预防措施和窗口onopstate事件一起工作。Popstate事件更改历史实体时,将发生Popstate事件。

一、History对象

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

注释:没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象。

JavaScript History 对象第1张

1. History 对象属性

length: 地址栏中 url的数量

state:  当前页面地址的state状态参数

2.  History 对象方法

方法描述IEFO
back()加载 history 列表中的前一个 URL。419
forward()加载 history 列表中的下一个 URL。419
go()加载 history 列表中的某个具体页面。419

 在Html5中新增了history.pushState()history.replaceState()两个方法,他们允许添加和修改history实体。

同时,这些防范和window.onpopstate事件一起工作。支持IE10+,Google,FF

pushState()方法

pushState()有三个参数:state对象,标题(现在是被忽略,未作处理),URL(可选)。具体细节:

· state对象 –state对象是一个JavaScript对象,它关系到由pushState()方法创建出来的新的history实体。用以存储关于你所要插入到历史 记录的条目的相关信息。State对象可以是任何Json字符串。因为firefox会使用用户的硬盘来存取state对象,这个对象的最大存储空间为640k。如果大于这个数 值,则pushState()方法会抛出一个异常。如果确实需要更多的空间来存储,请使用本地存储。

· title—firefox现在回忽略这个参数,虽然它可能将来会被使用上。而现在最安全的使用方式是传一个空字符串,以防止将来的修改。或者可以传一个简短的标题来表示state

· URL—这个参数用来传递新的history实体的URL,注意浏览器将不会在调用pushState()方法后加载这个URL。但也许会过一会尝试加载这个URL。比如在用户重启了浏览器后,新的url可以不是绝对路径。如果是相对路径,那么它会相对于现有的url。新的url必须和现有的url同域,否则pushState()将抛出异常。这个参数是选填的,如果为空,则会被置为document当前的url。

replaceState()方法

用法和pushState()一样,只是它用来更新当前state对象和当前history实体的url。

popstate事件

当history实体被改变时,popstate事件将会发生。如果history实体是有pushState和replaceState方法产生的,popstate事件的state属性会包含一份来自history实体的state对象的拷贝,

当你浏览会话历史记录时,不管你是点击前进或者后退按钮,还是使用history.go和history.back方法,popstate都会被触发。

JavaScript History 对象第2张

 读取当前state

当页面加载时,它可能会有一个非空的state对象。这可能发生在当页面设置一个state对象(使用pushState或者replaceState)之后用户重启了浏览器。当页面重新加载,页面将收到onload事件,但不会有popstate事件。

1.直接使用history.state属性读取

2.在popstate事件触发后获取state对象event.state

示例演示:

document.getElementById('btnOne').onclick = function () {
    var stateObject = { name: '张三丰' };
    var title = "修改地址";
    var newUrl = 'navigator.1.html';
    //修改地址栏中的地址
    history.pushState(stateObject, title, newUrl);
}
document.getElementById('btnTwo').onclick = function () {
    var stateObject = { name: '地址栏' };
    var title = "screen";
    var newUrl = 'screen.1.html';
    //修改地址栏中的地址
    history.pushState(stateObject, title, newUrl);
}
    //监听state变更
window.addEventListener('popstate', function (event) {
    console.info(event);
    console.info(event.state);
    console.info(location);
});

更多:

JavaScript Navigator 对象 

JavaScript ObjectURL | URL.createObjectURL和URL.revokeObjectURL  

JavaScript ArrayBuffer 二进制数组(二) 应用场景  

免责声明:文章转载自《JavaScript History 对象》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux kernel的cmdline參数解析原理分析Ubuntu16.04上使用git下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Gradle在Mac上安装及Idea中配置

前言 笔者在安装Gradle的过程中发现过程有点繁琐且安装教程比较少,因此记录一下安装过程,方便同行参考 环境信息 macOS:10.15.5IntelliJ IDEA:2020.3Gradle:6.8.2Java:1.8.0_151Homebrew: 3.0.1 进入Gradle官网 点此进入Gradle官网 点击安装 安装文档 包管理安装 安装b...

js 弹出确认 取消对话框

//删除房源信息 functiondeleteHouse(){ var id=$(this).parent().parent().find(".checkbox").val(); console.log(id); //alert("确定要删除"+id+"吗?"); if(confirm('确定要删除吗?')){...

微信小程序网络超时的处理

连接网络总有可能客户端因为网络情况,无法连接到微信服务器或者开发者服务器。但是有的只有在小程序启动时才能运行,比如 onLaunch,通过这个我们可以获取用户的基本信息,或者定位用来做下一步处理,如果这个无法获取数据,会导致整个小程序的失败。 所以我建议可以把错误分两个级别,假如是开发者服务器连接不上,可以通过重载页面来处理,但是如果是onLaunch中的...

浅谈Sass与Less区别、优缺点

  Sass是一种动态样式语言,Sass语法的缩排语法,比Css比多出很多功能,如变量,嵌套,运算,继承,颜色处理,函数等,易于阅读。Cass的安装需要安装Ruby环境,是服务器端处理的,Less是需要引入Less.js来处理代码输出css到浏览器,也可以在开发环节使用Less,然后编译成css文件,直接放在项目中,有less.app、SimpleLess...

微博内容中的短地址 分析

引自 http://www.nowamagic.net/webdesign/webdesign_ShortUrlInTwitter.php 短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/2hytQx...

使用jquery获取url以及jquery获取url参数的方法

使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1、jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识 2、jquery获取url参数比较复杂,要用到正则表达式,所以学好javascrip...