WebサイトでIE9が互換モードに切り替わるのはなぜですか?


197

IE9ベータ版をインストールしたばかりで、作成した特定のサイト(HTML5)で、手動で指示しない限り、IE9は互換モードにジャンプします。ウェブサイトのいくつかの部分を削除しようとしましたが、変更はありませんでした。すべてのCSSインクルードの削除を含みます。私の他のいくつかのウェブサイトではそれはうまくいきます。

また、IE9がユーザー設定を記憶し、自動に戻すことができないため、手動で設定しないでください(または、プライベートブラウジングやキャッシュを空にすることによっても、方法を見つけることができませんでした)。

とにかく。互換モードにジャンプするサイト:http : //alliancesatwar.com/guide/
正しく表示されるサイト:http : //geuze.name/basement/(複数のハイパーリンクを投稿することはできません)

どちらも同じものdoctypeを使用します。これらのサイトには、同じ基本テンプレート(エンコーディング、メタタグ、Doctype、および同じJavaScript)を使用して多くの共通点があります(外観は別として)

誰かが私に答えてくれるといいですね!IE7モードでレンダリングするHTML5 Webサイトはかなり...不十分です。


5
「互換モードへのジャンプ」について説明してください。問題が原因で互換性ビューでページの更新とIEがこのページを更新したことを示すバルーンが表示される場合は、レンダリングエンジンのクラッシュに似た「ハードアサート」と呼ばれるIEのバグが見つかったことを意味します。これらを見つけて修正することに興味があります。connect.microsoft.com/ieでバグを報告してください。ありがとう!
EricLaw

回答:


263

IE9のdocumentModeで動作します。

X-UA-Compatible明示的なdocumentModeを設定するヘッダー/メタがない場合は、次に基づいてモードを取得します。

  • ユーザーが以前にそのドメインの[互換表示]ボタンをクリックしたかどうか。
  • また、サイトの他のコンテンツが原因でIE8 / 9のレンダラーがクラッシュし、古いレンダラーにフォールバックすることによって、これが自動的に行われたかどうかも確認します。
  • ユーザーがデフォルトですべてのサイトを互換表示にすることを選択したかどうか。
  • IEがサイトがイントラネット上にあると見なしているかどうか、したがって互換性ビューがデフォルトであるかどうか。
  • 問題のサイトが、マイクロソフト独自の互換性ビューを必要とするWebサイトのリストにあるかどうか。

これらの設定は、IEメニューの[ツール]-> [互換表示設定]から変更できます。もちろん、そのメニューはこっそりと隠されているので、Altを押すまで表示されません。

サイト作成者として、サイトが標準に準拠していると確信している場合(他のブラウザーでも適切に表示され、機能スニッフィングを使用して、使用するブラウザーの回避策を決定します)、以下を使用することをお勧めします。

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

またはHTTPヘッダー:

X-UA-Compatible: IE=Edge

使用しているIEのバージョンに関係なく、最新のレンダラーを取得します。


79
重要な注意:IE 9が互換モードで常にイントラネットサイトを表示するように構成されている場合、メタタグもHTTPヘッダーもそれを上書きしません。
Jacob

29
Jacobが述べているように、IEはデフォルトで、すべてのローカル/イントラネットサイトを互換モードで表示することができます。alt-> Tools Compatability View設定を押し、ボックスがチェックされていないことを確認してください。
Cory Mawhorter、2011

30
メタタグは、<head>の直後に配置した場合にのみ機能しました(以下の回答も参照してください)。<head>要素内でさらに下に置くと、機能しませんでした(まだ破れたページが表示されています)。
Boris van Schooten、2012

13
@ジェイコブ:それは一種の誤解を招くものです。はい、互換性ブラウザモードになり、解決策はありません。ただし、HTTPヘッダーを使用して、ドキュメントモードを設定することができます。これにより、IEのどのバージョンでもサイトに最適に機能します。IE = Edgeは常に最新のレンダリングエンジンを提供します。したがって、技術的に互換モードであっても、ページを通常モードのようにレンダリングできます。私が間違っていても、少なくともイントラネットサイトはこのように機能します([互換性ビューにイントラネットサイトを表示する]設定がオンになっている場合でも)。
mkataja 2012

7
@BorisvanSchooten:これが理由であるかどうかはわかりませんが、<meta>タグは処理されたHTMLファイルの最初の512バイト内にある必要があります。あらゆる種類のPHPを使用できるため、「処理済み」と言いますが、レンダリングされたコードが重要です。私は<meta><meta>タグの下にすべてのコメントを配置する場所に達したので、要件を破ることはありません。
doubleJ 2012年

33

置いた

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

最初に

<head>

(どこかで読んだ、思い出せない)

それがうまくいったとは信じられませんでした!!


タブを閉じて新しいタブを開く必要がありますが、それを試しましたか?
Zeb

1
彼は「しなかった」ではなく「した」と言った;)
ネイサンJB

14
+1、これは非常に貴重なメモです。このステートメントの前に<script>sがある場合、それ(IE = edge)は無視されます。<head>meta
jakub.g 2012

22

IEをIE9標準モードでレンダリングするように強制するには、使用する必要があります

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

