使用jQuery检测IE浏览器

20
$(window).load(function () {
   if($.browser.msie && $.browser.version=="6.0") {
     // do stuff
   }
});

刚刚意识到 $.browser 已在1.3中弃用。有没有新的方法来检测IE,特别是IE6。


2
jQuery.browser没有被弃用。虽然它不再被jQuery内部使用,但它将来仍可用于用户脚本:http://docs.jquery.com/Utilities/jQuery.browser - Crescent Fresh
文档中写道:“在jQuery 1.3中已弃用(请参见jQuery.support)。用户浏览器的渲染引擎版本号。”。 - apaderno
1
“特征检测”比“浏览器嗅探”要好得多,当您的页面由IE6呈现时,您想要实现什么目标? - Christian C. Salvadó
2
作为Web开发者,我们需要立下誓言来抵制IE直到人们停止使用它。 - OneChillDude
3个回答

19

jQuery浏览器文档显示了以下警告。(强调是我的。)

由于$.browser使用navigator.userAgent来确定平台,因此用户可以欺骗它,或者浏览器本身可能会误报。最好尽可能避免特定于浏览器的代码。不要依赖于$.browser,而是使用像Modernizr这样的库。

文档页面还说:

此属性已在jQuery 1.9中删除,并且仅通过jQuery.migrate插件可用。请尝试改用功能检测。

即使是旧文档中建议的jQuery.support也有以下警告。(强调是我的。)

代表不同浏览器功能或错误存在的属性集合。旨在供jQuery内部使用;当不再需要内部使用以提高页面启动性能时,可能会删除特定属性。 对于您自己项目的功能检测需求,我们强烈建议使用外部库(如Modernizr),而不是依赖于jQuery.support中的属性。

以前的jQuery.support文档报告了以下属性和值。

  • $.support.boxmodel 在IE 6和7中为false
  • $.support.cssFloat 在IE 6、7和8中为false;在IE 9中为true
  • $.support.leadingWhitespace 在IE 6、7和8中为false
  • $.support.objectAll 目前在IE 6、7和8中为false

2
对于其他寻找该评论的人,$.support.cssFloat 在IE 6、7和8中为false。在IE 9中为true。 - Nemke
我知道这个答案有点老了,但是在IE9中使用浏览器模式IE7进行调试时,$.support.boxModel === true。也许是因为我在IE9中使用了浏览器模式? - kand

6

来自文档的最新消息:我们建议不要使用此属性,而应尝试使用功能检测(请参见jQuery.support)。


1
显示浏览器信息。
jQuery.each( jQuery.browser, function( i, val ) {
$( "<div>" + i + " : <span>" + val + "</span>" )
.appendTo( document.body );
});

警告IE渲染引擎的版本。除非包括jQuery Migrate插件,否则在jQuery 1.9或更高版本中将无法使用。

if ( $.browser.msie ) {
alert( $.browser.version );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接