哪一个更好?使用片段标识符......
http://www.alinkthatdoesnotwork.com/#!/dir1/dir2/file.html
...或新的Javascript History API?
https://github.com/examplethatdoesnotwork/project/src/script.js
或者我应该同时使用两者? (通过后备)
方面:
答案 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 Hashbangs,Side 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没有它),这几乎意味着你必须使用哈希。 (这太糟糕了,但我们确实如此。)而且不仅仅是微软,很多移动设备都使用移动浏览器的一个或两个版本,所以仍然没有。