Saltar al contenido

¿Cómo detectar la versión de mi navegador y el sistema operativo usando JavaScript?

Nuestro grupo de expertos pasados algunos días de trabajo y recopilación de de datos, encontramos los datos necesarios, deseamos que todo este artículo sea de utilidad para tu trabajo.

Solución:

Detectando los detalles del navegador:

var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName  = navigator.appName;
var fullVersion  = ''+parseFloat(navigator.appVersion); 
var majorVersion = parseInt(navigator.appVersion,10);
var nameOffset,verOffset,ix;

// In Opera, the true version is after "Opera" or after "Version"
if ((verOffset=nAgt.indexOf("Opera"))!=-1) 
 browserName = "Opera";
 fullVersion = nAgt.substring(verOffset+6);
 if ((verOffset=nAgt.indexOf("Version"))!=-1) 
   fullVersion = nAgt.substring(verOffset+8);

// In MSIE, the true version is after "MSIE" in userAgent
else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) 
 browserName = "Microsoft Internet Explorer";
 fullVersion = nAgt.substring(verOffset+5);

// In Chrome, the true version is after "Chrome" 
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) 
 browserName = "Chrome";
 fullVersion = nAgt.substring(verOffset+7);

// In Safari, the true version is after "Safari" or after "Version" 
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) 
 browserName = "Safari";
 fullVersion = nAgt.substring(verOffset+7);
 if ((verOffset=nAgt.indexOf("Version"))!=-1) 
   fullVersion = nAgt.substring(verOffset+8);

// In Firefox, the true version is after "Firefox" 
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) 
 browserName = "Firefox";
 fullVersion = nAgt.substring(verOffset+8);

// In most other browsers, "name/version" is at the end of userAgent 
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < 
          (verOffset=nAgt.lastIndexOf('/')) ) 

 browserName = nAgt.substring(nameOffset,verOffset);
 fullVersion = nAgt.substring(verOffset+1);
 if (browserName.toLowerCase()==browserName.toUpperCase()) 
  browserName = navigator.appName;
 

// trim the fullVersion string at semicolon/space if present
if ((ix=fullVersion.indexOf(";"))!=-1)
   fullVersion=fullVersion.substring(0,ix);
if ((ix=fullVersion.indexOf(" "))!=-1)
   fullVersion=fullVersion.substring(0,ix);

majorVersion = parseInt(''+fullVersion,10);
if (isNaN(majorVersion)) 
 fullVersion  = ''+parseFloat(navigator.appVersion); 
 majorVersion = parseInt(navigator.appVersion,10);


document.write(''
 +'Browser name  = '+browserName+'
' +'Full version = '+fullVersion+'
' +'Major version = '+majorVersion+'
' +'navigator.appName = '+navigator.appName+'
' +'navigator.userAgent = '+navigator.userAgent+'
' )

JavaScript de origen: nombre del navegador.
Consulte JSFiddle para detectar detalles del navegador.

Detectando SO:

// This script sets OSName variable as follows:
// "Windows"    for all versions of Windows
// "MacOS"      for all versions of Macintosh OS
// "Linux"      for all versions of Linux
// "UNIX"       for all other UNIX flavors 
// "Unknown OS" indicates failure to detect the OS

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);

