如何使用jQuery检测IE11浏览器

16

我有代码$.browser用于检测浏览器并根据结果应用一些布局样式。但现在在ie 11中,$.browser会返回mozilla v.11。请问有什么修复建议?


4
我认为IE11已经足够更新了,可以使用你之前所用的任何样式,无需做出改变。 - Waleed Khan
实际上,Mozilla风格的梯度不起作用。但是遗留代码使用$.browser只能将IE11检测为Mozilla,我无法删除$.browser。 - therion
只是提醒一下,jQuery 1.9中已经移除了jQuery.browser,并且仅通过jQuery.migrate插件提供支持。他们建议您改用特性检测。请参阅http://api.jquery.com/jQuery.browser/。 - Olly Hodgson
这是我找到的最佳解决方案: https://dev59.com/_mMk5IYBdhLWcg3w5R2k#20201867if (Object.hasOwnProperty.call(window, "ActiveXObject") && !window.ActiveXObject) { // 是IE11 } - xorcus
2个回答

34

试试这个:

var isIE11 = !!navigator.userAgent.match(/Trident.*rv\:11\./);
alert(isIE11);

编辑:

根据评论中提供的正则表达式修复,进行了编辑。该修复已在2014年2月17日的IE11当前版本中生效。


感谢您的信息。那可能是唯一的方法。 - therion
2
修复:!!navigator.userAgent.match(/Trident.*rv\:11\./); - pstadler
或者 !!navigator.userAgent.match(/Trident\/7\./);,因为它可以发送类似于 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C) 的内容。 - DitherSky
1
这是我找到的最佳解决方案: https://dev59.com/_mMk5IYBdhLWcg3w5R2k#20201867if (Object.hasOwnProperty.call(window, "ActiveXObject") && !window.ActiveXObject) { // 是IE11 } - xorcus

5

上一个翻译是正确的。

示例:

为仅在IE7及以上版本(包括10+11...)的IE中应用主体样式

将此代码复制/粘贴到<head></head>标签内:

<script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript'>//<![CDATA[ 
$(function(){
      if(navigator.userAgent.match(/Trident\/7\./)) {
          $('body').addClass('if-ie');
     }


});//]]>
</script>

这对我来说效果最好! - danyo

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