navegador microsoft internet detectar javascript html internet-explorer media-queries microsoft-edge

microsoft - internet explorer detection javascript



¿Cómo puedo detectar Internet Explorer(IE) y Microsoft Edge usando JavaScript? (12)

He mirado mucho a mi alrededor y entiendo que hay muchas maneras de detectar Internet Explorer.

Mi problema es este: tengo un área en mi documento HTML que, cuando se hace clic, llama a una función de JavaScript que es incompatible con Internet Explorer de cualquier tipo. Quiero detectar si se está usando IE y, de ser así, establecer la variable en verdadero.

El problema es que estoy escribiendo mi código desde Notepad ++, y cuando ejecuto el código HTML en el navegador, ninguno de los métodos para detectar IE funciona. Creo que el problema es que me estoy quedando sin Notepad ++. Necesito poder detectar IE, de modo que, en función de la variable, pueda desactivar esa área del sitio. He intentado esto:

var isIE10 = false; if (navigator.userAgent.indexOf("MSIE 10") > -1) { // this is internet explorer 10 isIE10 = true; window.alert(isIE10); } var isIE = (navigator.userAgent.indexOf("MSIE") != -1); if(isIE){ if(!isIE10){ window.location = ''pages/core/ie.htm''; } }

Pero no funciona. ¿Cómo puedo detectar IE fuera de Notepad ++? De eso estoy probando el HTML, pero necesito un método que funcione con eso.

editar

Noté que alguien ha marcado esto como un duplicado, y eso es comprensible. Supongo que no estaba claro. No puedo usar una respuesta JQuery, por lo que este no es un duplicado, ya que solicito una respuesta JS de vainilla.

Editar # 2

¿Existe también una forma de detectar el navegador Microsoft Edge?


Aquí está la última forma correcta que sé de cómo verificar IE y Edge:

if (/MSIE 10/i.test(navigator.userAgent)) { // This is internet explorer 10 window.alert(''isIE10''); } if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)) { // This is internet explorer 9 or 11 window.location = ''pages/core/ie.htm''; } if (/Edge///d./i.test(navigator.userAgent)){ // This is Microsoft Edge window.alert(''Microsoft Edge''); }

Tenga en cuenta que no necesita la var isIE10 adicional en su código porque ahora realiza comprobaciones muy específicas.

Consulte también esta página para conocer las últimas cadenas de agente de usuario de IE y Edge porque esta respuesta puede quedar desactualizada en algún momento: https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx


Aquí hay una clase de JavaScript que detecta IE10, IE11 y Edge.
El objeto del navegador se inyecta con fines de prueba.

if(navigator.userAgent.indexOf("MSIE") != -1){ alert(''I am Internet Explorer!!''); }


El tema es un poco antiguo, pero como los scripts aquí detectan Firefox como un falso positivo (EDGE v12), aquí está la versión que uso:

function isIEorEDGE(){ if (navigator.appName == ''Microsoft Internet Explorer''){ return true; // IE } else if(navigator.appName == "Netscape"){ return navigator.appVersion.indexOf(''Edge'') > -1; // EDGE } return false; }

que por supuesto se puede escribir de una manera más concisa:

function isIEorEDGE(){ return navigator.appName == ''Microsoft Internet Explorer'' || (navigator.appName == "Netscape" && navigator.appVersion.indexOf(''Edge'') > -1); }


En primer lugar, no es el problema de Notepad ++ seguro. Es su " problema de coincidencia de cadenas "

La cadena común en todas las versiones de IE es MSIE Consulte las diversas cadenas de UserAgent en http://www.useragentstring.com/pages/Internet%20Explorer/

if(navigator.userAgent.indexOf("MSIE") != -1){ alert(''I am Internet Explorer!!''); }


Esta función funcionó perfectamente para mí. También detecta Edge.

Originalmente de este Codepen:

https://codepen.io/gapcode/pen/vEJNZN

/** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; // Test values; Uncomment to check result … // IE 10 // ua = ''Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)''; // IE 11 // ua = ''Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko''; // Edge 12 (Spartan) // ua = ''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0''; // Edge 13 // ua = ''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586''; var msie = ua.indexOf(''MSIE ''); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf(''.'', msie)), 10); } var trident = ua.indexOf(''Trident/''); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf(''rv:''); return parseInt(ua.substring(rv + 3, ua.indexOf(''.'', rv)), 10); } var edge = ua.indexOf(''Edge/''); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf(''.'', edge)), 10); } // other browser return false; }

Luego puede usar if (detectIE()) { /* do IE stuff */ } en su código.



No sé por qué, pero no veo "Edge" en el UserAgent como todos los demás están hablando, así que tuve que tomar otra ruta que pueda ayudar a algunas personas.

En lugar de mirar el navigator.userAgent, miré navigator.appName para distinguir si era IE <= 10 o IE11 y Edge. IE11 y Edge usan el nombre de aplicación de "Netscape", mientras que cada otra iteración usa "Microsoft Internet Explorer".

Después de determinar que el navegador es IE11 o Edge, busqué navigator.appVersion. Me di cuenta de que en IE11 la cadena era bastante larga con mucha información dentro. Elegí arbitrariamente la palabra "Tridente", que definitivamente no está en navigator.appVersion para Edge. La prueba de esta palabra me permitió distinguir los dos.

A continuación se muestra una función que devolverá un valor numérico de en qué Internet Explorer se encuentra el usuario. Si en Microsoft Edge devuelve el número 12.

¡Buena suerte y espero que esto ayude!

function Check_Version(){ var rv = -1; // Return value assumes failure. if (navigator.appName == ''Microsoft Internet Explorer''){ var ua = navigator.userAgent, re = new RegExp("MSIE ([0-9]{1,}[//.0-9]{0,})"); if (re.exec(ua) !== null){ rv = parseFloat( RegExp.$1 ); } } else if(navigator.appName == "Netscape"){ /// in IE 11 the navigator.appVersion says ''trident'' /// in Edge the navigator.appVersion does not say trident if(navigator.appVersion.indexOf(''Trident'') === -1) rv = 12; else rv = 11; } return rv; }



Si solo desea dar una advertencia a los usuarios que usan un navegador MS o algo así, este código debería ser bueno.

HTML:

<p id="IE">You are not using a microsoft browser</p>

Javascript:

using_ms_browser = navigator.appName == ''Microsoft Internet Explorer'' || (navigator.appName == "Netscape" && navigator.appVersion.indexOf(''Edge'') > -1) || (navigator.appName == "Netscape" && navigator.appVersion.indexOf(''Trident'') > -1); if (using_ms_browser == true){ document.getElementById(''IE'').innerHTML = "You are using a MS browser" }

Gracias a @GavinoGrifoni


Un código de línea para detectar el navegador.

Si el navegador es IE o Edge, devolverá verdadero;

var DeviceHelper = function (_navigator) { this.navigator = _navigator || navigator; }; DeviceHelper.prototype.isIE = function() { if(!this.navigator.userAgent) { return false; } var IE10 = Boolean(this.navigator.userAgent.match(/(MSIE)/i)), IE11 = Boolean(this.navigator.userAgent.match(/(Trident)/i)); return IE10 || IE11; }; DeviceHelper.prototype.isEdge = function() { return !!this.navigator.userAgent && this.navigator.userAgent.indexOf("Edge") > -1; }; DeviceHelper.prototype.isMicrosoftBrowser = function() { return this.isEdge() || this.isIE(); };


Utilice este recorte: var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false; var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false;


// detect IE8 and above, and Edge if (document.documentMode || /Edge/.test(navigator.userAgent)) { ... do something }

Explicación:

document.documentMode

Una propiedad solo de IE, primero disponible en IE8.

/Edge/

Una expresión regular para buscar la cadena ''Edge'', que luego probamos con la propiedad ''navigator.userAgent''