Microsoftのサイトでは、単純なdoctype宣言で十分であると主張しています。しかし、これほど短いドキュメントでもIE7モードにフォールバックします。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Internet Explorerは、ほとんどのWebページが以前のバージョンのIEを対象に書かれていると仮定し、Doctype、メタタグ、およびHTMLを見て、最適な互換モードを決定します(誤っている場合があります)。 HTML5 doctypeを使用しても、イントラネットサイトの場合、IEは引き続きWebサイトを互換モードにします。
ウェブサイトが常に最新の標準モードを使用するようにするには、Display intranet sites in Compatibly
がオフになっていることを確認します。ただし、Webサーバーに対してローカルな各マシンでこれを行う必要があります(手順は以下にあります)。
または、X-UA-Compatibleヘッダーを使用してサーバーからこれをオフにすることもできます。 メタタグの使用は機能しないことに注意することが重要です!。
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
MSDN全体を通して、Hostヘッダーまたはメタタグを使用すると、intranet sites
でさえオーバーライドする必要があると述べられています。記事 Internet Explorer 8の互換モードについて は次のように述べています。
多数の社内ビジネスWebサイトがInternet Explorer 7向けに最適化されているため、このデフォルトの例外はその互換性を維持します。 ...メタタグまたはhttpヘッダーを使用してドキュメントに互換モードを設定すると、これらの設定が上書きされます。
ただし、実際にはこれは機能しません。動作する唯一のオプションはHostヘッダーを使用することです。記事のコメントセクションには、この正確な問題の多くの例も示されています。
メタタグの使用には、<head>
タグのすぐ下にない場合や、その前にデータが多すぎる場合(4k)にタグを無視するなど、いくつかの他の問題もあります。また、いくつかのバージョンのIEでドキュメントが再解析され、レンダリングが遅くなる場合があります。これらの問題の詳細については、MSDNの記事をご覧ください ベストプラクティス:HEADを順番に取得してください 。
X-UA-Compatibleヘッダーの追加
.netとIISを使用している場合、これをweb.configに追加できます。プログラムでこれを行うこともできます。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
IISを使用していない場合は、どの言語でも簡単に実行できます。たとえば、phpで実行する方法は次のとおりです。
header('X-UA-Compatible: IE=Edge');
X-UA-Compatibleヘッダーがhtml5 doctypeに存在する限り、サイトは常に最新の標準モードで実行されます。
互換表示をオフにする
互換表示をオフにすることは依然として有用です。これを行うには、互換表示設定でDisplay all intranet sites in compatibility view
のチェックを外します。
これを呼び出すには、alt
を押してメニューを取得します。
Editこの回答はIE9にも関係します
これは私のために働く。
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
次のタグをヘッドに追加してみてください
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
メタタグはイントラネットサイトに対して何もしません。私の問題はIE10互換モードでのIE10レンダリングでした。私にとってこの問題に取り組んだのは、 @ Jeow's answer をさらに進め、IISの下のweb.config
に以下を追加することでhttpヘッダーでその値を使用することでした。
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<!-- <add name="X-UA-Compatible" value="IE=Edge" /> not good enough -->
<add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" />
</customHeaders>
</httpProtocol>
</system.webServer>
IEの目的で、イントラネットサイトには、外部にルーティングされない公開サイトが含まれます。たとえば、オフィスで働いているStackoverflowの従業員は、おそらく互換モードでstackoverflow.comを見るでしょう。
私が次のことをしたとき、それは私にとって完璧に働いた:
オン http://msdn.Microsoft.com/en-us/library/gg699338(v = vs.85).aspx
最初のボックスで提供されている正確な例を使用し(下部に欠落している</html>
を追加)、IE10で開き、標準が強制されました。
私の提案は、空のコードを実際のコンテンツ(単純なもの)に置き換えて、その機能を確認することです。