2010-11-17 61 views
5

我想在一个AJAX应用程序中实现一个体面的导航。我现在正在做的是:聪明的方式来管理浏览器历史

  • 每当用户点击一个AJAX链接,相应的调用被执行并且哈希被改变。
  • 无论何时加载新页面,我都会检查哈希是否存在,并进行相应的AJAX调用来更新页面。这可确保书签按预期工作。
  • 每500ms我会检查哈希值是否发生变化并执行相应的AJAX调用。这会照顾用户按下后退/前进按钮,尽管延迟很小。

第三点有点烦人:我宁愿没有每500ms只有一次超时检查哈希,因为大部分时间都会保持不变。

有没有更好的方法来管理呢?我想不出任何替代品,但也许我错过了一些东西。

请不要将我指向现成的解决方案,除非您知道它们基于不同的机制。

回答

5

有一个“hashchange”事件,它将在HTML5中实现。我不确定现在有多好的支持...... IE8支持它,我认为Mozilla在最近的版本中有自己的实现。除此之外,我不害怕。检查exery x ms是每个人都这样做的方式。

+1

IE8,Firefox 3.6,Chrome 4和更新的浏览器支持hashchange事件。 Google's Closure Library(http://closure-library.googlecode.com/svn-history/r8/trunk/closure/goog/docs/class_goog_History.html)和YUI 3(http://developer.yahoo.com/yui/ 3/history /)将尽可能使用此事件,否则将退回到投票计划。 – ide 2010-11-17 11:57:05

0

也许this是一个有趣的阅读,它是一个现成的解决方案,你正在做的确切的事情。 也没有,直到hashchange在每一个浏览器适当的支持(阅读:IE),你必须检查手动

0

使用这个插件:http://www.asual.com/jquery/address/

jQuery的地址插件提供了强大的深层链接功能,并允许创建可指向网站部分或应用程序状态的唯一虚拟地址。它使许多包括重要的功能:

  • 在浏览器书签或社交网站
  • 发送通过电子邮件或即时信使
  • 链接查找使用各大搜索引擎
  • 利用浏览器历史记录具体内容和重新加载按钮
+0

我已明确指出“请不要将我指向现成的解决方案,除非您知道它们基于不同的机制。” – Andrea 2010-11-18 10:16:20

+2

对不起,意大利语是我的第一语言。据我所知,看起来你正在寻找不同的机制。我认为它应该是“请不要将我指向现成的解决方案,除非你知道它们不是基于不同的机制”。我其实觉得我忽略了这句话。 – 2010-11-19 20:36:33

+0

在那里,我投票决定抵消他的粗鲁行为。 :) – 2012-10-04 17:48:12