【解决】AJAX前进后退按钮失效,及刷新问题的解决方案

 如诸位所知,我们在项目中开发中,会经常用到AJAX异步加载技术,会碰到一个很头疼的问题:浏览器的前进后退按钮失效了,每次页面刷新后都会回到初始页面。

百度上会告诉你各种原因、理论,提到解决方案的时候却都不知所云。
先说说自己解决问题的思考过程,如果看不耐烦的话,可以直接跳到最后的最终解决方案上去~~

点击查看原图

话说是在逛网易博客的时候找到的一个切入点,网易博客同样使用的AJAX进行面板切换的,但页面刷新后并不会回到初始页面,研究它的URL发现
/manage/?fromBlogToolbar#m=0&t=0 ,每次点击切换面板的时候,URL上都会有锚点发生变化(#m=0,#m=1,#m=2...),于是就想,难道锚点能记录当前页面的状态?
自己尝试后发现并不是如此。于是猜测应该是用JS获取了锚点信息再进行了处理。得到了第一个解决思路:

<!-- HTML结构 -->
<li><a href="#1">选项卡1</a></li>
<li><a href="#2">选项卡2</a></li>
<li><a href="#3">选项卡3</a></li>

<script type="text/javascript">
    var m=window.location.hash.split('#');
    m=m[1]?m[1].split('=')[1]:0;//获取到锚点的参数值
    if(m){
        $.post(App_path,{type:type},function(){//将锚点参数提交到后台处理,返回所需信息
            //do some thing here
        })
    }
</script>

如上方案,成功解决了一个问题:页面刷新时回到初始化的问题。因为每次刷新的时候URL锚点还在,每次都会被如上方法解析到。

但浏览器的前进后退按钮功能仍旧无效,虽然地址栏的URL#锚点值在变化,但没有触发上述动作。所以,我们还得想办法获得地址栏URL变化时,浏览器所触发的JS事件,以便绑定相应动作。

 

高版本浏览器有onhashchange事件低版本浏览器可以用Jquery的hashchange插件。这就解决了对前进后退按钮事件的监听问题了。每次URL变化时都会触发hashchange事件
,我们可以根据锚点的变化来触发相应事件。于是得到另一个解决思路:

function hashChange(){
    var m=window.location.hash.split('#');
    m=m[1]?m[1].split('=')[1]:0;//获取到锚点的参数值
    if(m){
        $.post(App_path,{type:type},function(){//将锚点参数提交到后台处理,返回所需信息
            //do some thing here
        })
    }
}
$(window).hashchange(function(){
    hashChange();
})

这样每次地址栏锚点值变化时就会触发相应事件。
如此由AJAX引起的刷新和前进后退按钮的问题就都解决了。

 

 

【参考】:

http://www.open-lib.com/Lib/1278.jsp

http://www.dewen.org/q/1284

http://www.dewen.org/q/341/%E6%B1%82Javascript%E7%9B%91%E5%90%AC%E6%B5%8F%E8%A7%88%E5%99%A8%E5%89%8D%E8%BF%9B%E5%90%8E%E9%80%80%E9%94%AE%E6%94%B9%E5%8F%98url+hash%E7%9A%84%E6%96%B9%E6%B3%95%EF%BC%9F

http://www.cnblogs.com/hust/archive/2011/07/09/2101554.html


阅读本文后,您的心情是:
 
恶心
愤怒
强赞
感动
路过
无聊
雷囧
关注
知识共享许可协议
评论(0) 浏览(15979) 引用(0)
引用地址:http://blog.baiwand.com/tb.php?sc=0dfedd&id=152
Tags:
« 【分享】IE7下 z-index的bug 【解决】PHP为URL地址添加A标签(不提取A和IMG标签内的链接)的解决方案 »

Blogger

  • blogger
  • 天之骄子
  • 职位:研发工程师
    铭言:
    阳光与欢乐同在,
    与我同在
    主页:
    blog.baiwand.com

分类目录

日志归档

主题标签

数据统计

  • 日志:151篇
  • 评论:45条
  • 碎语:264条
  • 引用:0条

链接表

随机日志 »

最新日志 »

最新评论 »

标签云 »

订阅Rss
sitemap