我正在设计一个固定链接系统,我只是注意到Twitter和Hipmunk都将其永久链接加上#!
作为前缀。我想知道为什么会这样,如果感叹号特别是有原因的话。不会#/
同样有效,因为他们毫无疑问使用的框架可以让他们使用正则表达式URL解析器将查询重定向到某些模板吗?
http://www.hipmunk.com/#!BOS.SEA,Dec15.Jan02
http://twitter.com/#!/dozba
我唯一的猜测是因为浏览器使用#
链接到锚元素。这是附加感叹号的原因吗?
答案 0 :(得分:2)
我的猜测是两个页面在他们的JavaScript中使用它来区分#
(一个锚的链接)和他们的自定义#!
,后者使用Ajax加载一些额外的内容。
在这种情况下,几乎所有其他内容都可以在#
符号之后起作用。
答案 1 :(得分:2)
这样做是为了使“AJAX”页面可以抓取[由谷歌]进行索引 - 它不会影响fragment identifier的其他明确定义的语义!< / p>
请参阅Making AJAX Applications Crawlable: Getting Started
简而言之,该解决方案的工作原理如下:爬虫找到一个漂亮的AJAX URL(即包含#!hash片段的URL)。然后,它会以略微修改的形式从您的服务器请求此URL的内容。您的Web服务器以HTML快照的形式返回内容,然后由爬网程序处理。搜索结果将显示原始网址。
我确信其他搜索引擎也遵循此主要/协议。
快乐的编码。
此外,至少每个HTML5,实际上有一个ID为“!foo”的元素是完全有效的,所以 帖子中的推理无效。请参阅文章"The id attribute just got more classy":
HTML5摆脱了对id属性的额外限制。剩下的唯一要求 - 除了在文档中是唯一的 - 是值必须包含至少一个字符(不能为空),并且它不能包含任何空格字符。