Universität Oldenburg

Fachbereich Informatik

Seminar "Internet-Technologien"
Sommersemester 1998

 

JavaScript

 

 

Ralf Steinbach

Juli 1998


 


Zusammenfassung

Auf den folgenden Seiten wird ein kurzer Überblick über die Programmiersprache "JavaScript" gegeben. Diese Ausarbeitung entstand im Rahmen eines Seminars und muß somit vom Umfang und Inhalt einigen Einschränkungen genügen. Aus diesem Grund wird es keine Spezifikation der Sprachelemente oder tiefgehende Erläuterungen einzelner Konzepte von JavaScript geben. Vielmehr wird ein Überblick gegeben über die Möglichkeiten von JavaScript.
Den Anfang macht ein kurzer Abriß der Entstehungsgeschichte von JavaScript. Anschließend wird der Frage nachgegangen, was JavaScript überhaupt ist und wie es einzuordnen ist im Vergleich zu anderen Programmiersprachen. Es folgt ein Überblick über die Möglichkeiten die JavaScript bietet – begleitet von einigen Beispielen – und es wird auf die Grenzen von JavaScript hingewiesen.
Die Frage nach Sicherheitsrisiken darf im Zusammenhang mit einer Programmiersprache für das Internet nicht fehlen und wird deshalb auch Beachtung finden. Abschließend wird es einen Ausblick auf zukünftige Entwicklungen in diesem Bereich und einige Hinweise zu empfehlenswerter Literatur und zu interessanten Web-Links geben.

 


Inhaltsübersicht

1. Einleitung
2. Geschichte von JavaScript
3. Was ist JavaScript?
    3.1 Clientseitiges JavaScript
    3.2 Serverseitiges JavaScript
    3.3 JavaScript – Objekt – Hierarchie
    3.4 Einbettung von JavaScript
4. Was ist JavaScript nicht?
    4.1 JavaScript vs. Java
    4.2 JavaScript und CGI
5. Was kann JavaScript?
    5.1 Kontrolle über den WWW-Browser
    5.2 Kontrolle über Erscheinungsbild und Inhalt eines WWW-Dokuments
    5.3 Interaktion mit dem Dokumentinhalt
    5.4 Interaktion mit dem Benutzer
    5.5 Verwaltung von Client-Zuständen
    5.6 Interaktion mit Applets
    5.7 Weitere Eigenschaften
6. Was kann JavaScript nicht?
7. Sicherheit in JavaScript
8. Ausblick
9. Literaturangaben

 


1. Einleitung

JavaScript ist eine interpretierte objekt-basierte Programmiersprache. Sie stellt eine Erweiterung der Seitendefinitionssprache HTML dar, ist aber kein direkter Bestandteil von HTML sondern eine eigenständige Programmiersprache.

Die Idee bei der Entwicklung von JavaScript war, eine möglichst einfaches Hilfsmittel zu schaffen, Web-Seiten attraktiver und vor allem "dynamischer" zu gestalten. Diese neuen Gestaltungsmöglichkeiten sollten sich aber nicht auf die Einführung neuer HTML-Tags beschränken, sondern vielmehr Möglichkeiten schaffen, um z.B. dem Benutzer mehr Interaktionsmöglichkeiten auf Web-Seiten anzubieten.

Bei der Betrachtung von JavaScript muß man unterscheiden zwischen "client side" und "server side" JavaScript, da letzteres compiliert wird und zum Ablaufen die "JavaScript runtime engine" benötigt. Beide Seiten werden im folgenden vorgestellt, wobei der Schwerpunkt eindeutig auf der "client side" liegt.

Beide Versionen von JavaScript-Programmen müssen in HTML eingebettet sein, um ablaufen zu können. Auf der Client Seite kann dies entweder direkt im HTML-Code oder in separaten Dateien geschehen.

Weitere prägnante Merkmale von JavaScript sind der überschaubare Sprachumfang, die Plattformunabhängigkeit und die einfache Möglichkeit der Erstellung. Denn für die Erstellung benötigt man nur einen einfachen Texteditor – keine speziellen Tools – und lauffähig sind die Programme in jedem Web-Browser der einen JavaScript-Interpreter besitzt (z.B. Netscape Navigator ab Version 2.0). Somit kann ein einmal generierter JavaScript-Code auf fast jeder Plattform ausgeführt werden.

 


2. Geschichte von JavaScript

