【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