关于javascript:投票与隐藏的iFrame进行Ajax历史记录

Polling vs hidden iFrame for Ajax history

背景

检测URL中的哈希值并修复前进/后退按钮是处理Ajax历史记录的库的两个要求。实现这些库有两种思路。您可以让轮询器不断检查URL(错误的浏览器没有onHashChange事件)。或者,您可以使用隐藏的iFrame在浏览器历史记录中添加点。有人可能认为隐藏的iFrame比轮询更好,但是隐藏的iFrame不会更新外部浏览器的URL。因此,如果用户希望在Web应用程序中共享其当前状态,则她将始终在共享其初始状态。

问题

是否有用于Ajax历史记录的技术,既不需要轮询又可以更新主浏览器的URL?


两种技术的结合怎么样?更改网址,以及使用iframe。忽略hashChanged(在良好的浏览器上),仅在dom:ready

上解析哈希码


考虑到您对原始问题的评论,我建议对IE使用iframes方法,对其他浏览器进行轮询。

如果您正在寻找一个专门处理此问题的库,并且想要一个基础来帮助自己开发,请查看《真实简单历史》。

如果您只是在寻找将页面状态保持在Ajax UI中的功能,则dojo会使用dojo.hash()垫片支持此功能。此方法为不支持该事件的浏览器创建onhashchange事件,并管理后退按钮的状态。根据浏览器的不同,它混合使用轮询和iframe(iFrames在IE版本<8中专门使用)。