Hallo Martin,
zum Feststellen der Javascript-Version des Users, werden zwei neue Funktionen/Eigenschaften je Version auf deren Vorhandensein geprüft.
Warum eigentlich diese Überprüfung? Das Feststellen der Version ist unsicher und führt meist nicht zum gewünschten Erfolg.
Sicherer ist es, immer das Vorhandensein von Methoden abzufragen und zwar dann, wenn man sie braucht.
Allerdings funktioniert das Detecten von Js 1.4 im Netscape Communicator 4.5 nicht, der meckert entweder über instanceof oder in. Ich habe sonst keine Funktion/Eigenschaft gefunden, die neu in 1.4 ist. Hat jemand eine Idee?
instanceof ist ein Operator und wird in alten Browsern als reserviertes Wort angesehen. Seine Verwendung führt immer zu einer ununterdrückbaren Fehlermeldung. Allerdings würde deine Abfrage in alten Browsern zu Fehlermeldungen ohne Ende führen, denn du fragst nicht richtig ab.
Du prüfst, ob eine Methode ein Ergebnis zurückgibt und nicht, ob diese Methode existiert.
if (("1;2").split(";").length == 2 && [0, 1].join (" ").length == 3) jsVersion = 1;
Netscape 3 würde sich hier heftig beschweren. Ob eine Funktion vorhanden ist, fragt man ab mit:
if (!("1;2").split)
tja und was machst du mit dem IE3? JS Version 1.0 :-)
if (("1").charCodeAt (0) == 49 && screen.availHeight > 0) jsVersion = 2;
hier ist es besser zu fragen, ob das screen-Objekt überhaupt existiert
ja und so geht es weiter. Ganz ehrlich, ich habe in meiner gesamten JavaScript-Praxis niemals auf die Version geprüft und ich verstehe beim besten Willen nicht, warum du es tun willst.
Einziger Anwendungsfall der vielleicht irgend einen Sinn machen würde, wäre im Zusammenhang mit einem Counter für eine statistische Auswertungen.
Ansonsten, was du noch wissen solltest. Der MS Internet Explorer kennt natürlich kein JavaScript, sondern nur JScript. Für diese Browser müßtest du, um eine wirklich relevante Aussage zu bekommen, auf JScript-Versionen untersuchen.
Viele Grüße
Antje