2012-01-24 28 views
1

我有类似这样的标记上somepage.html:<a>锚/片段标识符似乎不工作

<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> 

然而,当我点击这些链接我没有看到预期的行为之一 - 在页面加载正常,但窗口不符合这些div的scrollTop的。我尝试过改变ID,因为他们在连字符开头,这没有任何区别 - 我也尝试改变ID是什么元素,即改变了<h1>有ID,然后改变了<h1>来锚,但没有运气。

当我已经在页面上时,如果我编辑hasthag并按回车键,它会按预期工作 - 将窗口的scrolltop更改为带有hashtag ID的元素,但不刷新页面 - 但它不会在第一次击中工作。

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

编辑:

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

更新: 这工作正常,如果我启用JavaScript - 这正是当它不需要工作。 我有这个作为没有javascript /禁用js的用户的捕获。跆拳道,火狐?

+3

我假设'#hashtag1'上的第二个和第三个内容链接是一个错字? – Curt

+1

@Curt是啊,发现 - 我会更新的问题 – jammypeach

+3

#标签是一个Twitter的事情,这些都是[片段标识符(URI中)(http://en.wikipedia.org/wiki/Fragment_identifier)和[锚(在HTML文档)](http://www.w3.org/TR/html4/struct/links.html#h-12.2.3) – Quentin

回答

3

鉴于你的具体的例子,在我看来,当页面已经足够长,需要滚动的scrollTop的唯一变化。

当所有的内容都在看,scrollTop的位置保持在文档的顶部然而,当页面需要一些滚动,在滚动scrollTop的尽可能的文件已经可以滚动。

如果滚动到所需的ID没有超过可能的滚动位置总数,那么相关元素将在页面顶部显示,否则文档将只滚动到最大值(根据其内容)。

+0

+1为有洞察力/横向思维的答案 - 然而在我得到这个页面上,内容足够长,足以滚动。另外,如果我在加载页面后编辑锚点,它会像我期望的那样滚动 - 它只是在请求页面时发出此问题。 – jammypeach

+0

谢谢。是否有可能看到有问题的页面? –

+0

对不起,这是我为客户工作的网站的一部分。我意识到这很难,但我现在不适合现在生活 – jammypeach

-5

#标签不id的工作。你必须把a这样的标签:<a name="foo"></a>。然后你可以使用<a href="#foo">go to foo</a>链接到它们。同样适用于多个页面之间的链接。

+4

这是完全不正确的 –

+2

你必须回到Netscape 4找到一个不支持[这部分规范](http://www.w3.org/TR/html4/struct/links.html#h-12.2.3)。 – Quentin