我一直在查找jQuery库中与URL哈希有关的内容,但没有发现好的选择。有一个“history plugin”,但我们都知道它有缺陷并且不够灵活。
我正在将页面加载到一个div中。我需要一种方法来实现url哈希的前进/后退功能。
mydomain.com/#home
mydomain.com/#aboutus
mydomain.com/#register
有哪个最好的库可以处理所有这些?
我一直在查找jQuery库中与URL哈希有关的内容,但没有发现好的选择。有一个“history plugin”,但我们都知道它有缺陷并且不够灵活。
我正在将页面加载到一个div中。我需要一种方法来实现url哈希的前进/后退功能。
mydomain.com/#home
mydomain.com/#aboutus
mydomain.com/#register
有哪个最好的库可以处理所有这些?
我最近看了三个不同的插件 - jquery历史插件,history和jQuery BBQ。
它们都很难设置,虽然我成功地使用了jQuery.history,但在IE7上仍然存在问题。因此,我改用BBQ,在我们所有目标浏览器(IE6、IE7、IE8、Fx3)上都正常工作。
所以我推荐使用jQuery BBQ插件。
编辑:这里是我刚写的一篇博客文章,演示了如何使用jQuery BBQ处理级联下拉菜单的浏览器后退按钮。
你尝试过jQuery Address吗?这是由Asual团队开发的,他们还制作了SWFAdress。Asual - jquery Address
jQuery Address插件提供了强大的深度链接功能,允许创建指向网站部分或应用程序状态的唯一虚拟地址。
History.js 得到了很好的文档记录和维护,并支持所有浏览器。
https://github.com/browserstate/history.js
来自网站:
History.js 在所有浏览器中优雅地支持 HTML5 History/State API (pushState、replaceState 和 onPopState),包括对数据、标题和 replaceState 的持续支持。它支持 jQuery、MooTools 和 Prototype。 对于支持 HTML5 的浏览器,这意味着您可以直接修改 URL,而无需再使用哈希。 对于 HTML4 浏览器,它将恢复使用旧的 onhashchange 功能。
我在reallysimplehistory(原名dhtmlHistory)方面运气不错。它不是特定于jQuery的,但它可以在IE、Firefox和Webkit中工作,并且不需要太多设置。
据我所知,所有历史记录插件都做同样的事情:
setInterval(function() {
if(theHashChanged) {
someFunction(oldHash,newHash);
}
}, 500/*whatever*/);
那基本上就是它的核心(减去添加历史记录条目的浏览器 hack 等)。它总是会有 bug,因为它有点像 hack,并且没有适用于处理历史更改的跨浏览器 API。
除此之外,这种类型的用户体验也不是很好。用户不知道他们必须点击4次返回按钮才能离开页面。