2009-12-22 150 views
20
$(window).load(function() { 
    if($.browser.msie && $.browser.version=="6.0") { 
    // do stuff 
    } 
}); 

刚刚意识到$ .browser已在1.3中折旧。什么是检测IE的新方法,特别是IE6。使用jQuery检测IE浏览器

+2

'jQuery.browser'不被弃用。尽管jQuery在内部不再使用它,但它可供用户脚本无限期地使用:http://docs.jquery.com/Utilities/jQuery.browser – 2009-12-22 04:27:42

+0

该文档中提供了“在jQuery 1.3中不赞成使用(请参阅'jQuery.support' )用户浏览器的渲染引擎的版本号。“ – kiamlaluno 2009-12-22 04:39:29

+1

*功能检测*远远优于*浏览器嗅探*,当您的页面由IE6呈现时,您试图实现什么功能? – CMS 2009-12-22 04:50:04

回答

19

jQuery documentation for jQuery.browser显示以下警告。 (重点是我的。)

因为$.browser使用navigator.userAgent确定平台,它是由浏览器本身用户或失实陈述容易受到欺骗。 尽可能避免使用浏览器专用代码。而不是依靠$.browser最好使用像Modernizr这样的库。

文档页面还表示:jQuery的1.9辗转

此属性,并且只能通过jQuery.migrate插件。请尝试改用功能检测。

即使jQuery.support,这是从旧的文档建议有以下警告。 (重点是我的。)

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

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

  • $.support.boxmodel是在IE 6 false和7
  • $.support.cssFloatfalse为IE 6,图7和8;它是在IE 9.
  • $.support.leadingWhitespacetruefalse为IE 6,图7和8
  • $.support.objectAll是目前用于false IE 6,图7和8
+2

只为所有其他人发现此评论,$ .support.cssFloat为IE 6,7和8是错误的。在IE 9中它是真的。 – Nemke 2013-03-01 08:00:42

+0

我知道这个答案是旧的,但在IE9中使用浏览器模式IE7进行调试时有$ .support.boxModel === true。也许这是因为我在IE9中使用浏览器模式? – kand 2013-03-06 16:07:58

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); 
}