3. Grundlagen von JavaScript

JavaScript ist eine objektorientierte, plattformunabhängige Skript-Sprache, die 1996 von Netscape Communications vorgestellt wurde. JavaScript wird oft mit Java, welches jedoch von Sun Microsystems entwickelt wurde, verwechselt. Daher wird nach einer Vorstellung der wichtigsten Eigenschaften von JavaScript besonders auf die Unterschiede zu Java eingegangen.

3.1 Einführung

Da JavaScript von Netscape Communicaitions entwickelt wurde, ist es selbstverständlich Teil jedes Netscape Navigators ab Version 2.0. Mit der aktuellen Version 4.0 des Netscape Navigators ist bei JavaScript die Version 1.2 erreicht. Jedoch wird JavaScript auch von anderen Browsern, wie zum Beispiel dem Microsoft Internet Explorer unterstützt. Die Hautpanwendung von JavaScript sind dynamische, interaktive HTML-Seiten. Es lassen sich jedoch auch komplexere Client/Server-Anwendungen mit JavaScript erstellen. Zu diesem Zweck existieren zwei verschiedene Versionen von JavaScript, die beide den selben Kern (Core JavaScript) haben:


Abb. 3.1: JavaScript für Clients und Server (Quelle: JavaScript Guide von Netscape)

JavaScript läuft in der Server-Version zum Beispiel auf dem Netscape Enterprise Server. Durch die Kombination beider Versionen von JavaScript lassen sich zum Beispiel Datenbankanwendungen realisieren. Im Rahmen dieser Arbeit wird jedoch nur auf JavaScript für einen Client eingegangen.

3.2 Eigenschaften von JavaScript

3.2.1 Objekte

In JavaScript gibt es im Gegensatz zu Java keine Möglichkeit neue vererbungsfähige Klassen zu erzeugen. Es existieren allerdings einige vordefinierte Objekte, die in einer Objekthierarchie gegliedert sind:


Abb. 3.2: Objekthierarchie von JavaScript (Quelle: JavaScript Guide von Netscape)

Diese vordefinierten Objekte repräsentieren dabei die verschiedenen Bestandteile des Browsers, eines Browser-Fensters oder eines HTML-Dokumentes.

3.2.2 Eigenschaften

Jedes Objekt der Objekthierarchie besitzt gewisse Eigenschaften, auf die mit dem Punkt-Operator lesend und schreibend zugegriffen werden kann. Der Titel der aktuellen HTML-Seite wird zum Beispiel in der Eigenschaft "title" gespeichert. Der Zugriff auf diese Eigenschaft würde dann folgendermaßen aussehen:

document.title = "Meine Homepage"

Mit Hilfe der Objekteigenschaften kann eine HTML-Seite und ihre Elemente mit Hilfe eines JavaScript-Programmes während der Anzeige dynamisch verändert werden.

3.2.3 Ereignisse

Ein JavaScript-Programm reagiert auf Ereignisse (Events), die jeweils einzelne Objekte betreffen können. Der Programmierer definiert hierzu für die Ereignisse auf die das Programm reagieren soll eine Routine, die bei Eintritt des Ereignisses aufgerufen wird, den sogenannten Event Handler. Der Event Handler bekommt dabei den Namen des Ereignisses verbunden mit einem "on", so heißt zum Beispiel der Event Handler, der auf ein Clicken auf das entsprechende Objekt reagiert "onClick".

3.2.4 Sicherheit

Ähnlich wie bei Java existiert auch bei JavaScript ein komplettes Sicherheitsmodell, welches es so gut wie unmöglich macht, mit einem JavaScript-Programm Schaden anzurichten. Nach anfänglichen Schwierigkeiten wegen fehlerhafter Implementierung stellt nun auch die Aktivierung von JavaScript im Browser keine Gefahr mehr für den eigenen Rechner dar. Im folgenden werden kurz die wichtigsten Aspekte des Sicherheitsmodells von JavaScript angesprochen.

Beschränkter Zugriff auf Systemressourcen

Wie im Java-Sicherheitsmodell ist es auch einem JavaScript-Programm nicht gestattet, auf die  Ressourcen des lokalen Rechnersystems zuzugreifen. JavaScript-Programme laufen also auch in einer sogenannten Sandbox ab (vgl. Abschnitt 2.2.6). Weiterhin darf ein JavaScript-Programm nur auf Dokumente zugreifen, die auf dem selben Server liegen, wie das Programm.

Same Origin Policy

Ein JavaScript-Programm darf nur auf Browser-Fenster zugreifen, auf dem Informationen vom selben Server, wie dem von dem das JavaScript-Programm geladen wurde, dargestellt werden. Ein Script von Server A hat also keinen Zugriff auf ein Browser-Fenster, auf dem Informationen vom Server B dargestellt werden. Hiermit soll vermieden werden, daß zum Besipiel ein JavaScript-Programm auf Informationen eines firmeninternen Intranets, die in einem anderen Browser-Fenster dargestellt werden, Zugriff bekommt.

Data Tainting

Mit dem Data Tainting kann die Same Origin Policy eingeschränkt werden, wodurch die Möglichkeiten für JavaScript-Anwendungen erweitert werden. Ein JavaScript-Programm hat also prinzipiell Zugriff auf andere Browser-Fenster (auch wenn die Daten von einem anderen Server stammen), sicherheitsrelevante Daten können jedoch markiert (tainting) werden.

Signed Scripts

Wie bei Java gibt es auch bei JavaScript die Möglichkeit, JavaScript-Programme mit einer digitalen Signatur zu versehen, wodurch der Anwender die Herkunft und die Integrität eines JavaScript-Programms überprüfen kann.

3.3 Integration von JavaScript-Code in eine Webpage

Die Integration eines JavaScript-Programmes erfolgt mit Hilfe des neuen HTML-Tags <SCRIPT>. Der JavaScript-Code befindet sich dabei im Gegensatz zu Java als Klartext im HTML-Sourcecode der Seite. Folgendes Beispiel soll dies verdeutlichen:
 
<HTML>
<HEAD>
<TITLE>Meine Homepage</TITLE>
<SCRIPT LANGUAGE="JavaScript1.2">
<!-- Skript vor Nicht-JavaScript-Browsern verstecken
document.write("Hello, world!")
// Bis hierhin versteckt. -->
</SCRIPT>
</HEAD>
...
</HTML>

In diesem Beispiel erkennt man auch, daß mit dem <SCRIPT>-Tag auch die benutzte JavaScript-Version übergeben wird. Weiterhin wird mit Hilfe der HTML-Kommentar-Tags das Skript vor Browsern versteckt, die nicht JavaScript-fähig sind, oder bei denen die JavaScript-Funktionalität abgeschaltet wurde. Andernfalls würde bei der Darstellung der Seite mit einem solchen Browser der JavaScript-Code im Klartext auf dem Bildschirm erscheinen. Da zudem abhängig von der Browser-Version auch verschiedene Varianten des JavaScript-Programmes verwendet werden können, ergibt sich so eine maximale (Abwärts-)Kompatibilität mit vielen Browsern.
Alternativ zum obigen Beispiel ist auch die Angabe einer Quelldatei (*.js) möglich, in der in ASCII-Klartext das JavaScript-Programm enthalten ist.

[Zurück]          [Inhalt]          [Weiter]