Js-Version feststellen durch Überprüfen
Martin Fleck
- javascript
0 Kurt Felix0 Antje Hofmann0 Martin Fleck0 Martin Fleck0 Antje Hofmann0 Cybaer0 Cybaer
hallo,
zum Feststellen der Javascript-Version des Users, werden zwei neue Funktionen/Eigenschaften je Version auf deren Vorhandensein geprüft.
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?
if (("1;2").split(";").length == 2 && [0, 1].join (" ").length == 3) jsVersion = 1;
if (("1").charCodeAt (0) == 49 && screen.availHeight > 0) jsVersion = 2;
if (("" + new Date().getFullYear()).length > 0 && !isFinite (Number.MAX_VALUE * 2)) jsVersion = 3;
if ((new String ("") instanceof String) && (0 in [1])) jsVersion = 4;
if (document.getElementsByTagName != null && decodeURI (encodeURI (" ")) == " ") jsVersion = 5;
Vielen Dank.
--
Martin Fleck
Hallo,
folgendes müsste funktionieren:
<script language="JavaScript1.1">
var version="JavaScript 1.1";
</script>
<script language="JavaScript1.2">
var version="JavaScript 1.2";
</script>
<script language="JavaScript1.3">
var version="JavaScript 1.3";
</script>
<script language="JavaScript1.4">
var version="JavaScript 1.4";
</script>
<script language="JavaScript1.5">
var version="JavaScript 1.5";
</script>
<script language="JavaScript" type="text/javascript">
document.write("--> "+version);
</script>
Bei Mozilla (1.5) wird die JavaScript-Version 1.5 angezeigt,
beim IE (5.5) die Version 1.3; den NS-Communicator 4.x habe
ich von meiner Platte verbannt, kann also nicht sagen ob o.a.
Beispiel dort funktioniert!
Gruß,
Kurt
Bei Mozilla (1.5) wird die JavaScript-Version 1.5 angezeigt,
beim IE (5.5) die Version 1.3; den NS-Communicator 4.x habe
ich von meiner Platte verbannt, kann also nicht sagen ob o.a.
Beispiel dort funktioniert!
Das funktioniert leider nicht zuverlässig. Netscape Communicator 4.5 gibt mir dabei "Javascript 1.5" aus, das kann definitiv nicht sein.
--
Martin Fleck
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
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.
Das habe ich auch gemerkt, denn instanceof gehört zu den reservierten Wörtern.
Aber hast du noch eine Idee welche Methode/Eigenschaft ich prüfen kann, ob Javascript 1.4 vorhanden ist?
Netscape 3 würde sich hier heftig beschweren. Ob eine Funktion vorhanden ist, fragt man ab mit:
if (!("1;2").split)
Danke für den Tipp, werde es umändern.
Danke für den Tipp, werde es umändern.
So sieht es derzeit aus:
var jsVersion = 0;
if (("1;2").split && [0, 1].join) jsVersion = 1;
if (("1").charCodeAt && screen && screen.availHeight) jsVersion = 2;
if (new Date().getFullYear && isFinite) jsVersion = 3;
if (document.getElementsByTagName && decodeURI && encodeURI) jsVersion = 5;
alert ("jsVersion: 1." + jsVersion);
Mir fehlt allerdings immer noch die Überprüfung für Javascript 1.4. Was könnte ich auf Vorhandensein prüfen?
Hat jemand den Netscape 3 oder IE 4 noch und kann es mal testen? Gibt es evtl. den Netscape 3 noch zum Downloaden?
Vielen Dank.
--
Martin Fleck
Hallo Martin,
Mir fehlt allerdings immer noch die Überprüfung für Javascript 1.4. Was könnte ich auf Vorhandensein prüfen?
ich habe gerade mal meine lokale Doku diesbezüglich durchsucht. Es gibt keine Funktionen, die abgefragt werden können, allerdings auch keine Netscape-Browser, die ausschließlich JavaScript 1.4 interpretieren.
Auszug:
JavaScript version Navigator version
JavaScript 1.0 Navigator 2.0
JavaScript 1.1 Navigator 3.0
JavaScript 1.2 Navigator 4.0-4.05
JavaScript 1.3 Navigator 4.06-4.7x
JavaScript 1.4 -
JavaScript 1.5 Navigator 6.0
Mozilla (open source browser)
Das der IE kein JavaScript kann, habe ich dir ja schon gesagt. Hier gibt diese URL http://msdn.microsoft.com/library/default.asp?url=/library/en-us/jscript7/html/jsoriversioninformation.asp über die Versionen Auskunft.
Was Opera unterstützt steht hier http://www.opera.com/docs/specs/js/ecma/, allerdings ist die Liste nicht vollständig.
Viele Grüße
Antje
ich habe gerade mal meine lokale Doku diesbezüglich durchsucht. Es gibt keine Funktionen, die abgefragt werden können, allerdings auch keine Netscape-Browser, die ausschließlich JavaScript 1.4 interpretieren.
Die Prüfung von Javascript 1.4 habe ich herausgenommen.
Danke für die nützlichen Links!
--
Martin Fleck
Hi,
Danke für den Tipp, werde es umändern.
Wenn schon solche Abfragen, dann *unbedingt* auf den alten Browsern testen, bis Du für zukünftige Projekte weißt, wie sie reagieren! ;-)
Hat jemand den Netscape 3 oder IE 4 noch und kann es mal testen? Gibt es evtl. den Netscape 3 noch zum Downloaden?
http://browsers.evolt.org/ ist dein Freund. ;-)
Für alte IEs solle man dann ggf. mit Disk-Images arbeiten ...
Gruß, Cybaer
Hi,
Mir fehlt allerdings immer noch die Überprüfung für Javascript 1.4. Was könnte ich auf Vorhandensein prüfen?
Gar nicht. 1.4 wurde nicht veröffentlicht!
Navigator 4.06-4.7 haben JS 1.3, Navigator 6 schon JS 1.5. :-)
Gruß, Cybaer