2

私が遭遇している問題は、まさにこの質問のタイトルが言っていることです。私のページの条件付きコメントは、拡張子が html の場合にのみ機能します。

これを xhtml ファイルとして保存すると、条件付きコメントが機能せず、ブラウザーに関係なくページに「インターネット エクスプローラーではありません」と表示されます。ただし、ファイルの名前を html に変更すると、すべてが正常に機能します。ページが xhtml ファイルである必要がある場合を除いて、これは問題になりません。

問題を再現する最小限のコードを次に示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Title</title>
</head>
<body>
        <!--[if IE]>Internet explorer<![endif]-->
        <!--[if !IE]>-->Not internet explorer<!--<![endif]-->
</body>
</html>

Google とこのサイトで数時間テストして検索して見つけた唯一のものは、残念ながら何もしなかった 2 行目です。

4

2 に答える 2

2

IE9でテストしていますよね?

これは、ファイルをローカルでテストする場合にのみ発生します。Web サーバー経由でページをテストした場合、条件付きコメントはファイル拡張子に関係なく正常に機能することがわかります。

その理由は、IE9 (または IE8 以前ではなく、他のブラウザー) で拡張子が .xhtml のファイルにローカルでアクセスすることは、application/xhtml+xmlコンテンツ タイプを含むページを提供することと同じだからです。

つまり、IE9 はファイルを「真の」XHTML として処理しています。通常、XHTML ファイルはtext/htmlコンテンツ タイプとともに提供されるため、XHTML ではなく HTML として処理されます。

真の XHTML では、XML パーサーを使用してマークアップを解析する必要があります。XML 解析規則は非常に厳密であり、条件付きコメントのような厄介なハックを許可していないため、application/xhtml+xmlモードの IE9 はそれらをサポートしていません。

于 2012-05-25T07:03:46.393 に答える
0
You can use this code after including jquery library and in this way your xhtml will work in the same way than html page.

    <script type="text/javascript">//<![CDATA[

        var div = document.createElement("div");
        div.innerHTML = "<!--[if IE 8]><i></i><![endif]-->";
        var isIE8 = (div.getElementsByTagName("i").length == 1);

        div.innerHTML = "<!--[if IE 9]><i></i><![endif]-->";
        var isIE9 = (div.getElementsByTagName("i").length == 1);

        if (isIE8) {
           $('html').addClass('ie').addClass('ie8');
        } else
        if (isIE9) {
           $('html').addClass('ie').addClass('ie9');
        }
     //]]>
    </script>
于 2015-02-01T01:33:54.580 に答える