Die Sicherheitsprobleme die Anfang des Jahres 1996 auftraten, wie das Lesen von Dateien auf der Festplatte des Benutzers und automatisches Verschicken von E-Mails sind ab der Version 2.01 des Navigators behoben. Nach Netscape ist die von ihnen entwickelte Sprache JavaScript sicher. Trotzdem die Liste der Bugs und Probleme immer länger wird, wenn auch Löcher immer wieder gestopft wurden, erfreut sich diese Sprache zunehmender Beliebtheit.
Da JavaScript-Programmcode direkt beim Aufbau einer HTML-Seite interpretiert wird, gibt es keine Absicherung gegen fehlerhafte Programmierung. Ist das Programm fehlerhaft so kommt es zum Programmabsturz, was in diesem Falle bedeutet, dass der Browser zusammenbricht.
JavaScript ist eine objektbasierte Sprache. Die Syntax und die Objektorientierung sind bei der von Sun Microsystems entwickelten Programmiersprache Java entliehen, jedoch in stark vereinfachter Form. In JavaScript stehen Standardobjekte zur Verfügung, die die einzelnen Komponenten einer Web-Seite referenzieren, und im Wesentlichen das HTML-Dokument und dessen Elemente, insbesondere die Formulare und Frames, betreffen. Auch gibt es die Möglichkeit eigene Objekte zu definieren.
<SCRIPT>-Tag
<HTML>-Tags
<!-- und endet
mit -->.
Der JavaScript-Interpreter erkennt das HTML-Kommentarende nicht und gibt hierbei eine Fehlermeldung aus. Deswegen muss ein JavaScript-Kommentar vor das HTML-Kommentarende gesetzt werden.
Kommentare in JavaScript:
// markieren einen Kommentar bis zum Ende der Zeile.
Language. Um
späteren, möglichen Entwicklungen Rechnung zu tragen, sollte man
dieses Attribut allerdings immer mit angeben, denn es könnte in der
weiteren Entwicklung durchaus der Fall sein, dass andere Skript-Sprachen
Verwendung finden könnten.
Funktionen die zwischen den Script-Tags definiert werden, sollten
in der head-Umgebung des HTML-Dokuments abgelegt werden. Dadurch
wird sichergestellt, dass die Funktion vor ihrem ersten Aufruf bekannt
ist. Sie wird erst ausgeführt, wenn die entsprechende Funktion aufgerufen
wird.
Ein Event-Handler wird meist innerhalb eines Formulars oder eines Links
benutzt. Das Type-Attribut button wurde von Netscape für den
Einsatz von JavaScript eingeführt, es dient alleine dazu den
Event-Handler onClick zum Einsatz zu bringen.
Als Beispiel:
Ein Beispiel für einen Event-Handler innerhalb eines Ankers:
Die übliche Meldung, die in der Statuszeile bei einer Mausbewegung
über einen Link erscheint, ist die Adresse
des betreffenden Links. Indem nun window.status, welches eine
Eigenschaft des Standardobjekts window darstellt, einen neuen Wert
zugewiesen bekommt, erscheint nun der neuzugewiesene Text.
Wichtig hierbei ist, dass
return true zusätzlich gesetzt werden muss.
Der Event-Handler onMouseOver ist übrigens nur für Links
definiert.
new Vertreter
(Instanzen) erzeugt werden.
Es muss also zunächst ein Objekt mit gewissen Eigenschaften definiert werden.
Ein Objekt könnte zum Beispiel folgendes sein:
head-Teil
des HTML-Dokuments stehen. Das Schlüsselwort this bezieht
sich auf die aktuellen Eigenschaften eines Objekts,
wenn es durch das Schlüsselwort new als Vertreter dieser
Objektklasse innerhalb des body-Umgebung eines HTML-Dokuments erzeugt wird.
Die aktuellen Eigenschaften werden hierbei den Angaben der Werte, die
der Funktion new übergeben werden, entnommen.
Zum Beispiel wird das Objekt mycar mittels der Zuweisung in den runden
Klammern der Funktion new beschrieben:
mycar können nun die einzelnen
Eigenschaften des Objekts angesprochen und weiterverarbeitet werden in der
Form Variable.Objekteigenschaft=neue_Zuweisung.
Ein Objekt kann als Eigenschaft wiederum ein Objekt besitzen. Gäbe es z. B. das nachfolgende Objekt:
car wie folgt erweitert werden:
car-Objekts, könnten nun
wie folgt aussehen:
Um nun die Eigenschaft name eines Vertreters des Objektes car
anzusprechen, muss die Angabe nun folgendermaßen aussehen:
Soll zum obigen Objekt car z. B. eine Methode definiert werden,
die als Anwendungsbeispiel zu einem aufgerufenen Bild des Autos, eine
definierte Textausgabe hinzufügen soll, so könnte man folgende
Funktionen innerhalb der head-Umgebung definieren:
window enthält Eigenschaften des aufgerufenen
Fensters. Mit diesem Objekt können ferner neue Fenster
definiert werden, wobei auch die Fenstereigenschaften frei bestimmbar
sind.
Diese Objekte, auch Client-Objekte genannt, sind, außer dem
navigator-Objekt, in einer strengen Hierarchie
angeordnet, wobei window das oberste ist. Ein nachfolgendes Objekt
(auch ,,Nachkomme''
genannt) wie document ist eine Eigenschaft des Objekts window, welches wiederum Eigenschaften besitzt.
navigator
window
|
+--parent, frames, self, top
|
+--location
|
+--history
|
+--document
|
+--forms
| |
| elements (text fields, textarea, checkbox, password
| radio, select, button, submit, reset)
+--links
|
+--anchors
In JavaScript setzte sich eine Terminologie durch, die zwischen Links
und Ankern unterscheidet. Ein Link ist demnach definiert durch
<a href="Adresse">
und ein Anker durch <a id="Name">.
Will man auf eine spezielle Eigenschaft referenzieren, so muss immer das
zugehörige Objekte mit allen seinen Vorgängern angegeben werden
außer dem obersten Objekt window, das weggelassen werden
kann.
Des weiteren gibt es noch das Date-Objekt
, welches
das Abfragen und Verändern der Datumskomponenten ermöglicht, das
Math-Objekt, welches einige
gebräuchliche mathematische
Konstanten und Methoden zur Verfügung stellt und das
string-Objekt für
Zeichenkettenoperationen.
Ab der Netscape Version 2 und ab MS Internet Explorer 3.0
gibt es die Möglichkeit das Browser-Fenster in
kleinere Bereiche zu unterteilen, die unabhängig voneinander
HTML-Dokumente darstellen können.
Diese Bereiche werden Frames
genannt. Statt dem body-Tag wird nun ein frameset-Tag
gesetzt, der die Art der Fensterunterteilung und der darin enthaltenen
Startdokumente festlegt.
Es ist sinnvoll noch einen noframe-Teil einzubauen, der Anweisungen
darüber enthält, was geschehen soll, wenn ein Browser keine Frames
darstellen kann. Beide Tags besitzen ein entsprechendes Ende-Tag.
Das frameset-Tag besitzt zwei Attribute: rows für die
Zeilenangabe und cols, für die Spaltenangabe der Größe der einzelnen Frames.
Die beiden Attribute erwarten als Werte reine
Zahlenangaben, die Pixelwerten entsprechen, oder Prozentangaben, die sich auf
die ursprüngliche Browser-Fenstergröße beziehen.
Schließlich kann als Eingabewert auch ein Stern * angegeben
werden, der den restlich vorhandenen Platz für ein Framefenster
kennzeichnet.
Die Eingaben der Werte werden durch Kommata getrennt.
Werden mehrere Sterne angegeben, so wird der zur Verfügung stehende
Platz gleichmäßig entsprechend der Anzahl der Sterne unterteilt,
wobei die Angabe einer Zahl vor dem Stern wie ein Faktor wirkt, der den Platzbedarf vervielfacht. Eine Angabe wie cols = "2*,*", bewirkt eine
Frameaufteilung, in der die Fensterbreite zu 2/3 dem linken
und 1/3 dem rechten Fenster zugehörig unterteilt wird.
frameset-Anweisungen können auch geschachtelt werden.
Beispiel:
frame-Tag besitzt verschiedene Attribute:
src bestimmt den URL des anzuzeigenden HTML-Dokuments. Wird
kein URL angegeben, so erscheint ein leerer Frame.
marginwidth und marginheight operieren mit
Pixelangaben, die einen linken und rechten bzw. einen oberen und
unteren freizulassenden Rand im Anzeigefenster definieren.
name ermöglicht die Angabe eines Framenamens, der bei
Links als Zielframeangabe eingesetzt werden kann (mit dem Linkattribut
target).
scrolling definiert die Anwesenheit bzw. Abwesenheit einer
Scrollbar. Die Werte können hierbei yes, no und
auto sein. Der letzte Wert ist Voreinstellung,
eine Scrollbar wird gesetzt, falls die Darstellung im Fenster die
Fenstergröße übertrifft.
noresize verhindert das Verändern
der Rahmengröße mittels Mausmanipulation.
Wird nun bei einem Link der Form <a href="URL" target="Fenstername">, ein Fenstername vergeben, der weder vorher einem Frame zugeordnet wurde noch einen der nachfolgend reservierten Namen entspricht, so wird ein neues Browser-Fenster mit dem angegebenen URL geöffnet.
Bei selbstdefinierten Fensternamen kann man erreichen, dass z. B. der
Link im linken Framefenster im rechten Framefenster dargestellt wird, falls der
Name mit dem Namen des target-Attributs übereinstimmt.
"_blank" lädt das HTML-Dokument in einem neuen Browser-Fenster.
"_self" lädt das HTML-Dokument in dem aktuellen Frame.
"_top" lädt das HTML-Dokument in dem aktuellen Fenster, die
Frame-Einteilung wird aufgehoben.
"_parent" beschreibt das übergeordnete Fenster, indem weitere
Frames definiert wurden, wurden dort keine weiteren Frames definiert,
entspricht es dem "_top". Es hebt die Frameeinteilung in einem
Unterframe auf.
Außerdem ist es sinnvoll, einen Frame zu besitzen, der alle möglichen Frameaufrufe zusammenstellt, so das man mühelos zu einem anderen Frame wechseln kann.
Das Frame-Objekt ist eine Eigenschaft des Window-Objekts, beinhaltet aber dieselben Eigenschaften wie das Window-Objekt. Es wird ein Frame-Array angelegt, wodurch die einzelnen Frames ansprechbar sind. Hat man den Frames Namen gegeben, was sich empfiehlt, so können die einzelnen Frames über diese Namen angesprochen werden. Ansonsten können sie über den Index des Arrays angesprochen werden, wobei der erste Array-Eintrag dem Indexwert 0 entspricht.