我在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的元素,而不刷新页面 - 但它没有'在第一次打击时工作。
我错过了一些明显的东西吗?
编辑:
更新: 如果我启用javascript,这可以正常工作 - 这正是它不需要工作的时候。 我有这个作为没有javascript /禁用js的用户的捕获。 WTF,firefox?
答案 0 :(得分:3)
根据您的具体示例,在我看来,只有当页面已经足够长才需要滚动时,scrollTop才会发生变化。
当所有内容都在视图中时,scrollTop位置保留在文档的顶部,但是当页面需要一些滚动时,scrollTop会滚动到文档已经滚动的位置。
如果滚动到所需的ID不超过可能的总滚动位置,则相关元素将显示在页面顶部,否则文档将仅滚动到它的最大值(基于其内容)。
答案 1 :(得分:-5)
Hashtags不适用于id
。您必须放置a
标记,如下所示:<a name="foo"></a>
。然后,您可以使用<a href="#foo">go to foo</a>
链接到它们。同样适用于多个页面之间的链接。