@j08691 が説明しているように、ネストされたa
要素は HTML 構文では禁止されています。HTML の仕様には理由が書かれていません。彼らはルールを強調しているだけです。
実用的な面では、ブラウザは解析ルールでこの制限を効果的に適用するため、他の多くの問題とは異なり、仕様に違反しても機能しません。パーサーは、新しい要素を開始する前に、開いている要素を暗黙的に終了するものとして<a>
、開いている要素内の開始タグを効果的に扱います。a
したがって、 と書く<a href=foo>foo <a href=bar>bar</a> zap</a>
と、ネストされた要素は取得されません。ブラウザはそれを として解析し<a href=foo>foo</a> <a href=bar>bar</a> zap
ます。つまり、2 つの連続するリンクの後にプレーン テキストが続くものとして解析します。
ネストされたa
要素には、本質的に非論理的なものはありません。「foo」または「zap」をクリックすると外側のリンクがアクティブになり、「bar」をクリックすると内側のリンクがアクティブになるように実装できます。しかし、私にはそのような構造を使用する理由が見当たらず、おそらく HTML の設計者もそれを理解していなかったので、それを禁止して物事を単純化することにしました。
(ネストされたリンクを本当にシミュレートしたい場合は、通常のリンクを外側のリンクとして使用span
し、適切なイベント ハンドラーを持つ要素を内側の「リンク」として使用できます。または、リンクを複製することもできます<a href=foo>foo</a> <a href=bar>bar</a> <a href=foo>zap</a>
。)