Javascript Befehle
Wie in jeder Programmier Sprache gibt es
auch in Java Script Schleifen. Mit Hilfe von Schleifen hat
der Programmierer die Möglichkeit Kontrollstrukturen,
oder sich häufig wiederholende Programmabschnitte, einfach
und vor allem kurz zu realisieren. Gerade in Programmen,
wo Fallunterscheidungen vorgenommen werden müßen
werden Sie nicht an den Schleifen vorbeikommen. Um die verschiedenen
Arten der Schleifen und deren möglichen Einseitz einfacher
zu erklären, werde ich das Ganze an Hand von Beispielen
erkären.
Die If / else Schleife wird zur Kontrolle
von Fallunterscheidungen eingesetzt. Die Vorgehensweise hierbei
ist denkbar einfach. Die if-Abfrage prüft Werte auf
eine Ihr zugewiesene Bedingung. Ist die Bedingung erfüllt
wird der zur if-Schleife zugewiesene Programmblock ausgeführt.
Sollte die Prüfung von Wert gegen Bedingung nicht zutreffen,
wird dann der Programmblock der zu else gehört ausgeführt.
Vereinfacht kann man sich das Ganze so vorstellen, ist die
Bedingung wahr mache das, ist die Bedingung jedoch falsch
mache dieses.
if(Bedingung)
{
// dieser Programmblock wird bei einer erfüllten Bedingung ausgeführt
}
else
{
// dieser Programmblock wird ausgeführt, wenn die Bedingung nicht erfüllt
wird
}
Auch hier wird wieder ein Wert auf auf eine
bestimmte Bedingung hin geprüft. Jedoch prüft die
while Schleife solange die Werte gegen die Bedingung, bis
diese erfüllt wird. Die Gefahr hierbei eine Endlos Schleife
zu Programmieren ist nicht gering. Darum werden while Schleifen
in der Regel immer mit einer Abbruchbedingung versehen. Diese
Abbruchbedingung wird durch den Einsatz des Befehls break,
oder durch einen internen Zähler erzeugt.
while(Bedingung)
{
/* Dieser Programmblock wird solange ausgeführt bis die Bedingung erfüllt
wird,
oder durch eine Abbruchbedingung beendet wird. Die in Java Script gültige
Syntax für
eine Abbruchbedingung lautet break; */
}
Mit dem aufruf von break; wird jede Schleife
beendet. Dieses schließt die If und die nachfolgende
for Schleife mit ein. Beim Aufruf break; verläßt
das Programm sofort die aktuelle Klammer und setzt die
Interpretierung genau hinter der soeben Klammer fort.
Mit der for Schleife haben Sie die Möglichkeit Programmblöcke
eine bestimmte Anzahl von Wiederholungen durchführen
zu lassen. Egal ob Sie eine bestimmte Ausgabe mehr als einmal
auf dem Bildschirm ausgeben möchten oder eine Anzahl
der Dürchläufe einer If Schleife steuern möchten,
die for Schleife ist hier erste Wahl.
for(Zähleranweisung)
{
// ausführen dieses Programmblocks für die festgelegt Anzahl an Dürchläufen
}
Vergleichs-und
logische Operatoren |
|
Um Überhaupt Werte oder Strings gegeneinander
prüfen zu können, benötigt man Vergleichsoperatoren.
Diese Vergleichsoperatoren sind recht simpel, so daß die
nachfolgende Übersicht selbererklärend sein sollte.
prüfen, ob 2 Werte/Strings identisch sind:
==
prüfen, ob 2Werte/strings nicht identisch sind: !=
prüfen, ob Wert 1 gößer Wert 2 ist: >
prüfen, ob Wert 1 kleiner Wert 2 ist: <
prüfen, ob Wert 1 gößer gleich Wert 2 ist: >=
prüfen, ob Wert 1 kleiner gleich Wert 2 ist: <=
Oftmals reichen die oben genannten Vergleichsoperatoren
nicht aus um eine Bedingung zu prüfen. Damit z.B. nicht
zu viele aufeinanderfolgende If Schleifen programmiert werden
müßen, um komplexere Aufgaben zu lösen. Gibt
es die logischen Operatoren. Auch diese sind leicht verständlich,
so daß wiederrum die nachfolgende Auflistung reichen
sollte.
ein Wert muß mehrere Bedingungen erfüllen
bevor die Gesamtbedingung erfüllt ist: &&
ein Wert muß eine von mehreren Bedingungen erfüllen bevor die Gesamtbedingung
erfüllt ist: ||
Nach dem in den vorangegangenen Punkten
ein wichtiger Teil der Grundsätze erklärt wurde.
Beschäftigten sich die nächsten Punkte mit der
Ausgabe von errechneten Werten oder ermittelten Strings.
Die Ausgabe kann direkt in die HTML Seite, in ein sich öffnendes
neues HTML Fenster oder in einem in Java Script vorgesehen
Dialogfenster stattfinden.
In Java Script können Dialogboxen "normale" Anzeigen,
welche mit OK bestätigt und geschlossen werden können,
sein. Es besteht aber auch die Möglichkeit Dialogboxen
zu öffnen, welche zusätzlich ein Abbruch Button
haben oder z.B. eine Eingabe erwarten, welche wiederum weiterverarbeitet
werden kann. Nachfolgend nun die möglichen Dialogboxen
in der Übersicht.
<html>
<head>
<title>Eine Dialogbox</title>
<sript language="javascript">
<!--
function ausgabe()
{
alert ("Zum Schließen bitte auf OK klicken!");
}
//-->
</script>
</head>
<body onload="ausgabe()">
Sie sahen Ihre erste Dialogbox
</body>
</html>
Wie unschwer zu erkennen ist das Erzeugen
einer einfachen Dialogbox sehr einfach. Die beiden wichtigen
Befehle hierfür, sind alert und onload().
alert("xxxxxxxxx"):
Weist den Browser an die Dialogbox zu öffnen, wobei
in der Box der Text zwischen den Klammern angezeigt wird.
onload="ausgabe()":
Weist den Browser an die entsprechende Funktion zu laden
Diese Art von Dialogboxen können Sie
für eine Fallunterscheidung einsetzen. Je nach dem,
wie der Besucher entscheidet wird der weitere Programmverlauf
eingeleitet. In diesem Beispiel werden jetzt erstmalig eine
Variable Initialisiert und eine If Schleife mit Vergleichsoperator
zum Einsatz kommen.
<html>
<head>
<title>Bitte entscheiden</title>
<script language="javascript">
<!--
function entscheiden()
{
var entscheidung;
entscheidung = confirm ("Die gewünschte Seite wurde nicht gefunden!\nWeiterleiten
zur Sitemap ?");
if (entscheidung == true)
{
window.location.href = "../sitemap.htm";
}
else
{
history.back();
}
}
//-->
</script>
</head>
<body onload="entscheiden()">
nothing here!
</body>
</html>
Eine kurze grundsätzliche Erklärung
zum obigen Beispiel. Es wird angenommen ein Besucher hat
eine Seite Ihrer Homepage angefordert, welche nicht mehr
vorhanden ist und Sie möchten nicht, daß Ihm die
Standard Anzeige NOT FOUND präsentiert wird. Haben Sie
mit diesem kleinen Script die Möglichkeit in auf die
Sitemap zu leiten. Sollte er dieses nicht wünschen,
wird er zurück zur Seite geleitet von der er Ihre Seite
aufgerufen hat. Nun aber die Erklärung zu den einzelnen
Abschnitten.
var entscheidung; -
Initialisierung der einer leeren Variablen Namens "Entscheidung".
entscheidung = confirm
("Text 1\nText2"); - Über confirm
wird eine Dialogbox mit OK und Abbruch Button erzeugt.
In den Klammern steht der anzuzeigende Text. Durch den
Einsatz der Zeichenfolge \n wird ein Zeilenumbruch erzwungen.
Standardmäßig liefern die Buttons folgende Strings
zurück OK gleich true und Abbruch
gleich false. Diese Strings werden dann der Variablen
Entscheidung übergeben.
if(entscheidung == true) //Vergleichsoperator prüft ob auf OK geklickt
wurde
{
window.location.href = "../sitemap.htm";
/*Mit dieser Syntax wird dafür gesorgt,
daß der Browser in das aktuelle Fenster
die Seite sitemap.htm lädt */
}
else
{
history.back(); // nutzt die History Funktion des Browser, entspricht dem Zurück
Button des Browsers
}
Die wohl häufigste Einsatzart für
diese Dialogboxen ist der einer Passwort Eingabe Aufforderung.
Ob ein Java Script Passwortschutz nun sinnvoll und unsinnig
bzw. nutzlos ist sei mal da hin gestellt. Viel wichtiger
ist das Sie mit Hilfe der vom Besucher gemachten Angabe eventuell
Aktionen auslösen könnten, die sonst Darstellungs-
und Ablauftechnisch als unsicher bezeichnet werden müßten.
Das nachfolgende Beispiel könnte zwar auch über
ein vorhandenes Java Script Objekt gesteuert werden. Es soll
aber auch nur auf eine Gedankenrichtung hinweisen und nicht
ein superkompliziertes Script werden.
<html>
<head>
<title>Eingabe Dialogbox mit Prompt</title>
<script language="javascript">
<!--
function bildschirm()
{
var breite;
breite = prompt ("Leider konnte Ihre Bildschirmauflösung nicht festgestellt
werden\nFür 800x600 bitte 1 und 1024x768 bitte 2 eingeben");
if(breite == 1)
{
window.open("page1.htm");
}
if(breite == 2)
{
window.open("page2.htm");
}
else
{
window.document.write("<center>Sie haben keine korrekte Ziffer für
die Bildschirmbreite eingegeben!</center>");
}
}
//-->
</script>
</head>
<body onload="bildschirm()">
<center>HINWEIS
<p>
</body>
</html>
Wahrscheinlich wird die prompt Zeile bei
Ihnen mit Zeilenumbruch angezeigt, diesen Zeilenumbruch sollten
Sie in der Realität nicht setzen. Erfahrungen mit den
verschiedenen Browsern haben gezeigt, daß einige in
dem Punkt Probleme bereiten und Fehler auf der Seite anzeigen.
Nun aber zur eigentlichen Programmsyntanx.
breite = prompt ("text"); -
Bewirkt das Gleiche, wie im vorigen Beispiel. Dieses mal
ist nur die Art der Dialogbox eine andere. Die Übergebenen
Inhalte ist grundsätzlich jetzt die Eingabe des Benutzers.
(Ausnahme ist der der Abbruch Button er liefert wieder den
String false zurück.) Zur weiteren Verarbeitung wird
auch hier die die Benutzereingabe an die vorher initialisierte
Variable breite übergeben.
if(breite == 1) // Variable breite wird auf Eingabe 1 geprüft
{
window.open("page1.htm");
/* Eingabe von 1 wurde bestätigt und mit
window.open("anzuzeigende-Seite")
wird dem Besucher die die dafür vorgesehene Seite angezeigt */
}
if(breite == 2) // siehe Erklärung obere If Schleife
{
window.open("page2.htm"); // siehe Erklärung obere If Schleife
}
else
{
window.document.write("<center>Sie haben keine korrekte Ziffer für
die Bildschirmbreite eingegeben!</center>");
/* dieser else Teil wird zuletzt geprüft,
er sorgt dafür das mit window.document.write("text")
eine entsprechende Anzeige dargestellt wird für den Fall,
daß weder 1 noch 2 zu trifft, bzw. Rückgabe Wert false erkannt wurde
*/
}
Ab und an fiel in den einzelnen Beispielen
schon mal das Wort Java Script Objekt. Dieser Ausdruck ist
ein fester und wichtiger Bestandteil der Sprache. Die Sprache
Java Script besteht durchweg aus diesen Objekten, wobei das
ganze Prinzip, bis auf einige Ausnahmen, hierarchisch aufgebaut
ist. ( Die Ausnahmen werden hier aus Gründen der reinen
Verständlichkeit nicht erwähnt. ) Es gibt Objekte
mit der höchsten Wertigkeit und solche die von der Wertigkeit
dahinter liegen. Die nachfolgenden Objekte stehen in der
Regel in direktem Bezug zum ranghöchsten Objekt. Für
fast alle Objekte stehen Methoden zur Verfügung. Diese
Methoden sind nichts anderes, als fest definierte Funktionen,
welche sich auf das jeweilige Objekte anwenden lassen. Die
Eigenschaften eines jeden Objektes spiegeln das "Erscheinungsbild" eines
Objektes wieder. Werden die Eigenschaften verändert,
hat das keine Auswirkung auf das Objekt und seine Methoden.
Nachfolgend das allseits beliebte Bespiele des Austos als
Erklärung des eben Erklärten. Wir nehmen an, daß unser
Objekt ein PKW sei, dann wären dazu gehörige Eigenschaften
Modell, Farbe, Leistung,.... und seine Methoden wären
z.B. fahren oder bremsen. Verändern wir jetzt das Modell
und z.B. die Farbe, hätte dieses keine Auswirkung auf
das Objekt es bliebe immer noch ein PKW und die Methoden
fahren und bremsen würden immer noch anwendbar sein.
In den nachfolgenden Kapiteln, werden die eingesetzten Objekte,
Eigenschaften und Methoden jeweils erklärt, so daß mit
fortlaufenden Kapiteln, sich die Problematik des Verständnisses
sicherlich vereinfacht.
Ein
neues Fenster mit Java Script erzeugen |
|
Ein neues Fenster mit Java Script zu erzeugen ist mehr als
einfach, denn die Sprache selbst stellt hier für ein
eigenes Objekt zur Verfügung.
Die erzeugten Fenster sind von der Funktionalität voll
wertige Browser Fenster. Der Vorteil liegt auf jeden Fall
darin, daß Sie Kriterien wie Größe, Position
und Aussehen steuern können. Die derzeit häufigste
Einsatzweise liegt wohl darin Banner einzublenden, oder das
Fenster auf volle Bildschirmgröße zu zwingen.
Sinnvoll oder nicht sinnvoll das ist hier die Frage. Tja...
Ich persönlich denke das sollte jeder für sich
entscheiden und dem entsprechend handeln. Nun aber zu den
Java Script Fenstern. Nachfolgend eine mögliche Minimal-Lösung
ein neues Fenster zu öffnen.
<html>
<head>
<title>Eingabe Dialogbox mit Prompt</title>
<script language="javascript">
<!--
function einfenster()
{
window.open("datei.html","fenster1","width=150,height=150,scrollbars=yes").focus();
}
//-->
</script>
</head>
<body onload="einfenster()">
<center>Sie sehen ein neues Fenster!
<p>
</body>
</html>
Wie schon erwähnt,
ist die obige Lösung eine Minmal-Lösung. Es enthält die grundsätzliche
Java Script Syntax, um ein neues Fenster zu öffnen. Die Deklarierung ist
gewohnt die Alte. Funktion setzen und den entsprechend auszuführenden
Programmcode setzen. Aufruf der Funktion über den Eventhandler "onload".
Hier nun die Erklärung zu den Neuerungen.
window.open(...)...; -
Aufruf des Java Script Objektes window mit der Methode open.
Also fast, wie man es übersetzt sprechen würde. "Öffne
ein Fenster"
("datei.html","fenster1","width=150,height=150,scrollbars=yes")...; -
Zuweisung der Eigenschaften. Welche das neue Fenster besitzen
bzw. annehmen soll. Angefangen von "datei.htm",
welches die url bzw. den Pfad der anzuzeigenden Datei enthält.
Gefolgt von "fenster1", welches dem neuen Fenster
den Namen fenster1 zuweist. Solange dieses Fenster geöffnet
ist, kann dieses über diesen Namen angesprochen werden.
Zuletzt kommen noch die Eigenschaften, welche das Aussehen
des neuen Fensters festlegen - "width=150,height=150,scrollbars=yes" .
Diese sind eigentlich selbsterklärend. - Breite und
Höhe in px, sowie die Zuweisung von Scrollleisten. Sollte
der Inhalt der im Fenster anzuzeigenden Datei größere
Ausmaße als das eigentliche Fenster haben, wird das
neue Fenster automatisch mit Scrolleisten angezeigt. Ist
die Ausmaße hingegen kleiner, werden keine Scrollleisten
angezeigt.
..focus(); - Eine
Methode, welche das neue Fenster aktiv setzt. Sprich es wird
im Vordergrund angezeigt. Dies ein Vorteil, den Sie immer
nutzen sollten, damit die Besucher das neue Fenster auch
sehen und es nicht im Hintergrund geladen wird. Leider verliert
das neue Fenster seinen Fokus, sobald der Besucher ein anderes
Browserfenster durch Mausklick aktiv setzt.
Neben den unter Punkt 8 gesetzten Eigenschaften
gibt es natürlich noch weitere hilfreiche Eigenschaften,
mit welchen sich das Aussehen und die Position innerhalb
des Bildschirmes beeinflussen lassen. Das Nachfolgende Beispiel
zeigt nun eine Funktion zum Öffnen eines Fensters mit
zusätzlichen Eigenschaften.
<script language="javascript">
<!--
function einfenster()
{
window.open("datei.html","fenster1","width=150,height=150,
toolbar=yes,status=yes,menubar=yes,scrollbars=yes").focus();
}
//-->
</script>
toolbar=yes - Das
neue Fenster wird mit der vom Browser mitgelieferten Werkzeug
Palette angezeigt.
status=yes - Das
neue Fenster wird mit der vom Browser mitgelieferten Statuszeile
und dazugehörigen Inhalt angezeigt.
menubar=yes - Das
neue Fenster wird mit der vom Browser mitgelieferten Menüleiste
angezeigt.
Das waren die neu hinzugekommenen Eigenschaften.
Neben diesen gibt es natürlich noch weitere Eigenschaften.
Nachfolgend noch eine kleine Erklärte Liste von weiteren
nützlichen Eigenschaften. Die Einbindung erfolgt nach
dem obigen Schema.
locationbar=yes -
Das neue Fenster wird mit der vom Browser mitgelieferten "location
bar" angezeigt. Es ist also möglich neue Zieladressen
einzugeben, welche dann in das neue Fenster geladen werden.
resizable=yes -
Das neue Fenster darf in durch den Besucher in größe
Verändert werden.
screenx=100 - Das
neue Fenster hat einen relativen Abstand von 100 Pixel auf
der x-Achse, gemessen gegen die linke obere Bildschirmecke.
screeny=100 - Das
Pendant zu screenx. Sprich Abstand auf der y-Achse. Beachten
Sie bei den Positionierungen Ihrer Fenster, daß die
Messungen relativ sind und somit gegen die verschiedenen
Bildschirmauflösungen der Besucher berechnet werden.
Die hier aufgeführten Eigenschaften
sind natürlich nicht alle vorhandenen, jedoch sind es
die Eigenschaften, welche in der Praxis am häufigsten
eingesetzt werden. Alle hier gezeigten Eigenschaften werden
im Stil "Eigenschaft=yes" dargestellt und wo natürlich
yes steht darf auch no stehen. Sie können also auch
dem neuen Fenster eine mögliche Eigenschaft verwehren,
in dem Sie explizit den Einsatz der Eigenschaft verneinen.
In der Praxis ist das mit den verschiedenen Browser natürlich
wieder eine Gratwanderung. Die meisten Browser zeigen das
Fenster nur mit den zugewiesenen Eigenschaften an, d.h. Eigenschaften
die nicht gesetzt werden, werden auch nicht verwendet. Auf
der sicheren Seite sind Sie jedoch nur, wenn die Eigenschaften
auf no gesetzt sind. Wobei ich trotz Suche keinen Browser
gefunden habe der hier große Probleme macht.
HTML
Inhalte dynamisch mit Java
Script generieren. |
|
Nach dem in diesem Abschnitt gezeigt wurde, wie Sie mit
Java Script neue Fenster öffnen, um eine HTML Seite
dort anzuzeigen. Befaßt sich dieser Punkt damit die
Inhalte des Fensters mit Hilfe von Java Script zu generieren.
Nachfolgend wieder ein Beispiel, welches das Ganze verdeutlichen
soll.
<html>
<head>
<title>Neues Fenster mit Java Script beschreiben bzw. verändern</title>
<script language="javascript">
<!--
function einfenster()
{
neu=window.open("","fenster1","width=250,height=250,scrollbars=no");
neu.document.open("text/html");
neu.document.fgColor="#FFFFCC";
neu.document.bgColor="#BBBB00";
neu.document.write("<p>Diese Textfarbe wurde durch fgColor festgesetzt.</p>");
neu.document.write("<p><font style=\"arial\" size=\"2\" color=\"red\">Diese
Textfarbe wurde mit \"font\" modifiziert</font></p>");
neu.document.write("<p>< a href=\"javascript:window.close()\">Fenster
schliessen</a></p>");
}
//-->
</script>
</head>
<body>
<center>Bei dem neuen Fenster wurde der Text mit Hilfe von Java Script
geschrieben und verändert!<br>
<a href="javascript:einfenster()">zum Einsehen hier klicken</a>
<p>
</body>
</html>
Nun hat sich im obigen Beispiel einiges
getan. Es sind relativ viele Neuerungen hinzugekommen, welche
jetzt nachfolgend
noch einmal erklärt werden.
neu=window.open(...).; - Initialisiert
eine neue Variable mit dem Namen neu und tätigt sogleich
eine Zuweisung, wobei diese Zuweisung zugleich eine Anweisung
ist, ein neues Fenster mit entsprechenden Eigenschaften zu öffnen.
Das Feld, welche zuvor dem Fenster die zuladene URL übergeben
hat ist nun leer. Dieses ist so, da der Inhalt ja von unserem
Script selbst geschrieben werden soll.
neu.document.open("text/html"); -
Das neu steht für unsere Variable also dem neuen Fenster. "Dokument" selbst
ist ein direktes Unterobkjekt des Java Script Objekt "window".
Mit dem Objekt "Dokument" haben wir die Möglichkeit
den Inhalt einer HTML Seite anzusprechen und mit den zu "Dokument" gehörigen
Methoden bzw. Eigenschaften diesen auch zu verändern.
In dieser Zeile wird die Methode open("text/html")
auf das Objekt "Dokument" angewendet. Diese Methode
liefert eine eine Freigabe zum Schreiben der Datei. Der entsprechende
Datei Typ wird innerhalb der Klammern zugewiesen. In unserem
Fall natürlich "text/html". In unserem Fall
wollen wir in das neue Fenster der Variable neu schreiben,
deshalb muß diese Zuweisung an den Anfang der Anweisung
gesetzt werden. Dieses gilt dementsprechend
auch für alle Anderen in diesem Beispiel folgende Methoden
bzw. Eigenschaften, die auf unser Objekt angewendet werden
sollen! Im Normalfall, also ohne Variable würde
man sonst die Anweisung vornehmen die gerade zu ladende HTML
Datei zu beschreiben.
document.bgColor="#FFFFCC"; - "fgColor="Farbe" ist
eine Eigenschaft des Objekt Dokument. Mit dieser Eigenschaft
wird die Hintergrundfarbe der zu schreibenden HTML Datei
festgesetzt. Das Pendant in HTML ist dann auch bgcolor.
document.fgColor="#BBBB00"; -
Auch "fgColor="Farbe" ist eine Eigenschaft
und legt die Standardschriftfarbe für die zu schreibende
Seite fest.
neu.document.write("<p>....</p>"); -
Aufruf der Methode "write()". Schreibt ins aktuelle
Dokument, also in diesem speziellen Fall in unser geöffnetes
Fenster. Würde nicht explizit mit der Variable "neu" das
Fenster als aktives Dokument erklärt, würde Java
Script versuchen in das Fenster zu schreiben aus, welchem
der Aufruf für die Ausführung des Codes kam. Wie
in diesem Beispiel dann zu sehen können Sie natürlich
auch zusätzliche HTML Tags mit schreiben lassen, welche
dann auch als solche vom Browser interpretiert und dargestellt
werden.
Um diesen Vorteil noch deutlicher hervorzuheben, wurde in der folgenden obigen
Zeile :
neu.document.write("<p><font style=\"arial\" size=\"2\" color=\"red\">Diese
Textfarbe wurde mit \"font\" modifiziert</font></p>");
Die Schriftart, Schriftgröße und die eigentlich vorher festgelegte
Schriftfarbe mittels HTML Tags zugewiesen. Also in diesem Fall wird genau dieser
abzubildende Absatz, losgelöst von der eigentlichen Schriftfarbendefinition,
in Rot statt in einem Grünton angezeigt.
Ein ebenfalls wichtiger Punkt ist bei der Notierung der HTML Tags innerhalb
dieser write Methode zu erkennen. Den Anführungszeichen muß ein
\ vorweg gestellt werden, ansonsten würde die Interpretation so aussehen,
daß dort die in doppelten Anführungszeichen stehende Anweisung zu Ende
sei.
a href="javascript:window.close()">Fenster
schliessen</a> - Dieser HTML Code wird im
obigen Beispiel mit ins Fenster geschrieben. Es handelt
sich natürlich, um ein normales a href Tag, welches
jedoch kein Verweis zu einem anderen HTML Dokument aufruft,
sondern die Javascript Methode "close()". In
Verbindung mit dem Objekt "window", kann so ein
geöffnetes Fenster direkt geschlossen werden.
Java
Script abbilden und mittels Events verändern |
|
Im vorigen Abschnitt wurde gezeigt, wie in das neu geöffnete
Browserfenster, mittels Java Script, HTML Code geschrieben
wurde. Natürlich funktioniert, daß nicht nur in
neuen Browserfenstern. Viel häufiger wird dies auf die
anzuzeigende HTML Seite angewendet. Gerade dadurch lassen
sich mit Java Script sehr gut dynamische Websites erstellen.
Das nachfolgende Beispiel zeigt eine kleine Möglichkeit
der Umsetzung und kommt hierbei noch mit ein paar Grundsätzlichen
Neuerungen.
<html>
<head>
<title>Neues Fenster mit Java Script beschreiben bzw. verändern</title>
</head>
<body>
<script language="javascript">
<!--
function schreiben(farbe, schrift)
{
document.open("text/html");
document.fgColor=schrift;
document.bgColor=farbe;
document.write("<p>Diese Textfarbe wurde durch fgColor festgesetzt
und wurde als Variable übergeben..</p>");
document.write("<p><font style=\"arial\" size=\"2\" color=\"red\">Diese
Textfarbe wurde mit \"font\" modifiziert</font></p>");
document.close();
}
document.open("text/html");
document.bgColor="#FF7F50";
document.write("<a href=\"javascript:schreiben('#00000','#FFFFFF')\" onClick=\"schreiben('#000000','#FFFFFF')\">change</a>");
document.close();
//-->
</script>
<p><b>Hier kann ebenfalls HTML eingefügt werden</b></p>
</body>
</html>
Eine grundsätzliche Änderung zu allen vorangegangenen
Beispielen, ist da die Java Script Definition jetzt direkt
im innerhalb des body Tags steht. Die Erklärung hierfür
ist ganz einfach. Bei unserem Minibeispiel soll an einer
bestimmten Position der Website, mit Java Script erzeugter
Code eingesetzt werden. Damit dieser auch an den entsprechenden
Stellen dargestellt wird, muß dort unser Java Script
Teil aufgerufen werden. Nach dem im letzten Abschnitt 9 schon,
das Java Script Objekt - Dokument, seine Eigenschaften und
Methoden besprochen, deshalb hierfür nur die Neuerungen.
Der Aufruf des Objekt Dokument erfolgt jetzt direkt, ohne
die Zuweisung eines Fensters, damit in das aktuelle Dokument
geschrieben wird. Wird das obige Beispiel ausgeführt,
wird die Funktion schreiben nicht ausgeführt, da hierfür
auch kein Aufruf notiert ist. Der folgende Bereich ist keiner
Funktion zugewiesen und wird somit sofort umgesetzt. Nach
dem dieser Ausgeführt wurde, ist der Java Script Bereich
zu Ende und der Browser interpretiert noch den folgenden
HTML Code. Jetzt wird die Seite dargestellt. In dem mit Java
Script geschriebenen Part wird nun folgende Zeile geschrieben:
<a href=\"javascript:schreiben('#00000','#FFFFFF')\" onClick=\"schreiben('#000000','#FFFFFF')\">change</a>"
Dieser kleine Code bedarf jetzt doch einer Erklärung.
Dem a href Tag wird der Aufruf der Java Script Funktion schreiben()
zugewiesen. Hierbei ist jetzt eine Neuerung zu erkennen - schreiben('#000000','#FFFFFF') -
In den Klammern werden jetzt zwei Farbwerte in Hexadezimal
Form, durch Klammern getrennt, notiert. Auf diese Art und
Weise werden beim Aufruf der Funktion schreiben diese beiden
Werte mitübergeben. Was passiert jetzt mit den Werten?
function schreiben(farbe, schrift)
Wie oben zusehen, wird die Funktion schreiben mit zwei Namen,
Farbe und Schrift, aufgerufen. Die Trennung erfolgt ebenfalls über
Klammern. Diese beiden Namen stehen für Variablen mit
dem gleichen Namen. Wird nun die Funktion durch anklicken
des Links aufgerufen, werden die Werte der Reihe nach den
einzelnen Variablen zugewiesen. Die Variablen können
nun beliebig in den Rest der Funktion integriert werden.
In unserem Beispiel:
document.fgColor=schrift;
document.bgColor=farbe;
Nach dem der Link angeklickt wurde, startet nun die Funktion
mit den übergebenen Werten. Das Ergebnis ist, daß die
HTML Seite komplett neu geschrieben wird und zwar mit Schwarzen
Hintergrund, der Schriftfarbe weiß und dem anzuzeigenden
Text mit dazugehörigen HTML Tags.
.Natürlich passiert in diesem Beispiel nichts weltbewegendes und sein
Einsatz so ist sicher nirgends Sinnvoll. Dies ist auch gar nicht gewollt. Aber
es zeigt Möglichkeiten aus denen sich komplexere Java Scripts programmieren
lassen.
Die Browserabfrage ist bei der
DHTML Programmierung ein fester Bestandteil. Aufgrund der
Tatsache, daß die beiden führenden Browser Hersteller
verschiedene Lösungsansätze für die Umsetzung
von DHTML eingeschlagen haben, kommt der Webdesigner nicht
um eine Browserabfrage herum. Für dynamische Anwendungen
mit dem Microsoft Internet Explorer gibt es das Java Script
Objekt all. Nescape hingegen nutzt das Java Script Objekt
Layer. Beide Browser sind nicht in der Lage das zugehörige
Objekt des anderen zu interpretieren, so ist die letzte Rettung
nur die vorherige Browserabfrage. Wobei eine Browserabfrage,
wie eine Gabelseite genutzt werden kann, was bedeutet, daß jeweils
eine für jeden Browser optimierte Seite programmiert
wird, auf welche dann entsprechend weitergeleitet wird. Die
zweite Version besteht darin, daß die Browserabfrage
in jeder Seite vorgenommen wird und das Script in beiden
Browser lauffähig ist. Nun aber zur Browserabfrage.
<script language="javascript">
<!--
browser=navigator.appName;
version=navigator.appVersion.substring(0,1);
if((document.all) && (browser == "Microsoft Internet Explorer") && (version >= "4"))
{
schreiben("0");
}
if((document.layers) && ((browser == "Netscape")||(browser == "Gecko")) && (version >= "4"))
{
schreiben("1");
}
//-->
</script>
Was passiert nun in dem obigen Script? Zuerst wird der Variable Browser,
der Browsername des ausführenden Browsers zugewiesen.
Dieser Browsername ist standardmäßig in navigator.appName gespeichert.
Wo bei Navigator ein Java Script Objekt und appName eines
seiner Eigenschaften ist. Danach wird die zum Browser gehörige Versionsnummer
der Variable Version zugewiesen. Die Versionsnummer
ist standardmäßig in navigator.appVersion gespeichert. appVersion
ist ebenfalls eine der Eigenschaften des Java Script Objekt Navigator.
Nun steht im obigen Beispiel nicht nur navigator.appVersion,
sondern navigator.appVersion.substring(0,1).
Was hat nun dieser Zusatz substring(0,1) für
eine Funktion?
Um das zu erklären, muß man sich anschauen, daß die Versionsnummer
der Browser nicht einstellig, sondern Kommastellen aufweisen. Wir benötigen
für unsere Abfrage aber nur die Stelle vor dem Komma. Also setzen wir
diese Eigenschaft substring(0,1) ein und haben somit
die Möglichkeit nur die ganze Zahl in Version zu speichern.
Jetzt kommen zwei If Abfragen in denen jeweils die Browserspezifieschen
Java Script Objekte, der dazu passende Browsername und eine
Versionsnummer höher 4 abgefragt wird. Wie im Beispiel
zu erkennen, ist das für den Microsoft
Internet Explorer das Objekt all und
für den Netscape Navigator das
Objekt Layer. Diese beiden Objekte
besitzen die entsprechenden Eigenschaften dynamisch Inhalte
anzuzeigen oder zu verändern. Da beide Objekte erst
ab den Browserversionen 4.0 interpretiert werden können,
wird auch auf mindestens diese Browserversion hin geprüft.
Je nach dem welche Version nun festgestellt wurde, wird
die Funktion schreiben aufgerufen und Ihr, entweder die Null
für den Microsoft Internet Explorer, oder die eins für
den Netscape Navigator übermittelt. Diese im Beispiel
angenommen Funktion muß natürlich diese Zahl einer
entsprechenden Variable zuweisen, welche den weiteren Verlauf
für die Darstellung in den jeweiligen Browser Typen
sicherstellt.
Nach dem nun in der Lektion 10 gezeigt wurde, wie eine Browserabfrage
realisiert wird. Diese Browserabfrage wird nun in unsere
Lektion 11 integriert. Was soll unser Beispiel können?
Es soll sich ein Text vom linken oberen Bildrand langsam
zur Bildschirmmitte bewegen und dort unsichtbar werden. Zuerst
das vollständige Listing zu Beispiel. Die Erklärung,
wie gewohnt Schritt für Schritt dahinter.
<html>
<head>
<title>Fliegender Text</title>
<script language="javascript">
<!--
function schreiben(a)
{
if(a==0){
bewegen(0,0,300);
}
if(a==1){
bewegennet(0,0,300);
} }
/*explorers all version*/
function bewegen(von, rechts, nach){
var neusatz = document.all.neusatz.style;
var hidden = 'hidden';
if(von<nach){
neusatz.top=(von +=10);
neusatz.left= (rechts +=5);
setTimeout('bewegen(' + von + ',' + rechts +',' + nach + ')', 150);
}else{ neusatz.visibility = hidden; } }
/*netscapes layer version*/
function bewegennet(von, rechts, nach){
var neusatz = document.neusatz;
var hide = 'hide';
if(von<nach){
neusatz.top=(von +=10);
neusatz.left= (rechts +=5);
setTimeout('bewegennet(' + von + ',' + rechts +',' + nach + ')', 150); }
else{ neusatz.visibility = hide; } }
//-->
</script>
</head>
<body>
<div id="neusatz" style="font-size:24px; position:absolute; top:0px; left:30px;
visibility:visible;">Java Script fliegt</div>
<script language="javascript">
<!--
browser=navigator.appName;
version=navigator.appVersion.substring(0,1);
if((document.all) && (browser == "Microsoft Internet Explorer") && (version >= "4")
) { schreiben("0"); }
if((document.layers) && ((browser == "Netscape")||(browser == "Gecko")) && (version >= "4")
) { schreiben("1"); }
//-->
</script>
</body>
</html>
Wie unschwer zu erkennen ist das obige Beispiel, daß erste
welches doch recht komplex erscheint. Jetzt erstmal für
das Verständnis, in Worten ohne Erklärung der entsprechenden
Syntax, der grobe Ablauf des obigen Beispieles.
Im Fall dessen, daß die Seite
vom Browser geladen wird, stößt dieser auf einen Java Script
Bereich. Dieser ist aber an eine Funktion gebunden, so daß diese
nicht gestartet wird.
Im Body Bereich befindet sich nur eine
einzige Anweisung, per DIV Tag wird der Text "Java Script fliegt" etwa
links oben sichtbar im Bildschirm ausgegeben.
Nachfolgend wieder ein Java Script Bereich,
dieser ist unsere Browserabfrage der Lektion 10. Da keine Bindung an
eine Funktion vorliegt wird der Java Script Bereich eingelesen und
interpretiert. Je nach dem, ob Netscape oder der Internet Explorer
gefunden wurde. Wird die Funktion schreiben mit einer entsprechenden
Kennziffer für den gefundenen Browser aufgerufen.
Die Funktion schreiben ist im ersten
Java Script Bereiches notiert. Die Funktion startet mit dem übergebenen
Wert. Je nach dem, welcher Wert vorgefunden wurde, wird eine andere
Funktion gestartet.
Diese Funktion bekommt sozusagen die
Endkoordinaten für die Bewegung des Textes übergeben. Die
eine Funktion realisiert die Bewegung für den Microsoft Explorer,
die andere dementsprechend die Bewegung für Netscape.
Anfangen möchte ich mit dem DIV Bereich:
<div id="neusatz" style="font-size:24px;
position:absolute; top:0px; left:30px; visibility:visible;">Java
Script fliegt</div>
Dieser Part kommt aus dem Bereich der Cascading Style Sheets.
Es wird mit dem HTML Tag Div ein Bereich eingrenzt dem folgende
Style Sheets zugeordnet werden. position, top, left, visibilty(Eine
Erklärung der Style Sheets finden Sie in unserem Style Sheet
. Dem Bereich wird zusätzlich ein Name über das
Attribut id zugewiesen in unserem Fall neusatz. Diese Eindeutige
Identifizierung des Div Bereiches, ermöglicht uns mit
Hilfe von Java Script diesen Bereich anzusprechen und bei
Bedarf zu verändern. Durch die Einsatz von visibility:visible
teilen wir dem Browser mit, daß der Bereich im Orginalzustand
Sichtbar ist.
Die Browserabfrage wurde ja schon in der vorigen Lektion
erklärt, so daß wir gleich zur Funktion schreiben
kommen.
function schreiben(a)
{
if(a==0){
bewegen(0,0,300);
}
if(a==1){
bewegennet(0,0,300);
} }
Die Funktion schreiben wird aus der Browserabfrage herausaufgerufen.
Ihr wird der Wert für den ermittelten Browser übergeben,
und der Variable a zugewiesen. Die Funktion schreiben besteht
aus zwei If-Schleifen, welche den Inhalt von a überprüfen,
um bei einer Übereinstimmung die jeweils für den
entsprechenden Browser optimierte Funktion bewegen bzw. begegnete
aufzurufen. Bei diesem Aufruf werden wieder drei Zahlenwerte übergeben.
Diese Zahlenwerte entsprechen den Endkoordinaten für
die auszuführende Bewegung des Logos.
Funktion bewegen(von, rechts, {
Ar neusatz = document.all.neusatz.style;
Ar Heiden = 'Heiden';
if(von<nach){
neusatz.top=(von +=;
neusatz.left= (rechts +=;
('' + von + ',' + rechts +',' + nach + ')', ;
}Lese{ neusatz.visibility = Heiden; } }
Die beim Aufruf übermittelten Werte werden den Variablen von, rechts und nach zugewiesen.
Danach werden zwei weitere Variablen initialisiert. Zum einen die Variable neusatz,
und zum anderen die Variable Heiden. neusatz wird
folgende Objektstruktur zugewiesen document.all.neusatz.style .
Das Objekt Dokument wurde in den vorangegangenen Kapiteln bereits besprochen.
Mit dem Objekt all werden Methoden zur Verfügung
gestellt, mit denen wir die Möglichkeit haben dynamische Änderungen
der Darstellung, der Position,.... also genau die Funktionen die wir benötigen. Leider
ist das Objekt all Microsoft Internet Explorer spezifisch.
Netscape hat für diese Methoden ein eigenes Objekt (Layer) entwickelt.
Durch diesen kleinen aber feinen Unterschied ist Programmierung von DHTML auch überhaupt
so schwer. Aber lassen Sie sich dadurch nicht verwirren. Wir machen weiter,
auf all folgt nun unser eigenes
Objekt mit dem Namen neusatz. neusatz ist
unser definierter DIV Bereich. Das Objekt Style ist
ebenso wie all eigens von Microsoft entwickelt und wird dementsprechend nur
vom Microsoft Internet Explorer interpretiert. Style wird benötigt um
Style Sheet Angaben, wie Sie in unserem DIV Bereich gesetzt sind, dynamisch
zu verändern.
Der Variable hidden wird der auch das Wort hidden
zugewiesen. Jetzt, wo alle Variablen entsprechend initialisiert, und mit den
Werten belegt sind, kommt eine if-Schleife. Diese if-Schleife überprüft,
ob die Bedingung "von<nach" erfüllt
ist. Ist das Ergebnis positiv wird der nachfolgende Schleifenrumpf ausgeführt.
Zuerst werden folgende Methoden auf die variable neusatz angewendet top und left.
Die Werte die die Methoden übergeben bekommen werden zum einen durch (von
+=10) und zum anderen durch (rechts +=5) berechnet. Das Resultat hieraus
ist das unser DIV Bereich 10 Pixel nach unten und 5 Pixel nach rechts verschoben
wird. Jetzt wird die Browserunabhängige Funktion setTimeout aufgerufen.
setTimeout wartet 150 Zehntel Sekunden und ruft dann die eigene Funktion wieder
auf. Natürlich mit den neuen Werten für von und rechts, da wir diese
ja zwischenzeitlich nach oben gesetzt haben. Dieser Vorgang wiederholt sich
entsprechend der Bedingung der if-Schleife bis von nicht mehr kleiner als nach
ist. In der Realität sieht das ganze aus, als würde der Schriftzug über
den Bildschirm fliegen. Wir haben für diesen Fall aber noch else integriert,
denn der Schriftzug sollte nach erreichen der Endkoordinate ausgeblendet werden.
Dafür verändern wir im Schleifenrumpf von else unser eigenes Objekt
neusatz mit der Methode visbility. Visibilty
bekommt nun die Zuweisung hidden, bedeutet der Browser soll dieses Objekt unsichtbar
machen. Ergebnis unser Schriftzug wird ausgeblendet. ..............................
und nun ein großes UFF! Geschafft der Schriftzug würde im Microsoft
Internet Explorer sich über den Bildschirm bewegen und am Ende ausgeblendet
werden.
function bewegennet(von, rechts, nach){
var neusatz = document.neusatz;
var hide = 'hide';
if(von<nach){
neusatz.top=(von +=10);
neusatz.left= (rechts +=5);
setTimeout('bewegennet(' + von + ',' + rechts +',' + nach + ')', 150); }
else{ neusatz.visibility = hide; } }
Die Funktion realisiert unsere geforderten Effekte für
Netscape. Prinzipiell gibt es keine gravierenden Unterschiede
zur Lösung für den Microsoft Internet Explorer.
Hier die Unterschiede in der Reihenfolge, wie Sie im Quelltext
auftreten.
Die Zuweisung für die Variable neusatz, beinhaltet weder das
Objekt all noch das Objekt style.
Wie oben bereits erwähnt, sind beide Objekte Microsoft Internet Explorer
spezifisch und werden nicht vom Netscape Browser unterstützt. Beim Netscape
Browser brauchen wir nur das Objekt document gefolgt
von unserem Objekt neusatz (document.neusatz).
Der nächste Unterschied befindet sich bei der Initialisierung der Variable hide.
Erstens nennen wir Sie anders und zweitens wird hide und nicht hidden zugewiesen.
Die Erklärung hierfür ist wieder mal die Unterschiedliche Syntax.
Während der Microsoft Internet Explorer nur auf hidden reagiert,
fordert Netscape die Zuweisung von hide.
Der restliche Ablauf ist der gleiche. Durch die sozusagen Browserspezifiesche
Zuweisungen für die Initialisierten Variablen haben wir erreicht, daß die
restliche Struktur der Schleife gleich bleiben kann.
|