http://example.com/#foo
「 」メソッドでウェブページの一部を参照したい場合、
<h1><a name="foo"/>Foo Title</h1>
または
<h1 id="foo">Foo Title</h1>
どちらも機能しますが、同等でしょうか、それとも意味上の違いがあるのでしょうか?
ベストアンサー1
HTML 5仕様によれば、5.9.8 フラグメント識別子への移動:
HTML ドキュメント (および text/html MIME タイプ) の場合、ドキュメントの指定された部分が何であるかを判断するには、次の処理モデルに従う必要があります。
- URL を解析し、fragid を URL の <fragment> コンポーネントとします。
- fragid が空の文字列の場合、ドキュメントの指定された部分はドキュメントの上部になります。
- DOM 内に fragid とまったく同じ ID を持つ要素がある場合、ツリー順序で最初の要素がドキュメントの指定された部分になります。ここでアルゴリズムを停止します。
- DOM 内に、値が fragid とまったく同じ name 属性を持つa要素がある場合、ツリー順序で最初のそのような要素がドキュメントの指定された部分になります。ここでアルゴリズムを停止します。
- それ以外の場合、ドキュメントの指定された部分はありません。
つまり、 を探しid="foo"
、 をたどります。name="foo"
編集: @hsivonen が指摘したように、HTML5 ではa
要素に name 属性はありません。ただし、上記のルールは他の名前付き要素にも適用されます。