web-dev-qa-db-ja.com

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

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

また、IE9はユーザー設定を記憶しており、自動に戻すことはできないため、手動で設定しないでください(または、少なくともプライベートブラウジングとキャッシュの空化を介しても、方法がわかりません)

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

両方とも同じdoctypeとすべてを使用します。これらのサイトは、同じ基本テンプレート(エンコード、メタタグ、Doctype、および同じJavaScript)を使用して(外観は別として)多くの共通点を持っています。

誰かが私のために答えを持っているなら、それは素晴らしいでしょう! IE7モードでレンダリングするHTML5 Webサイトは、かなり不自由です。

197
René

IE9 documentModeで動作します。

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

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

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

サイト作成者として、サイトが標準に準拠していると確信している場合(他のブラウザーで十分にレンダリングし、使用するブラウザーの回避策を決定するために機能スニッフィングを使用します)、以下を使用することをお勧めします:

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

またはHTTPヘッダー:

X-UA-Compatible: IE=Edge

使用中のIEバージョンにかかわらず、最新のレンダラーを取得します。

262
bobince

置いた

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

後の最初のもの

<head>

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

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

33
pkario

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

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

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

22
Delan Azabani

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

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

only私たちのために働いたのは、IE8でこの設定を手動でオフにすることでした:

enter image description here

(ため息。)

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

いいえ、この論理もよくわかりません。

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

enter image description here

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

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

6
Mike Gledhill

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

1
uknowit2

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

1

私にはうまく見えます:

alt text

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

0
Yi Jiang

私は最近この問題を解決する必要がありましたが、これが私がしたことです:

まず第一に、このソリューションはApacheサーバーの調整に関するものです。

第二に、IE9にはバグがあり、メタタグが機能しないということです。このソリューションの代わりに、これを試してください。

  • httpd.confを見つける/開く
  • 次の行のコメントを解除/追加します

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

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

  • iE9でページを参照し、 wireshark または fiddler などのツールを使用するか、IE開発者ツールを使用してヘッダーがあることを確認します
0