How can I detect IE 7 and IE 8 using jQuery.support properties?
Is it possible to detect the browser versions using jQuery.support or just those blah blah blah browser features?
How can I detect IE 7 and IE 8 using jQuery.support properties?
Is it possible to detect the browser versions using jQuery.support or just those blah blah blah browser features?
This is totally possible with support:
if (!$.support.leadingWhitespace) {
//IE7 and 8 stuff
}
This also detects IE 6 however, if you don't want IE 6 to run this code block, you will need another flag to exclude it
A good reason for not using browser is it is a deprecated feature, and it will likely be removed to a plugin with version 1.9. (See the comments on the answer to How to detect IE7 with jQuery?)
"We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery" http://api.jquery.com/jQuery.browser/
here is a working example: http://jsfiddle.net/AGtG8/16/
if (jQuery.support.leadingWhitespace == false){
... code for IE7-IE8 ...
}
else {
...
}
Be careful with the following because it also includes IE10:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//<IE7
}
better use:
if ($.browser.msie && parseInt($.browser.version,10)<7) {
//<IE7
}
$.browser is no longer included in jQuery 1.9+, you can add it back using the jQuery Migrate plugin if needed.One trick I found is to add Conditionnal Tags in the HTML
<!--[if lt IE 7]><body class="ie ie6 lte9 lte8 lte7"><![endif]-->
<!--[if IE 7]><body class="ie ie7 lte9 lte8 lte7"><![endif]-->
<!--[if IE 8]><body class="ie ie8 lte9 lte8"><![endif]-->
<!--[if IE 9]><body class="ie ie9 lte9"><![endif]-->
<!--[if !IE]><!--><body class="not-ie"><!--<![endif]-->
Then use JQuery like this :
$('body.ie7')
It also helps for CSS on IE specific
body.ie6{ margin: 0; }
I don't know if it's good for you but anyways, that's still an option.
as explained, .support is for feature-detection. if you want to detect the browser, just use .browser.
var ua = $.browser;
if ( ua.msie && ua.version.slice(0,1) == "8" ) {
alert('IE 8');
} else if ( ua.msie && ua.version.slice(0,1) == "7" ) {
alert('IE 7');
} else {
alert('something else');
}
$.browser is deprecated and will probably be removed in future versions.jQuery.support is for detecting browser features. To detect browser version use jQuery.browser:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//IE7
}
Update: $.browser is deprecated now, don't use it.
<= instead if you want to include IE7 too.I've noticed many different ways of doing this, this DOESN'T use $.support although I've found that this works very well. Also just as a note, jquery has just announced that they will be removing any support for IE 6,7,8 in jquery 2.0 (http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/).
var msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/),
msie = !!msVersion,
ie6 = msie && parseFloat(msVersion[1]) < 7;
// Help prevent flashes of unstyled content
if (!ie6) {
//Do Something here.
}
Happy coding!
I added few lines of Javascript to make it work again:
jQuery.uaMatch = function (ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
if (!jQuery.browser) {
matched = jQuery.uaMatch(navigator.userAgent);
browser = {};
if (matched.browser) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if (browser.chrome) {
browser.webkit = true;
} else if (browser.webkit) {
browser.safari = true;
}
jQuery.browser = browser;
}
Use jQuery.browser.version instead of support
jQuery.browser.version may work for users actually using older versions of IE, but it fails for testing using compatability mode for an earlier version with IE9 (the version shows as "9.0" instead of the earlier version.) However, jQuery.support does work with IE9 compatability mode.Try $.browser, it will let you know if browser version is less than IE9
var isM = false;
$.each($.browser, function (i, val) {
if ($.browser.msie && parseInt(val) < 9) isM = true;
});