IE対策の「X-UA-Compatible:IE=edge」は必要か?

htmlヘッダーの見直しをしている際に、理解した内容の覚書です。
次のような記載について考慮している方が対象です。

<meta http-equiv="X-UA-Compatible" content="IE=11">
or
<meta http-equiv="X-UA-Compatible" content="IE=edge">
or
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

「X-UA-Compatible」とは

バージョン8.0以降のInternet Explorerで使用できる互換モードと呼ばれる機能です。IEを「X-UA-Compatible」で指定した互換モードで表示させることができます。

IEは各バージョン毎にレイアウトの癖やJavaScriptの挙動が異なるため、古いバージョンで想定通り表示できたウェブページが新しいバージョンでは想定通りの表示にならないことがよくあります。この問題を回避するために古いウェブページを最新IEから古いIEバージョンをエミュレートして表示することが「X-UA-Compatible」の主な使用目的です。

ただし、現在新たに作成されるウェブページで古いIEを指定する必要はありません。そのため、「X-UA-Compatible」に最新IEを意味する「IE=11」や「IE=edge」を指定して使用していることがほとんどです。

※IE限定の機能ではなく、iOSやAndroidブラウザでも動作するものがあるようです。

「IE=edge」とは

「IE(Internet Explorer)なら最新環境で表示してね」と言う意味の記載です。IEで表示する場合、インストール済みの最新IEで表示します。「Edgeブラウザで表示してね」と言う意味ではありません。

※IE11で「IE=edge」を指定するとIE11で表示します。
 重要なのは、「IEの最新で表示する」です。
 Windows10のEdgeがインストール済みの環境でも、IE11で表示されます。
※Edgeで「IE=edge」や「IE=11」指定のページを表示した場合、Edgeで表示します。
 Edgeでは、「X-UA-Compatible」を指定してもIEの表示とはなりません。
 あくまでIEでの互換モードであるため、Edgeでは機能しません。

「IE=edge」以外の指定

「IE=edge」以外に次の記載があります。基本的に指定のIEで表示します。一部DOCTYPE宣言の影響を受けます。

  • IE=EmulateIE11
  • IE=EmulateIE10
  • IE=EmulateIE9
  • IE=EmulateIE8
  • IE=EmulateIE7
  • IE=11
  • IE=10
  • IE=9
  • IE=8
  • IE=7
  • IE=5

※インストールされていない場合、指定しても指定IEで表示できないことがあります。

「chrome=1」とは

Google Chrome Frame 用の記載です。ただし、Google Chrome Frame は、既にサポートされていないため、機能しません。そのため、「chrome=1」の記載は既に不要です。

結論

「X-UA-Compatible」は、既に不要だと考えます。現状IE11未満からのアクセスを考慮する必要があるとは思いません。ただし、IE11未満を加味する必要があるのであれば有効な手段です。また、古いウェブページを公開する必要があるならば、目的のバージョンを指定しておく使い方は有効です。

参考