タグを使用してIE互換モードを強制的にオフにする


375

すべてのイントラネットサイトで互換モードを強制するクライアントのために仕事をしています。互換モードを強制的にオフにするHTMLに挿入できるタグがあるかどうか疑問に思いました。


私は、あなたが探している答えはここにあると思う:stackoverflow.com/questions/1014666/...
ガブリエル

45
実際、私は正反対の人を探していました。彼らの標準を互換モードに設定しているのです。
アルカタワジ

12
IE7以外でクラッシュするレガシーアプリのjavascriptが悪い、つまり標準が互換性に設定されている。ある日、私たちはそれを取り替えます...
異教のジャービルをピートする

1
@ petethepagan-gerbilあなたはそれを交換するために動きましたか?:P
icedwater

1
@icedwater私は6年以上前に会社を辞めました:)同じ分野で変更があった場合はいつでも問題を取り除くために小さな改善を加えましたが、テクノロジーの負債が優先されることはありませんでした。最終的に修正されたかどうかはわかりません。
異教徒のスナネズミをピートする

回答:


535

「エッジ」モードがあります

<html>
   <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <title>My Web Page</title>
   </head>
   <body>
      <p>Content goes here.</p>
   </body>
</html>

リンクされたMSDNページから:

エッジモードは、Windows Internet Explorerに、利用可能な最高のモードでコンテンツを表示するように指示します。これにより、「ロックイン」パラダイムが実際に破られます。Internet Explorer 8では、これはIE8モードと同等です。Internet Explorerの(仮想)将来のリリースでより高い互換性モードがサポートされる場合、エッジモードに設定されたページは、そのバージョンでサポートされている最高のモードで表示されます。ただし、Internet Explorer 8で表示すると、IE8モードでも同じページが表示されます。

ただし、「エッジ」モードは本番環境での使用は推奨されていません。

Windows Internet Explorerの将来のバージョンでページコンテンツをレンダリングすると予期せぬ結果が生じる可能性があるため、Web開発者は、ページのテストや他の非本番用の使用にEdgeモードの使用を制限することをお勧めします。

正直なところ、完全に理解できません。しかし、これによると、現時点で最善の方法はを使用することIE=8です。


7
2012年8月6日の時点で、Microsoft IE=10は自社サイトで使用しているようです。IE10(プレビューバージョン)でサイトをテストした場合、これを使用しても安全です。それ以外の場合は、IE=9今のところ固執する必要があります。
calvinf 2012

75
ユーザー(またはsysadmin)がデフォルトで互換モードをオンにし、[互換Tools->Compatibility View Settings表示ですべてのWebサイトを表示する] をオンにした場合、これは機能しないことがわかりました。この問題を解決するには、私は、HTTPレスポンスのヘッダを返すことがあります:X-UA-Compatible: IE=edge
speedplane

10
スピードプレーンへの+1-イントラネットサイトではIE10互換モードがデフォルトでオン-UGH ...検索ありがとうございます!
viperguynaz 2013年

132
この答えを見つけたが、うまく機能させることができない人へのアドバイス。互換性メタタグは最初のメタタグでなければならず、タグの前にIE条件ステートメントがあってはなりません。もっと:tesmond.blogspot.com/2011/10/...
クリス・ソボレフスキ

2
クリス、ありがとう!ようやく30分間も苦労してコメントを読んだ。最初は持っていませんでした。
Hawkee 2013

91

何時間もかけてこの問題をトラブルシューティングしました... X-UA-Compatibleドキュメントから私たちを助けてくれたいくつかの簡単なハイライトがあります:http : //msdn.microsoft.com/en-us/library/cc288325( VS.85).aspx# ctl00_contentContainer_ctl16

使用する <meta http-equiv="X-UA-Compatible" content=" _______ " />

  • 標準ユーザーエージェントモード(非エミュレートするもの)は無視する<!DOCTYPE>ページ内のディレクティブをし、IEのバージョンでサポートされている規格に基づくレンダリング(例えば、IE=8意志よりよいオベイテーブルの枠線の間隔と、いくつかの疑似セレクタよりIE=7)。

  • 一方、エミュレートモード<!DOCTYPE>では、ページ内のすべてのディレクティブに従うようにIEに指示し、選択したバージョンに基づいて標準モードをレンダリングし、IE=5

  • content属性の可能な値は次のとおりです。

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"


67

イントラネットゾーンのページで作業している場合は、IE9が何をしようとも、IE7互換モードになっていることがあります。

これは、すべてのイントラネットサイトを互換モードで実行する必要があるというIE互換性設定内の設定が原因です。グループポリシーを使用してこれを解除するか、IEでチェックを外すか、次のように設定できます。

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

これは(他の回答で詳述されているように)機能しますが、最初は表示されないことがありますスタイルシートが宣言される前に来る必要があります。そうしないと、無視されます。


3
スタイルシートに関する警告をありがとう、これは問題を引き起こしており、私はその理由を今知っています!
eMRe、2015

うん、最初は配置によって強奪された。これを追加していただきありがとうございます。
John Moylan、2016年

ありがとうございます。IE 11がインストールされていても、有効なIEレベルを7に設定するGPOがあります。これにより、jsを動作させるためにシムをサイトに配置する必要がなくなりました。
Charles Owen


28

