当人们想用“http://example.com/#foo“方法,应该使用

<h1><a name="foo"/>Foo Title</h1>

or

<h1 id="foo">Foo Title</h1>

它们都有效,但它们是相等的,还是有语义差异?


当前回答

<h1 id="foo">Foo Title</h1>

是应该使用的。除非你想要链接,否则不要使用锚点。

其他回答

注意JavaScript用户:所有ID都成为窗口下的全局变量。

<h1 id="foo">Foo Title</h1>

刚刚创建了JS全局:

window.foo

window.foo的值将是h1的HTMLElement。

除非您能保证id属性中使用的所有值都是安全的,否则您可能更喜欢使用名称:

<h1 name="foo">Foo Title</h1>

根据定义,整个“命名锚点”概念使用name属性。您应该坚持使用名称,但ID属性对于某些javascript情况可能很方便。

就像在评论中一样,你总是可以用两者来对冲你的赌注。

ID方法在较旧的浏览器上不起作用,锚定名称方法在较新的HTML版本中将被弃用。。。我会和id一起去。

旧浏览器使用name属性,新浏览器使用id属性怎么样。将使用这两个选项,默认情况下将实现回退方法!!!

在html5中,id=“”属性定义了元素的唯一标识符,它也是片段链接的锚点。在以前的html标准中,<a>元素的name=“”属性定义片段链接的锚点。我建议使用以下内容:<a name=“foo”id=“foo“></a><h1>foo Title</h1>因为对id=“”属性的支持有点不稳定(尽管所有主要浏览器的最新版本都支持它,但不超过几年的版本[如果没有充分的理由,最好不要破坏])。它是兼容的,它不会对link'd元素中的任何内容进行样式设置,因为闭包</a>仍然在元素之外,但在所有当前标准中仍然有效。

确保<a>元素的name=“”和id=“”属性相同。