JavaScript wurde von Netscape zunächst unter dem Namen "mocha", dann unter dem Namen "LiveScript" entwickelt. Die Syntax von JavaScript baut stark auf die von Java auf, ist jedoch wesentlich kürzer und leichter zu erlernen. Ein weiterer wichtiger Unterschied ist, daß JavaScript direkt interpretiert und nicht wie Java compiliert wird.

Nachdem Netscape's Entwicklung von Sun als "legitimer" Ableger von Java anerkannt wurde, hat man – auch aus Marketinggründen – den Namen "JavaScript" gewählt.

JavaScript Version 1.0 wurde von Netscape erstmals im Dezember 1995 in der Browser-Version 2.0 auf den Markt gebracht. Die weiterentwickelte Version 1.1 wurde mit dem Browser Version 3.0 verfügbar. Mit Netscape Navigator 4.0 folgte Version 1.2, die im Augenblick aktuelle Version von JavaScript.

Auf Basis von Netscape’s JavaScript hat Microsoft ebenfalls einen Interpreter in den Internet Explorer integriert. Die von Microsoft JScript genannte Sprache wurde in der Version 1.0 mit dem Internet Explorer 3.0 verfügbar.

Leider sind die Sprachumfänge nicht vollkommen deckungsgleich. Doch es gibt in letzter Zeit Bestrebungen, dies zu ändern. So wurde im Juni 1997 ein internationaler Standard für Skriptsprachen im Internet verabschiedet. Die "European Computer Manufactures Association" (ECMA) hat in Zusammenarbeit mit den führenden Softwareherstellern auf diesem Gebiet, wie Netscape, Sun, IBM, Microsoft und anderen, den "ECMA-262" Standard für Skriptsprachen verabschiedet. Da alle führenden Anbieter aus diesem Bereich bei der Verabschiedung involviert waren und auch eine weitere Zusammenarbeit vereinbart haben, bleibt die Hoffnung, daß diese internationale Norm weiterentwickelt und gepflegt wird. Unter anderem sollte man sich bei der nächsten Revision auf eine treffendere Bezeichnung einigen, denn bei "ECMA-262" steht die Zahl einfach für eine fortlaufende Nummer der ECMA, da man sich in dem - für solche Normungen relativ kurzen - Zeitraum von 15 Monaten, nicht auf einen Namen einigen konnte.

Nähere Informationen über die in Genf ansässige "ECMA" und den "ECMA-262"-Standard erhält man auf den Web-Seiten dieses Gremiums unter "www.ecma.ch".

 


3. Was ist JavaScript?

"JavaScript is Netscape’s cross-plattform, object-based scripting language for client and server applications.", so lautet die offizielle Beschreibung von Netscape, dem Entwickler von JavaScript.

Mit JavaScript kann man keine eigenständigen Anwendungen erstellen, da es immer in HTML eingebettet werden muß. Die Bezeichnung objekt-basiert wird verwendet, da es vordefinierte Objekte gibt, die auch erweitert werden können. Aber es gibt z.B. keine Klassen oder Vererbung, wie es für objekt-orientierte Sprachen üblich ist. JavaScript ist eine lose typisierte Sprache. Das heißt man muß die Datentypen der Variablen nicht explizit deklarieren muß. Darüber hinaus werden viele Konvertierungen automatisch durchgeführt. Wenn man z.B. eine Zahl einem Element hinzufügt, das aus Text (eine Zeichenfolge) besteht, wird die Zahl automatisch in Text konvertiert. In der Definition von Netscape wird von einer "plattformübergreifenden" Sprache gesprochen. Diese Behauptung trifft zu, da JavaScript-Programme zum Ablaufen nur einen Web-Browser mit integriertem JavaScript-Interpreter benötigen und einen solchen Browser (z.B. Netscape Navigator ab Version 2.0 oder Microsoft Internet Explorer ab Version 3.0) gibt es mittlerweile für jedes gängige Betriebssystem.

Wie bereits erwähnt, gibt es zwei Arten von JavaScript:

Client- und serverseitiges JavaScript verwenden die gleichen Kernelemente der Sprache und Netscape legt in seinem "Reference Guide" großen Wert darauf zu betonen, daß diese Kernelemente konform zu dem "ECMA-262"-Standard sind. Hinzu kommen spezifische Erweiterungen für die jeweilige Seite. Dieser Sachverhalt wird noch einmal in der unten stehenden Abbildung verdeutlicht.

 

 

Clientseitiges JavaScript erweitert das "Basis-JavaScript" um Elemente, die nur für ein in einem Browser ablaufendes JavaScript-Programm relevant sind. Dazu zählen vordefinierte Objekte, wie window und history.

