首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery未能检测到IE 11

Jquery未能检测到IE 11
EN

Stack Overflow用户
提问于 2013-09-08 13:16:37
回答 5查看 43.2K关注 0票数 28

只是偶然发现了一个问题。当试图使用Jquery检测IE11(目前正在播放的测试版)时,结果是“firefox”。相同的代码检测IE10。我需要知道用户使用的浏览器是什么,以显示不同的指令。

我正在甲骨文VirtualBox中进行测试,如果重要的话。操作系统是Win 7。

下面是代码:

代码语言:javascript
运行
复制
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
var browser = function() { 
if ($.browser.msie) return "ie";
var ua = navigator.userAgent.toLowerCase();
if ($.browser.mozilla/* && /firefox/.test(ua)*/) return "firefox"; 
if (/chrome/.test(ua)) return "chrome";
return /*"#"*/'unknown';
} ();

alert (browser); // This return firefox
alert ($.browser.version); // This returns 11.0 - the CORRECT version of IE
</script>

如您所见,Jquery可以找到浏览器版本,但不能找到浏览器名称。知道怎么绕过它吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-08 14:04:47

最后的解决办法:

代码语言:javascript
运行
复制
if (!!navigator.userAgent.match(/Trident\/7\./))
  return "ie";  

我们只能希望发行版也能做到这一点。

票数 64
EN

Stack Overflow用户

发布于 2014-08-13 18:24:46

这是为了兼容性的原因。客户端代码通常执行浏览器检测而不是特征检测(这是一个糟糕的实践)。因此,为了确保客户端正确地使用IE 11的所有功能,微软已经做出了这样的努力,使IE11能够报告它与Mozilla兼容。

所以,不要做浏览器检测,而是做特征检测。见浏览器检测与特征检测。这方面有一些很好的库,其中现代派可能是最著名的库(微软将其作为Visual中ASP.NET模板的一部分)。

MSDN关于IE11用户代理字符串的博客

票数 7
EN

Stack Overflow用户

发布于 2013-09-29 14:47:05

jQuery迁移的目的是允许旧的、写得不好的代码运行,而不是鼓励编写新的、编写不好的代码。因为这段写得不好的旧代码早在IE11发布之前就已经创建了,所以它无论如何都不知道IE11,而且可能会有错误的行为。jQuery迁移插件不会被更改为检测IE11。如果您正在编写新代码,请不要使用浏览器检测。相反,使用特征检测。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18684099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档