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]