web-dev-qa-db-ja.com

IF IE条件が機能しない

私はコメントの条件を機能させようと努力していますが、私が運んでいないので、誰かが私が間違っていることを説明できますか?

ここに私のコードがあります:

        <!--[if IE 10]>
            IE IS VERSION 10<br />
        <![endif]-->
        <!--[if !IE]><!-->
            Browser is not IE
        <!--<![endif]-->
        <!--[if lt IE 9]>
            IE IS LESS THAN VERSION 9<br />
        <![endif]-->

何が起きているかは、イライラするほど矛盾しています。 IE8で上記のコードを使用してページをロードすると、メッセージが表示されます"IE IS LESS THAN VERSION 9"いいですか?いいえ同じページをIE1で読み込むと、メッセージが表示されるため"IEはブラウザではありません"

IE10がIEブラウザではないのはなぜだと思いますか?!私はページごとにクロールしてきましたが、見つけたコードのコードに問題はないようです。 。

22
TheSnooker

CSSソリューション:

ブラウザにCSSベースのみを適用する場合は、次を試してください。

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}

JavaScriptソリューション:

IE 10は条件ステートメントをサポートしていません。

Internet Explorer 10の条件ステートメント 。条件付きコメントは通常のHTMLコメントとして扱われ、完全に無視されます。

ブラウザ検出の代わりに、 Modernizr などの機能検出ライブラリを使用します。

この コメントimpressivewebs に解決策が見つかりました:

ここにテストするデモがあります

解決策は次のとおりです。

if (Function('/*@cc_on return document.documentMode===10@*/')()) {
    alert('IE 10');
} else {
    alert('Not IE 10');
}

それ

  • 条件付きコメントは不要です。
  • コメントストリッピング圧縮/処理の場合でも機能します。
  • internet Explorer 11にはie10クラスは追加されていません。
  • internet Explorer 10互換モードで実行されているInternet Explorer 11で意図したとおりに動作する可能性が高い。
  • スタンドアロンスクリプトタグは必要ありません(ヘッドの他のJavaScriptコードに追加するだけです)。
  • テストにjQueryは必要ありません
19
Zaheer Ahmed

CSSのみのソリューションに誰も追加していないことに驚いています。 cssを使用する場合は、次のようなステートメントを使用します。

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}

このように、jqueryやHTMLマークアップに依存する必要はありません。 cssに投稿するだけでいいです。

今、それはハックですか?そうだね。これは、Microsoftの高コントラストタグの使用に依存しますが、msタグを使用するブラウザは他にないので、準備は万端です。

最後に、これらのページで詳細を確認してください。

ブログ投稿

コントラストタグのMSサイト

22
Maximus

IE 10、11およびupwardは条件付きコメントをサポートしなくなりました。

この回答を参照してください: https://stackoverflow.com/a/22187600/1498739

3
abiNerd

IE 10は条件付きコメントを削除しました。

このようなjavascriptで同様のことができます:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}
0
sclarson

Internet Explorer 9の動作をオプトインするには、ページの上部近くに次のメタタグを追加してください。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

これは、Internet Explorer 10標準および互換モードで条件付きコメントが削除され、HTML5との相互運用性とコンプライアンスが向上したためです。これは、他のブラウザと同様に、条件付きコメントが通常のコメントとして扱われることを意味します。この変更は、Windows Internet Explorer専用に記述されたページ、またはブラウザースニッフィングを使用してInternet Explorerの動作を変更するページに影響を与える可能性があります。

0
Ian