jQuery1.5あたりから$.supportの値が変わるらしいので調べてみた。(2011.7.28時点)
| property | Your Result | Chrome12 | Android Mobile | Safari5.1 | Opera11.50 | Firefox3.6 | Firefox5 | IE6 | IE7 | IE8 | IE9 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ajax | undefined | true | true | true | true | true | true | true | true | true | true |
| boxModel※1 | undefined | true | true | true | true | true | true | true | true | true | true |
| changeBubbles | undefined | true | true | true | true | true | true | false | false | false | true |
| checkClone※2 | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined |
| checkOn | undefined | false | false | false | true | true | true | true | true | true | true |
| cors | undefined | true | true | true | false | true | true | false | false | false | false |
| cssFloat | undefined | true | true | true | true | true | true | false | false | false | true |
| hrefNormalized | undefined | true | true | true | true | true | true | false | false | true | true |
| htmlSerialize | undefined | true | true | true | true | true | true | false | false | false | true |
| leadingWhitespace | undefined | true | true | true | true | true | true | false | false | false | true |
| noCloneChecked | undefined | true | true | true | true | true | true | false | false | false | false |
| noCloneEvent | undefined | true | true | true | true | true | true | false | false | false | true |
| opacity | undefined | true | true | true | true | true | true | false | false | false | true |
| optDisabled | undefined | true | false | true | true | true | true | true | true | true | true |
| optSelected | undefined | true | true | true | true | true | true | false | false | false | false |
| scriptEval※2 | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined | undefined |
| style | undefined | true | true | true | true | true | true | false | false | false | true |
| submitBubbles | undefined | true | true | true | true | true | true | false | false | false | true |
| tbody | undefined | true | true | true | true | true | true | false | false | true | true |
/**
* $.supportでブラウザの判別(jQuery1.6.2)
*
*
*/
var DETECT_APP = DETECT_APP || {};
DETECT_APP.util = {};
DETECT_APP.util.browser = (function () {
var
_isIE = false,
_isIE6 = false,
_isIE7 = false,
_isIE8 = false,
_isIE9 = false,
_isFirefox = false,
_isWebKit = false,
_isSafari = false,
_isChrome = false,
_isOpera = false;
function isIE () {
return _isIE;
}
function isIE6 () {
return _isIE6;
}
function isIE7 () {
return _isIE7;
}
function isIE8 () {
return _isIE8;
}
function isIE9 () {
return _isIE9;
}
function isFirefox () {
return _isFirefox;
}
function isWebKit () {
return _isWebKit;
}
function isSafari () {
return _isSafari;
}
function isChrome () {
return _isChrome;
}
function isOpera () {
return _isOpera;
}
//ブラウザ検出
if(jQuery.support.noCloneChecked) {
if(!jQuery.support.checkOn) {
//WebKit
_isWebKit = true;
if(navigator.vendor.match(/apple/i)) {
_isSafari = true;
}
else if(navigator.vendor.match(/google/i)) {
_isChrome = true;
}
}
else if(jQuery.support.cors) {
_isFirefox = true;
}
else {
_isOpera = true;
}
}
else {
//IE
_isIE = true;
if(jQuery.support.cssFloat) {
_isIE9 = true;
}
else if(jQuery.support.tbody) {
_isIE8 = true;
}
else if (typeof document.documentElement.style.maxHeight != "undefined") {
_isIE7 = true;
}
else {
_isIE6 = true;
}
}
//公開するメソッド
return {
isIE: isIE,
isIE6: isIE6,
isIE7: isIE7,
isIE8: isIE8,
isIE9: isIE9,
isFirefox: isFirefox,
isWebKit: isWebKit,
isSafari: isSafari,
isChrome: isChrome,
isOpera: isOpera
};
}());
$(function () {
var browser = DETECT_APP.util.browser;
alert([
"isIE: " + browser.isIE(),
"isIE6: " + browser.isIE6(),
"isIE7: " + browser.isIE7(),
"isIE8: " + browser.isIE8(),
"isIE9: " + browser.isIE9(),
"isFirefox: " + browser.isFirefox(),
"isWebKit: " + browser.isWebKit(),
"isSafari: " + browser.isSafari(),
"isChrome: " + browser.isChrome(),
"isOpera: " + browser.isOpera()
].join("\r\n"));
});