状況によっては、IE9が互換モードにジャンプする場合があります。デフォルトでは、これはイントラネットサイトで発生する可能性があります。


他のウェブサイトでも動作します。だからそれはそれではいけません。また、新しいIEバージョンがあるたびに手動で更新する必要があるため、そのメタタグは悪です。
ルネ・

2
問題を解決できません。ただし、IE=edge代わりに使用するように私の回答を編集しました。これにより、常に利用可能な最新のエンジンが使用されます。
Delan Azabani、2009

あなたの仮定は正しくありません。デモではX-UA-Compatibleを指定して、IEが互換表示ボタンを表示しないようにします。これは、ユーザーがボタンを押すと、サイトのコンテンツが正しく機能しないためです。
EricLaw

@ReneGeuze、あなたはそれを間違えました。Edgeは常に最新バージョンのIEを指します。
neoswf 2012年

@DelanAzabaniイントラネットポータルが互換性モードに切り替わり、提案どおりにメタタグを追加しました。それがどのように解決して標準モードの例に留まるかを提案してください-IE 8、IE 8の互換性、IE 8のみが必要です。
dsi 2014

6

このコメントを別のStackOverflowスレッドに投稿しましたが、ここで繰り返す価値があると思いました。

社内のASP.Netアプリでは、Webページ、web.configまたは分離コードに "X-UA-Compatible"タグを追加しても、まったく違いはありませんでした。

唯一の私たちのために働いていた事は、手動でIE8でこの設定をオフにすることでした。

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

(はぁ。)

この問題は、イントラネットサイトのIE8およびIE9でのみ発生するようです。外部Webサイトは正常に動作し、IE8 / 9の正しいバージョンを使用しますが、内部Webサイトの場合、IE9は突然それが実際にはIE7であると判断し、HTML 5のサポートはありません。

いいえ、このロジックもよくわかりません。

私の不本意な解決策は、ブラウザーがHTML 5をサポートしているかどうかをテストし(キャンバスを作成し、それが有効かどうかをテストすること)、無効な場合はこのメッセージをユーザーに表示することです。

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

これは特にユーザーフレンドリーではありませんが、この煩わしい設定をユーザーにオフにすることは、社内のHTML 5 Webアプリを適切に実行させる唯一の方法のようです。

または、ユーザーにChromeを使用してもらいます。;-)


1

http://www.HTML-5.com/index.htmlのサイトにはX-UA-Compatibleメタタグがありますが、アドレスバーの「引き裂かれたページ」アイコンで示されるように、互換表示になります。IE 9(最終バージョン9.0.8112.16421)が標準モードでページをレンダリングするように強制するメニューオプションはどのように取得しますか?その引き裂かれたページのアイコンと「Alt」キートリックを右クリックして、Rene Geuzeによって言及された追加のメニューオプションを表示しようとしましたが、それらは機能しませんでした。


4
メタ周辺のIE条件付きコメントを削除します。ページをとして提供しているapplication/xhtml+xmlため、XML解析ルールが使用されます。XMLは条件付きコメントをサポートしていません。いずれにしても、それは意味がありません。ブラウザは、解釈する条件付きコメントを決定するにモードを選択する必要があります。
ボビンス

1

より現代的なウェブサイトの余地として、ボイラープレートに従ってhtmlタグで条件ステートメントを使用している場合、これは何らかの理由でie9を互換モードにデフォルト設定します。ここでの修正は、条件ステートメントをhtmlタグから移動してbodyタグに追加することです。つまり、headセクションから外します。この方法でも、スタイルシートでこれらのクラスを使用して、古いブラウザーをターゲットにすることができます。


0

私には元気に見えます:

代替テキスト

あなたはあなたがグローバルまたは何かの設定をしていないと確信していますか?これは、Windows 7のベータ版のクリーンインストールです。開発者ツールは、ページのデフォルトがIE9標準モードであることを報告しています。


このエラーの報告は1件以上ありました。たぶん、ベースディレクトリ(alliancesatwar.com)と関係があり、互換モードですべてのサブディレクトリもレンダリングします。しかし、私は質問をします、WebサイトのルートでIEが互換モードでWebサイトをレンダリングするのは何ですか?したがって、少なくともこのガイドは正しくコーディングされています。その時はね。
ルネ・

@Rene Strange、ホームページからガイドリンクをクリックして再現しました。しかし、これは一度だけ起こりました、そしていくつかの試みの後で私はこれをまだ再現していません、それは一度だけです
イー・ジャン

0

私は最近この問題を解決する必要があり、ここに私がやったことがあります:

まず、このソリューションは、Apacheサーバーのチューニングに関するものです。

2番目の主な考えは、IE9にバグがあるということです。つまり、この解決策ではなく、メタタグが機能しないということです。

  • httpd.confを見つけて開きます
  • コメントを外す/または次の行を追加する

    LoadModule headers_module modules/mod_headers.so
  • 次の行を追加します

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
  • Apacheサーバーを保存/再起動します。

  • IE9でページを参照し、wiresharkfiddlerなどのツールを使用するか、IE開発者ツールを使用してヘッダーが存在することを確認します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.