假设我有以下标记:
<div id ="About" style="height: 2000px">
About
</div>
<div id="Work" style="height: 2000px">
Work
</div>
当我运行location.hash = 'Work';
时,浏览器会直接跳到“Work”元素的位置。我期待带有name属性的锚标记的行为。但在我们的例子中,它是一个带有ID的div
容器。我在IE8 / 9和Chrome中进行了测试。
为什么浏览器会在更改哈希值时跳转到div
容器?
为方便起见,我打开jsFiddle。
答案 0 :(得分:2)
这不仅仅是具有名称属性的锚点,任何带有ID的东西都可以跳转到使用location.hash或只是URL中的#Work。
例如,点击here会转到此页面中的ID #show-editor-button
答案 1 :(得分:1)
这是一个功能。它的设计是这样的,你可以在rfc2854中阅读它。让我为你引用它:
片段标识符
URI规范[URI]注意到片段的语义 标识符(“#”后面的URI的一部分)是数据
的属性 检索动作产生的,格式和 片段标识符的解释取决于媒体类型 检索结果。对于标记为text / html的文档,片段标识符为 指定相应命名的元素;任何元素都可以是 以“id”属性命名,以及A,APPLET,FRAME,IFRAME,IMG和
MAP元素可以用“name”属性命名。这是描述的 详见[HTML40]第12节。