回答:
2015年10月の更新
この回答は数年前に投稿されましたが、今、質問は本当にあなたのサイトでタグを使用することを検討すべきですX-UA-Compatible
か?Microsoftがブラウザに加えた変更(詳細は以下を参照)。
サポートしているMicrosoftブラウザーによっては、X-UA-Compatible
タグを使い続ける必要がない場合があります。IE9またはIE8をサポートする必要がある場合は、タグの使用をお勧めします。最新のブラウザー(IE11またはEdge、あるいはその両方)のみをサポートしている場合は、このタグを完全に削除することを検討します。Twitter Bootstrapを使用していて、検証警告を排除する必要がある場合、このタグは指定された順序で出現する必要があります。以下の追加情報:
X-UA-Compatible
メタタグは、ウェブ制作者は、ページは次のようにレンダリングされるべきかのInternet Explorerのバージョンを選択することができます。IE11はこれらのモードに変更を加えました。下記のIE11の注記を参照してください。IE11に代わるブラウザであるMicrosoft Edgeは、X-UA-Compatible
特定の状況でのみメタタグを尊重します。以下のMicrosoft Edgeのメモを参照してください。
Microsoftによると、X-UA-Compatible
タグを使用するときは、ドキュメント内で可能な限り高くする必要がありますhead
。
X-UA互換のMETAタグを使用している場合は、ページのHEADの上部にできるだけ近い位置に配置する必要があります。Internet Explorerは、最新バージョンを使用してマークアップの解釈を開始します。Internet ExplorerがX-UA互換のMETAタグを検出すると、指定されたバージョンのエンジンを使用してやり直します。ブラウザはコンテンツの分析を停止して再開する必要があるため、これはパフォーマンスへの影響です。
オプションは次のとおりです。
それぞれの意味を理解するために、Microsoftが提供する定義を次に示します。
Internet Explorerは、さまざまな機能を有効にし、コンテンツの表示方法に影響を与える可能性があるいくつかのドキュメント互換モードをサポートしています。
エッジモードは、利用可能な最高のモードでコンテンツを表示するようInternet Explorerに指示します。Internet Explorer 9では、これはIE9モードと同等です。Internet Explorerの将来のリリースでより高い互換性モードがサポートされる場合、エッジモードに設定されたページは、そのバージョンでサポートされる最高のモードで表示されます。Internet Explorer 9で表示すると、同じページがIE9モードでも表示されます。InternetExplorerは、さまざまな機能を有効にし、コンテンツの表示方法に影響を与える可能性のあるドキュメント互換モードをいくつかサポートしています。
IE11モードは、HTML5、CSS3などを含む、確立された新しい業界標準で利用できる最高のサポートを提供します。
IE10モードは、HTML5、CSS3などを含む、確立された新しい業界標準で利用可能な最高のサポートを提供します。
IE9モードは、HTML5(草案)、W3Cカスケードスタイルシートレベル3仕様(草案)、Scalable Vector Graphics(SVG)1.0仕様などを含む、確立された新しい業界標準で利用可能な最高のサポートを提供します。[編集者注:IE 9 は CSS3アニメーションをサポートしていません ]。
IE8モードは、W3Cカスケードスタイルシートレベル2.1仕様やW3CセレクターAPIなど、確立された多くの標準をサポートしています。また、W3Cカスケードスタイルシートレベル3仕様(草案)およびその他の新しい標準に対する限定的なサポートも提供します。
IE7モードでは、ページにディレクティブが含まれているかどうかに関係なく、コンテンツがInternet Explorer 7によって標準モードで表示されたかのようにレンダリングされます。
IE9エミュレートモードは、ディレクティブを使用してコンテンツのレンダリング方法を決定するようにInternet Explorerに指示します。標準モードディレクティブはIE9モードで表示され、互換モードディレクティブはIE5モードで表示されます。IE9モードとは異なり、エミュレートIE9モードはディレクティブを尊重します。
IE8エミュレートモードは、ディレクティブを使用してコンテンツのレンダリング方法を決定するようにInternet Explorerに指示します。標準モードディレクティブはIE8モードで表示され、互換モードディレクティブはIE5モードで表示されます。IE8モードとは異なり、エミュレートIE8モードはディレクティブを尊重します。
IE7エミュレートモードは、ディレクティブを使用してコンテンツのレンダリング方法を決定するようにInternet Explorerに指示します。標準モードディレクティブはInternet Explorer 7標準モードで表示され、互換モードディレクティブはIE5モードで表示されます。IE7モードとは異なり、エミュレートIE7モードはディレクティブを尊重します。多くのWebサイトでは、これが推奨される互換モードです。
IE5モードでは、コンテンツがInternet Explorer 7によって互換モードで表示されたかのようにレンダリングされます。これは、Microsoft Internet Explorer 5でコンテンツが表示された方法と非常に似ています。
IE10注: IE10以降、互換モードは以前のバージョンのブラウザーとは異なる動作をします。IE9以前のバージョンでは、quirksモードにより、WebページがIE5.5でサポートされている機能に制限されていました。IE10では、互換モードはHTML5仕様で指定された違いに準拠しています。
個人的には、http-equiv="X-UA-Compatible" content="IE=edge"
古いバージョンには多くのバグがあるため、常にメタタグを選択します。IEが「互換モード」に移行して、サイトをIE7またはIE8または9として表示することを望まないので、常に最新バージョンを好むIE。
IE11
Microsoftから:
IE11以降、エッジモードが推奨されるドキュメントモードです。これは、ブラウザーで使用できる最新の標準に対する最高のサポートを表しています。
HTML5ドキュメントタイプ宣言を使用して、エッジモードを有効にします。
<!doctype html>
エッジモードはInternet Explorer 8で導入され、以降の各リリースで使用できます。エッジモードでサポートされる機能は、コンテンツをレンダリングするブラウザーの特定のバージョンでサポートされる機能に限定されることに注意してください。
IE11から、ドキュメントモードは非推奨になり、一時的な場合を除いて使用できなくなりました。レガシー機能とドキュメントモードに依存するサイトは、最新の標準を反映するように更新してください。
最新の標準と機能をサポートするようにサイトを修正している間、サイトが機能するように特定のドキュメントモードをターゲットにする必要がある場合は、移行機能を使用していることに注意してください。
現在x-ua互換ヘッダーを使用してレガシードキュメントモードをターゲットに設定している場合、サイトがIE11で利用可能な最高のエクスペリエンスを反映していない可能性があります。
Microsoft Edge(Windows 10にバンドルされているInternet Explorerの代替品)
X-UA-Compatible
IEの「エッジ」バージョンのメタタグに関する情報。マイクロソフトから:
「生きている」エッジドキュメントモードの紹介
2013年8月に発表したように、IE11ではドキュメントモードを廃止します。最新のプラットフォームの更新により、レガシードキュメントモードの必要性は、主にエンタープライズレガシーWebアプリに限定されています。新しいアーキテクチャの変更により、これらのレガシードキュメントモードは、「生きている」エッジモードでの変更から分離されます。これにより、これらのモードに依存しているお客様にはるかに高いレベルの互換性を保証し、Edgeの改善をさらに迅速に進めることができます。 。IEは引き続き、イントラネットサイト、互換表示リストのサイト、およびエンタープライズモードでのみ使用される場合に提供されるドキュメントモードを受け入れます。
パブリックインターネットサイトは、新しいエッジモードプラットフォームでレンダリングされます(X-UA互換は無視されます)。Edgeがこれからの「生きている」ドキュメントモードであり、今後ドキュメントモードが導入されないことが私たちの目標です。
ほとんどの場合、ドキュメントモードをサポートしないようにMicrosoft Edgeが変更されたため、Microsoftはサイトをスキャンして、Edgeと互換性のないコードがあるかどうかを確認するツールを備えています。
IEのChrome = 1情報
またchrome=1
、上記のオプションのいずれかと組み合わせて使用したり、使用したりできることもあります<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
。chrome=1
次のように定義されるGoogleのChrome Frame用です。
Google Chrome Frameは、オープンソースのブラウザプラグインです。プラグインがインストールされているユーザーは、ブラウザでページを開くと、Google Chromeのオープンウェブテクノロジーと高速JavaScriptエンジンにアクセスできます。
Google Chrome Frameは、Internet Explorerでのブラウジングエクスペリエンスをシームレスに強化します。Google Chromeのレンダリングテクノロジーを使用してGoogle Chrome Frame対応のサイトを表示し、通常のブラウザーの使用を中断することなく、最新のHTML5機能とGoogle Chromeのパフォーマンスおよびセキュリティ機能にアクセスできます。
Google Chrome Frameをインストールすると、Webを意識することなく、より快適になります。
ただし、そのプラグインが機能するにchrome=1
は、X-UA-Compatible
メタタグで使用する必要があります。
Chrome Frameの詳細については、こちらをご覧ください。
注: Google Chrome FrameはIE6〜IE9でのみ機能し、2014年2月25日に廃止されました。詳細については、こちらをご覧ください。リンクをありがとう@mck。
検証:
HTML5:
ページは、を使用する場合にのみ、W3 Validatorを使用して検証します<meta http-equiv="X-UA-Compatible" content="IE=Edge">
。他の値の場合、エラーがスローされます。A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.
つまり、持ってIE=edge,chrome=1
いる場合、検証されません。最近のブラウザーはこのコード行を単に無視するため、このエラーは完全に無視します。
完全に有効なコードが必要な場合は、HTTPヘッダーを設定してサーバーレベルでこれを行うことを検討してください。注意点として、マイクロソフトは、言うIf both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header).
参照olibreの答えやbitinnの答え HTTPヘッダーを設定する方法の詳細については、を。
XHTML
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
タグが適切に閉じられている限り(つまり、/>
vs >
)、使用時に検証に問題はありません。
Twitterブートストラップ
このタグは強く、少なくとも2014年以来、ブートストラップチームによって推奨されている、とBootlint、リンターはtwbsチームによって作成投げ続けて警告タグが省略されています。リンターは警告とエラーを区別するため、このタグを省略した場合の重大度は軽微と見なされます。
詳細についてX-UA-Compatible
は、MicrosoftのWebサイトのドキュメントの互換性の定義を参照してください。
IEがサポートする機能の詳細については、caniuse.comを参照してください。
Twitter Bootstrap要件の詳細については、bootlintプロジェクトのWikiページを参照してください。
content=
"IE=edge,chrome=1"
他のX-UA-Compatible
モードをスキップする
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
互換性アイコンなし
IE9のアドレスバーに[互換表示]ボタンが
表示されず、ページに不揃いなメニュー、画像、およびテキストボックスが表示されません。
機能
このメタタグはjavascript::JSON.parse()
、IE8で有効にするために必要です
(<!DOCTYPE html>
存在する場合でも)。
正確
レンダリング/現代のHTML / CSS / JavaScriptがより有効である(よりよい)の実行。
パフォーマンス
ザ・トライデントレンダリングエンジンは速く、その中に実行する必要がありますエッジモード。
あなたのHTMLで
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
IEがレンダリングエンジンの最新(エッジ)バージョンを使用する必要があることを意味しますchrome=1
IEがインストールされている場合、Chromeレンダリングエンジンを使用する必要があることを意味しますまたは、Webサーバーの構成を改善する:
(RiaDの回答も参照してください)
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
Stef Pauseによって提案された Nginx
server {
#...
add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Lucas Riutzelによって提案されたワニスプロキシ
sub vcl_deliver {
if( resp.http.Content-Type ~ "text/html" ) {
set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
}
}
IIS(v7以降)
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge,chrome=1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Lyndaが気づいたように(コメントを参照)、IE11の互換性の変更ではエッジモードが推奨されています。
IE11以降、エッジモードが推奨されるドキュメントモードです。これは、ブラウザーで使用できる最新の標準に対する最高のサポートを表しています。
しかし、マイクロソフトの立場は明確ではなかった。別のMSDNページでは、エッジモードは推奨されていません。
エッジモードでは、Internet Explorerのバージョンに関係なく、すべてのページが標準モードで開かれるため、これをInternet Explorerで表示されるすべてのページに使用したくなるかもしれません。
X-UA-Compatible
ヘッダーはWindows Internet Explorer 8以降でのみサポートされているため、これを行わないでください。
代わりに、Microsoftは次の使用を推奨しました<!DOCTYPE html>
。
サポートされているすべてのバージョンのInternet Explorerで標準モードでページを開く場合は、HTML5ドキュメントタイプ宣言を使用してください[...]
以下のようリカルドは、(下記のコメントで)説明して任意のDOCTYPE(HTML4、XHTML1 ...)トリガー標準モード、HTML5のDOCTYPEないだけに使用することができます。重要なことは、ページに常にDOCTYPEがあることです。
Clara Onagerは、レガシードキュメントモードの指定の古いバージョンにも気づいています。
エッジモードは、テストのみを目的としています。本番環境では使用しないでください。
とても混乱しているので、ウスマンYはクララオナガーが次のように話していると思った。
[...]の例は、説明のみを目的として提供されています。本番環境では使用しないでください。
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >
ええと...この回答の残りの部分でcontent="IE=edge,chrome=1"
は、なぜプロダクションで使用することが良い習慣であるかについて、さらに説明します。
長年(2000年から2008年)、IEの市場シェアは80%以上でした。また、IE v6は事実上の標準(2003年、2004年、2005年、2006年のIE6のみで80〜97 %の市場シェア、すべてのIEバージョンでより多くの市場シェア)と見なされました。
IE6はWeb標準を尊重していなかったため、開発者は IE6を使用してWebサイトをテストする必要がありました。Web開発者はMS製品を購入する必要があり(IEはWindowsを購入しないと使用できません)、非準拠を維持する方が利益を生むため、Microsoft(MS)にとってその状況は素晴らしいものでした(つまり、Microsoftは他のものを除いて標準になることを望んでいました)会社)。
したがって、多くの多くのサイトはIE6にのみ準拠しており、IEはWeb標準に準拠していなかったため、これらすべてのWebサイトは標準に準拠したブラウザーで適切にレンダリングされませんでした。さらに悪いことに、多くのサイトではIEのみが必要でした。
ただし、現時点では、Mozillaは可能な限りすべてのWeb標準を尊重してFirefoxの開発を開始しました(IE6で行われるようにページをレンダリングするために他のブラウザーが実装されました)。新しいWeb標準機能の使用を希望するWeb開発者が増えるにつれ、FirefoxがIEよりもサポートするWebサイトが増えました。
IEの市場シェアが減少しているとき、MSは互換性のない標準を維持することは良い考えではないことに気付きました。そのため、MSはWeb標準をますます尊重する新しいIEバージョン(IE8 / IE9 / IE10)のリリースを開始しました。
しかし、問題はIE6用に設計されたすべてのWebサイトにあります。Microsoftは、これらの古いIE6設計のWebサイトと互換性のない新しいIEバージョンをリリースできませんでした。Webサイトが設計されているIEのバージョンを推測する代わりに、MSは開発者にX-UA-Compatible
ページにデータ()を追加するように要求しました。
現在、IE6は引き続き使用され(2016年には0.7%)(2014年1月には4.5%)、一部のインターネットWebサイトはIE6のみに準拠しています。一部のイントラネットWebサイト/アプリケーションは、IE6を使用してテストされています。一部のイントラネットWebサイトは、IE6でのみ100%機能します。これらの企業/部門は、移行コストを延期することを好みます。他の優先事項、Webサイト/アプリケーションがどのように実装されたかを誰も知らない、レガシーWebサイト/アプリケーションの所有者が破産した...
2013年のIE6の使用量の50%が中国ですが、中国のLinuxディストリビューションが放送されているため、今後数年間で変化する可能性があります。
Web標準を尊重する(しようとする)場合は、いつでもを使用できますhttp-equiv="X-UA-Compatible" content="IE=edge,chrome=1"
。古いブラウザとの互換性を維持するには、最新のWeb機能を使用しないでください。サポートする最も古いブラウザでサポートされているサブセットを使用してください。または、さらに進めたい場合は、優雅な低下、プログレッシブ拡張、控えめなJavaScriptなどの概念を採用できます。(Web開発者は何を考慮すべきですか?を読むこともできます。)
ブラウザーがWeb標準に準拠している必要があるため、IEバージョンの最適なレンダリングを気にしないでください。サイトが標準に準拠し、適度に最新の機能を使用している場合、ブラウザはWebサイトに準拠している必要があります。
さらに、IE6 を殺すための多くのキャンペーン(IE6はもう、MSキャンペーン)があるので、今日では、IEテストで時間を無駄にすることを避けることができます!
2009〜2012年は、IE6を公式の単一ブラウザーとして許可する会社で働いていました。IE6のみのイントラネットWebサイトを実装する必要がありました。私はWeb標準を尊重することを決めましたが、IE6対応のサブセット(HTML / CSS / JS)を使用しました。
大変でしたが、会社がIE8に切り替えたとき、FirefoxとFirebugを使用してWeb標準の互換性を確認していたため、Webサイトは引き続き適切にレンダリングされました;)
Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
違いは、のみを指定した場合DOCTYPE
、IEの互換表示設定が優先されることです。既定では、これらの設定により、に関係なく、すべてのイントラネットサイトが互換表示になりDOCTYPE
ます。に関係なく、すべてのWebサイトに互換表示を使用するためのチェックボックスもありますDOCTYPE
。
X-UA-Compatible
互換表示設定を上書きするため、ブラウザの設定に関係なく、ページは標準モードでレンダリングされます。これにより、標準モードが強制されます。
DOCTYPE
それだけではできません。これらの場合には、に関係なく、互換表示モードの1つになりますDOCTYPE
。
両方の場合meta
、タグとHTTPヘッダが指定され、meta
タグが優先されます。
この回答は、IE8、IE9、およびIE10でドキュメントモードを決定するための完全なルールを調べることに基づいています。を見てDOCTYPE
、ドキュメントモードを決定するための最後のフォールバックであることに注意してください。
これを使用して、IEがアドレスバーにある迷惑なブラウザー互換性ボタンを非表示にします。
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
、chrome=1
ディレクティブを使用して、IE6、7、8のユーザーにChrome Frameのインストール/使用を促しています。HTML5ボイラープレートでさえそれを使用します。
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
全く問題なく出たその日から使っています。実際、ユーザーのIEに最新のエンジンを使用して作成したページをレンダリングさせることで、チームと数百の頭痛の種をすでに救っています。あなたとマイクロソフトに反して、私は皆に上記のメタタグを毎回使用することをお勧めします。IEがまだ存在している限り、このメタタグを使用するように「強制」されます:p
<meta http-equiv="X-UA-Compatible" content="IE=10">
。その後、自身をMicrosoft Internet Explorerとして報告します。
マークされた回答にコメントを追加することはできないので、ここに投稿します。
正解に加えて、実際にこれを検証することができます。このメタタグはIEのみを対象としているため、IE条件を追加するだけで済みます。
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->
これを行うのは、他のIE条件ステートメントを追加するのと同じで、IEでのみ機能し、他のブラウザーは影響を受けません。
このMicrosoftの図がすべてを説明していると思います。IEにコンテンツのレンダリング方法を伝えるために、!DOCTYPEはX-UA-Compatibleメタタグで動作する必要があります。!DOCTYPE自体は、IEドキュメントモードの変更には影響しません。
http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png
完全を期すために、実際にHTMLに追加する必要はありません(HTML5ではhttp-equivは不明です)。
これを実行し、決して振り返らないでください(最初の例はapache、2番目の例はnginx)
Header set X-UA-Compatible "IE=Edge,chrome=1"
add_header X-UA-Compatible "IE=Edge,chrome=1";
Bad value X-UA-Compatible for attribute http-equiv on element meta.
-これは機能しないことを意味するものではありません。有効なコードではありません。
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
この行を期待どおりに機能させるには、次のことを確認してください。
<head>
<html>
そうでない場合、一部のIEバージョンは単にそれを無視します。
更新
これら2つのルールは簡略化されていますが、覚えやすく、確認も簡単です。タイトルやその他のメタタグをこのタグの前に置くことができると述べているMSDNのドキュメントにもかかわらず、私はそうすることをお勧めしません。
頭の中の要素の順序についての興味深い記事。(IEの場合は、blogs.msdn.com)
参照
MSDNドキュメントから:
X-UA-Compatible
[...] title要素と他のメタ要素を除く他のすべての要素の前に、Webページ(HEADセクション)のヘッダーに表示される必要があります。
DOCTYPEにもかかわらず、IEがサーバーと同じネットワークでWebサイトを使用している場合、互換モードに切り替えます。
追加meta http-equiv="X-UA-Compatible" content="IE=Edge"
すると、この不要な動作が無効になります。
これは文字通り1つのGoogleクエリですが、次のようになります。
http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
レガシードキュメントモードについて
次の値を使用して、Internet Explorer 6からIE11まで、Internet Explorerでサポートされている最高の標準モードであるエッジモードでWebページを表示します。
<meta http-equiv="x-ua-compatible" content="IE=edge"
なお、これはHTML5のDOCTYPEを使用して機能的に同等であること。Internet Explorerをサポートされている最高のドキュメントモードにします。Edgemostは、Internet Explorerを含む複数のブラウザー間の相互運用性が定期的にテストされる定期的に保守されるWebサイトに最も役立ちます。
注 IE11以降、エッジモードは優先ドキュメントモードと見なされます。(以前のバージョンでは、実験的と見なされていました。)詳細については、ドキュメントモードのサポートが終了したをご覧ください。Windows Internet Explorer 8以降、一部のWeb開発者はエッジモードメタ要素を使用して、アドレスバーの[互換表示]ボタンを非表示にしました。IE11以降、ボタンがアドレスバーから削除されたため、これは不要になりました。Internet Explorerのバージョンに関係なく、すべてのページを強制的に標準モードで開くため、Internet Explorerで表示されるすべてのページにエッジモードを使用したくなる場合があります。X-UA-CompatibleヘッダーはInternet Explorer 8以降でのみサポートされているため、これを行わないでください。
ヒント サポートされているすべてのバージョンのInternet Explorerでページを標準モードで開く場合は、前の例に示すように、HTML5ドキュメントタイプ宣言を使用します。
また、検索結果の中には:
2.1.3.5 X-UA互換メタタグおよびHTTP応答ヘッダー
この機能は、Microsoft Edgeのどのバージョンにも実装されません。
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspxを参照してください
はい、パーティーに遅れていることはわかっていますが、問題とディスカッションがあっただけで、結局、上司X-UA-Compatible
から、作業中のすべてのドキュメントからタグを削除するように依頼されました。
この情報が古くなっている、または関連性がなくなった場合は、修正してください。