Ich bin traurig zu sagen: Wir haben in dieser Sache kein Pech.
Ich möchte Sie an den Autor von WhichBrowser verweisen : Jeder lügt .
Grundsätzlich ist kein Browser ehrlich. Unabhängig davon, ob Sie Chrome oder IE verwenden, werden beide Ihnen mitteilen, dass es sich um "Mozilla Netscape" mit Gecko- und Safari-Unterstützung handelt. Probieren Sie es selbst an einem der Geigen aus, die in diesem Thread herumfliegen:
hims056s Geige
Hariharans Geige
oder irgendein anderes ... Probieren Sie es mit Chrome aus (was möglicherweise immer noch erfolgreich ist), dann versuchen Sie es mit einer aktuellen Version von IE, und Sie werden weinen. Natürlich gibt es Heuristiken, um alles in Ordnung zu bringen, aber es wird mühsam sein, alle Randfälle zu erfassen, und sie werden höchstwahrscheinlich in einem Jahr nicht mehr funktionieren.
Nehmen Sie zum Beispiel Ihren Code:
<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 sagt:
Browser-Codename: Mozilla
Browsername: Netscape
Browserversion: 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 40.0.2214.115 Safari / 537.36
Cookies aktiviert: true
Plattform: Win32
Benutzeragenten-Header: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 40.0.2214.115 Safari / 537.36
IE sagt:
Browser-Codename: Mozilla
Browsername: Netscape
Browserversion: 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) wie Gecko
Cookies aktiviert: true
Plattform: Win32
Benutzeragenten-Header: 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) wie Gecko
Zumindest hat Chrome noch eine Zeichenfolge, die "Chrome" mit der genauen Versionsnummer enthält. Aber für IE müssen Sie aus den unterstützten Dingen extrapolieren, um es tatsächlich herauszufinden (wer sonst würde sich rühmen, dass sie unterstützen .NET
oder Media Center
: P), und es dann rv:
ganz am Ende mit dem vergleichen, um die Versionsnummer zu erhalten. Natürlich können selbst solch ausgefeilte Heuristiken sehr wahrscheinlich versagen, sobald IE 12 (oder wie auch immer sie es nennen wollen) herauskommt.