2012-05-22 116 views
1

这可能听起来像重复,但我已经通过论坛搜索问题,我还没有找到我在找什么。HTML5历史API实施

因此,我一直在阅读一段时间,我仍然无法决定如何处理下一种情况。我正在建立一个需要平滑用户界面的单页网站(而不是我的第一个网站),所以我决定使用AJAX加载页面以获得更好和更友好的导航。

我一直在使用:SmartAjax;一段时间,这对我来说已经够好了。它很好地工作,我没有问题,但它有处理很多JavaScript作为回调的问题。在贯穿整个网站时,还有很多工作要做。

因为现在HTML5比一年前更稳定,而且大多数功能都在大多数浏览器中工作(但有些仍然需要使用polyfill),所以我决定开始使用HTML5 History API。很多网站都使用它,这样做很容易,但有些方面我不明白。

因此这里我想知道它是什么:

  • 是由所有的浏览器现在支持的,也是最重要的,将触摸设备和移动设备支持呢?
  • 有没有特殊的图书馆或框架?
  • 是否可以安全地用于小型网站(最多6页),但有很多JavaScript?
  • 它与jQuery插件结合使用时表现如何?
  • hashbang和哈希呢?是不是跟使用History API一样?有什么区别?

我将不胜感激所有关于上述观点的帮助和信息。

回答

3

浏览器支持

Forget it。即使IE 9支持history.pushState。移动浏览器也不是很安全。但是有一个库(见下文)使开发人员对这种不兼容性完全透明。

图书馆

那么,在纯HTML 5的环境中,历史API是非常简单的。对于其他人,在history.js库已经得到相当一些关注,再加上它提供了一个自动退回到旧的哈希写

在小网站

嗯,你最好有你的JavaScript和你的潜在的国家组织,然后。但如果是这样,我看不出什么问题。

历史&的jQuery插件&

我已经使用了两人在一起的几个项目现在。我还没有发现使用jQuery和jQuery插件的问题,当然除了与注入的HTML相关的典型问题(即,事件处理程序必须反弹; $(document).ready()可能会或可能不会在某些环境中工作等)。

散列与history.pushState

哈希符号已被用来作为一种解决方法(或现在,回退)。使用history.pushState时不再需要。

我发现的主要区别在于,地址栏中的URL总是可以直接被服务器理解,尤其是书签或链接共享的目的。如果您有http://example.org/#/my/fancy/site,那么您的索引页必须解析哈希(通过javascript,因为您无法访问哈希服务器端),然后注入/重定向到my/fancy/site

但是,如果使用history.pushState,浏览器的地址栏会显示http://example.org/my/fancy/site - 它可以直接路由。

(和,试想通过电话拼出一个哈希或哈希爆炸网址的人!)

。希望澄清一些或历史你的疑惑!我可以强烈推荐History.js作为图书馆的选择。

1

我更喜欢使用支持HTML5的浏览器(所有当前浏览器和即将推出的IE10)的HTML5历史记录,并且对于较旧的浏览器只使用静态(非Ajax)链接。随着浏览器的更新,您的网站会自动变得更好。

由于哈希的严重缺点(例如,没有包含URL的哈希部分的无意义查阅引用,因此使得统计信息相当无用),我不会推荐使用哈希聚合填充。