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」の記載は既に不要です。
例外的な環境(イントラネット)
IEは、標準でイントラネットサイトを互換表示する設定となっているため、イントラネットのサイトで「X-UA-Compatible」指定なしの場合、IE7互換で表示します。ただし、通常のパブリックサイトでは意識する必要はないです。
※イントラネットの互換表示設定は次の項目になります。
[メニュー] > [ツール] > [互換表示設定] > [イントラネット サイトを互換表示で表示する]
再現手順(むりやりサイトをイントラネット扱いする方法)
- [メニュー] > [ツール] > [インターネットオプション] > [セキュリティ] > [ローカルイントラネット] > [サイト] > [詳細設定] を開く
- 表示するWebサイトをゾーンに追加する(例:
https://www.bugbugnow.net/
) - 指定ページを開く(
https://www.bugbugnow.net/
)- 本サイトは、「X-UA-Compatible」指定なしのため、IE7互換でページを表示する
- F12のエミュレーションのドキュメントモードが7(規定)となっている
結論
「X-UA-Compatible」は、既に不要だと考えます。現状IE11未満からのアクセスを考慮する必要があるとは思いません。ただし、IE11未満を加味する必要があるのであれば有効な手段です。また、古いウェブページを公開する必要があるならば、目的のバージョンを指定しておく使い方は有効です。
割と新しい記述なので、コメントしておきます。
IE=edgeは「特定の環境では」非常に重要です。Webサーバーが社内イントラと認識されると、勝手にIE7互換で表示します。これを禁止するために必要になるのです。
パブリックなサイトでは、不要といえるのですが、すべてがそうではないと。
コメントありがとうございます。
イントラネットサイトの互換表示設定について、考慮が漏れておりましたので記事内容を加筆修正しました。