Sven Rautenberg: merkwürdige Browseridenitfikation

Beitrag lesen

Moin!

Man sollte meinen, der IE 5 besitzt die appVersion 5 - stimmt nicht, der meldet sich mit 4.
Ähnlich der NS - die neue Version 7 meldet sich mit 5.

Was soll denn das?
Wer kann mich aufklären über derart Merkwürdiges.

Der "geheime" Codename vom Netscape ist "Mozilla". Und folgerichtig war Netscape 1.0 "Mozilla/1.0". Diese Mozilla-Versionsnummer kriegst du über navigator.appVersion raus.

Nach Mozilla 1 kamen Mozilla 2, Mozilla 3 und Mozilla 4 (oh Wunder). Mozilla 4 ist der allseits bekannte und "beliebte" Netscape 4.

Und die Nachfolgeversion ist eben Mozilla 5. Nur hat Firma AOL/Netscape da nicht auch das Etikett "Netscape 5" draufgeklebt, sondern "Netscape 6.0". Und "Netscape 6.1". Und "Netscape 6.2". Und "Netscape 7.0". Diese ganzen neuen Netscapes entstammen bekanntlich alle aus dem Mozilla-Projekt (endlich darf der Browser so heißen, wie sein Codename), welches mit vielen 0.x-Versionen (für Netscapes der 6er-Serie) bzw. Mozilla 1.0 (für Netscape 7) herhalten mußte. Derzeiter Stand ist Mozilla 1.2. Damit nun diese endlich echten Mozillas nicht mit den alten Mozillas von damals kollidieren, ist der neue Mozilla (echte Versionsnummer 0.x oder 1.x) eben im Codenamen immer ein "Mozilla/5.0". Die echte Versionsnummer steht weiter hinten im User-Agent-String.

Tja, und der IE wurde irgendwann man von Microsoft als "kompatibel zu Mozilla/4.0" gekürt und erhielt deshalb die passende Versionsnummer (damit der IE bei entsprechend prüfenden Javascripten auch mit durchkommt und beachtet wird), die eigentliche Versionsnummer steht aber auch wieder im User-Agent-String drin.

Dieses ganze Verwirrspiel sollte dich hoffentlich davon überzeugen, dass es nicht sinnvoll ist, zu versuchen, im navigator-Objekt irgendwelche Informationen zu erkennen. Das geht meist schief - zumal auch Opera auf Wunsch ein Mozilla/4 sein kann, oder ein IE 5.

Wenn du Javascript auf die verschiedenen Browser anpassen willst, dann frage ab, ob sie die zu benutzenden Javascript-Öbjekte kennen:

if (document.getElementById)
{
  // code fürs w3c-dom
}
else if (document.all)
{
  // code für ie 4
}
else if (document.layers)
{
  // code für netscape 4
}
else
{
  // ggf. meldung, dass der browser nichts kann
}

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.