【jQuery】$.supportによるブラウザの判別は、現時点では無理らしい
最終更新日 2011年11月13日
jQuery 1.3 以降では、$.browserは非推奨となったそうです。
代わりに$.supportの使用が勧められています。
で、どうすれば各ブラウザを判別できるのかを調べてみます。
下は $.support の各プロパティの真偽値がブラウザによって
どう変わるのかを一覧表にまとめたものです。
【検証用ページ】
http://www.usamimi.info/~sutara/sample/jq_support.html
| プロパティ名 | Chrome15.0 | Safari5.1.1 | Firefox8.0 | Opera11.52 | IE9 |
|---|---|---|---|---|---|
| ajax | true | true | true | true | true |
| boxModel | true | true | true | true | true |
| changeBubbles | true | true | true | true | true |
| checkClone | true | true | true | true | true |
| checkOn | true | false | true | true | true |
| cors | true | true | true | false | false |
| cssFloat | true | true | true | true | true |
| hrefNormalized | true | true | true | true | true |
| leadingWhitespace | true | true | true | true | true |
| noCloneChecked | true | true | true | true | false |
| noCloneEvent | true | true | true | true | true |
| opacity | true | true | true | true | true |
| optDisabled | true | true | true | true | true |
| optDisabled | undefined | undefined | undefined | undefined | undefined |
| style | true | true | true | true | true |
| submitBubbles | true | true | true | true | true |
| tbody | true | true | true | true | true |
http://api.jquery.com/jQuery.support/
…以上の結果から、下記のようにすれば4種類に分けられると判明しました。
if(!$.support.checkOn){
//Safari5.1.1
}else if($.support.noCloneChecked){
//IE9
}else if(!$.support.cors){
//Opera11.52
}else{
//Firefox8.0, Chrome15.0
}
しかし、下記のページで、jQueryを使わずにブラウザごとに判別する方法が紹介されています。
『JSでのUA条件分岐便利スニペット』
http://w3g.jp/blog/tools/js_browser_sniffing