无刷新更新地址 history.pushState/replaceState 方法
来源:互联网 发布:网络危机公关处理公司 编辑:程序博客网 时间:2024/06/18 00:37
而在JavaScript MVC开始流行之后,通过刷新来修改URL的方法,不禁让人感到烦躁。然而HTML5中就制定了一个这样的API,可以通过方法的方式来修改URL,而又不会使浏览器刷新,就是History API。
熟悉JavaScript开发的同学,对History肯定不会陌生,其中最经典的方法就是go,通过第一个类型为整数的传输参数,可以使浏览器到达当前页面之前或之后,曾经浏览过的页面。当然,这个也是要刷新来实现的。
现在History API新增了两个方法,分别是pushState和replaceState,其实用法都一样,看Mozilla的文档也没看到它们有多大不同,哈哈。
- history.pushState是增加浏览器的会话历史。
- history.replaceState是替换浏览器的当前会话历史。
用法如下:
var state = { //这里可以是你想给浏览器的一个State对象,为后面的StateEvent做准备。
title : "HTML 5 History API simple demo",
url : "yourpage"
};
history.pushState(state, "HTML 5 History API simple demo", "yourpage");
还算简单吧,那么replaceState也是同样的用法:
var state = { //这里可以是你想给浏览器的一个State对象,为后面的StateEvent做准备。
title : "HTML 5 History API simple demo",
url : "yourpage"};
history.replaceState(state, "HTML 5 History API simple demo", "yourpage");
State Event
既然有无刷新改变URL的方法,当然也要有响应这个改变的时间啦。
嗯,没错。就有一个popstate事件,而传入的handler函数有一个参数,就是之前在pushState的第一个参数,一个State obj。开发者可以通过这个State obj来识别行为。详细代码如下:
var state = { //这里可以是你想给浏览器的一个State对象,为后面的StateEvent做准备。
title : "HTML 5 History API simple demo",
url : "yourpage"
};
history.pushState(state, "HTML 5 History API simple demo", "yourpage");
window.onpopstate = function (e) { document.title = e.state.title;}
当然还可以这样:
var state = { //这里可以是你想给浏览器的一个State对象,为后面的StateEvent做准备。
action : "page",
title : "HTML 5 History API simple demo",
url : "yourpage"
};
history.pushState(state, "HTML 5 History API simple demo", "yourpage");
window.onpopstate = function (e) {
switch (e.state.action) {
case "home" :
document.title = "HOME ……";
$.get("index.php").done(function (data) { $("#wrapper").html(data); });
break;
case "page" :
document.title = e.state.title;
$.get(e.state.url).done(function (data) { $("#wrapper").html(data); });
break;
}
}
onpopstate 要配合pushState|replaceState一起使用时才有作用;就是说不是通过这两个方法修改的后退|前进是捕捉不到这一事件的
- 无刷新更新地址 history.pushState/replaceState 方法
- HTML5 API—无刷新更新地址 history.pushState/replaceState方法(例子)
- HTML5 API——无刷新更新地址 history.pushState/replaceState 方法
- Html5无刷新修改Url,history pushState/replaceState
- HTML5无刷新修改Url,history pushState/replaceState
- history.pushState() 和 history.replaceState() 方法
- HTML5新增的history.replaceState()/pushState(),实现无刷新修改url
- (一)HTML5 - pushState 无刷新更新地址
- history.pushState无刷新改变url
- HTML5 history新特性pushState、replaceState
- ajax与HTML5 history pushState/replaceState实例
- ajax与HTML5 history pushState/replaceState实例
- HTML5 history新特性pushState、replaceState
- Ajax与HTML5 history pushState/replaceState实例
- ajax与HTML5 history pushState/replaceState实例
- ajax与HTML5 history pushState/replaceState实例
- ajax与HTML5 history pushState/replaceState实例
- ajax与HTML5 history pushState/replaceState实例
- 20130826-20130827学习日记
- MediaPlayer
- BaserPage里判断Session
- 调用系统自带设备
- 数据库学习9-同义词,视图,索引
- 无刷新更新地址 history.pushState/replaceState 方法
- Android Handler 源码流程分析
- 【HDU】4850 Wow! Such String! 提出猜想题
- 快速理解Linux的压缩命令
- 数据库学习10-游标
- 20130828学习日记
- Listview异步加载图片之优化篇
- python学习1-pycharm安装问题
- Oculus VR收购游戏开发引擎:筹划虚拟现实游戏