首页 > Ajax/ 网络技术 > 关于Ajax在浏览器中产生前进后退的实现方法

关于Ajax在浏览器中产生前进后退的实现方法

关于Ajax在使用中要使浏览器产生前进后退的方法,网上比较多的方法有两种:一是采用hash值的方式,这是我们在地图preview版中使用的方法(采用jQuery的history插件);二是使用iframe的方法,目前百度地图、Google地图采用。为使我们以后的mymap方便引用到博客等网页内容中去,并且给地图添加复制链接的方法,我们决定把地图中Ajax在浏览器产生前进后退的方法改变为iframe的方法。

实现的机制

主要使用的两个html:index.html,history.html(iframe src地址)。
主要代码参考index.html以及history.html的js部分:

现在说说实现的方式

Index.html中代码解释:
wHistory.init();
给body插入iframe跟一个表单(主要用于Safari浏览器、或者其他特殊使用,比如复制地址方面,直接取值input的value即可,不需要处理,而取iframe的src还要进行字符串的处理)

判断是否为Safari浏览器,如果是则特殊处理一下,根据不同的浏览器定义main函数

Callback函数处理返回的信息。

History.html中代码解释

对框架中的src进行处理,运行父窗口中的函数wHistory.callback();

测试中使用的浏览器:IE6+ ,FF, Opera10 ,Safari4,chrome欢迎大家测试其他版本的浏览器,发现问题及时提出

演示地址:http://js8.in/mywork/ajax_history_demo

下载地址:http://js8.in/uploads/soft/ajax_history_demo.rar

相关文章

"关于Ajax在浏览器中产生前进后退的实现方法"已有4条评论
    zhilun

    嗯。很好。
    我觉得网上传的方法有两种的说法是不确切的。其实都是需要iframe来触发浏览器的历史,只不过一种用hash明传值,一种不用hash明传值而已。最近看明白了jquery.history那个插件,它创立了一个iframe后,使用这个iframe的document.open和close来触发产生历史。效果跟访问一个转义的history页一样。只不过少了一个页面,更干净。但是实现起来就复杂一点了。
    我这是非专业选手,也是迷迷糊糊
    BTW:我这不访问你blog很慢的样子

    2009年10月31日 11:02 回复 引用

    admin

    blog最近老是挂!免费空间没办法啊

    2009年11月02日 09:15 回复 引用

    路人甲

    我用ff可以,ie8好像不行。

    2010年08月03日 01:27 回复 引用

    天满流云

    为什么在safari里面要特别处理?能详细说明下么

    2012年01月13日 00:02 回复 引用

文明发言,你好我也好
正在提交,请稍后...
返回顶部