navegador information info detectar javascript browser-detection

information - ¿Detección de navegador en JavaScript?



navigator javascript (26)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo determinar el navegador exacto y la versión con JavaScript?


Algunas veces necesitamos un método simple para verificar si el navegador es IE o no. Así es como podría ser:

var isMSIE = (/trident/i).test(navigator.userAgent); if(isMSIE) { /* do something for ie */ } else { /* do something else */ }

o método simplificado de siva:

if(!!navigator.systemLanguage) { /* do something for ie */ } else { /* do something else */ }

MSIE v.11 cheque:

if( (/trident/i).test(navigator.userAgent) && (/rv:/i).test(navigator.userAgent) ) { /* do something for ie 11 */ }

otros navegadores IE contienen una cadena MSIE en su propiedad userAgent y podrían ser detectados por ella.


Aquí es cómo hago CSS personalizado para Internet Explorer:

En mi archivo JavaScript:

function isIE () { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf(''msie'') != -1) ? parseInt(myNav.split(''msie'')[1]) : false; } jQuery(document).ready(function(){ if(var_isIE){ if(var_isIE == 10){ jQuery("html").addClass("ie10"); } if(var_isIE == 8){ jQuery("html").addClass("ie8"); // you can also call here some function to disable things that //are not supported in IE, or override browser default styles. } } });

Y luego en mi archivo CSS, y defino cada estilo diferente:

.ie10 .some-class span{ ....... } .ie8 .some-class span{ ....... }


Aquí se explica cómo detectar navegadores en 2016, incluidos Microsoft Edge, Safari 10 y la detección de Blink:

// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) isOpera = !!window.opera || navigator.userAgent.indexOf('' OPR/'') >= 0; // Firefox 1.0+ isFirefox = typeof InstallTrigger !== ''undefined''; // Safari 3.0+ isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window[''safari''] || safari.pushNotification); // Internet Explorer 6-11 isIE = /*@cc_on!@*/false || !!document.documentMode; // Edge 20+ isEdge = !isIE && !!window.StyleMedia; // Chrome 1+ isChrome = !!window.chrome && !!window.chrome.webstore; // Blink engine detection isBlink = (isChrome || isOpera) && !!window.CSS;

La belleza de este enfoque es que se basa en las propiedades del motor del navegador, por lo que cubre incluso los navegadores derivados, como Yandex o Vivaldi, que son prácticamente compatibles con los principales navegadores cuyos motores utilizan. La excepción es Opera, que se basa en el rastreo del agente de usuario, pero hoy en día (es decir, en la versión 15 y superior) incluso Opera es solo una cáscara para Blink.


Como Internet Explorer 11 (IE11 +) salió y ya no usa el nombre de etiqueta de MSIE me ocurrió una variante de una función de detección anterior:

navigator.sayswho= (function(){ var N= navigator.appName, ua= navigator.userAgent, tem; // if IE11+ if (new RegExp("Trident/.*rv:([0-9]{1,}[/.0-9]{0,})").exec(ua) !== null) { var M= ["Internet Explorer"]; if(M && (tem= ua.match(/rv:([0-9]{1,}[/.0-9]{0,})/))!= null) M[2]= tem[1]; M= M? [M[0], M[2]]: [N, navigator.appVersion,''-?'']; return M; } var M= ua.match(/(opera|chrome|safari|firefox|msie)//?/s*(/.?/d+(/./d+)*)/i); if(M && (tem= ua.match(/version//([/./d]+)/i))!= null) M[2]= tem[1]; M= M? [M[1], M[2]]: [N, navigator.appVersion,''-?'']; return M; })();


En lugar de codificar los navegadores web, puede escanear el agente de usuario para encontrar el nombre del navegador:

navigator.userAgent.split('')'').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[A-Z][a-z]+/g)[0]

He probado esto en Safari, Chrome y Firefox. Avísame si has encontrado que esto no funciona en un navegador.

  • Safari: "Safari"
  • Chrome: "Chrome"
  • Firefox: "Firefox"

Incluso puede modificar esto para obtener la versión del navegador si lo desea. Tenga en cuenta que hay mejores maneras de obtener la versión del navegador

navigator.userAgent.split('')'').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[A-Z][a-z]+//[/d.]+/g)[0].split(''/'')

Salida de muestra:

Firefox/39.0


Esta pequeña biblioteca puede ayudarte. Pero tenga en cuenta que la detección del navegador no siempre es la solución.


Esto es algo que escribí para obtener información del cliente.

var ua = navigator.userAgent.toLowerCase(); var check = function(r) { return r.test(ua); }; var DOC = document; var isStrict = DOC.compatMode == "CSS1Compat"; var isOpera = check(/opera/); var isChrome = check(/chrome/); var isWebKit = check(/webkit/); var isSafari = !isChrome && check(/safari/); var isSafari2 = isSafari && check(/applewebkit//4/); // unique to // Safari 2 var isSafari3 = isSafari && check(/version//3/); var isSafari4 = isSafari && check(/version//4/); var isIE = !isOpera && check(/msie/); var isIE7 = isIE && check(/msie 7/); var isIE8 = isIE && check(/msie 8/); var isIE6 = isIE && !isIE7 && !isIE8; var isGecko = !isWebKit && check(/gecko/); var isGecko2 = isGecko && check(/rv:1/.8/); var isGecko3 = isGecko && check(/rv:1/.9/); var isBorderBox = isIE && !isStrict; var isWindows = check(/windows|win32/); var isMac = check(/macintosh|mac os x/); var isAir = check(/adobeair/); var isLinux = check(/linux/); var isSecure = /^https/i.test(window.location.protocol); var isIE7InIE8 = isIE7 && DOC.documentMode == 7; var jsType = '''', browserType = '''', browserVersion = '''', osName = ''''; var ua = navigator.userAgent.toLowerCase(); var check = function(r) { return r.test(ua); }; if(isWindows){ osName = ''Windows''; if(check(/windows nt/)){ var start = ua.indexOf(''windows nt''); var end = ua.indexOf('';'', start); osName = ua.substring(start, end); } } else { osName = isMac ? ''Mac'' : isLinux ? ''Linux'' : ''Other''; } if(isIE){ browserType = ''IE''; jsType = ''IE''; var versionStart = ua.indexOf(''msie'') + 5; var versionEnd = ua.indexOf('';'', versionStart); browserVersion = ua.substring(versionStart, versionEnd); jsType = isIE6 ? ''IE6'' : isIE7 ? ''IE7'' : isIE8 ? ''IE8'' : ''IE''; } else if (isGecko){ var isFF = check(/firefox/); browserType = isFF ? ''Firefox'' : ''Others'';; jsType = isGecko2 ? ''Gecko2'' : isGecko3 ? ''Gecko3'' : ''Gecko''; if(isFF){ var versionStart = ua.indexOf(''firefox'') + 8; var versionEnd = ua.indexOf('' '', versionStart); if(versionEnd == -1){ versionEnd = ua.length; } browserVersion = ua.substring(versionStart, versionEnd); } } else if(isChrome){ browserType = ''Chrome''; jsType = isWebKit ? ''Web Kit'' : ''Other''; var versionStart = ua.indexOf(''chrome'') + 7; var versionEnd = ua.indexOf('' '', versionStart); browserVersion = ua.substring(versionStart, versionEnd); }else{ browserType = isOpera ? ''Opera'' : isSafari ? ''Safari'' : ''''; }


Esto es lo que estoy usando:

var ua = navigator.userAgent; var info = { browser: /Edge///d+/.test(ua) ? ''ed'' : /MSIE 9/.test(ua) ? ''ie9'' : /MSIE 10/.test(ua) ? ''ie10'' : /MSIE 11/.test(ua) ? ''ie11'' : /MSIE/s/d/.test(ua) ? ''ie?'' : /rv/:11/.test(ua) ? ''ie11'' : /Firefox/W/d/.test(ua) ? ''ff'' : /Chrom(e|ium)/W/d|CriOS/W/d/.test(ua) ? ''gc'' : //bSafari/W/d/.test(ua) ? ''sa'' : //bOpera/W/d/.test(ua) ? ''op'' : //bOPR/W/d/i.test(ua) ? ''op'' : typeof MSPointerEvent !== ''undefined'' ? ''ie?'' : '''', os: /Windows NT 10/.test(ua) ? "win10" : /Windows NT 6/.0/.test(ua) ? "winvista" : /Windows NT 6/.1/.test(ua) ? "win7" : /Windows NT 6/./d/.test(ua) ? "win8" : /Windows NT 5/.1/.test(ua) ? "winxp" : /Windows NT [1-5]/./.test(ua) ? "winnt" : /Mac/.test(ua) ? "mac" : /Linux/.test(ua) ? "linux" : /X11/.test(ua) ? "nix" : "", touch: ''ontouchstart'' in document.documentElement, mobile: /IEMobile|Windows Phone|Lumia/i.test(ua) ? ''w'' : /iPhone|iP[oa]d/.test(ua) ? ''i'' : /Android/.test(ua) ? ''a'' : /BlackBerry|PlayBook|BB10/.test(ua) ? ''b'' : /Mobile Safari/.test(ua) ? ''s'' : /webOS|Mobile|Tablet|Opera Mini|/bCrMo//|Opera Mobi/i.test(ua) ? 1 : 0, tablet: /Tablet|iPad/i.test(ua), };

propiedades de info :

  • browser : gc para Google Chrome; ie9 - ie11 para IE; ie? para IE viejo o desconocido; ed para Edge; ff para Firefox; sa para safari; op para la ópera.
  • os : mac win7 win8 win10 winnt winxp winvista linux nix
  • mobile : a para Android; i para iOS (iPhone iPad); w para Windows Phone; b para Blackberry; s para móviles no detectados que ejecutan Safari; 1 para otro móvil no detectado; 0 para no móviles
  • touch : true para dispositivos táctiles, incluidos portátiles / portátiles táctiles que tienen el mouse y el tacto juntos; false por no tocar el soporte
  • tablet : true o false

https://jsfiddle.net/oriadam/ncb4n882/


Esto le informa todos los detalles sobre su navegador y la versión de este.

<!DOCTYPE html> <html> <body> <div id="example"></div> <script> txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>"; txt+= "<p>Browser Name: " + navigator.appName + "</p>"; txt+= "<p>Browser Version: " + navigator.appVersion + "</p>"; txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>"; txt+= "<p>Platform: " + navigator.platform + "</p>"; txt+= "<p>User-agent header: " + navigator.userAgent + "</p>"; txt+= "<p>User-agent language: " + navigator.systemLanguage + "</p>"; document.getElementById("example").innerHTML=txt; </script> </body> </html>


Lamentablemente, IE11 ya no tiene MSIE en su navigator.userAgent . navigator.userAgent :

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; BRI/2; BOIE9;ENUS; rv:11.0) like Gecko

En cuanto a por qué quieres saber qué navegador estás usando, es porque cada navegador tiene su propio conjunto de errores, y terminas implementando soluciones de navegador y versiones específicas, ¡o le dices al usuario que use un navegador diferente!


No es exactamente lo que quieres, pero cerca de él:

var jscriptVersion = /*@cc_on @if(@_jscript) @_jscript_version @else @*/ false /*@end @*/; var geckoVersion = navigator.product === ''Gecko'' && navigator.productSub; var operaVersion = ''opera'' in window && ''version'' in opera && opera.version();

Las variables contendrán la versión apropiada o false si no está disponible.

Apreciaría si alguien que usa Chrome pudiera averiguar si puede usar window.chrome de una manera similar a window.opera .


Podría usar la biblioteca jQuery para detectar la versión del navegador.

Ejemplo:

jQuery.browser.version

Sin embargo, esto solo tiene sentido si también está utilizando otras funciones de jQuery. Agregar una biblioteca completa solo para detectar el navegador me parece excesivo.

Más información: http://api.jquery.com/jQuery.browser/

(tienes que desplazarte un poco hacia abajo)


Por lo general, es mejor evitar el código específico del navegador cuando sea posible. La propiedad JQuery $.support está disponible para la detección de soporte para funciones particulares en lugar de confiar en el nombre y la versión del navegador.

En Opera, por ejemplo, puedes simular una instancia de Internet Explorer o Firefox.

Una descripción detallada de JQuery.support se puede encontrar aquí: http://api.jquery.com/jQuery.support/

Ahora en desuso según jQuery.

Recomendamos encarecidamente el uso de una biblioteca externa como Modernizr lugar de la dependencia de las propiedades en jQuery.support .

Al codificar sitios web, siempre me aseguro de que las funciones básicas como la navegación también sean accesibles para los usuarios que no son js. Esto puede ser objeto de discusión y puede ignorarse si la página de inicio está dirigida a una audiencia especial.


Recomiendo usar la pequeña biblioteca de JavaScript Bowser, sí, no r. Se basa en navigator.userAgent y está bastante probado para todos los navegadores, incluidos iPhone, Android, etc.

https://github.com/ded/bowser

Puedes usar simplemente decir:

if (bowser.msie && bowser.version <= 6) { alert(''Hello IE''); } else if (bowser.firefox){ alert(''Hello Foxy''); } else if (bowser.chrome){ alert(''Hello Chrome''); } else if (bowser.safari){ alert(''Hello Safari''); } else if(bowser.iphone || bowser.android){ alert(''Hello mobile''); }


Sé que estoy muy lejos de esta pregunta, pero pensé que iba a tirar mis recortes aquí. Muchas de las respuestas aquí están bien y, como se señala, en general, es mejor usar la feature detection lugar de confiar en la cadena de userAgent . Sin embargo, si va a seguir esa ruta, he escrito un fragmento completo, así como una implementación jQuery alternativa para reemplazar el $.browser .

Vainilla js

Mi primer fragmento simplemente agrega cuatro propiedades al objeto del browser : browser , version , mobile y webkit .

jsFiddle

/** navigator [extended] * Simply extends Browsers navigator Object to include browser name, version number, and mobile type (if available). * * @property {String} browser The name of the browser. * @property {Double} version The current Browser version number. * @property {String|Boolean} mobile Will be `false` if is not found to be mobile device. Else, will be best guess Name of Mobile Device (not to be confused with browser name) * @property {Boolean} webkit If is webkit or not. */ ;(function(){function c(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return"MSIE";case /Chrome/.test(navigator.userAgent):return"Chrome";case /Opera/.test(navigator.userAgent):return"Opera";case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):return/Silk/i.test(navigator.userAgent)?"Silk":"Kindle";case /BlackBerry/.test(navigator.userAgent):return"BlackBerry";case /PlayBook/.test(navigator.userAgent):return"PlayBook";case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):return"Blackberry"; case /Android/.test(navigator.userAgent):return"Android";case /Safari/.test(navigator.userAgent):return"Safari";case /Firefox/.test(navigator.userAgent):return"Mozilla";case /Nokia/.test(navigator.userAgent):return"Nokia"}}catch(a){console.debug("ERROR:setBrowser/t",a)}}function d(){try{switch(!0){case /Sony[^ ]*/i.test(navigator.userAgent):return"Sony";case /RIM Tablet/i.test(navigator.userAgent):return"RIM Tablet";case /BlackBerry/i.test(navigator.userAgent):return"BlackBerry";case /iPhone/i.test(navigator.userAgent):return"iPhone"; case /iPad/i.test(navigator.userAgent):return"iPad";case /iPod/i.test(navigator.userAgent):return"iPod";case /Opera Mini/i.test(navigator.userAgent):return"Opera Mini";case /IEMobile/i.test(navigator.userAgent):return"IEMobile";case /BB[0-9]{1,}; Touch/i.test(navigator.userAgent):return"BlackBerry";case /Nokia/i.test(navigator.userAgent):return"Nokia";case /Android/i.test(navigator.userAgent):return"Android"}}catch(a){console.debug("ERROR:setMobile/t",a)}return!1}function e(){try{switch(!0){case /MSIE|Trident/i.test(navigator.userAgent):return/Trident/i.test(navigator.userAgent)&& /rv:([0-9]{1,}[/.0-9]{0,})/.test(navigator.userAgent)?parseFloat(navigator.userAgent.match(/rv:([0-9]{1,}[/.0-9]{0,})/)[1].replace(/[^0-9/.]/g,"")):/MSIE/i.test(navigator.userAgent)&&0<parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9/.]/g,""))?parseFloat(navigator.userAgent.split("MSIE")[1].replace(/[^0-9/.]/g,"")):"Edge";case /Chrome/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9/.]/g,""));case /Opera/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].replace(/[^0-9/.]/g, ""));case /Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(navigator.userAgent):if(/Silk/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Silk/")[1].split("Safari")[0].replace(/[^0-9/.]/g,""));if(/Kindle/i.test(navigator.userAgent)&&/Version/i.test(navigator.userAgent))return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9/.]/g,""));case /BlackBerry/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("/")[1].replace(/[^0-9/.]/g, ""));case /PlayBook/.test(navigator.userAgent):case /BB[0-9]{1,}; Touch/.test(navigator.userAgent):case /Safari/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9/.]/g,""));case /Firefox/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split(/Firefox///i)[1].replace(/[^0-9/.]/g,""));case /Android/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Version/")[1].split("Safari")[0].replace(/[^0-9/.]/g, ""));case /Nokia/.test(navigator.userAgent):return parseFloat(navigator.userAgent.split("Browser")[1].replace(/[^0-9/.]/g,""))}}catch(a){console.debug("ERROR:setVersion/t",a)}}a:{try{if(navigator&&navigator.userAgent){navigator.browser=c();navigator.mobile=d();navigator.version=e();var b;b:{try{b=/WebKit/i.test(navigator.userAgent);break b}catch(a){console.debug("ERROR:setWebkit/t",a)}b=void 0}navigator.webkit=b;break a}}catch(a){}throw Error("Browser does not support `navigator` Object |OR| has undefined `userAgent` property."); }})(); /* simple c & p of above */


