Jquery无法检测到IE 11

只是偶然发现了一个问题。 当尝试使用Jquery检测IE 11(目前正在播出的测试版)时,结果为’firefox’。 相同的代码检测IE 10.我需要知道用户正在使用什么浏览器才能显示不同的指令。

我在Oracle VirtualBox中测试是否重要。 操作系统是Win 7。

这是代码:

   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  

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

最终的解决方案:

 if (!!navigator.userAgent.match(/Trident\/7\./)) return "ie"; 

我们只能希望发布版本的行为相同。

这是出于兼容性原因。 客户端代码通常执行浏览器检测而不是function检测(这是一种不好的做法)。 因此,为了确保客户端正确使用IE 11的所有function,Microsoft已经做到了这一点,IE 11将报告它与Mozilla兼容。

因此,不进行浏览器检测,而是进行特征检测。 请参阅浏览器检测与function检测 。 有一些很棒的库, Modernizr可能是最知名的(并且Microsoft将它作为Visual Studio中ASP.NET模板的一部分发布)。

有关IE 11用户代理字符串,请参阅MSDN博客 。

jQuery Migrate的目的是允许运行旧的编写糟糕的代码,而不是鼓励编写新的编写错误的代码。 由于那个陈旧的编写错误的代码是在IE11发布之前很久就创建的,所以无论如何它都不知道IE11,并且无论如何都可能会出错。 jQuery Migrate插件不会被更改为检测IE11。 如果您正在编写新代码,请不要使用浏览器检测。 而是使用特征检测。

jQuery.browser一直被弃用,已被删除,您应该使用$.support或更好的工具,如Modernizr