【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
@*/