remote developer javascript browser-detection microsoft-edge

javascript - developer - remote edge



Cómo apuntar al navegador de Windows 10 Edge con javascript (8)

Sé que debería hacer la detección de características siempre que sea posible, pero ¿puede detectar en Javascript si el navegador es el navegador Microsoft Edge?

Mantengo un producto antiguo y quiero mostrar una advertencia de que algunas características podrían romperse sin tener que invertir mucho tiempo reparando el código antiguo.


Aquí está el script simple para detectar el navegador Edge

if (/Edge/.test(navigator.userAgent)) { alert(''Hello Microsoft User!''); }

Explicacion

/Edge/

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


El fragmento que tengo aquí también es una copia de SO, lamento no haber podido proporcionarle una referencia para el código original, pero lo he modificado, así que aquí están aquellos que buscan un fragmento de código para verificar IE 11 y MS Ventana de borde 10:

var get_ie_version = function () { var sAgent = window.navigator.userAgent; var Idx = sAgent.indexOf("MSIE"); // If IE, return version number. if (Idx > 0) { return parseInt(sAgent.substring(Idx+ 5, sAgent.indexOf(".", Idx))); } // Condition Check IF IE 11 and or MS Edge else if ( !!navigator.userAgent.match(/Trident//7/./) || window.navigator.userAgent.indexOf("Edge") > -1 ) { return 11; } else { return 0; //It is not IE } };


La cadena de usuario contiene Edge / 12.9600, donde 12.9600 es el número de versión con el que he probado. Esto es completamente diferente de la cadena de agente de usuario de Internet Explorer en el modo ''Edge''.

Cadena de agente de usuario de Edge:

Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.9600

Cadena de agente de usuario de IE10 en modo perimetral:

Mozilla / 5.0 (Windows NT 6.3; WOW64; Trident /7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tableta PC 2.0; rv: 11.0 ) como Gecko

Por lo tanto, cuando use javascript, solo busque la palabra ''Edge'' en la cadena del agente de usuario. Cuando también realiza pruebas para otros navegadores, asegúrese de marcar Edge primero, de lo contrario obtendrá falsos positivos (por ejemplo, Chrome o Safari ...)


No estás solo con este problema. Al momento de escribir esta publicación, incluso Google Analytics no identifica exclusivamente el navegador Edge.

Su mejor apuesta es referirse al agente de usuario de la solicitud, será algo como esto:

Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.9600

(Para extraer el agente de usuario de la solicitud en JavaScript, consulte esta publicación: Obtención del agente de usuario con JavaScript )

Edge solo está disponible en Windows 10, por lo que puede usar este conocimiento para ayudar a garantizar que su lógica sea segura. Busque los siguientes valores en la UA:

  • Windows NT 10.0 - que le dice que el usuario está en Windows 10)
  • Edge - que te dice que el usuario está en Edge

Por supuesto, también puedes buscar a Edge .

Actualización - 05/08

Google Analytics ahora ha incluido Windows 10 y Edge como dimensiones de primera clase y ambas pueden filtrarse directamente.


Todos parecen estar diciendo lo mismo aquí, excepto que nadie ha proporcionado una solución sólida de 1 liner.

Entonces, de esta respuesta, https://.com/a/32107845/584147

Lo que simplemente dice eso,

  1. Ambos navegadores (IE 11 y Edge) usan el navegador.appName de "Netscape" (en comparación con versiones anteriores de IE que usan "Microsoft Internet Explorer" como el navegador.appName)
  2. en IE 11, navigator.appVersion dice ''trident'', en Edge el navigator.appVersion no dice trident

He convertido esto en un simple trazador de líneas 1 para cualquier persona que termine aquí y lo necesite.

var isieEdge = (navigator.appName == "Netscape") && (navigator.appVersion.indexOf(''Trident'') === -1); // IE Edge alert(isieEdge);


https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx

Prueba con:

function getInternetExplorerVersion() // Returns the version of Internet Explorer or a -1 // (indicating the use of another browser). { var rv = -1; // Return value assumes failure. 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 ) { if ( ver >= 8.0 ) msg = "You''re using a recent copy of Internet Explorer." else msg = "You should upgrade your copy of Internet Explorer."; } alert( msg ); }

Reemplace la cadena Microsoft Internet Explorer con quizás algo de Edge o similar.

EDITAR: Puede averiguar qué es la cadena de agente de usuario con:

alert(navigator.userAgent)


Intenta detectar características en lugar de un navegador específico. Es más a prueba de futuro. Sólo en raras ocasiones debe utilizar la detección del navegador.

Con eso fuera del camino: una opción es usar una biblioteca (hay muchas complejidades en las cadenas del Agente de usuario), o alternativamente, analizar window.navigator.userAgent manualmente.

Usando una biblioteca de analizador

# https://github.com/faisalman/ua-parser-js. var parser = new UAParser(); var result = parser.getResult(); var name = result.browser.name; var version = result.browser.version;

Enfoque crudo con Javascript

# Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) / # Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136 window.navigator.userAgent.indexOf("Edge") > -1


navigator.appVersion.indexOf(''Edge'') > -1