Cuando quiero detectar IE, uso este código:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Pero IE11 regresa "No estás usando Internet Explorer". ¿Cómo puedo detectarlo?
Respuestas:
IE11 ya no informa
MSIE
, ya que , de acuerdo con esta lista de cambios , es intencional evitar la detección errónea.Lo que puede hacer si realmente quiere saber que es IE es detectar la
Trident/
cadena en el agente de usuario sinavigator.appName
regresaNetscape
, algo así como (el no probado);Tenga en cuenta que IE11 (afaik) todavía está en la vista previa, y el agente de usuario puede cambiar antes del lanzamiento.
fuente
it's intentional to avoid mis-detection
- Lamentablemente, ahora que se lanzó IE11, tenemos un código que está roto solo en IE11, mientras que una detección correcta de IE habría funcionado ...function isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); }
var isIE11 = !!navigator.userAgent.match(/Trident\/7\./);
fuenteUse
!(window.ActiveXObject) && "ActiveXObject" in window
para detectar IE11 explícitamente.Para detectar cualquier versión de IE (pre-Edge, "Trident"), use
"ActiveXObject" in window
en su lugar.fuente
window.ActiveXObject
, como se describe en el artículo, regresaundefined
ahora en IE11 (así como en los navegadores que no son de Microsoft). La prueba que usa elin
operador javascript regresatrue
en todos los navegadores de Microsoft, por lo que ambos son estrictamente el caso en IE11. Si Microsoft emite un cambio en el comportamiento delin
operador, sí, este método se interrumpirá.Úselo
MSInputMethodContext
como parte de una verificación de detección de características. Por ejemplo:Referencias
fuente
#false
en no IE, IE8,9,10, Edge 14,15.#true
solo en IE11. No se realizó la prueba con el modo de documento activo. Probado con Browserstack.He leído tus respuestas e hice una mezcla. Parece funcionar con Windows XP (IE7 / IE8) y Windows 7 (IE9 / IE10 / IE11).
Por supuesto, si devuelvo 0, significa que no hay IE.
fuente
Obtenga la versión IE del User-Agent
Cómo funciona: La cadena de agente de usuario para todas las versiones de IE incluye una parte "MSIE espacio de la versión " o "Trident otro texto rv espacio-o-de colon versión ". Sabiendo esto, tomamos el número de versión de una
String.match()
expresión regular. Setry-catch
usa un bloque para acortar el código; de lo contrario, tendríamos que probar los límites de la matriz para navegadores que no sean IE.Nota: El agente de usuario puede ser falsificado u omitido, a veces sin querer si el usuario ha configurado su navegador en un "modo de compatibilidad". Aunque esto no parece ser un gran problema en la práctica.
Obtenga la versión IE sin el agente de usuario
Cómo funciona: cada versión de IE agrega soporte para características adicionales que no se encuentran en versiones anteriores. Entonces podemos probar las características de arriba hacia abajo. Sin embargo, aquí se usa una secuencia ternaria por brevedad,
if-then
y lasswitch
declaraciones funcionarían igual de bien. La variableie
se establece en un número entero 5-11, o 1 para más antiguo, o 99 para más reciente / no IE. Puede establecerlo en 0 si solo desea probar IE 1-11 exactamente.Nota: La detección de objetos puede romperse si su código se ejecuta en una página con scripts de terceros que agregan polyfills para cosas como
document.addEventListener
. En tales situaciones, el agente de usuario es la mejor opción.Detecta si el navegador es moderno
Si solo le interesa saber si un navegador admite o no la mayoría de los estándares HTML 5 y CSS 3, puede suponer razonablemente que IE 8 y versiones inferiores siguen siendo las aplicaciones problemáticas principales. Prueba para
window.getComputedStyle
le proporcionarán una combinación bastante buena de navegadores modernos (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). IE 9 mejora enormemente el soporte de estándares, pero la animación CSS nativa requiere IE 10.fuente
var ie = 0; try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; } catch(e){} if (ie !== 0) { location.href = "../ie-redirect/redirect.html"; }
Angular JS hace de esta manera.
msie será un número positivo si es IE y NaN para otro navegador como Chrome, Firefox.
por qué ?
A partir de Internet Explorer 11, la cadena de agente de usuario ha cambiado significativamente.
refiera esto:
msdn # 1 msdn # 2
fuente
solución:
fuente
This is IE 0
Estoy usando un método más simple:
El objeto global del navegador tiene puntos de contacto de propiedad, en Internet Exlorer 11 se llama msMaxTouchPoints aunque.
Entonces, si buscas:
Encontrará Internet Explorer 11.
fuente
fuente
Prueba esto:
fuente
!navigator.userAgent.match("Acoo Browser;") && navigator.userAgent.match(/MSIE/i) ? true : false
pero eso no siempre funciona porque el navegador acoo no siempre tiene "Acoo Browser"; en su agente de uso, pero en realidad no necesita preocuparse de que el explorador acústico tenga "MSIE" en su agente de uso porque el explorador acústico es casi el mismo.Este parece ser un mejor método. "indexOf" devuelve -1 si nada coincide. No sobrescribe las clases existentes en el cuerpo, solo las agrega.
fuente
Detecta la mayoría de los navegadores con esto:
https://gist.github.com/earlonrails/5266945
fuente
Usé el
onscroll
evento en el elemento con la barra de desplazamiento. Cuando se activó en IE, agregué la siguiente validación:fuente
Solo para el navegador IE:
usar alerta (es decir);
Pruebas:
Actualización 01 jun 2017
Ahora podríamos usar algo más fácil y simple:
fuente
Francamente, diría que use una biblioteca que haga lo que necesita (como platform.js, por ejemplo). En algún momento las cosas cambiarán y la biblioteca estará equipada para esos cambios y el análisis manual utilizando expresiones regulares fallará.
Gracias a Dios IE se va ...
fuente