Serverseitiges JavaScript erweitert den Kern um vordefinierte Objekte, die nur für Server-Anwendungen interessant sind. Darunter fallen z.B. die Objekte server und database.

In den folgenden zwei Kapiteln wird die Funktionsweise von server- und clientseitigem JavaScript etwas genauer betrachtet.

 

3.1 Clientseitiges JavaScript

Web-Browser, die einen JavaScript-Interpreter beinhalten, sind in der Lage, in HTML eingebettete JavaScript-Programme auszuführen. Der Source-Code kann direkt in den HTML-Code eingefügt werden – wie im Kapitel 3.4 beschrieben – oder er kann in einer separaten Datei (üblicherweise mit der Endung ".js") abgelegt werden. Dabei ist zu beachten, daß die separate Datei ausschließlich JavaScript-Code enthält und keine HTML-Tags o.ä..

Die Funktionsweise läßt sich wie folgt beschreiben: Der Client (Browser) ruft eine Seite auf einem Server auf und erhält von diesem die komplette HTML-Seite inklusive JavaScript als Antwort. Der Browser interpretiert den Inhalt der Seite von oben nach unten und führt dabei auch den JavaScript-Code aus.

Die Besonderheit von clientseitigem JavaScript ist, daß es auf Benutzeraktionen, wie z.B. Mausklicks, Seiten-Naviagtion oder Eingaben in Formulare, reagieren kann.

 

3.2 Serverseitiges JavaScript

Auch auf der Serverseite muß JavaScript in HTML eingebettet sein. Allerdings wird der Source-Code hier zuerst in ausführbaren Bytecode übersetzt. Man findet hier also einen zweistufigen Prozess vor.

In der ersten Phase wird also eine HTML-Seite generiert, die sowohl Server- als auch Client-seitiges JavaScript enthalten kann und eventuell weitere externe JavaScript-Dateien. Dann werden, wie in Abbildung 2 angedeutet, alle Dateien in eine einzelne ausführbare Datei compiliert.

 

 

In der zweiten Phase, wenn der Benutzer die Seite auf dem Server anfragt, benutzt die "JavaScript runtime engine" die vorher generierte ausführbare Datei um den Quell-Code zu durchsuchen, automatisch eine HTML-Seite zu generieren und die enthaltenden Server-Applikationen auszuführen. Als Ergebnis werden der aufgerufenen HTML-Seite neue Client- oder Serverseitige JavaScript Anweisungen hinzugefügt. Die neu entstandene Seite wird über das Netz zum Browser geschickt, welcher die Ergebnisse ausgibt.

Zusammengefaßt kann man die beiden Phasen wie folgt graphisch interpretieren:

 

 

Wie in der Abbildung zu sehen ist, gibt es für das serverseitige JavaScript von der Firma Netscape eine Entwicklungsumgebung mit dem Namen "LiveWire". Diese ermöglicht unter anderem die Erstellung von JavaScript-Applikationen, die auf relationale Datenbanken (z.B. über SQL-Anfragen) oder auf das File-System des Servers zugreifen können.

Über "LiveConnect" und "Java" wird die Kommunikation mit anderen Applikationen ermöglicht.

Ein weiterer Bestandteil von serverseitigem JavaScript, der Session Management Service, enthält Objekte, die Daten verfügbar machen für Anfragen von verschiedenen Clients und für verschiedene Applikationen.

 

3.3 JavaScript – Objekt – Hierarchie

Im letzten Kapitel wurde auf die vordefinierten Objekte der Kernsprache sowie die jeweils spezifischen Erweiterungen für Client- und Server-Seite hingewiesen.

Für das Arbeiten mit JavaScript ist es wichtig, sich die Anordnung der Objekte in einer WWW-Seite zu verdeutlichen.

Wie in der Abbildung 4 gezeigt wird, werden alle Elemente einer Web-Seite von JavaScript in einer hierarchischen Struktur organisiert.

 

 

Um Informationen über die Elemente einer Web-Seite zu erhalten oder diese zu manipulieren, kann man mit Hilfe der hierarchischen Anordnung sehr übersichtlich auf diese zugreifen.

Will man z.B. auf ein Bild einer Web-Seite zugreifen, geht man einfach den aufgezeigten Hierarchiebaum von oben nach unten durch. Der Aufruf für das erste Bild dieser Seite geschieht folglich durch: document.images[0]. In der gleichen Art und Weise geschieht z.B. auch der Zugriff auf die Eingaben in einem Formular:

name = document.forms[0].elements[0].value;.

