ファイルに宣言されていない場合でもWebページに暗黙の<head>
タグが含まれています。 getElementsByTagName('head')
が存在しない場合には<head>
タグが返ってきたときに私はちょうど興味がありました。getElementsByTagName( 'head')は、ページにmoreが定義されていても1つのheadを返します。
ただし、ページに複数の<head>
を置いた場合は、統一されたヘッドが返されます。どうしてこれなの?
ファイルに宣言されていない場合でもWebページに暗黙の<head>
タグが含まれています。 getElementsByTagName('head')
が存在しない場合には<head>
タグが返ってきたときに私はちょうど興味がありました。getElementsByTagName( 'head')は、ページにmoreが定義されていても1つのheadを返します。
ただし、ページに複数の<head>
を置いた場合は、統一されたヘッドが返されます。どうしてこれなの?
これは、ブラウザがHTMLを常に「修正」して、常に1つの<head>
を含むためです。さもなければあなたのHTMLは無効です。
HTMLパーサーは、解析とHTML評価のエラーについて非常に寛容であると言われています。あなたが与えるものは何でも、あなたが意味するものに近づこうと間違いなくそれを解析します。だからあなたは1つのヘッド要素を持つことになっています。ブラウザは、実装に応じて正しい形式に変更します。したがって、javascriptを実行すると、修正後に既存のhead
要素が返されます。