Me entristece decir: no tenemos suerte en este caso.
Me gustaría referirlo al autor de WhichBrowser : Everybody Miente .
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
El 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:
<div id="example"></div>
<script type="text/javascript">
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>";
document.getElementById("example").innerHTML=txt;
</script>
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: verdadero
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: verdadero
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 una cadena que contiene "Chrome" con el número de versión exacto. Pero, para IE, debe extrapolar las cosas que admite para realmente averiguarlo (quién más se jactaría de que son compatibles .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 salga IE 12 (o como quieran llamarlo).