質問

Webページにあるときのようです

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

IE 8がIE 7をエミュレートし、その後Webページで後で、あるとき、

<!--[if lt IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->

その後、ロードされます ie.css?

つまり、IE 8、IE 7をエミュレートします。 lt IE 8 そうなるでしょう true?

アップデート: ただし、サーバー側の変数 HTTP_USER_AGENT まだIE 8と言っていますか?ブラウザはIE 8としてサーバーに移動するため、IE 8はHTTP_USER_AGENTの文字列としてIE 8を与え、サーバーはIE 7をエミュレートしたいと答えます。したがって、PHPなどのサーバー言語がHTTP_USER_AGENTを検出した場合、IE 8になります。互換性モード(すなわち7エミュレーションモード)?

役に立ちましたか?

解決

それがそのメタタグの全体的なポイントですね。あなたがこれを持っている瞬間:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

IE8は、IE7としてクライアント側で動作を開始します:

  • あなたのページはすべてIE7のようにレンダリングされます
  • IE8より古いものをターゲットにした条件付きコメント(<!--[if lt IE 8]>)も読み取られ、内部のコードが実行されるため、 ie.css ロード

ただし、IE7スイッチは、IE8がそのメタタグを読み取った後にのみ行われます。 HTMLは応答の一部として返されるため、IE8は最初にリクエストする必要があります。 IE8は、このメタタグが表示されることを事前に考えていないので、それが送信するユーザーエージェント文字列は MSIE 8.0. 。 PHPはそれをIE8として認識します。

他のヒント

別のソリューションが必要な場合(そしてそれを使用する意思があります)、jQueryを使用してブラウザ(jquery.browser)を検出できます。互換モードでIE8のIE7で発生します。

IE8にIE7をエミュレートするように言っている場合、IE7のCSSは正しく動作するはずだと信頼できます。 LTの代わりにLTEを使用するだけです。

<!--[if IE 8]> 
   <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />
<![endif]-->
<!--[if lte IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top