fuente JavaScript: detección de SO.
Consulte JSFiddle para detectar detalles del sistema operativo.

    var nVer = navigator.appVersion;
    var nAgt = navigator.userAgent;
    var browserName  = navigator.appName;
    var fullVersion  = ''+parseFloat(navigator.appVersion); 
    var majorVersion = parseInt(navigator.appVersion,10);
    var nameOffset,verOffset,ix;
    
    // In Opera, the true version is after "Opera" or after "Version"
    if ((verOffset=nAgt.indexOf("Opera"))!=-1) 
     browserName = "Opera";
     fullVersion = nAgt.substring(verOffset+6);
     if ((verOffset=nAgt.indexOf("Version"))!=-1) 
       fullVersion = nAgt.substring(verOffset+8);
    
    // In MSIE, the true version is after "MSIE" in userAgent
    else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) 
     browserName = "Microsoft Internet Explorer";
     fullVersion = nAgt.substring(verOffset+5);
    
    // In Chrome, the true version is after "Chrome" 
    else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) 
     browserName = "Chrome";
     fullVersion = nAgt.substring(verOffset+7);
    
    // In Safari, the true version is after "Safari" or after "Version" 
    else if ((verOffset=nAgt.indexOf("Safari"))!=-1) 
     browserName = "Safari";
     fullVersion = nAgt.substring(verOffset+7);
     if ((verOffset=nAgt.indexOf("Version"))!=-1) 
       fullVersion = nAgt.substring(verOffset+8);
    
    // In Firefox, the true version is after "Firefox" 
    else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) 
     browserName = "Firefox";
     fullVersion = nAgt.substring(verOffset+8);
    
    // In most other browsers, "name/version" is at the end of userAgent 
    else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < 
              (verOffset=nAgt.lastIndexOf('/')) ) 
    
     browserName = nAgt.substring(nameOffset,verOffset);
     fullVersion = nAgt.substring(verOffset+1);
     if (browserName.toLowerCase()==browserName.toUpperCase()) 
      browserName = navigator.appName;
     
    
    // trim the fullVersion string at semicolon/space if present
    if ((ix=fullVersion.indexOf(";"))!=-1)
       fullVersion=fullVersion.substring(0,ix);
    if ((ix=fullVersion.indexOf(" "))!=-1)
       fullVersion=fullVersion.substring(0,ix);
    
    majorVersion = parseInt(''+fullVersion,10);
    if (isNaN(majorVersion)) 
     fullVersion  = ''+parseFloat(navigator.appVersion); 
     majorVersion = parseInt(navigator.appVersion,10);
    
    
    document.write(''
     +'Browser name  = '+browserName+'
' +'Full version = '+fullVersion+'
' +'Major version = '+majorVersion+'
' +'navigator.appName = '+navigator.appName+'
' +'navigator.userAgent = '+navigator.userAgent+'
' ) // This script sets OSName variable as follows: // "Windows" for all versions of Windows // "MacOS" for all versions of Macintosh OS // "Linux" for all versions of Linux // "UNIX" for all other UNIX flavors // "Unknown OS" indicates failure to detect the OS var OSName="Unknown OS"; if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; document.write('Your OS: '+OSName);

Me entristece decir: no tenemos suerte en este caso.

Me gustaría referirlo al autor de WhichBrowser: Todos mienten.

Básicamente, ningún navegador es honesto. No importa si usa Chrome o IE, ambos le dirán que son “Mozilla Netscape” con soporte para Gecko y Safari. Pruébelo usted mismo en cualquiera de los violines que vuelan en este hilo:

violín de hims056

Violín de Hariharan

o cualquier otro … Pruébalo con Chrome (que aún podría tener éxito), luego pruébalo con una versión reciente de IE y llorarás. Por supuesto, existen heurísticas para hacerlo bien, pero será tedioso comprender todos los casos extremos y es muy probable que dejen de funcionar dentro de un año.

Tome su código, por ejemplo:

Chrome dice:

Nombre del código del navegador: Mozilla

Nombre del navegador: Netscape

Versión del navegador: 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 40.0.2214.115 Safari / 537.36

Cookies habilitadas: true

Plataforma: Win32

Encabezado de agente de usuario: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 40.0.2214.115 Safari / 537.36

IE dice:

Nombre del código del navegador: Mozilla

Nombre del navegador: Netscape

Versión del navegador: 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; .NET4.0C; .NET4 .0E; InfoPath.3; rv: 11.0) como Gecko

Cookies habilitadas: true

Plataforma: Win32

Encabezado de agente de usuario: 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; .NET4. 0C; .NET4.0E; InfoPath.3; rv: 11.0) como Gecko

Al menos Chrome todavía tiene un string que contiene “Chrome” con el número de versión exacto. Pero, para IE, debe extrapolar de las cosas que admite para realmente resolverlo (¿quién más se jactaría de que admiten .NET o Media Center : P), y luego compararlo con el rv: al final para obtener el número de versión. Por supuesto, incluso una heurística tan sofisticada podría fallar tan pronto como aparezca IE 12 (o como quieran llamarlo).

Hay una biblioteca para este propósito: https://github.com/bestiejs/platform.js#readme

Entonces puedes usarlo de esta manera

// example 1
platform.os; // 'Windows Server 2008 R2 / 7 x64'

// example 2 on an iPad
platform.os; // 'iOS 5.0'

// you can also access on the browser and some other properties
platform.name; // 'Safari'
platform.version; // '5.1'
platform.product; // 'iPad'
platform.manufacturer; // 'Apple'
platform.layout; // 'WebKit'

// or use the description to put all together
platform.description; // 'Safari 5.1 on Apple iPad (iOS 5.0)'

Recuerda dar visibilidad a este enunciado si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *