在jQuery中检测Internet Explorer 6或以下版本

45

我刚接触jquery,想知道是否有一种简单的方法来检测浏览器是否为Internet Explorer 6或以下版本?


$.browser已被弃用。请参阅https://dev59.com/1HI-5IYBdhLWcg3wQV8Z了解更多详细信息。 - Mandeep Jain
13个回答

102

2
在仅检测特定版本的Internet Explorer方面,我认为Aamir的方法几乎是完美的。然而,我认为你应该将$.browser.version的值作为整数进行测试,而不是字符串。然后,您可以做更有趣的事情,比如在文档加载时应用绑定,以同时修复IE7和IE6中的常见错误(例如)。但是,我只从明确的观点写作,即我只关心1)Microsoft Internet Explorer,以及2)如果检测到它的版本。虽然已被弃用,但查询$.browser和$.browser.version对我来说是最直接的方法。 - markedup
3
另一种方法可能是: ($.browser.msie && /6.0/.test(navigator.userAgent) ) - Aamir Afridi
19
直到他们升级到IE 16.0版本或8.6.0版本等。 - nickf
3
注意:jQuery.browser在1.9版本中已被移除。需要使用插件来替代它。 - Tikkes
1
如果您仍需要在jQuery 1.9(或其他已弃用的函数)中使用$.browser,则还需添加对jQuery-migrate(http://code.jquery.com/jquery-migrate-1.2.1.js)的引用。 - FoxHound

50
您还可以直接询问IE。
<!--[if lte IE 6]>
<script type="text/javascript">
  var isRunningIE6OrBelow = true;
</script>
<![endif]-->

17

jQuery检测功能,而非“浏览器”。话虽如此,您可以使用 jQuery.support 方法检测用户的浏览器支持什么。

已弃用的方法(请勿使用)

  • $.browser
  • $.browser.version
  • $.boxModel

https://api.jquery.com/jQuery.support 将为您提供哪些功能受到哪些浏览器支持的摘要。利用这些数据,您将开发一些条件检查来确定使用的浏览器是否是目标浏览器。


7
如果用户想要检测某个功能,但没有jQuery.support方法来检查"浏览器是否向浏览器历史记录添加哈希"或类似功能,因此在这种情况下,检测浏览器版本而不是"它是否支持.cssFloat和.htmlSerialized"更为合适。 - ebynum

8
if ($.browser.msie && parseInt($.browser.version, 10) <= 6) {
  alert("I'm not dead yet!"); 
}

-- 更新

请注意,$.browser 已被从 jQuery 1.9 中移除,请知悉。


6

检测IE的方法非常简单:

if ('v'=='\v') {
   welcome to IE )) 
}

很遗憾,它不能识别自己的版本,但这并不总是必要的。


5
如果存在ActiveXObject而不存在XMLHttpRequest,那么它是IE6。
/* IE6 Check */
(!!window.ActiveXObject && !window.XMLHttpRequest) ? true : false;

在IE7中,它将是这样的:
(!!window.ActiveXObject && !!window.XMLHttpRequest) ? true: false;

参考文献


3
我经常检查浏览器的版本。.support方法很棒,但当您需要在覆盖层上隐藏选择时,它并没有真正帮助。没有“支持选择是窗口控件”的选项。您只需要检查浏览器版本,因此我建议在可能的情况下使用.support方法,并在必要时使用.browser方法。

我完全同意。很多人大声赞扬$.support,但我从来没有发现它有用过。在我看来,它只是为内部和插件使用而设计的。 - nickf

3

另外一个很好的优点是,使用 JQuery 时你不必担心版本问题。

然而,如果你正在使用 jQuery 来修复 IE6 CSS 渲染 bug,那这并没有什么帮助。


1

只是想让大家知道,$.browser.msie && /6.0/.test(navigator.userAgent) 不可靠。我曾因为 navigator.userAgent 字符串中包含“Media Center PC 6.0”而遇到 JQuery bgiframe 的问题,于是来到这个问题页面寻找答案。现在,我已经编辑了源代码,使用 $browser.version 测试。

JQuery 废弃这些浏览器测试是愚蠢的,因为它们虽然难看,但却是处理丑陋的浏览器生态系统所必需的。



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