History对象
主要是用于控制浏览器的历史记录,包括前进后退、修改历史记录等。
我觉得可以利用在单页面,控制不能回退操作页面。
使用History
HTML5提供了两个新的方法(history.pushState()/history.replaceState()),用于添加和更新历史记录,还有一个popstate事件。
history.pushState(state,title,url)
参数
state: 存储JSON字符串,可以用在popstate事件中。 记录历史记录点的额外对象,可以为空。
title: 大多是浏览器不支持,建议使用null。
url:任意有效的URL,用于更新浏览器的地址栏,不在乎url地址是否存在,只改变url,url必须同域。更重要的是,它不会重新加载页面。
作用
pushState()是在history栈中添加一个新的条目,也就是添加多一条的历史记录。也就是说使用pushState(),会使历史记录条数+1
history.replaceState(state,title,url)
可以看出这个方法接收的参数和pushState一致。它的区别在于,这个方法会将原本在栈的第一条数据替换成新传入的url。历史记录条数不变。
popstate事件(window.onpopstate)
触发popstate事件的条件:浏览会话历史记录
- 点击前进或者后退按钮
- 使用history.go() 或者 history.back()方法
错误解决
|
|
这个错误是因为没有开启服务器!!!!!!!!!!!还有可能是因为jq的影响。一开始没意思到,还浪费了很多时间
Demo示例
注意使用IIS建站测试
HTML:
demo1
JavaScript:
实现效果
页面不刷新,可以使用前进后退按钮进行跳转页面。
demo2
注释掉上面的javascript,插入这段 变成触发replaceState方法