2

これは、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ます。#testChrome には境界線がありません。JavaScript アラートは発生しません。

4

3 に答える 3

4

RadControls は、ヘッダーにある場合にのみ条件付きスタイルシートを取得しています...ドキュメントからわかる限り ( http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html )、 「残念ながら、[条件付きスタイルシートを参照して] それらを確認する実行可能な方法が見つからず、この問題を簡単に修正することはできません。」ということで、条件付きコメントを体。それで、あなたの質問に答えるために、開発者はこれがバグであることを知っており、うまくいけばすぐに修正されます...

于 2012-08-02T18:56:50.097 に答える
1

明らかなことを除外するためだけに、IE Tab Chrome拡張機能を使用していませんか? https://chrome.google.com/webstore/detail/hehijbfgiekmjfkfjpbkbammjbdenadd

于 2012-08-02T18:09:52.883 に答える
1

条件付きスタイルシートの代わりに、 HeadJSまたは別の js ライブラリを使用して、これを攻撃します。これは、ブラウザー検出機能を備えた非常に気の利いたライブラリであり、他にもたくさんの機能があります。

/ older than IE9 /
.lt-ie9 .box { padding: 10px; }

/ CSS fixes for IE6 /
.ie6 ul  { list-style: none; }
于 2012-08-02T18:44:22.190 に答える