history API

这里讲的history包括两个,一个是宿主对象history,一个是HTML5的history API。

宿主对象history

history包括三个方法和一个属性:

属性/方法 描述
length 返回浏览器历史列表中的 URL 数量。
back() 加载 history 列表中的前一个 URL。
forward() 加载 history 列表中的下一个 URL。
go(int N) 加载 history 列表中的某个具体页面,参数为整数,正数相当于forward N次,负数相当于back N次。

其中,当没有前一个url时,back方法不起作用,但也不会报错。forward同理。go函数当参数超出实际可跳转的范围时也不会起作用

HTML5 API

HTML5中增加了两个API和一个事件。
属性/方法 描述
pushState(data, title[,url]) 向历史记录堆栈的顶部增加一条记录
replaceState(data, title[,url]) 修改当前的历史记录值


其中,参数的格式及意义如下:
data: json格式,表示状态(state)的对象
title:string, 标题,目前主流浏览器都不会处理这个标题,这里传null就可以。
url:string,url。(用于替换当前url)

popState事件

history.go和history.back(包括用户按浏览器历史前进后退按钮)触发,并且页面刷新的时候(由于使用pushState修改了history)会触发popstate事件,事件发生时浏览器会从history中取出URL和对应的state对象替换当前的URL和history.state。通过event.state也可以获取history.state。
window.addEventListener('popstate', function(e) {
    if (e.state) {
        // ...
    }else{
        // 页面初始化的时候state为null,需要做的处理    
    }
    // 当然也可以直接使用history.state来获取当前对应的state数据。
});

注:
有些浏览器在页面初始化时不会触发popstate事件。
有的浏览器在页面初始化时会触发popstate事件(如safiri),此时的e.state(或者说是history.state)为null,(但是刷新后点击前进回退操作仍会有之前的历史记录)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值