「ie = emulateie7」は「<! - [if lt ie 8]>」も真実にするように思われます。
-
29-09-2019 - |
質問
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]-->