IE10はIE7モードでレンダリングします。標準モードを強制するには?


回答:


244

Internet Explorerは、ほとんどのWebページが以前のバージョンのIEをターゲットにするように作成されていると想定し、Doctype、メタタグ、および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全体を通して、ホストヘッダーまたはメタタグを使用すると、イントラネットサイトでさえもオーバーライドする必要があることが言及されています。Internet Explorer 8の互換モードについての記事は次のように述べています。

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

ただし、実際にはこれは機能しません。機能する唯一のオプションはホストヘッダーを使用することです。記事のコメントセクションにも、この正確な問題の多数の例が示されています。

Metaタグを使用すると、タグのすぐ下にない<head>場合やタグの前にデータが多すぎる場合にタグを無視するなど、他にもいくつかの問題があります(4k)。また、IEの一部のバージョンでは、ドキュメントの再解析がトリガーされ、レンダリングが遅くなる場合があります。これらの問題の詳細については、MSDNの記事「ベストプラクティス:ヘッドを整理する」を参照してください

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を押すとメニューが表示され、これを呼び出すことができます。

ここに画像の説明を入力してください

編集 この回答はIE9にも関係しています。


私の無知を許してください、しかしこの設定シートに行く方法は?Internet Explorerの設定を確認し、アドレスバーの互換表示を右クリックしました。
firedev

2
@Nickを使用altしてツールバーを表示します。ツールの下にあります->互換ビュー設定
Daniel Little

ああ、ありがとう、解決したようです。彼らはなぜそんなことをしたのかと不思議に思います。
firedev '11

25
+1000;)。SOは、質問に[IE]タグと「互換性がある」という単語が含まれている場合、実際にその質問を投稿する前であっても、すべてのOPにこの回答を強制的に表示する必要があります。
Teemu

2
カスタムヘッダーセクションをプロジェクトのweb.configに追加してみました。イントラネットサイトの互換表示を使用するためのIE設定は、この設定によって上書きされないように見えます。
DomenicDatti 2013

25

これは私にとってはうまくいきます。

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

11
NBは上記のように「メタタグはイントラネットサイトでは何もしません」と述べています。
Nathan

2
価値があるのは、X-UA-Compatibleメタタグを持つホストされたWebサイト(イントラネット以外のサイト)で、それでもIE10標準ドキュメントモードがページのデフォルトとしてトリガーされない場合、メタタグがスクリプトタグの下にあるか、<head>DOMツリーの最上部から遠すぎると、IE10は叫んでドキュメントモードをIE8標準に設定します。したがって、IE=edgeメタタグをタグに近づけてください<title>。Wordpressサイトがヘッダーテンプレートファイルにハードコーディングされていない場合、WordPressサイトの修正は必ずしも簡単ではありません。IE11がメタタグの場所を気にするかどうかはわかりませんが、これが誰かに役立つことを願っています。
purefusion 2013年

1
ブラインドコピーや私自身のようなペースターの場合、これには終了タグがありません。。<meta http-equiv = "X-UA-Compatible" content = "IE = edge"> </ meta>
ジョンニューマン

XHTML Doctypeを使用している場合のみ、メタタグを閉じる必要があります
Andy Brudtkuhl 2014年

2
また、このタグは<head>内の最初のタグである必要があります
Chris Gunawardena '25

10

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

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />

5
それはIE=Edge代わりに
Daniel Little

1
しかし、IEの将来のバージョンが何か悪いことをしてあなたのサイトを破壊する危険があります
Jeow Li Huan

7
いいえ、仕様に準拠していればリスクはありません。Chromeでこれを行っている人はいないでしょう。
Daniel Little

1
このタグは、<head>内の最初のタグである必要があります
Chris Gunawardena '25

1
この回答の編集は、これがなぜ良い考えではないのかを示しています。受け入れられた答えが最良の解決策です。
David Granado

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を参照します。


1

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

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

彼らが最初のボックスで提供する正確な例を使用し(</html>下部に不足している部分を追加)、IE10でそれを開き、標準が強制されました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.