使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL

使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL


2024年6月21日发(作者:)

使用ajax和ate无刷新改变页面内容和

地址栏URL

在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过

ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器的前进和后

退。不禁让人想问,是什么有这么强大的功能呢?

HTML5里引用了新的API,就是ate和eState,就是

通过这个接口做到无刷新改变页面URL的。

与传统的AJAX的区别

传统的ajax有如下的问题:

虽然ajax可以无刷新改变页面内容,但无法改变页面URL

其次为了更好的可访问性,内容发生改变后,改变URL的hash。但是hash的方式不

能很好的处理浏览器的前进、后退等问题

有的浏览器引入了onhashchange的接口,不支持的浏览器只能定时去判断hash是

否改变

再有,ajax的使用对搜索引擎很不友好,往往蜘蛛爬到的区域是空的

为了解决传统ajax带来的问题,HTML5里引入了新的API,即:ate,

eState

可以通过pushState和replaceState接口操作浏览器历史,并且改变当前页面的URL。

pushState是将指定的URL添加到浏览器历史里,replaceState是将指定的URL替

换当前的URL。

如何调用

var state = { title: title, url: , otherkey: othervalue };

ate(state, , url);

state对象除了要title和url之外,也可以添加其他的数据,比如:还想将一些发送

ajax的配置给保存起来。

replaceState和pushState是相似的,不需要多做解释。

如何响应浏览器的前进、后退操作

window对象上提供了onpopstate事件,上面传递的state对象会成为event的子

对象,这样就可以拿到存储的title和URL了。

ntListener('popstate', function(e){ if (){ var state =

; //do something(, ); } }, false);

这样就可以结合ajax和pushState完美的进行无刷新浏览了。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1718906746a2753457.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信