2

假设我有以下标记:

<div id ="About" style="height: 2000px">
    About
</div>
<div id="Work" style="height: 2000px">
    Work
</div>

当我运行location.hash = 'Work';浏览器时,会直接跳到“工作”元素的位置。我期待具有名称属性的锚标记的行为。但在我们的例子中,它是一个div带有 ID 的容器。我在 IE8/9 和 Chrome 中对此进行了测试。

为什么浏览器div在更改哈希时会跳转到容器?

为了您的方便,我打开了一个jsFiddle

4

2 回答 2

2

它不仅仅是带有名称属性的锚点,任何带有 ID 的东西都可以使用 location.hash 或只是 URL 中的 #Work 跳转到。

比如点击这里#show-editor-button会带你到这个页面中的id

于 2012-11-02T09:53:42.130 回答
1

这是一个特点。它是这样设计的,您可以在rfc2854中了解它。让我为你引用它:

片段标识符

URI 规范 [URI] 指出,片段标识符(“#”之后的 URI 的一部分)的语义是
检索操作产生的数据的属性,并且片段标识符的格式和
解释取决于检索结果的媒体类型。

对于标记为 text/html 的文档,片段标识符
指定了相应命名的元素;任何元素都可以
用“id”属性命名,A、APPLET、FRAME、IFRAME、IMG 和
MAP 元素可以用“name”属性命名。这在 [HTML40] 第 12 节中有详细描述。

于 2012-11-02T09:58:53.720 回答