Sven Rautenberg: merkwürdige Browseridenitfikation

Beitrag lesen

Moin!

Deswegen: Browserweichen (die man ja normalerweise aus Javascriptgründen einbaut) möglichst immer durch Abfrage bestimmter JS-eigentümlichkeiten aufbauen. Kann er layer, aber kein .all? dann ist es wohl ein NS4.xy:. kann er .all und getElementbyID, dann ist es ein IE. Kann er getelementbyID aber kein .all? Wird wohl ein NS7 und-oder mozilla sein etc.... (Opera bekommt man durch die Abfrage if(window.opera), wobei: kann er dazu .all, dann ist es Nummer 7, ansonsten darunter....)

Nö, auch alte Operas können document.all - wenn sie sich als IE ausgeben. Nur kann man damit nicht sonderlich viel sinnvolles anfangen, weil der Opera auch mit document.all nicht mehr kann als ohne.

Ich würde auch von der Rumraterei (wenn er das kann, und das nicht, dann ist es ein...) abraten. Bereits heute kennen und können aktuelle Browser document.getElementById. Da diese Zugriffsform vom W3C genormt wurde, ist damit zu rechnen, dass Browserweichen irgendwann vollkommen überflüssig werden.

Bis dahin reicht es meist aus, für den IE 4 (sehr selten geworden) und den Netscape 4 (noch etwas häufiger) eine Extra-Wurst zu braten - und nur wenn man wirklich spezielle Sonderfunktionen strickt, muß man sich vielleicht über Opera Gedanken machen. Die Abfrage auf "window.opera" allerdings ist, wie das Erscheinen von Opera 7 zeigt, keine sehr schlaue Idee, weil Opera 7 vieles von dem kann, was andere Browser schon vorher konnten, alte Operas aber nicht. Also muß man jetzt _wieder_ alle seine Skripte durchforsten und eine weitere Abfrage einbauen, die Opera 7 durchläßt. Ich behaupte, mit konsequenter Abfrage, ob die Objekte vorhanden sind, die man benutzen möchte, hätte man sich das ersparen können. Oder man macht einfach solche komplizierten Dinge nicht. ;)

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.