5

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

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

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

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


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

4

2 回答 2

1

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

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

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


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

于 2010-10-18T22:46:58.360 回答
0

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

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

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

于 2010-10-18T22:31:52.047 回答