这可能听起来像是重复,但我搜索了论坛问题,但我还没找到我想要的东西。
所以,我现在已经阅读了一段时间,我仍然无法决定下一步应该怎么做。我正在构建一个单页网站(不是我的第一个),需要一个流畅的用户界面,因此我决定使用AJAX加载页面以获得更好,更友好的导航。
我一直在使用:SmartAjax;有一段时间,这对我来说已经足够了。它工作得很好,我没有遇到任何问题,但是它在处理大量JavaScript作为回调时遇到了问题。通过整个网站实施它还有很多工作要做。
因为现在HTML5比一年前更稳定,并且大部分功能都在大多数浏览器中运行(但有些仍然需要填充),我决定开始使用HTML5 History API。许多网站使用它并且很容易这样做,但有些方面我不了解它。
因此,我想知道的是:
我很感激所有关于上述要点的帮助和信息。
答案 0 :(得分:3)
浏览器支持
Forget it。甚至IE 9也不支持history.pushState
。移动浏览器也不是很安全。但是有一个库(见下文)使这种不兼容性对开发人员完全透明。
<强>库强>
嗯,在纯HTML 5环境中,历史api非常简单。对于其他人来说,history.js库已经得到了相当多的关注,而且它提供了对旧哈希写入的自动回退
在小型网站上
那么,您最好将JavaScript和潜在的国家组织起来。但如果是这样,我认为没问题。
历史&amp; jQuery&amp;插件强>
我现在已经在两个项目中使用了这两个项目。我还没有发现使用jQuery和jQuery插件有任何问题,除了 - 当然 - 与注入HTML相关的典型问题(即事件处理程序必须反弹; $(document).ready()
在某些环境中可能或可能不起作用等)。
哈希与history.pushState
Hash-Notation已被用作解决方法(或现在,后备)。使用history.pushState时变得不必要了。
我发现主要区别在于,地址栏中的URL始终可以被服务器直接理解,特别是用于书签或链接共享。如果您有http://example.org/#/my/fancy/site,则您的索引页必须解析哈希值(通过javascript,因为您无法访问哈希服务器端),然后注入/重定向到my/fancy/site
。
但是,如果使用history.pushState,浏览器的地址栏会显示http://example.org/my/fancy/site - 可以直接路由。
(并且,想象通过电话向某人拼写哈希或哈希爆炸网址!)
希望通过历史澄清一些或你的怀疑!我强烈建议将History.js作为库的首选。
答案 1 :(得分:1)
我更喜欢将HTML5历史记录用于支持它的浏览器(所有当前浏览器和即将推出的IE10),并且只使用旧版本的静态(非Ajax)链接。随着浏览器的更新,您的网站会自动更好。
由于哈希的严重缺点,我不推荐使用哈希polyfill(例如,不包含URL的哈希部分的无意义引用,因此统计数据相当无用)。