使用Ajax历史记录和书签时,使用&#ddquo;#!”总是好的。而不只是“#”rdquo;?

Facebook在URL中使用
#!
而不仅仅是
#
进行Ajax历史记录(后退和前进按钮)和书签。这样做总是一个好主意,因为我认为通常的锚可能会干扰Ajax历史机制以触发它处理普通锚。 因此,Ajax History函数只在看到
#!
而不是
#
时才处理散列部分。 并且使用
!
与主流浏览器兼容吗?如果Facebook正在使用
!
,那么猜测它可能得到相当好的支持。     
已邀请:
请参阅Google的制作AJAX应用程序可抓取  对于一个可能的用例(不知道这是否是Facebook使用此片段的原因)。     
更新:本文已取代此答案。它讨论了Hashbang(#!),Hashes(#)和HTML5 History API(pushState,popState)和解决方案的问题。 关于您网站的可用性,无关紧要,您可以使用您喜欢的任何内容。 关于搜索引擎优化,拥有它并且没有它都提供了不同的途径。 例如,Facebook使用!根据Google Proposal for Ajax Applications Crawlable。添加!会告诉谷歌它应该收听该ajax请求并将该url添加到搜索引擎结果中。这对于已经实现了ajax的网站来说非常棒,因为您需要做的就是添加! 这样做的缺点是它只能解决使你的ajax可抓取的问题。它没有解决以下问题: 为Ajax和非Ajax用户保持URL清洁和一致。例如。你可能最终得到www.facebook.com/profile.php?pid=123#!profile.php?pid=123 保持非Ajax用户可访问网站。 保持Ajax和非Ajax用户的URL相同。 需要一些非常复杂的服务器端更改,以便在查询字符串方面转义和转换状态。 它与旨在真正解决这些问题的新HTML5 PopState功能不兼容。 对于目前没有使用ajax的网站,由于上述问题,最好不要使用Google Proposal,因为它只适用于像facebook这样疯狂的网站并需要绝望的搜索引擎优化解决方案。有一些替代方案可以解决更多这些问题(现在可以使用HTML5 PopState解决所有问题)。其中一个替代方案是jQuery Ajaxy(如balupton.com上所见),它只需将您的网站升级为ajax应用程序,同时保持Ajax-enabled的丰富和交互体验,并继续为Ajax-Disabled用户完美地工作。     

要回复问题请先登录注册