Ein wichtiger Begriff in diesem Zusammenhang ist das Document Object Model (DOM). Das W3-Konsortium, das für die Normierung von WWW-Technologien verantwortlich ist, war der Hauptentwickler des Modells und hat mittlerweile eine offizielle Spezifikation herausgebracht.

Das Modell hängt sehr eng mit der Philosophie der objektorientierten und ereignisorientierten Programmierung zusammen. Alle HTML-Elemente einer WWW-Seite bilden einen "Objektbaum". So ist das <body>-Tag beispielsweise der Vater aller anzeigbaren Elemente wie Überschriften, Grafiken, Verweise oder Tabellen. Ein mit <div> ... </div> formatierter Bereich ist das Elternteil aller Elemente, die innerhalb dieses Bereichs vorkommen. Jede Tabellenzelle gehört zu einer Tabelle usw.. Aber auch das Anzeigefenster eines Browsers mit seinen aktuellen Eigenschaften gehört dazu, sowie Maus- und Tastaturaktionen innerhalb des Anzeigefensters. Das Document Objekt Model ist der Versuch, alle relevanten Bestandteile einer angezeigten WWW-Seite in einer Objekthierarchie abzubilden.

 

3.4 Einbettung von JavaScript

Nachdem im letzten Kapitel die Organisation der HTML-Elemente durch JavaScript vorgestellt wurde, wird an dieser Stelle mit der Positionierung des JavaScript-Codes fortfahren.

Wie bereits erwähnt, muß JavaScript immer in HTML eingebunden sein. Der JavaScript-Code kann dabei in einer separaten Datei – typischerweise mit der Endung .js – oder direkt im HTML-Code stehen. Bei Verwendung einer separaten Datei muß man lediglich beachten, daß nur JavaScript-Code enthalten sein darf und keine HTML-Tags oder ähnliches. Separate Dateien haben unter anderem den Vorteil, daß sie von mehreren Web-Seiten und verschiedenen Anwendern gleichzeitig genutzt werden können.

Die Einbindung in ein HTML-Dokument erfolgt z.B. wie folgt:

<HTML>
  <HEAD>
    <SCRIPT language = "javascript"
    SRC = "scriptdatei.js">
    ...
    </SCRIPT>
  </HEAD>

<BODY>
</BODY>
</HTML>

Als Pfadangabe für die Script-Datei sind dabei sowohl relative als auch absolute Pfadangaben möglich.

Bei der Definition des JavaScript-Codes innerhalb des HTML-Dokuments kann man grundsätzlich drei Formen unterscheiden, die hauptsächlich in ihrem Ausführungszeitpunkt differieren:

Ein Beispiel:

<HTML> 
  <HEAD> 
    <SCRIPT language = "javascript1.2" 
    <!— hide from old browsers 
      function Quadrat(Zahl) { 
      Ergebnis = Zahl * Zahl; 
      alert(Ergebnis); }
    <//--> 
    </SCRIPT> 
  </HEAD> 
<BODY> 
  <FORM> 
    <INPUT TYPE = BUTTON
      VALUE = "Quadrat von 3 errechnen" 
      OnClick = "Quadrat(3)" 
  </FORM>
</BODY> 
</HTML> 

Die Angabe der Versionsnummer von JavaScript ist dabei optional. Sie bewirkt nur, daß ein älterer Browser den Code für eine neuere JavaScript-Version – die er noch nicht interpretieren kann – ignoriert. Man kann auch mehrere <Script>-Tags verwenden, z.B. könnte man für jede JavaScrip-Version (1.0, 1.1 und 1.2) ein eigenes angepaßtes Skript definieren.

Die Frage, welche Form der Einbindung man verwenden soll, richtet sich immer nach dem jeweiligen Verwendungszweck. Man verwendet oftmals auch eine Kombination der Anordnungsmöglichkeiten.

Für längere Programme sollte man das Skript unbedingt zwischen <HEAD> und </HEAD> unterbringen, da es dann vor dem restlichen HTML-Inhalt geladen wird. Dies ist insbesondere für Anwendungen wichtig, denen beispielsweise Formularbuttons zugeordnet sind. Würde man das JavaScript nach den Formularbuttons einfügen, so könnte der Benutzer eine Aktion – durch Anklicken des Buttons – herbeiführen, ohne daß das Skript geladen wurde. Das Resultat wäre entweder ein Absturz des Browsers, eine Fehlermeldung oder eben gar keine Auswirkung. Aus diesem Grund sollte man die Anordnung des Skripts mit Bedacht wählen, am besten unterstützt durch ein ausgiebiges Testen mit verschiedenen Browsern.

 


