Je suis triste de dire: nous n'avons pas de chance sur celui-ci.
Je voudrais vous référer à l'auteur de WhichBrowser : Tout le monde ment .
Fondamentalement, aucun navigateur n'est honnête. Peu importe si vous utilisez Chrome ou IE, ils vous diront tous les deux qu'il s'agit de "Mozilla Netscape" avec le support de Gecko et Safari. Essayez-le vous-même sur l'un des violons volant dans ce fil:
violon de hims056
Le violon d'Hariharan
ou tout autre ... Essayez-le avec Chrome (qui pourrait encore réussir), puis essayez-le avec une version récente d'IE, et vous pleurerez. Bien sûr, il existe des heuristiques, pour bien faire les choses, mais il sera fastidieux de saisir tous les cas extrêmes, et ils ne fonctionneront probablement plus dans un an.
Prenez votre code, par exemple:
<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 dit:
Nom de code du navigateur: Mozilla
Nom du navigateur: Netscape
Version du navigateur: 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 40.0.2214.115 Safari / 537.36
Cookies activés: vrai
Plateforme: Win32
En-tête de l'agent utilisateur: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 40.0.2214.115 Safari / 537.36
IE dit:
Nom de code du navigateur: Mozilla
Nom du navigateur: Netscape
Version du navigateur: 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) comme Gecko
Cookies activés: vrai
Plateforme: Win32
En-tête de l'agent utilisateur: 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) comme Gecko
Au moins Chrome a toujours une chaîne qui contient "Chrome" avec le numéro de version exact. Mais, pour IE, vous devez extrapoler à partir des éléments qu'il prend en charge pour le comprendre (qui d'autre se vanterait de soutenir .NET
ou Media Center
: P), puis le comparer rv:
à la toute fin pour obtenir le numéro de version. Bien sûr, même ces heuristiques sophistiquées pourraient très probablement échouer dès que IE 12 (ou peu importe comment ils veulent l'appeler) sortira.