Microsoftのサイトでは、単純なdoctype宣言で十分だと彼らは主張しています。しかし、これほど短いドキュメントでもIE7モードにフォールバックします。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
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サイトが常に最新の標準モードを使用するようにするには、オフになっていることを確認してください。ただし、これはWebサーバーのローカルマシンごとに行う必要があります(手順は以下のとおりです)。
または、さらに良いことに、X-UA-Compatible
ヘッダーを使用してサーバーからこれをオフにすることができます。メタタグの使用は機能しないことに注意することが重要です。
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
MSDN全体で、ホストヘッダーまたはメタタグを使用すると、イントラネットサイトでさえもオーバーライドする必要があると述べられています。Internet Explorer 8の互換モードについての記事では、次のように述べています。
多数の社内ビジネスWebサイトがInternetExplorer7用に最適化されているため、このデフォルトの例外はその互換性を維持します。...ここでも、メタタグまたはhttpヘッダーを使用してドキュメントに互換モードを設定すると、これらの設定が上書きされます。
ただし、実際にはこれは機能しません。機能するオプションは、ホストヘッダーを使用することだけです。記事のコメントセクションには、この正確な問題の多数の例も示されています。
メタタグを使用すると、タグのすぐ下にない<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
ヘッダーがHTML5Doctypeで存在する限り、サイトは常に最新の標準モードで実行されます。
互換表示をオフにする互換表示
をオフにすると便利な場合があります。これを行うDisplay all intranet sites in compatibility view
には、互換表示設定でチェックを外します。
を押しAltてメニューを表示すると、これを表示できます。
編集 この回答は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の回答web.config
をさらに進め、 IISの下に以下を追加して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で開き、標準が強制されました。ただし、標準を強制するには、htmlに実際のコンテンツが必要な場合があります。
私の提案は、空のコードを実際のコンテンツ(単純なもの)に置き換えて、それが何をするかを確認することです。