4. Was ist JavaScript nicht?

4.1 JavaScript vs. Java

JavaScript wird auf Grund seines Namens häufig mit Java verwechselt bzw. gleichgesetzt. Da es zwar einige Gemeinsamkeiten zwischen beiden Sprachen jedoch wesentlich gravierendere Unterschiede gibt, wird in diesem Kapitel eine Gegenüberstellung der wichtigsten Kriterien vorgenommen.

Java ist eine objektorientierte Programmiersprache. Sie kann für "stand alone" Anwendungen oder für kleine Applikationen – Applets – verwendet werden.

Applets werden beim Antreffen auf einer Web-Seite im Hintergrund vom Browser mit dem HTML-Dokument geladen. Sie ermöglichen eine große Vielfalt an Interaktionen und bestehen aus class-Dateien die separat im Verzeichnisbaum hinterlegt werden.

JavaScript ist eine Skript-Sprache die keine "stand alone" Anwendungen, bzw. Applets ermöglicht. In der gebräuchlichen Form wird JavaScript direkt ins HTML-Dokument eingebunden (gesamter Source-Code). Dadurch lassen sich in einfacher Form dynamische Dokumente – ohne CGI-Anbindung – verwirklichen.

Ein Browser der Java unterstützt, ist nicht automatisch mit JavaScript kompatibel. Diese beiden unterschiedlichen Sprachen benötigen verschiedene Interpreter, um die Anwendungen darstellen zu können. Mittlerweile gibt es bereits mehrere Browser die Java und JavaScript interpretieren können.

JavaScript ist viel einfacher und weniger umfangreich als Java. Es wurde speziell für Web-Autoren entwickelt, die gute Kenntnisse in HTML haben.

Für Java hingegen sollte man über Kenntnisse einer objektorientierten Programmiersprache, wie C oder C++, verfügen. Java und JavaScript verwenden zwar eine Reihe von gleichen, bzw. ähnlichen Sprachelementen und Syntaxkonstruktionen, verfolgen jedoch unterschiedliche Ziele.

Ein wichtiger Unterschied zwischen den beiden Sprachen ist weiterhin, daß nur mit JavaScript die Kontrolle über alle Elemente einer Web-Seite gegeben ist.

Um ein Java-Applet zu erstellen, muß der Source-Code compiliert werden. Hierzu sind spezielle Programme erforderlich. JavaScript hingegen benötigt nur einen simplen Text-Editor und einen kompatiblen Browser.

In der untenstehenden Tabelle sind einige Aspekte noch einmal zusammengefaßt.

 

 

JavaScript

 

Java

Interpretiert

(nicht compiliert) vom Client

Kompilierter Bytecode

vom Client ausgeführt

Objekt-basiert

Benutzt eingebaute, erweiterbare Objekte, aber keine Klassen oder Vererbung

Objekt-orientiert

Applets bestehen aus Klassen mit Vererbung

Code in HTML integriert und eingebettet Applets eigenständig (in HTML aufgerufen)
Lose Typisierung

Datentypen müssen nicht deklariert

Strenge Typisierung

Datentypen müssen deklariert werden

Dynamisches Binden

Überprüfung der Objekt-Referenzen zur Laufzeit

Statisches Binden

Objekt-Referenzen müssen zum Compile-Zeitpunkt existieren

ein automatischer Zugriff auf Festplatte Kein automatischer Zugriff auf Festplatte

 

4.2 JavaScript und CGI

Ausführliche Informationen über das Common Gateway Interface (CGI) kann man z.B. aus der gleichlautenden Ausarbeitung, die ebenfalls im Rahmen dieses Seminars angefertigt wurde, entnehmen.

Wie schon im letzten Kapitel kurz angedeutet, ermöglicht JavaScript die "dynamische" und "interaktive" Gestaltung von Web-Seiten. Bisher mußte man sich dazu mit teilweise sehr "kryptischen" und unübersichtlichen Skriptsprachen – wie Perl oder TCL – im Rahmen von CGI-Anwendungen auseinandersetzen. Durch die übersichtliche und einfache Struktur von JavaScript wird in diesem Bereich einiges erleichtert. Daß JavaScript das CGI zwar unterstützen jedoch nicht völlig überflüssig machen kann, soll an zwei Beispielen kurz erläutert werden.

Ein klassisches Anwendungsgebiet für CGI ist die Verarbeitung von Eingaben in Formulare. Bei der Validierung der Eingaben werden jedesmal die Daten zu dem Server, auf dem das CGI-Skript läuft, übertragen und die Antwort zurückgesendet.

