当你想用“http://example.com/#foo“方法,如果需要使用
<;h1>&书信电报;a name=“foo”/>;Foo Title</h1>;
或
<;h1 id=“foo”>;Foo标题(&L)/h1>;
它们都起作用,但它们是平等的,还是有语义上的差异
根据HTML 5规范5.9.8,导航到片段标识符:
对于HTML文档(以及text/HTMLMIME类型),必须遵循以下处理模型来确定文档的指定部分
- 解析URL,并让fragid作为<;碎片>;URL的组件
- 如果fragid是空字符串,那么文档的指定部分是文档的顶部
- 如果DOM中有一个ID完全等于fragid的元素,那么树顺序中的第一个这样的元素就是文档的指定部分;在这里停止算法
- 如果DOM中有一个a元素的name属性的值正好等于fragid,那么树顺序中的第一个这样的元素就是文档的指定部分;在这里停止算法
- 否则,文件中没有指定的部分
因此,它将查找id=“foo”,然后再查找name=“foo”
编辑:正如@hsivonen所指出的,在HTML5中,a元素没有name属性。但是,上述规则仍然适用于其他命名元素