Jquery no puede detectar IE 11

Acabo de tropezar con un problema. Al tratar de detectar IE 11 (la versión beta actualmente en el air) utilizando Jquery, el resultado es ‘firefox’. El mismo código detecta IE 10. Necesito saber qué navegador está usando el usuario para mostrar diferentes instrucciones.

Estoy probando en Oracle VirtualBox si es importante. El sistema operativo es Win 7.

Aquí está el código:

   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  

Como puede ver, Jquery puede encontrar la versión del navegador, pero no el nombre del navegador. ¿Alguna idea de cómo evitarlo?

La solución definitiva:

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

Solo podemos esperar que la versión de lanzamiento actúe de la misma manera.

Es por razones de compatibilidad. El código del cliente a menudo realiza la detección del navegador en lugar de la detección de características (que es una práctica deficiente). Por lo tanto, en un esfuerzo por garantizar que los clientes utilicen correctamente todas las capacidades de IE 11, Microsoft lo ha hecho para que IE 11 informe que es compatible con Mozilla.

Entonces, en lugar de hacer la detección del navegador, detecte la función. Vea Detección del navegador versus detección de funciones . Hay algunas bibliotecas geniales para eso, con Modernizr probablemente sea el más conocido (y Microsoft lo envía como parte de las plantillas de ASP.NET en Visual Studio).

Consulte el blog de MSDN sobre cadenas de agente de usuario de IE 11 .

El objective de jQuery Migrate es permitir que se ejecute el código antiguo mal escrito, no fomentar la escritura de un nuevo código mal escrito. Dado que el código antiguo mal escrito se creó mucho antes de que se lanzara IE11, de todos modos no sabe nada sobre IE11 y probablemente se portará mal. El complemento jQuery Migrate no se cambiará para detectar IE11. Si está escribiendo un nuevo código, no use la detección del navegador. En cambio, usa la detección de características.

jQuery.browser está obsoleto desde hace mucho tiempo y se ha eliminado, debe usar $.support o una herramienta mejor como Modernizr