Auch bei einer schlichten Syntaxkontrolle der Eingabe findet der Netzverkehr statt.

JavaScript bietet für diese unnötige Netzbelastung eine Alternative. Da das Skript auf dem Client ausgeführt wird, kann eine derartige Überprüfung bereits dort geschehen, also ohne des Netz zu belasten. Darüber hinausgehende sicherheitskritische Überprüfungen kann (sollte) man nicht mit JavaScript realisieren.

Auf vielen Web-Seiten findet man, mit CGI-Programmen realisierte, Zugriffszähler die angeben, wie oft eine Web-Seite von Benutzern aufgerufen wurde. Mit JavaScript kann man ebenfalls einen Zugriffszähler realisieren. Während CGI-basierte Zähler alle Zugriffe erfassen können, ist dies bei JavaScript-Implementierungen jedoch auf das Zählen der Zugriffe eines einzelnen Benutzers beschränkt.

Man sieht, daß JavaScript CGI-Programme zwar in einigen Bereichen unterstützen oder sogar ersetzen kann. Ein vollständige Verdrängung von CGI durch JavaScript wird es jedoch auf Grund der eingeschränkten Funktionalität nicht geben.

 


5. Was kann JavaScript?

Die Einsatzmöglichkeiten von JavaScript sind sehr vielfältig. Man kann sie einerseits dazu verwenden, um einfache Programme, z.B. eine einfache Berechnung von Primzahlen o.ä., zu schreiben und anderseits bietet sie vielfältige Möglichkeiten, um Web-Seiten in professioneller Weise mit interaktiven und dynamischen Inhalten zu versehen. Im folgenden soll daher versucht werden, das Spektrum der Einsatzmöglichkeiten für JavaScript-Programme zu beleuchten.

 

5.1 Kontrolle über den WWW-Browser

JavaScript bietet Möglichkeiten, den Browser in unterschiedlichster Weise zu manipulieren. So kann man z.B. ein neues Browser-Fenster aufpoppen lassen oder das aktuelle schließen. Dabei kann die Größe und Lage des Fensters genauso festlegt werden, wie die Anzahl der aufspringenden Fenster und deren Inhalt. Auch das Vorhandensein und die Anordnung von Menü-Leisten und anderen Kontroll-Leisten kann beeinflußt werden. Weiterhin hat man die Möglichkeit, Dialogboxen zu generieren, die entweder eine einfache Meldung in einem aufspringenden Fenster ausgeben oder einen komplexeren Inhalt in Form von Formularen oder ähnlichem enthalten.

Weitere Möglichkeiten von JavaScript werden über das Location - und das History -Objekt der JavaScript-Dokument-Hierarchie verfügbar. Ersteres erlaubt das Anzeigen oder Downloaden des Inhalts beliebiger URLs in jedem beliebigem Fenster oder Frame des Browsers. Letzteres ermöglicht – analog zu den BACK- und FORWARD-Buttons des Browsers – eine Veränderung des Browser-Inhalts anhand der Eintragungen in dem History -Objekt.

Ein oft eingesetztes Feature wird durch das Window-Objekt geboten. Es ermöglicht statische oder scrollende Texte in der Statuszeile eines Browsers.

 

5.2 Kontrolle über Erscheinungsbild und Inhalt eines WWW-Dokuments

Das Document-Objekt von JavaScript ermöglicht eine umfassende Steuerung des Inhalts und des Erscheinungsbilds einer Web-Seite. So kann man beispielsweise das aktuelle Datum dynamisch zu einer Seite hinzufügen, man kann in Abhängigkeit vom Browser-Typ und -Version unterschiedliche Inhalte ausgeben oder man fügt nur extra Text hinzu, wenn der Browser JavaScript interpretieren kann. Es ist sogar möglich, komplette HTML-Seiten "aus dem Nichts" entstehen zu lassen, um diese dann mit individuell angepaßten Inhalten zu füllen.

JavaScript erlaubt die Manipulation von Farben für Hintergrund, Text und Hyperlinks, genauso wie den dynamischen Wechsel von Bildern. Kurz gesagt erhält man mit JavaScript die Möglichkeit, sämtliche Bestandteile eines WWW-Dokuments, auch in verschiedenen Frames, zu manipulieren bzw. zu ersetzen. Deshalb ist JavaScript die wohl wichtigste Erweiterung von HTML, wenn man von dem immer häufiger verwendeten Begriff "Dynamic HTML" spricht.

 

