-1

単一の IF ステートメントを使用して、IE8 以下を除くすべてのブラウザのコードを実行する方法は?

4

2 に答える 2

0

私は答えを見つけました、そしてそれはかなり簡単です:

if ( parseFloat((navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]*)/)||[0,9])[1])>=9 ) {
    //do something for all browsers and IE9+
} else {
    //do something only for IE8 and lower
}

説明:
navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]*)/)、インデックス 0 に文字列全体、インデックス 1 にバージョンを含む配列を返します。一致が見つからない場合は、NULL を返します。
句が NULL を返すと、次のオペランドが使用さ[0,9]れ、バージョン 9 がインデックス 1 (探している IE の最も低いバージョン) になります。
次に、インデックス 1 の値を取得し、それが 9 以上かどうかを確認します。

それで、それはどういう意味ですか?
これは、IE 以外のすべてのブラウザーが IF を渡すことを意味します。これは、一致すると常に NULL が返されるためです。既定の配列を取得し、最終的に if をチェックし9>=9ます。これは常に true です。ブラウザが IE の場合は、ブラウザの実際のバージョンを取得して確認します。その場合、すべての IE9+ バージョンは IF ステートメントを通過し、それ以外の場合は失敗します。

それが十分に明確であることを願っています。

于 2013-10-27T15:43:48.000 に答える
0

HTML や CSS に関するものだけであれば、JavaScript の代わりに .html ファイルで条件付きコメントを使用できます。 http://www.quirksmode.org/css/condcom.html

あなたの場合、

<!--[if lte IE 8]>
Cool stuff for IE 8
<![endif]-->

編集

<!--[if gte IE 8]>
Cool stuff for IE greater than IE 8
<![endif]-->
于 2013-10-27T16:00:13.633 に答える