【问题标题】:System to handle hash tags for tab content? (!#)处理标签内容标签的系统? (!#)
【发布时间】:2011-04-27 04:51:20
【问题描述】:

我正在处理的网站的主要部分有四个页面,并带有用于在它们之间切换的选项卡。我希望 4 个选项卡之间的切换是一个淡入淡出的过渡(使用 jQuery)。这一切都很好而且很花哨,但我也希望 SEO 将每个页面视为一个单独的页面。我还希望能够链接到一个 URL 并让它提取正确的内容,即使它在技术上是同一个页面。

Facebook 会这样做(facebook.com/#!/another-string-here),你可以在图片之间切换等等,所以它有点像 javascript 查询字符串。

这允许立即切换,能够链接到它,但每个都充当自己的页面。

有没有推荐的方法来做到这一点?


更新我发现的最好的是 SammyJS——尚未实现,但它看起来是最好的答案: http://sammyjs.org/

【问题讨论】:

    标签: php javascript jquery hashtag


    【解决方案1】:

    这两种方式都是不可能的(facebook 方法和 SEO),因为服务器不会收到哈希标签,并且大多数搜索引擎(谷歌等)不运行 javascript。

    现在如果你只是想要淡入淡出的效果,你可以这样设置,如果url中有hash标签,例如#fade,jquery会将不透明度设置为0,等待加载并淡入。要获得淡出,您在链接上设置事件侦听器,e.preventDefault()return false 在该函数中,并淡出不透明度。完成褪色后,您将 javascript 更改为带有哈希 #fade 的新页面 location.href="site"

    编辑:例如:http://fiddle.jshell.net/msm595/u5Eg2/3/show/light/

    【讨论】:

    • 这不是不可能的。您可以同时允许哈希 URL 和普通 URL(例如 example.com/somepage AND example.com/#!/somepage)。这样,启用 JavaScript 的客户端将获得带有淡入淡出等所有功能的 Ajaxy 版本,而未启用 JavaScript 的爬虫和客户端仍然能够访问页面。
    【解决方案2】:

    假设您有一个名为services 的基本页面,该页面有两个选项卡:designdevelopment(只是为了简化)。因此,如果您的域是 example.com,则单击“设计”选项卡时的哈希 URL 将类似于 http://example.com/services#!/design,并且在开发中类似。我假设你知道怎么做。

    要让搜索引擎识别标签,您要做的是制作每个页面的静态版本。所以你会在http://example.com/services/design 有一个,在http://example.com/services/development 有一个。每个选项卡的href 属性实际上将指向这些静态页面,但您需要将 onclick 处理程序附加到每个选项卡以使其转到哈希版本。

    这样,启用 JavaScript 的客户端将获得带有哈希标记和淡入淡出效果的 Ajaxy 版本的页面,而未启用 JavaScript 的客户端(包括网络爬虫)将看到正常的静态链接,并且每个人都会获胜。


    郑重声明,这与 Facebook 的做法类似。他们更进一步,在支持它的浏览器中使用 HTML5 的新 history.pushState() 函数,以完全消除对哈希标签的需求。 (有关更多信息,请参阅this question。)

    【讨论】:

    • 感谢该问题的链接,它提供了有关 Google 如何读取 ajax 内容的哈希标签以及如何使其正常工作的链接。
    猜你喜欢
    • 2010-10-07
    • 2013-10-07
    • 2020-10-18
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多