使用javascript将hashtag附加到URL

时间:2010-03-02 20:25:47

标签: javascript ajax

我想在不牺牲SEO的情况下建立一个ajax网站。我的问题是: 如果我的页面上有这样的链接:

   <a href="http://example.com/cats" id="cats">Cats</a>
   <a href="http://example.com/dogs" id="dogs">Dogs</a>

...当点击每个链接时,我想用相应的主题标签更新地址栏。因此,如果单击“Cats”链接,则当前位置将为http://example.com/#cats,我可以使用它来显示我的ajax内容。如果javascript关闭或用户是搜索引擎,他们将直接转到/ cats

5 个答案:

答案 0 :(得分:44)

您可以更改location.hash属性,它会更改当前的锚点标识符,而无需从页面导航,例如您可以:

<a href="http://mysite.com/cats" id="cats" class="ajaxLink">Cats</a>
<a href="http://mysite.com/dogs" id="dogs" class="ajaxLink">Dogs</a>

然后:

$('.ajaxLink').click(function (e) {
  location.hash = this.id; // get the clicked link id
  e.preventDefault(); // cancel navigation

  // get content with Ajax...
});​

答案 1 :(得分:16)

如果表单中有感叹号,Google会对哈希进行索引:#!dogs

然后假设这些是面向AJAX的:

答案 2 :(得分:0)

出于安全原因,如果不在javascript中重新加载页面,则无法设置window.location.href。

据我所见,有些人说谷歌将索引#urls,但他们不会被视为单独的页面,我认为这不是你想要的。我对SEO的经验也很少。

答案 3 :(得分:0)

虽然简单性最好,但如果您只想自动执行此过程或使其具有通用性,那么您可以使用此精简插件jquery.hashTag.js

$('a').hashTag({
    source: function() {
      return $(this).attr('id');
    }
  });

只需将此代码段放在$(文档).ready。

它将完成其余的工作。 就像自动点击其ID被提供为哈希的链接一样。

答案 4 :(得分:-1)

BenMills,没有人提到过location.href,它是关于location.hash的,它不需要重新加载页面。