link - Jquery no puede detectar IE 11
jquery plugin download files (4)
Sólo se topó con un problema. Cuando se intenta detectar IE 11 (la versión beta actualmente en el aire) 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 importa. El sistema operativo es Win 7.
Aquí está el código:
<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>
Como puede ver, Jquery puede encontrar la versión del navegador, pero no el nombre del navegador. ¿Alguna idea de cómo evitarlo?
El propósito de jQuery Migrate es permitir que se ejecute el código antiguo mal escrito, no animar a escribir código nuevo mal escrito. Dado que ese antiguo código mal escrito se creó mucho antes de que se lanzara IE11, de todos modos no sabe nada de IE11 y probablemente se portará mal de todas maneras. El complemento de jQuery Migrate no se cambiará para detectar IE11. Si está escribiendo un código nuevo, no use la detección del navegador. En su lugar, utilice la detección de características.
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 (lo cual es una mala práctica). Así que para asegurarnos de que los clientes usen 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, haga la detección de características. Ver la detección del navegador frente a la detección de características . Hay algunas bibliotecas geniales para eso, y Modernizr probablemente la más conocida (y Microsoft la entrega como parte de las plantillas ASP.NET en Visual Studio).
Consulte el blog de MSDN sobre las cadenas de agente de usuario de IE 11 .
La solución definitiva:
if (!!navigator.userAgent.match(/Trident//7/./))
return "ie";
Solo podemos esperar que la versión de lanzamiento actúe igual.
jQuery.browser
está en desuso y se ha eliminado, debes usar $.support
o una mejor herramienta como Modernizr