【发布时间】:2012-02-12 00:15:54
【问题描述】:
如何使用jQuery.support 属性检测 IE 7 和 IE 8?
是否可以使用 jQuery.support 检测浏览器版本或仅使用那些等等等等浏览器功能?
【问题讨论】:
标签: jquery internet-explorer cross-browser
如何使用jQuery.support 属性检测 IE 7 和 IE 8?
是否可以使用 jQuery.support 检测浏览器版本或仅使用那些等等等等浏览器功能?
【问题讨论】:
标签: jquery internet-explorer cross-browser
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
var ieversion = new Number(RegExp.$1);
alert(ieversion < 9);
}
【讨论】:
我添加了几行 Javascript 以使其再次工作:
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;
}
【讨论】:
我用它来检查浏览器是否为 ie 8 或更少
要更改 ie 版本,只需将 8 更新为另一个 ie 版本
if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8 ) {
runIECode();
} else {
runOther();
}
【讨论】:
jQuery.support 用于检测浏览器功能。要检测浏览器版本,请使用 jQuery.browser:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//IE7
}
更新:$.browser 现已弃用,请勿使用。
【讨论】:
<=。
我注意到了很多不同的方法,虽然我发现这很有效,但它不使用$.support。另请注意,jquery 刚刚宣布他们将在 jquery 2.0 (http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/) 中删除对 IE 6、7、8 的任何支持。
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.
}
编码愉快!
【讨论】:
请注意以下内容,因为它还包括 IE10:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//<IE7
}
更好的使用:
if ($.browser.msie && parseInt($.browser.version,10)<7) {
//<IE7
}
【讨论】:
$.browser 不再包含在 jQuery 1.9+ 中,如果需要,您可以使用 jQuery Migrate 插件将其添加回来。
if (jQuery.support.leadingWhitespace == false){
... code for IE7-IE8 ...
}
else {
...
}
【讨论】:
我发现的一个技巧是在 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]-->
然后像这样使用 JQuery:
$('body.ie7')
它还有助于特定于 IE 的 CSS
body.ie6{ margin: 0; }
我不知道这是否对你有好处,但无论如何,这仍然是一个选择。
【讨论】:
这完全可以在支持下实现:
if (!$.support.leadingWhitespace) {
//IE7 and 8 stuff
}
这也会检测到 IE 6,但是,如果您不希望 IE 6 运行此代码块,则需要另一个标志来排除它
不使用浏览器的一个很好的理由是它是一个已弃用的功能,并且很可能会在 1.9 版的插件中被删除。 (见How to detect IE7 with jQuery?回复的cmets)
“我们建议不要使用此属性;请尝试使用特征检测代替(请参阅 jQuery.support)。jQuery.browser 可能会在 jQuery 的未来版本中移动到插件中” http://api.jquery.com/jQuery.browser/
这是一个工作示例:http://jsfiddle.net/AGtG8/16/
【讨论】:
如前所述,.support 用于特征检测。如果要检测浏览器,只需使用.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 已弃用,可能会在未来的版本中被删除。
试试$.browser,它会让你知道浏览器版本是否低于IE9
var isM = false;
$.each($.browser, function (i, val) {
if ($.browser.msie && parseInt(val) < 9) isM = true;
});
【讨论】:
使用jQuery.browser.version 代替支持
【讨论】:
jQuery.browser.version 可能适用于实际使用旧版本 IE 的用户,但对于使用 IE9 的早期版本(版本显示为“9.0”而不是早期版本)使用兼容模式测试失败版本。)但是,jQuery.support 确实适用于 IE9 兼容模式。