121

Microsoftのサイトでは、単純なdoctype宣言で十分だと彼らは主張しています。しかし、これほど短いドキュメントでもIE7モードにフォールバックします。

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
</html>

http://d.pr/i/fvzb+

4

5 に答える 5

245

Internet Explorerは、ほとんどのWebページが以前のバージョンのIEを対象として作成されていると想定し、Doctype、メタタグ、およびHTMLを調べて、最適な互換モードを決定します(場合によっては正しくありません)。HTML5 doctypeを使用している場合でも、イントラネットサイトの場合、IEはWebサイトを互換モードにします。

Display intranet sites in CompatiblyWebサイトが常に最新の標準モードを使用するようにするには、オフになっていることを確認してください。ただし、これは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にも関係します。

于 2012-11-08T10:31:42.770 に答える
25

これは私のために働きます。

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
于 2013-05-24T09:41:52.923 に答える
10

次のタグを頭に追加してみてください

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
于 2012-11-08T07:05:54.863 に答える
2

メタタグはイントラネットサイトに対して何もしません。私の問題は、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が表示される可能性があります。

于 2014-03-06T02:08:01.607 に答える
1

私が次のことをしたとき、それは私にとって完璧に機能しました:

http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx _

最初のボックスで提供されている正確な例を使用し(</html>下部に欠落しているものを追加)、IE10で開き、標準が強制されました。ただし、標準を強制するには、htmlに実際のコンテンツが必要な場合があります。

私の提案は、空のコードを実際のコンテンツ(単純なもの)に置き換えて、それが何をするかを確認することです。

于 2014-02-25T17:17:06.980 に答える