jQuery1.9以降のIE判別方法


jQuery1.9以降では長らく非推奨であった$.browserが無くなるため、以下のようなコードは動かない。

if ($.browser.msie) {
  alert("グヘヘ、きみIEなんだね( ^ω^)");
}

存在しないオブジェクトを辿ろうとしてエラーで処理が止まるから注意。

$.supportを使う

$.browser.msieなどという安直なやり方で条件分岐出来る時代は終わった。
これからは、ブラウザがサポートしている機能の組み合わせで判別するしか無い。

というわけでIE6〜IE9までは以下のコードで分けられる。

if (!$.support.noCloneChecked) {
  alert("お前IEだな!");
}

どこかのブログに「$.support.noCloneEvent」はIE6~9までfalseを返す、みたいなことが書いてあったのだが、それだとIE9はtrueを返すので信じないように。
noCloneCheckedの他にIE6〜IE9までfalseを返してくれるのは「$.support.optSelected」くらいだと思う。
「$.support.cors」も使えそうだが、Operaに反応してしまうらしい。

IE10は?

知らない。