関連する質問に対するこの回答で示唆されているように、「エッジ」モードはWeb.Configファイルで設定できます。これにより、アプリケーションから返されたすべてのHTMLに適用され、個々のページに挿入する必要はありません。

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="X-UA-Compatible" value="IE=edge" />
            </customHeaders>
        </httpProtocol>
    </system.webServer>
</configuration>

これと同じ手順は、IISサーバー、Webサイト全体、または特定のアプリケーション用のIIS マネージャー使用して「HTTP応答ヘッダー」を変更することでも実行できます。


19

メタタグソリューションは機能しませんでしたが、応答ヘッダーに設定すると次のようになりました。

header('X-UA-Compatible: IE=edge,chrome=1');

3
「chrome = 1」の+1。私はそれについて知りませんでした。価値があるのは、IE = 10に変更すると、IE = edgeが影響を及ぼさなかった私のサイトのレンダリングの問題の多くが解消されたことです。

chrome=1プロパティの説明、stackoverflow.com/a/22059516/368691。Chrome Frameは廃止されました。blog.chromium.org/2013/06/retiring-chrome-frame.html
Gajus

1
他の回答のコメントを参照してください...ユーザー(またはsysadmin)がデフォルトで互換モードをオンにしている場合、これは機能しないことがわかりました。 。speedplane Apr 19 '13 at 11:29 7互換性メタタグは最初のメタタグでなければならず、タグの前にIE条件ステートメントがあってはなりません。詳細:tesmond.blogspot.com/2011/10/…– Chris Sobolewski 2013年8月19日
20:23

レイアウトページの1行目に入れてみました。Stuは、IIS HTTP応答ヘッダーの変更に言及していません。私は試した。アプリプールを再起動しました。もっと調べます。このページは他のページの下にネストしています。他のページには別のメタがあります。こちらは制作サイトです。多くの人がこのページにアクセスしています。このタグを上に置くことはミッション不可能です。他のソリューションまたは私はネジ午前
user12345

10

私の最近の経験に基づいて、このトピックに関するもう少しのメモ。私が所属する大学では、IE 8がすべてのイントラネットサイトの互換モードに設定されたラップトップを発行しています。私のサイトで提供されているページに対してこのモードを無効にするためにメタタグを追加しようとしましたが、IEはこのタグを常に無視していました。ランスが彼の投稿で述べたように、応答ヘッダーを追加するとこの問題が修正されました。これは、HTML5ボイラープレートメソッドに基づいてヘッダーを設定する方法です。

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

このヘッダーが実際に送信されるようにするには、Apacheでmod_headersがオンになっていることを確認する必要があります。このmodがオンになっていることを確認する場合は、phpを実行できるページにこれを配置します。

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>

.htaccessメソッドは、IE8 +で機能しました。互換性ボタン(別名エネミーNo. 1)を削除し、IE8に互換性モードの使用を回避させました。関連:メタタグの代替は、さまざまなコンピューターの特定の条件下(IE Voodoo)でのみ機能するようです。
William Isted

10

IE8のデフォルトは、intERnetの標準モードとintRAnetの互換モードです。doctypeをxhtmlトランジショナルに設定している場合、HTMLメタタグは無視されます。解決策は、コードにHTTPヘッダーを追加することです。これでうまくいきました。現在、イントラネットサイトはIE8にアプリを標準モードで表示するように強制しています。

基本ページクラス(ASP.net C#)のPageInitに追加:

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

リファレンス:http : //ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html


3

これは、すべてのイントラネットサイトを互換モードで実行する必要があるというIE互換性設定内の設定が原因です。グループポリシーを使用してこれを解除するか、IEでチェックを外すか、次のように設定できます。

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

どうやらグループポリシーとして互換性ビューの設定を変更することは不可能ですが、レジストリで変更できる可能性があります。このメタタグは私にとってはうまく機能し、必要な属性をHTMLフォームの一部として機能させる必要がありました。 、それはクロムとファイアフォックスで動作しましたがIEでは動作しませんでした。

これは、ブラウザが個々のhtml 5要素をサポートしていることを示しています。

http://html5readiness.com/

共通点の1つであるGoogle Chromeに注目してください。これはすべてをサポートしています。これがお役に立てば幸い


FirefoxとIE 10もすべてをサポートしているようです。グラフでは、Chromeほど明確ではありません。
Tony L.

0

タグの下の最初のアイテムとして挿入します。

これにより、IEはIEの物理バージョンでページをレンダリングする必要があり、ブラウザの「モード設定」は無視されます。これは開発者ツールで設定できます。テストするために古いバージョンのIEに変更してみてください。これは無視する必要があり、ページはまったく同じに見えるはずです。


0

サーバーにアクセスできる場合、これを行う最も信頼できる方法は、IISでサーバー自体にアクセスすることです。IIS HTTP応答ヘッダーに移動します。名前の追加:X-UA-Compatible
値:IE = edgeこれにより、ブラウザーとコードがオーバーライドされます。


これは、Webサイトレベルで設定されている場合、IISへの新しい展開時にリセットされます
エマンピッツ

0

個々のWebページで選択したコンテンツをロードし、asp.netを使用する場合。Views> shared> Layout.cshtmlの見出しタグの下の最初のタグとして適用するだけです

ほんのヒント

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