动态构建的网页中的后退/下一个按钮(AJAX)

时间:2011-11-17 14:13:51

标签: javascript ajax jquery browser

我的问题是在AJAX(动态)网页上使用(浏览器的)后退和下一步按钮。

我自己提出的解决方案:

setInterval(function(){    
                if (location.hash != hash)
                {
                   hash = location.hash;
                   app.url = window.location.href.toString().replace('http://xxxxx.nl/xxxx/#!/','')
                   app.handleURL();
                }
            }, 500);

此函数读取url(hash)并将其与最后存储的url(hash)进行比较,每0.5秒。如果url已更改(back / next被推送),则运行handleUrl(),它运行更多函数来动态构建我的页面。

问题是,这种工作但是当我点击一个html [A]元素或当我以其他方式更改网址(javascript)时,由于setInterval(),该内容将被加载TWICE ...功能。 如何构建我的HTML / Javascript,使我的内容始终加载一次,

  • 一次当我推回/接下来

  • 一次点击HTML元素/使用Javascript函数 运行

我搜索了谷歌的sh * t以获得解决方案,请帮助!

2 个答案:

答案 0 :(得分:0)

您不需要计时器来检查它。只需使用onhashchange事件,并在调用事件时触发AJAX调用。但是,在8以下的IE版本中不支持此事件,因此如果您需要IE支持,您的方法似乎很好。

另外,它们被a元素调用两次是没有意义的,因为没有理由间隔调用你的AJAX加载器两次因为哈希是用{{1}更改的元素。您可能有一个事件监听器附加到a元素,导致它加载AJAX内容,这是不需要的,因为您检测到散列中的任何更改,无论它如何更改。

答案 1 :(得分:0)

我建议使用一个库。制定自己的解决方案会很棘手。看看这些:

http://www.asual.com/jquery/address/docs/#sample-usage

http://benalman.com/projects/jquery-bbq-plugin/