SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【JavaScript】IEかどうかを判別する(IE10からは条件分岐コメントが使えない)

問題

IEかどうかを判別しようと思って以下のようにして、「その要素があればIEだ!」という判定をしていたのですが、IE10でできないみたい。どうしよう?

<!--[if IE]><div id="ie_dayo"></div><![endif]-->

ie

答え

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

関連するメモ

コメント