0

你们都知道如何使用那些 300 毫秒的触发器来构建 AJAX 站点,以检查 URL 中的锚点(哈希链接),然后使用 AJAX 加载正确的页面。但是,这些锚链接对搜索引擎来说毫无意义 =(

我想过做一些解决方法。所有 JS 代码都保持不变,但是,这个小东西(我使用 JQuery,抱歉):

$('a').live("click",function(){
    var lnk = $(this).attr("href");
    document.location.hash = lnk;
    return false;
})

然后,将正文中的锚链接替换为普通链接,为非 JavaScript 用户和搜索引擎构建相应的普通页面(仍然包含所有 JS 代码)。对于普通访问者,您可以将普通链接即时转换为哈希值并立即加载 AJAX 内容。对于那些试图加载通过搜索引擎找到的某些页面的人 - 他们会,之后访问者将继续使用 ajax 导航......不知何故(请记住,那些普通的直接页面仍然包含 JS 代码)。

我只是想确保我的假设是正确的。他们是吗?

更新:不好的是,当用户使用 for ex 直接进入一些内部页面时。/portfolio地址,然后他会继续使用/portfolio#contacts或类似的 URL,这些 URL 不是很漂亮,但仍然有效(我的意思是/portfolio#contacts会显示联系人)。

4

3 回答 3

1

这似乎不是一个好方法,主要是因为您最终会为click每个链接的事件触发该功能,即使是那些您不想使用 AJAX 方法加载内容的链接,例如链接到其他网站或到javascript:....

如果您将所有 AJAX-y 链接放在同一个类下或使用另一个属性来区分它们,然后调整您在那里使用的 jQuery 选择器,那么它将起作用,这将是一个好方法,因为它不仅会对 SEO 友好,但它也提供了优雅的降级,也就是说,即使您的用户在不允许使用 JavaScript 的环境中运行,他们仍然可以访问内容。

除此之外,如果 SEO 是您唯一关心的问题,您可以在网上搜索sitemap.xml文件是什么以及如何使用它。维基百科上有一篇文章可能值得一读。

于 2009-11-11T18:57:30.763 回答
0

听起来很不错...只是我建议您的 300 毫秒计时器上的回调也可以在您上面的事件中调用,这样您在单击链接时会立即获得结果(并且用户也可以转到地址栏中的链接并获得相同的效果)

于 2009-11-11T18:54:00.887 回答
0

嘿,伙计,你可能想看看jQuery Ajaxy。它优雅地将网站升级为丰富的 ajax 应用程序,因此您的网站仍然适用于 SEO 和 Javascript 禁用用户。

您可以在即将推出的网站中看到此功能的实际应用。请注意,如果网站不是 Ajax 应用程序,所有链接都将是相同的 - 如果您右键单击并在新窗口中打开,它们仍然有效!

此功能在其演示页面中有详细说明。您还可以在此处找到其他示例和使用说明: http ://www.balupton.com/sandbox/jquery-ajaxy/demo/

总体而言,使用它非常简单和直接(特别是考虑到它允许您做什么!),并且支持非常棒。

于 2010-08-05T18:26:10.467 回答