9 Stimmen

Browser-Erkennung in Javascript --- ERROR?

Dies ist der Detektor: http://w3schools.com/js/tryit.asp?filename=try_nav_all

In Chrome, Firefox, Safari y Netscape wird immer der Codename des Browsers als Mozilla und der Name des Browsers als Netscape angezeigt. Müsste sich dies nicht je nach Browser ändern?

Hier ist der Code und die verschiedenen Ausgaben, wenn Sie daran interessiert sind:

CODE:

document.write("Browser CodeName: " + navigator.appCodeName);
document.write("<br /><br />");
document.write("Browser Name: " + navigator.appName);
document.write("<br /><br />");
document.write("Browser Version: " + navigator.appVersion);
document.write("<br /><br />");
document.write("Cookies Enabled: " + navigator.cookieEnabled);
document.write("<br /><br />");
document.write("Platform: " + navigator.platform);
document.write("<br /><br />");
document.write("User-agent header: " + navigator.userAgent);

CHROME OUTPUT:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10

FIREFOX-AUSGABE:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; es-ES)

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 

SAFARI OUTPUT:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

NETSCAPE-AUSGABE:

Browser CodeName: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (Windows; en-US)

Cookies Enabled: true

Platform: Win32

User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)

11voto

T.J. Crowder Punkte 948310

Vielleicht sollte es so sein, es kommt darauf an, was sie erreichen wollen.

Aber es zeigt nur, warum Browser Aufdeckung in Misskredit geraten ist, zugunsten von Funktion Erkennung. Alter des Browser-Erkennungscodes unglaublich schnell. Die Erkennung von Merkmalen hingegen ist ziemlich zeitlos.

Zum Beispiel: I könnte prüfen, ob es sich bei dem Browser um den IE handelt, und wenn ja, davon ausgehen, dass der Browser nicht über Array.prototype.indexOf . Aber dann kommt der IE9 und fügt es hinzu, aber ich benutze immer noch meine eigene Version, weil ich denke, dass der "IE" es nicht hat. Es ist viel besser, zu prüfen, ob die Funktion in der Implementierung vorhanden ist, mit der ich arbeite, ohne sich darum zu kümmern, welche Marke es ist. Und natürlich funktioniert die Feature-Erkennung auch mit einem Browser, von dem ich noch nie etwas gehört habe; die Browser-Erkennung schlägt fehl und greift auf einen völlig unüblichen "Standard" zurück.

Manchmal ist es nicht so einfach, wie wenn man eine if (Array.prototype.indexOf) aber normalerweise ist es möglich. Jurij Zaytsev ( kangax ) hat eine großartige Liste der Erkennung von Merkmalen.

(Nebenbei bemerkt: Fast alle Browser behaupten (in gewissem Maße), dass sie "Mozilla" sind, weil einige Websites einfach Netscape-Browsern (ja, so lange ist das her) den Vorzug vor Microsoft-Browsern geben und eine Browsererkennung durchführen, um dies zu überprüfen).

3voto

Josh Punkte 10990

Erstens finde ich, dass die Quirksmode BrowserDetect-Skript ist ein echtes Juwel und wird wahrscheinlich besser sein als das, was Sie jetzt verwenden.

Wikipedia erklärt dass die Zeichenfolge des Benutzer-Agenten fast immer mit "Mozilla" beginnt:

Ein inoffizielles Format, das auf dem oben genannten basiert und von Webbrowsern verwendet wird, lautet wie folgt: Mozilla/[Version] ([System- und Browserinformationen]) [Plattform] ([Plattformdetails]) [Erweiterungen].

Aber um Ihnen eine Erklärung dafür zu geben, warum alle Browser behaupten, "Mozilla" zu sein, müssen Sie ein wenig in die Zeit der Browserkriege in den 1990er Jahren zurückgehen... Von dieser Artikel auf webaim.org :

[...] dann kam ein neuer Webbrowser namens "Mozilla", eine Abkürzung für "Mosaic Killer", aber Mosaic war nicht amüsiert, also wurde der öffentliche Name in Netscape geändert, und Netscape nannte sich Mozilla/1.0 (Win3.1) [...] [...] Und Microsoft wurde ungeduldig und wollte nicht warten, bis die Webmaster vom IE erfuhren und anfingen, ihm Frames zu schicken, und so erklärte der Internet Explorer, er sei "Mozilla-kompatibel" und begann, sich als Netscape auszugeben, und nannte sich Mozilla/1.22 (kompatibel; MSIE 2.0; Windows 95), [...] Und Microsoft verkaufte den IE zusammen mit Windows und machte ihn besser als Netscape, und der erste Browserkrieg tobte über das ganze Land. Und siehe da, Netscape wurde getötet, und bei Microsoft herrschte großer Jubel. Aber Netscape wurde als Mozilla wiedergeboren, und Mozilla baute Gecko, und nannte sich Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826, und Gecko war die Rendering-Engine, und Gecko war gut. Und Mozilla wurde zu Firefox, und nannte sich Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0, und Firefox war sehr gut. Und Gecko begann sich zu vermehren, und andere Browser wurden geboren, die seinen Code benutzten, und sie nannten sich Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0. 8.1 und Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0, die alle vorgeben, Mozilla zu sein, und alle von Gecko betrieben werden. [...]

Sie sollten den ganzen Artikel lesen, er ist informativ und amüsant. Aber die lange und die Art ist, müssen Sie die User-Agent-Zeichenfolge zu analysieren, wie sie so ziemlich alle sagen "Mozilla / etwas "

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X