単一の IF ステートメントを使用して、IE8 以下を除くすべてのブラウザのコードを実行する方法は?
2 に答える
私は答えを見つけました、そしてそれはかなり簡単です:
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 ステートメントを通過し、それ以外の場合は失敗します。
それが十分に明確であることを願っています。
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]-->