Multimediakurs Leinfelder: Inhalt/Modul 7 "JavaScript in Handarbeit"/Modul 7.3 "JavaScript-Level 2/7.3.1 Browserinkompatibilitäten

(© copyright)     Letzte Änderungen:06.01.2002


Modul 7.3:

JavaScript in Handarbeit - "Level 2":
JavaScript-Syntax vom Prinzip her verstehen, vorhandene Skripte anpassen, basierend auf Beispielen einfache Skripte selbst schreiben

7.3.1 Browser-Inkompatibilitäten umgehen
7.3.2 Level2-Anleitung: Grundlagen, Bausteine und Regeln der JS-Syntax
7.3.3 Zusammenfassung JS Level 2
7.3.4 Kommentierte JS-Level2-Beispiele und developer Links

Notwendiges Vorwissen für diesen Modul: Kenntnisse von JavaScript Level 1 sowie der im Eingangsmodul zu JavaScript (7.1) genannten weiteren Voraussetzungen.

1. Browser-Inkompatibilitäten erkennen und umgehen

Wir müssen nun die Freude über die ersten gelungenen JavaScript-Einbauten gleich wieder etwas trüben. Wir sagten bereits, dass nicht alle Skripte in allen Browsern funktionieren und dass Sie deshalb kräftig mit möglichst vielen verfügbaren Browsern testen sollen, bevor Sie Ihre Seiten mit Skripten online geben.

Tipp: an ältere Browserversionen kommen Sie am besten unter http://browsers.evolt.org

Obige Anregungung wollen wir nun etwas konkretisieren, damit Sie hier rascher zum Ziel kommen. JavaScript ist eine plattformunabhängige Sprache. So sind es auch kaum Inkompatibilitäten zwischen Windows, Mac und Linux-Plattformen, die uns zu schaffen machen, sondern insbesondere die eigenen Süppchen, die die großen Browserhersteller Netscape und Internet Explorer kochen. Zusätzlich gibt es auch alternative Browser, wie Opera, Konqueror (für Linux) oder iCab für den Mac.

JavaScript existiert, wie andere Programmiersprachen auch, in verschiedenen Versionsnummern. Erfreulicherweise bleibt die Syntax mit Auftreten einer neuen Versionsnummer in der Regel unverändert, es kommen nur zusätzliche Ergänzungen hinzu, so dass die Versionen rückwärtskompatibel sind (d.h. Browser, der JavaScript in der Version 1.5 ausführt, versteht auch Skripte, die in der Version 1.3 oder 1.2 geschrieben wurden). Gewisse Ausnahmen gibt es für das sog. Layer-Objekt. Dieses wurde wohl mit Version 1.2 eingeführt und nur von Netscape Versionen 4 verstanden. Es wurde wieder abgeschafft, selbst Netscape 6 setzt es nicht mehr um (näheres zu Objekten siehe unten, näheres zum Layer-Objekt siehe Anhang: dhtml-Referenz). Außerdem werden Arrays (siehe JS-Level 3) in den jeweiligen Sprachversionen etwas anders definiert.

Wenn Sie in Ihrem JavaScript im Script-Tag nur angeben <script language="JavaScript"> versucht jeder Browser, der JavaScript versteht, dieses umzusetzen. Stehen Syntax-Teile drin, die er nicht versteht (weil es sich z.B. um JS 1.5-Beispiele handelt, die der Browser nicht umsetzen kann), gibt es eine unerfreuliche Fehlermeldung. Sie können nun auch die Versionsnummer angeben: <script language="JavaScript1.5">. Dann wird ein nicht geeigneter Browser bei diesem Skript (hoffentlich) überhaupt nicht versuchen, dieses Skript umzusetzen und der Benutzer bekommt zwar die Skriptausführung nicht geboten, aber wenigstens auch keine Fehlermeldung. Wenn Sie fremde Skripte verwenden, die derartige Versionsangaben von JS beinhalten, sollten Sie diese stehen lassen.

Besser ist es aber, zu wissen, welche Skriptversionen mit welchen Browsern funktionieren. Sie können dann ggf. Skripte, die eh noch kaum ein Browser versteht (z.B. Vers. 1.5-Skripte) entweder weglassen, oder Browserweichen (behandeln wir weiter unten) einbauen. Ich gebe Ihnen hier die Zusammenstellung aus M.Seeboergers Buch wider (S. 38/89 dieses Buchs):

"Zitat Beginn"

Name des Browsers
Versionsnummer Unterstützung der JavaScript-Version
    1.0 1.1 1.2 1.3 1.4 1.5
Netscape Navigator
1.x nein nein nein nein nein nein
  2.x ja nein nein nein nein nein
  3.x ja ja nein nein nein nein
  4.0 bis 4.05 ja ja ja nein nein nein
  4.06 bis 4.5x ja ja ja ja nein nei
  6.0, 6.1 ja ja ja ja ja ja
Microsoft Internet Explorer
3.x ja nein nein nein nein nein
  4.x ja ja ja/z.T. nein nein nein
  4.5 (nur Mac OS) ja ja z.T. z.T. z.T. z.T.
  5 ja ja ja z.T. z.T. z.T.
  5.1 (nur Mac OS X) ja ja ja z.T. z.T. z.T.
  5.5 ja ja ja z.T. z.T. z.T.
  6 ja ja ja z.T. z.T. z.T.
Opera
3.x ja ja/z.T. nein nein nein nein
  4x ja ja nein nein nein nein
  5.x ja ja ja nein nein nein
Konqueror
2.1 ja ja z.T. z.T. z.T. z.T.

"Zitat Ende"

Daneben gibt es noch das Problem mit einigen "Dialekten" von JavaScript. Mit anderen Worten: ein Skript läuft nur in einem Browser, da es zusätzliche Skript-Syntax verwendet, die browserspezifisch ist und von keiner JavaScript-Version offiziell unterstützt wird (z.B. JScript von Microsoft). Sie sollten also nach Möglichkeit Skripte ohne JS-Versionsangabe doch in möglichst vielen Browsern testen.

Auf der sicheren Seite (vom Konqueror nur z.T.) sind Sie, wenn Sie JavaScripte verwenden, deren Syntax auf der JS-Version 1.2 basiert. Dies sind auch die am weitesten verbreiteten Skripte. Bei höheren Skripten sollten Sie entweder auf Ihrer Seite angeben, dass Browser soundso wegen der Skripte verwendet werden sollte (lassen Sie dem Benutzer aber eine Wahl, indem Sie mehrere angeben oder z.B. Angeben, dass Browser nur ab Version 4 verwendet werden sollen) oder Sie bauen Browserweichen mit JavaScript ein. Sie finden in den JS-Beispielen zu JS-Level 2 entsprechende Skripte, sollten aber zuvor mit der JS-Syntax besser vertraut werden.


>> Modul 7.3.2: "Level 2"- Anleitung: Grundlagen und Bausteine der JavaScript-Syntax

<< Modul 7.2: JavaScript-Level 1