Si desea una función que devuelva el navegador, así como la versión, aquí hay una mejora de la respuesta original:

navigator.browserInfo = ( function() { var browser = ''''; var version = ''''; var idString = ''''; var ua = navigator.userAgent; var tem = []; var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=//))//?/s*(/d+)/i); //IE will be identified as ''Trident'' and a different version number. The name must be corrected to ''Internet Explorer'' and the correct version identified. //ie correction if(/trident/i.test(M[1])) { tem = //brv[ :]+(/d+.?/d*)/g.exec(ua) || []; browser = ''Internet Explorer''; version = tem[1]; } //firefox else if(/firefox/i.test(M[1])) { tem = //brv[ :]+(/d+.?/d*)/g.exec(ua) || []; browser = ''Firefox''; version = tem[1]; } //safari else if(/safari/i.test(M[1])) { tem = ua.match(//bVersion//(/d+.?/d*/s*/w+)/); browser = ''Safari''; version = tem[1]; } //If ''Chrome'' is found, it may be another browser. else if(M[1] === ''Chrome'') { //opera var temOpr = ua.match(//b(OPR)//(/d+.?/d*.?/d*.?/d*)/); //edge var temEdge = ua.match(//b(Edge)//(/d+.?/d*)/); //chrome var temChrome = ua.match(//b(Chrome)//(/d+.?/d*.?/d*.?/d*)/); //a genuine ''Chrome'' reading will result from ONLY temChrome not being null. var genuineChrome = temOpr == null && temEdge == null && temChrome != null; if(temOpr != null) { browser = temOpr[1].replace(''OPR'', ''Opera''); version = temOpr[2]; } if(temEdge != null) { browser = temEdge[1]; version = temEdge[2]; } if(genuineChrome) { browser = temChrome[1]; version = temChrome[2]; } } //There will be some odd balls, so if you wish to support those browsers, add functionality to display those browsers as well. if(browser == '''' || version == '''') { idString = ''We couldn/'t find your browser, but you can still use the site''; } else { idString = browser + '' version '' + version; } alert(''Your browser is '' + idString); //store the type of browser locally if(typeof(Storage) !== "undefined") { //Store localStorage.setItem(''browser'', browser); localStorage.setItem(''version'', version); } else { alert(''local storage not available''); } } )();

Con esto, también almacena el resultado localmente, por lo que no es necesario ejecutar esta comprobación cada vez.


Toda la información sobre el navegador web está contenida en el objeto navegador. El nombre y la versión están ahí.

var appname = window.navigator.appName;

Fuente: detección de navegador javascript


Con jQuery:

$.browser

te da algo como

Object {chrome: true, version: "26.0.1410.63", webkit: true}


El siguiente fragmento de código mostrará cómo los elementos de la interfaz de usuario pueden mostrarse en función de la versión de IE y el navegador.

$(document).ready(function () { var msiVersion = GetMSIieversion(); if ((msiVersion <= 8) && (msiVersion != false)) { //Show UI elements specific to IE version 8 or low } else { //Show UI elements specific to IE version greater than 8 and for other browser other than IE,,ie..Chrome,Mozila..etc } } );

El siguiente código le dará cómo podemos obtener la versión de IE

function GetMSIieversion() { var ua = window.navigator.userAgent; 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 like Chrome,Mozila..etc return false; }


Encontré algo interesante y rápido. IE admite navigator.systemLanguageque devuelve "en-US" a donde regresan otros navegadores undefined.

<script> var lang = navigator.systemLanguage; if (lang!=''en-US''){document.write("Well, this is not internet explorer");} else{document.write("This is internet explorer");} </script>


Hago esta pequeña función, espero que ayude. Aquí puedes encontrar la última versión del browserDetection

function detectBrowser(userAgent){ var chrome = /.*(Chrome//).*(Safari//).*/g; var firefox = /.*(Firefox//).*/g; var safari = /.*(Version//).*(Safari//).*/g; var opera = /.*(Chrome//).*(Safari//).*(OPR//).*/g if(opera.exec(userAgent)) return "Opera" if(chrome.exec(userAgent)) return "Chrome" if(safari.exec(userAgent)) return "Safari" if(firefox.exec(userAgent)) return "Firefox" }


var isOpera = !!window.opera || navigator.userAgent.indexOf(''Opera'') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) var isFirefox = typeof InstallTrigger !== ''undefined''; // Firefox 1.0+ var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf(''Constructor'') > 0; // At least Safari 3+: "[object HTMLElementConstructor]" var isChrome = !!window.chrome; // Chrome 1+ var isIE = /*@cc_on!@*/false;

puede leer más ¿Cómo detectar el navegador Safari, Chrome, IE, Firefox y Opera?


//Copy and paste this into your code/text editor, and try it //Before you use this to fix compatability bugs, it''s best to try inform the browser provider that you have found a bug and there latest browser may not be up to date with the current web standards //Since none of the browsers use the browser identification system properly you need to do something a bit like this //Write browser identification document.write(navigator.userAgent + "<br>") //Detect browser and write the corresponding name if (navigator.userAgent.search("MSIE") >= 0){ document.write(''"MS Internet Explorer ''); var position = navigator.userAgent.search("MSIE") + 5; var end = navigator.userAgent.search("; Windows"); var version = navigator.userAgent.substring(position,end); document.write(version + ''"''); } else if (navigator.userAgent.search("Chrome") >= 0){ document.write(''"Google Chrome '');// For some reason in the browser identification Chrome contains the word "Safari" so when detecting for Safari you need to include Not Chrome var position = navigator.userAgent.search("Chrome") + 7; var end = navigator.userAgent.search(" Safari"); var version = navigator.userAgent.substring(position,end); document.write(version + ''"''); } else if (navigator.userAgent.search("Firefox") >= 0){ document.write(''"Mozilla Firefox ''); var position = navigator.userAgent.search("Firefox") + 8; var version = navigator.userAgent.substring(position); document.write(version + ''"''); } else if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0){//<< Here document.write(''"Apple Safari ''); var position = navigator.userAgent.search("Version") + 8; var end = navigator.userAgent.search(" Safari"); var version = navigator.userAgent.substring(position,end); document.write(version + ''"''); } else if (navigator.userAgent.search("Opera") >= 0){ document.write(''"Opera ''); var position = navigator.userAgent.search("Version") + 8; var version = navigator.userAgent.substring(position); document.write(version + ''"''); } else{ document.write(''"Other"''); } //Use w3schools research the `search()` method as other methods are availible


navigator.sayswho= (function(){ var ua= navigator.userAgent, tem, M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=//))//?/s*(/d+)/i) || []; if(/trident/i.test(M[1])){ tem= //brv[ :]+(/d+)/g.exec(ua) || []; return ''IE ''+(tem[1] || ''''); } if(M[1]=== ''Chrome''){ tem= ua.match(//b(OPR|Edge)//(/d+)/); if(tem!= null) return tem.slice(1).join('' '').replace(''OPR'', ''Opera''); } M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, ''-?'']; if((tem= ua.match(/version//(/d+)/i))!= null) M.splice(1, 1, tem[1]); return M.join('' ''); })();

Como su nombre lo indica, esto le indicará el nombre y el número de versión suministrados por el navegador.

Es útil para ordenar resultados de prueba y error, cuando está probando un nuevo código en múltiples navegadores.


var browser = navigator.appName; var version = navigator.appVersion;

Tenga en cuenta, sin embargo, que ambos no necesariamente reflejarán la verdad. Muchos navegadores pueden configurarse para enmascararse como otros navegadores. Entonces, por ejemplo, no siempre puede estar seguro de si un usuario está navegando con IE6 o con Opera que pretende ser IE6.


var isOpera = !!window.opera || navigator.userAgent.indexOf('' OPR/'') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera) var isFirefox = typeof InstallTrigger !== ''undefined''; // Firefox 1.0+ var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf(''Constructor'') > 0; // At least Safari 3+: "[object HTMLElementConstructor]" var isChrome = !!window.chrome && !isOpera; // Chrome 1+ var isIE = /*@cc_on!@*/false || !!document.documentMode; // Edge 20+ var isEdge = !isIE && !!window.StyleMedia; // Chrome 1+ var output = ''Detecting browsers by ducktyping:<hr>''; output += ''isFirefox: '' + isFirefox + ''<br>''; output += ''isChrome: '' + isChrome + ''<br>''; output += ''isSafari: '' + isSafari + ''<br>''; output += ''isOpera: '' + isOpera + ''<br>''; output += ''isIE: '' + isIE + ''<br>''; output += ''isIE Edge: '' + isEdge + ''<br>''; document.body.innerHTML = output;