META要素の記述順に制約があることを知った
レンダリングエンジン指定のMETA要素の記述について、実は、記述の順番に制約があることがわかったのでメモしておく。
レンダリングエンジンの指定方法には以下の2つがある。
- 各ページにMETA要素として記述
- HTTPレスポンスヘッダに記述
上記META要素の記述順に制約がある旨、MSDNのサイトに記載されているので、以下に引用する。
次の HTML META タグを各 Web ページの HEAD 要素に指定します (TITLE タグまたは META タグ以外のタグの前)。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>現在のサイトを解決する方法 | Microsoft Docs
上記によると、レンダリングエンジン指定のMETA要素については、TITLE要素内で下記要素を除く全ての要素より前に記述しなければならない。
- TITLE要素
- META要素
実際、LINK要素を前に記述した場合、レンダリングエンジンの指定は適用されなかった。
なぜ上記の順序制約があるのかと調べていたところ、下記のサイトに辿り着いた。
上記サイトを要約すると、以下となる。
- (IEは、HTMLツリーを左から深さ優先の順で評価する)
- レンダリングエンジン指定のMETA要素を評価した時に、レンダリングエンジンを再起動する
- TITLE要素、META要素以外の要素を最初に評価した時に、(レンダリングを実行するために、)レンダリングエンジンを決定する
- 一度レンダリングエンジンを決定すると、他のレンダリングエンジンに変更することはできない
なるほど、メタ的な設定であれ、HTMLツリー内にある以上は上から順次評価されるということか。
・・・これ以上は何も言うまい。