Hashtags(片段标识符)VS Javascript History API

时间:2012-02-23 06:50:17

标签: javascript api github browser-history html5-history

哪一个更好?使用片段标识符......

http://www.alinkthatdoesnotwork.com/#!/dir1/dir2/file.html

...或新的Javascript History API?

https://github.com/examplethatdoesnotwork/project/src/script.js

或者我应该同时使用两者? (通过后备)

方面:

  • 兼容性/支持
  • 速度
  • 便利

5 个答案:

答案 0 :(得分:2)

Hashtags是一种在Twitter上对内容进行分类的方法,你的意思是片段标识符。

使用片段标识符来指示通过Ajax加载的内容是一个糟糕的主意。它们是fragile, search engine unfriendly (except with more hacks on both sides) and depends on JavaScript的黑客。

历史API是一个强大的系统,实际上是为完成这项工作而设计的。唯一的问题是browser support,但是(与片段标识符方法不同)它优雅地降级为将直接传递给您的服务器的真实URI(what Github does)。

甚至Twitter似乎都是about to switch to the history API

答案 1 :(得分:1)

历史API非常受欢迎,只要普通链接在不支持它的浏览器中正常工作。

您可以使用History.js等库在这些浏览器中启用它。

此处提供了更多信息:It's About The HashbangsSide Effects of Hash-Bang URLs

简而言之,URL非常重要。网址是永远的,酷网址不会改变,最后:一旦你做好了,你就不能回去了。

答案 2 :(得分:1)

新的历史记录方法对AJAX导航非常有用。例如,pushState或replaceState允许您更新浏览器的地址栏,以便用户看到一个干净的URL而不是一个丑陋的hashtag事物。

但是,我确信你知道,对新API的支持仍然有限。此时,location.hash得到了更广泛的支持,这意味着你必须为那些无法利用更新的window.history东西的浏览器编写一个哈希回退。

答案 3 :(得分:0)

我认为问题是什么是支持。您目前不能单独使用History API,因为IE不支持它。你需要一个像GitHub那样的后备解决方案。

答案 4 :(得分:0)

您已将“兼容性”列为第一个标准。由于历史API isn't yet supported by all major vendors(我在看你,微软),甚至在他们最近的版本中都没有(IE9没有它),这几乎意味着你必须使用哈希。 (这太糟糕了,但我们确实如此。)而且不仅仅是微软,很多移动设备都使用移动浏览器的一个或两个版本,所以仍然没有。