我正在使用Ajax和哈希进行导航。
有没有办法检查这种window.location.hash
变化是否?
http://example.com/blah #123到http://example.com/blah #456
如果我在加载文档时检查它,它将起作用。
但是,如果我具有基于#hash的导航,则在按浏览器上的“后退”按钮时将不起作用(因此我从blah#456跳到blah#123)。
它显示在地址框中,但我无法用JavaScript捕获它。
我正在使用Ajax和哈希进行导航。
有没有办法检查这种window.location.hash
变化是否?
http://example.com/blah #123到http://example.com/blah #456
如果我在加载文档时检查它,它将起作用。
但是,如果我具有基于#hash的导航,则在按浏览器上的“后退”按钮时将不起作用(因此我从blah#456跳到blah#123)。
它显示在地址框中,但我无法用JavaScript捕获它。
另一个不错的实现是jQuery历史记录,如果浏览器支持它,它将使用本机onhashchange事件;否则,它将为浏览器使用适当的iframe或间隔,以确保成功模拟所有预期功能。它还提供了一个绑定某些状态的好接口。
另一个值得注意的项目是jQuery Ajaxy,它是jQuery History的扩展,可以将ajax添加到混合中。当您开始使用带有哈希值的ajax时,它变得相当复杂!
可以在http://code.google.com/p/reallysimplehistory/中找到不错的实现。它具有的唯一(也是)问题和错误是:在Internet Explorer中,手动修改位置哈希将重置整个历史记录堆栈(这是浏览器问题,无法解决)。
请注意,Internet Explorer 8确实支持“ hashchange”事件,并且由于它已成为HTML5的一部分,因此您可能会期望其他浏览器跟上。
从3.6开始,Firefox发生了一次onhashchange事件。参见window.onhashchange。
HTML5 指定一个hashchange
事件。所有现代浏览器现在都支持此事件。在以下浏览器版本中添加了支持:
Ben Alman有一个很棒的jQuery插件可以解决这个问题:http : //benalman.com/projects/jquery-hashchange-plugin/
如果您不使用jQuery,则可能是一个有趣的解剖参考。
我使用了一个jQuery插件HUtil,并在其顶部编写了一个类似UI 的YUI历史记录。
检查一次。如果您需要帮助,我可以提供帮助。