5.3 Interaktion mit dem Dokumentinhalt

Ebenfalls über das Document-Objekt und seine enthaltenden Objekte sind eine Reihe von Interaktionen mit dem Inhalt eines Web-Dokuments möglich. Beispielsweise sind alle Bilder einer Seite in einem Array (document.images[]) organisiert, welche somit leicht abfragbar und modifizierbar sind. Die wohl wichtigste Eigenschaft wird aber durch das Form-Objekt und den darin enthaltenen Objekten geboten. Durch sie wird unter anderem ein Auslesen von Form-Tag-Werten, sowie eine eventuelle Reaktion darauf, möglich. Mit diesen Möglichkeiten läßt sich z.B. ein Taschenrechner implementieren.

Das früher ausschließlich für CGI-Skripte typische Anwendungsgebiet der Behandlung von Eingaben in Form-Tag-Elemente, wird zunehmend durch eine Kombination von CGI und JavaScript ersetzt. Das CGI-Skript läuft standardmäßig immer auf einem Server. Wenn eine Eingabe durch das CGI überprüft werden soll, muß folglich jedesmal eine Verbindung zwischen Client und Server aufgebaut werden. Im Gegensatz dazu wird "clientseitiges" JavaScript, wie der Name schon sagt, auf dem Client ausgeführt. Das eröffnet nun die Möglichkeit, Eingaben bereits auf der Client-Seite zu überprüfen, und eventuelle Rückmeldungen an den Benutzer zu schicken, ohne daß dazu eine Netzverbindung aufgebaut werden muß. Man muß jedoch erneut anmerken, daß JavaScript nicht den vollen Umfang der Funktionalität von CGI bietet. In vielen Fällen ist aber sehr sinnvoll, beides miteinander zu verbinden.

 

5.4 Interaktion mit dem Benutzer

Eine wichtige Eigenschaft von JavaScript ist die Möglichkeit, sogenannte "event handler" zu definieren. "Event handler" sind kleine Code-Fragmente die auf Ereignisse – meist Benutzereingaben oder -aktionen – reagieren können. Solche "events" sind z.B. das Bewegen der Maus über speziell markierten Bereichen auf der Web-Seite oder das Betätigen eines submit-Buttons.

In diesem Zusammenhang spricht man auch von dem "event-action-Mechanismus". Das heißt wenn ein bestimmtes Ereignis eintritt, wird eine definierte Aktion ausgeführt. Als Beispiel sei hier nur das Erscheinen einer Dialogbox auf dem Bildschirm nach dem Betätigen eines Buttons genannt.

 

5.5 Verwaltung von Client-Zuständen

Der Begriff "Cookie" wurde von der Firma Netscape geprägt und wird für – in ihrer Größe beschränkte – kleine Dateien verwendet, die temporär oder permanent auf einem Client gespeichert werden. Inhaltlich können sie sehr variieren. Jeder Server der einen Cookie auf einem Client hinterlegt hat, kann die darin gespeicherten Daten beim nächsten Besuch des Servers auslesen und wieder verändern. Dadurch wird es möglich, "persönliche", das heißt für jeden Benutzer individuell gestaltete, Web-Seiten einzurichten. Ein exzellentes Beispiel hierfür findet man unter my.yahoo.com.

 

5.6 Interaktion mit Applets

Seit JavaScript Version 1.1 ist es möglich, mit Java-Applets, die im gleichen Browser laufen zu kommunizieren. Ermöglicht wird dies durch "LiveConnect", eine Kommunikationsschicht, die es erlaubt, JavaScript, Java-Applets und Netscape-Plug-Ins miteinander kommunizieren zu lassen. Genauere Informationen erhält man in der Online-Dokumentation von Netscape unter developer.netscape.com/docs/manuals/communicator/jsguide4/index.htm.

 

5.7 Weitere Eigenschaften

Im folgenden sollen noch einige weitere Eigenschaften von JavaScript stichpunktartig angerissen werden:

 


6. Was kann JavaScript nicht?

Im letzten Kapitel wurden eine Reihe von Möglichkeiten von JavaScript aufgezeigt, jedoch bezogen sich diese ausschließlich auf Fähigkeiten im Zusammenhang mit HTML. Es fehlen jedoch viele Eigenschaften die für eine Standalone-Applikation typisch sind, wie:

 


7. Sicherheit in JavaScript

