これは、IE8以下にのみIEハックを与えるための私の標準的な条件付きコメントです。初期ロードで動作します。
<!--[if lt IE 9]>
<link href="Styles/IE.css" rel="stylesheet" type="text/css" />
<![endif]-->
ポストバックがあると、Chrome 21.0.1180.60 m が突然読み込まれます。何が起こっている?
アップデート:
Firefox や Opera でも同様の現象が発生することを確認しました。どういうわけか.NETが条件付きコメントに関係なくCSSインクルードのソースをスクレイピングし、ポストバックにCSSファイルを何らかの形で含むビューステートに配置するのではないかと思っていますか? それは意味がありますか?ここで他に何が起こっているのでしょうか?
更新 2:
これは奇妙です。条件付きコメントは、CSS (プレーンテキスト、html、または JavaScript ではない) のみをロードし、ヘッダーにある場合にのみロードします。Firefox、Opera、および IE は (対象のブラウザーに関係なく) 任意の数の条件付きコメントを読み込みますが、Chrome は最初のコメントのみを読み込みます。したがって:
<!--[if lt IE 9]>
<link href="Styles/IE.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if IE 7]>
<style>#test{border:dashed 1px red;</style>
<script>alert("seven");</script>
<![endif]-->
<!--[if IE 8]>
<style>#test{border:dashed 1px blue;</style>
<script>alert("eight");</script>
<![endif]-->
<!--[if IE 9]>
<style>#test{border:dashed 1px green;</style>
<script>alert("nine");</script>
<![endif]-->
ポストバック時にすべてのブラウザに をロードしIE.css
、IE、Opera、および Firefox は IE 7、8、および 9 の CSS をロードするため、 に緑色の境界線が表示され#test
ます。#test
Chrome には境界線がありません。JavaScript アラートは発生しません。