[size=large]尽管是上面讲到的《JavaScript高级程序设计》(第二版)中提到,BOM中的location.path/query……(window.location)在通过JavaScript更改以后,浏览器都会通过刷新来到达你更改后的URL(location的意思就是位置。。)
而在JavaScript MVC开始流行之后,通过刷新来修改URL的方法,不禁让人感到烦躁。然而HTML5中就制定了一个这样的API,可以通过方法的方式来修改URL,而又不会使浏览器刷新,就是History API。
熟悉JavaScript开发的同学,对History肯定不会陌生,其中最经典的方法就是go,通过第一个类型为整数的传输参数,可以使浏览器到达当前页面之前或之后,曾经浏览过的页面。当然,这个也是要刷新来实现的。
现在History API新增了两个方法,分别是pushState和replaceState,其实用法都一样,看Mozilla的文档也没看到它们有多大不同,哈哈。
用法如下:
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;
}
}
上面这个是结合pushState和Ajax做的一个导航相应器(Navigation Handler),其实已经有一个不错的jQuery插件了,jQuery-Pjax(pushState and Ajax)。[/size]
转载
http://hi.baidu.com/kooboy/item/d0138bd2276d9d16d90e44b1
分享到:
相关推荐
HTML5的History API提供了pushState和replaceState两个方法,可以解决这个问题。 一、HTML5 History API HTML5的History API提供了对浏览器历史记录的访问和操作能力。它提供了pushState和replaceState两个方法,...
本篇文章介绍的是利用AJAX技术和HTML5中新增的History API中的history.pushState和history.replaceState方法,实现在不刷新页面的情况下改变浏览器的URL地址。下面将详细介绍这些技术的具体用法和应用场景。 ### ...
window.history.back();...history.pushState与history.replaceState history.pushState会增加一条历史记录, history.replaceState会替换而不会增加,所以会更舒适一点。 以上所述是小编给大家介绍的HTML
history.pushState 和 history.replaceState 可以在不刷新当前页面的情况下更改URL,但是这样就无法获取通过AJAX得到的新页面的内容了。 虽然各种HTML5文档说 [removed] 事件可以拦截 pushState 的消息,但在实际的...
`pushState`和`replaceState`是两个核心的方法,它们允许我们在不刷新页面的情况下修改浏览器的URL和历史记录。 1. `history.pushState()`方法: `pushState()`用于向浏览器的历史记录栈中添加一个新的状态(state...
使用 HTML5 的 History API,特别是 pushState 和 replaceState 两个方法,可以实现无刷新改变页面 URL。 History.pushState(state, title, url) 将当前 URL 和 history.state 加入到 history 中,并用新的 state ...
HTML5引入了新的History API,包括`history.pushState()`、`history.replaceState()`以及`window.onpopstate`事件,这些API允许我们在不重新加载页面的情况下改变浏览器的URL,提供更好的用户体验。然而,不是所有...
这两个方法是HTML5的History API的一部分,主要用于实现单页应用(SPA)中的无刷新导航。 一、`pushState()`方法 `history.pushState(stateObj, title, url)`用于在历史记录中添加新的条目。参数说明如下: 1. **...
尽管也存在一些,但由于您只能使用本机HTML5 History API,因此它们相对较小。 如果您打算支持旧版浏览器,那么可以使用History.js。 该通知位于此处,因为History.js没有获得足够的资金来维护,因此它仅在旧版...
3. **兼容不支持HTML5 History API的浏览器**:对于不支持`pushState`的旧版浏览器(如IE9及更早版本),使用第三方库(如History.js)来模拟类似的功能。这里使用`History.pushState`方法来达到相同的效果。 4. **...
5. **改变URL**:利用`pushState`或`replaceState`方法,将新的URL添加到浏览器历史记录中。URL应反映当前选中的Tab,如`#tab1`或`#tab2`。 ```javascript var currentState = window.history.state; if (current...
使用pushState和replaceState方法时,浏览器并不会立即加载对应的URL,而是更新地址栏中的URL,这意味着开发者可以使用这些方法来创建一种伪URL,从而不触发页面加载。在单页面应用中,这可以用来模拟页面的导航。 ...
首先,History API包括三个主要方法:`pushState()`, `replaceState()`和`popstate`事件。这些方法允许开发者在不重新加载页面的情况下改变浏览器的URL,提供了一种创建单页应用(SPA)的强大工具。 1. **`push...
3. 配置SPA:在前端代码中,正确使用History API,例如通过`history.pushState()`或`history.replaceState()`更改URL。 4. 访问SPA:现在,SPA可以通过`history-server`启动的服务器地址进行访问,即使直接输入SPA...
为了改善用户体验,HTML5引入了一个新的API——History API,它包括`history.pushState`和`history.replaceState`两个方法,用于管理浏览器的历史记录。本文将详细介绍如何利用这些技术解决AJAX页面的前进后退问题。...
可以完全按照例如Dive Into HTML5书( )或History API规范( )中的描述使用该库 )。 您可以使用以下命令安装此插件: npm install html5-history-api 浏览器支持: history.js -IE8 +和其他浏览器 history....
总结起来,HTML5的`pushState`和`popstate`提供了无刷新改变URL的能力,结合`history`对象的其他方法,开发者可以创建出更加丰富的用户体验,如单页应用(SPA)中的导航和历史管理。理解并熟练运用这些API,能有效提升...
H5,即HTML5,引入了一些新特性来帮助开发者实现这一目标,其中最关键的是History API和PushState方法。接下来,我们将详细讨论如何利用这些技术实现无刷新更换URL以及特定情境的历史返回。 1. History API: ...