1. ホーム
  2. windows

[解決済み] IE10はIE7モードでレンダリングされます。強制的に標準モードにする方法は?

2022-08-24 05:55:44

質問

マイクロソフトのサイトでは、単純なdoctype宣言で十分だと主張しています。しかし、これほど短い文書でさえ、IE7 モードに戻ってしまうのです。

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

</body>
</html>

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

どのように解決するのですか?

Internet Explorer は、ほとんどの Web ページが以前のバージョンの IE をターゲットとして書かれていると仮定し、doctype、meta タグ、および HTML を調べて、最適な互換モードを決定します (不正確な場合もあります)。HTML5 の doctype を使用しても、イントラネット サイトの場合、IE は Web サイトを互換モードで表示します。

Web サイトが常に最新の標準モードを使用するようにするには、以下のいずれかの方法で確認できます。 Display intranet sites in Compatibly がオフになっていることを確認することです。しかし、これは Web サーバーのローカルな各マシンで行う必要があります (手順は以下のとおりです)。

別の方法として、より良い方法は X-UA-Compatible ヘッダを使用して、サーバからこれをオフにすることもできます。ここで重要なのは を使用しても動作しないことに注意してください。

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

MSDN では、イントラネットのサイトであっても、ホストヘッダや meta タグを使用することで上書きすることができると述べられています。記事 Internet Explorer 8 の互換性モードを理解する には、次のように書かれています。

多数の内部ビジネス Web サイトは Internet Explorer 7 用に最適化されているので、このデフォルトの例外はその互換性を維持するものです。 ... Meta タグまたは http ヘッダーがドキュメントに互換性モードを設定するために使用されている場合は、これらの設定が上書きされます。

しかし、実際にはこれは機能しません。ホスト ヘッダーを使用することが、機能する唯一の選択肢です。この記事のコメント欄には、この正確な問題についての多数の例が示されています。

Meta タグを使用することには、他にもいくつかの問題があります。 <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 ヘッダーが存在する限り、サイトは常に最新の標準モードで実行されます。

互換表示をオフにする

互換表示をオフにすると便利な場合があります。これを行うには Display all intranet sites in compatibility view をオフにします。

を打つと表示されます。 Alt を押すとメニューが表示されます。

編集 この回答はIE9にも当てはまります。