Die ersten Versionen von JavaScript beinhalteten einige schwerwiegende Sicherheitslücken. So konnte man beispielsweise beim Navigator 2.0 lesend auf das File-System des Clients zugreifen. Es war möglich, die e-mail-Adresse des Besuchers einer Seite zu "stehlen" und eine Mail in dessen Namen zu verschicken oder die history-Liste auszulesen und somit genau zu verfolgen, welche Seiten der Benutzer besucht hat. Mit dem Navigator 3.0 (JavaScript 1.1) wurden zumindest diese Sicherheitslücken beseitigt.

Daß damit jedoch nicht alle Risiken beseitigt sind, beweisen unter anderem der "Bell Labs Privacy Bug" (Navigator 4.01), der "Singapore Privacy Bug" (N 4.01), der "French Privacy Bug" (bis N 4.03) oder das "Freiburger Textansichtsproblem" (MSIE 4.0). Die genannten Bugs betreffen vor allem das Nachverfolgen der Bewegungen eines Benutzers im Netz und sogar das Abfragen von Eingaben in Formulare.

Wer nähere Informationen zu dem Sicherheitsmodell von JavaScript haben möchte, sei an dieser Stelle auf die Dokumentation von Netscape hingewiesen (developer.netscape.com/docs/manuals/communicator/jsguide4/index.htm ).

 


8. Ausblick

Wer sich das Sicherheitsmodell von JavaScript etwas näher anschaut, wird feststellen, daß man dort so etwas vorgesehen hat wie "object signing", wie manch einer es vielleicht von Java-Applets kennt. Dabei darf man aber nicht vergessen, daß JavaScript keine .class -Dateien wie Java enthält – da der Source-Code nicht kompiliert wird –, und da man auch sonst keine Möglichkeit hat, den JavaScript Source-Code zu verstecken, ist dieses "Feature" wohl mit Vorsicht zu genießen.

Im letzten Kapitel wurde auf Sicherheitsmängel, auch in aktuellen Versionen, hingewiesen. Allerdings sind die damit verbundenen Risiken wohl so gering, daß sie auf die meisten Anwender keinen schadhaften Einfluß haben und somit überwiegend vernachlässigt werden können.

Es ist mit Freude zu sehen, daß die Bemühungen, einen gemeinsamen Standard zu schaffen, von allen wichtigen Software-Hersteller in diesem Bereich mitgetragen werden. Die erste Version des Standards für Skriptsprachen wurde in Rekordzeit verabschiedet und die beteiligten Parteien haben vereinbart, schon in nächster Zeit, nicht nur den Namen von "ECM-262" in einen bezeichnenderen zu ändern. Wenn sich dann noch alle Entwickler von JavaScript an den Standard halten, müßte man z.B. nicht mehr – wie im Augenblick noch notwendig – getrennte Versionen für JavaScript von Netscape und JScript von Microsoft schreiben.

In den nächsten Versionen werden voraussichtlich, neben dem weiteren Anwachsen des Sprachumfangs, vor allem die Zugriffs- und Kommunikationsmöglichkeiten zu anderen Applikationen weiter ausgebaut.

Abschließend sei noch erwähnt, daß es – wie bei anderen Programmiersprachen auch – Tools gibt, die einen bei der Erstellung und vor allem beim Debuggen von JavaScript unterstützen sollen. Die bekanntesten sind hier im Augenblick das von Netscape ("Visual JavaScript 1.0") und das von Microsoft ("Scripting Engine 3.1").

 


Literaturangaben

  1. David Flanagan: "JavaScript: The Definitive Guide "
    O’Reilly 1997
  2. Stefan Koch: "JavaScript – Einführung, Programmierung und Referenz "
    dpunkt.verlag 1997
  3. Mark Surfas, u.a. : "HTML im Intranet"
    QUE 1997
  4. Netscape : "JavaScript Guide"
    (developer.netscape.com/docs/manuals/communicator/jsguide4/index.htm)
  5. Microsoft: "JScript Documentation"
    (www.eu.microsoft.com/germany/scripting/default.htm)
  6. Stefan Münz: SELFHTML Version 7.0;
    (www.netzwelt.com/selfhtml/index.htm)
  7. Die deutsche JavaScript-Seite:
    (javascript.seite.net)
  8. Stefan Koch: "Voodoo’s introduction to JavaScript"
    (www.webconn.com/java/javascript/intro/tutorial.htm)
  9. Netscape: "Visual JavaScript"
    (www.netscape.com/comprod/products/tools/vjs.html)
  10. Doc JavaScript:
    (www.webreference.com/js/)
  11. JavaScript Soucre:
    (javascriptsource.com/)
  12. Weitere Verweise z.B. unter :
    (www.developer.com)