<a> anchors / fragment identifiers don&#39;t seem to work</a>

时间:2012-01-24 14:25:20

标签: html anchor

我在somepage.html上有这样的标记:

<div class='someclass' id='hashtag1'>
  <h1>somecontent</h1>
</div>
<div class='someclass' id='hashtag2'>
  <h1>somecontent</h1>
</div>
<div class='someclass' id='hashtag3'>
  <h1>somecontent</h1>
</div>

这样的链接在另一个页面上(让我们称之为someotherpage.html):

<a href='somepage.html#hashtag1'>first content div</a>
<a href='somepage.html#hashtag2'>second content div</a>
<a href='somepage.html#hashtag3'>third content div</a>

然而,当我点击其中一个链接时,我看不到预期的行为 - 页面正常加载,但窗口的scrollTop与这些div不匹配。我已经尝试更改ID,因为它们在开始时有连字符,这没有任何区别 - 我也尝试更改ID所在的元素,即更改<h1>以获取ID ,然后将<h1>更改为锚点,但没有运气。

当我已经在页面上时,如果我编辑hasthag并按Enter键,它会按预期工作 - 将窗口的scrolltop更改为带有#标签ID的元素,而不刷新页面 - 但它没有'在第一次打击时工作。

我错过了一些明显的东西吗?

编辑:

  • 在Mac OSX上使用FF 9.0.1
  • 使用Web开发人员工具栏
  • 关闭了JS
  • 更改或删除CSS似乎没有任何区别

更新: 如果我启用javascript,这可以正常工作 - 这正是它不需要工作的时候。 我有这个作为没有javascript /禁用js的用户的捕获。 WTF,firefox?

2 个答案:

答案 0 :(得分:3)

根据您的具体示例,在我看来,只有当页面已经足够长才需要滚动时,scrollTop才会发生变化。

当所有内容都在视图中时,scrollTop位置保留在文档的顶部,但是当页面需要一些滚动时,scrollTop会滚动到文档已经滚动的位置。

如果滚动到所需的ID不超过可能的总滚动位置,则相关元素将显示在页面顶部,否则文档将仅滚动到它的最大值(基于其内容)。

答案 1 :(得分:-5)

Hashtags不适用于id。您必须放置a标记,如下所示:<a name="foo"></a>。然后,您可以使用<a href="#foo">go to foo</a>链接到它们。同样适用于多个页面之间的链接。