【JavaScript】IEかどうかを判別する(IE10からは条件分岐コメントが使えない)
問題
IEかどうかを判別しようと思って以下のようにして、「その要素があればIEだ!」という判定をしていたのですが、IE10でできないみたい。どうしよう?
<!--[if IE]><div id="ie_dayo"></div><![endif]-->
答え
IE10からはHTML内の条件分岐コメントが使えなくなった(標準モードのとき無視される)。
JavaScriptの方では、どうしてもIEかどうかで動きを変えざるを得ない場合があれば、以下の方法で。
//単純にIEでないならfalse、IEならtrue var is_ie = false; /*@cc_on is_ie = true; @*/
もう少し細かくすると、
//IEでないならfalse、IEならバージョンを取得 var is_ie = false; /*@cc_on @if (@_jscript_version == 10) is_ie = 10; @elif (@_jscript_version == 9) is_ie = 9; @elif (@_jscript_version == 5.8) is_ie = 8; @else is_ie = 7; //か、7以前 @end @*/
@cc_on で、IE独自仕様の条件付きコンパイルの機能が有効になる。
User Agentは偽装可能なので、あてにできない。
おまけ
IE10はモダンなブラウザの仲間と認めようじゃないか ということにするなら、
var is_ie = false; /*@cc_on @if (@_jscript_version == 10) //IE10はIEでないことにする is_ie = false; @else is_ie = true; @end @*/
コメント