KL 7 Informatik Arbeitsblatt 21 Thema: JavaScript I (JavaScript-Bereiche in HTML definieren, Funktionen) 1 Was ist JavaScript? JavaScript ist eine Sprache, die 1995 von Netscape eingeführt und lizenziert wurde, also kein direkter Bestandteil von HTML, sondern eine eigene, ursprünglich firmeninterne Programmiersprache. Diese Sprache wurde jedoch eigens zu dem Zweck geschaffen, HTML-Autoren ein Werkzeug in die Hand zu geben, mit dessen Hilfe sich Webseiten optimieren lassen. Wie bei CSS-Stylesheets werden JavaScripts wahlweise direkt in der HTML-Datei (intern) oder in separaten Dateien (extern) notiert. Sie werden zur Laufzeit vom Web-Browser interpretiert. Dazu besitzen Browser entsprechende Interpreter-Software, die allerdings aktiviert sein muss (Menü Extras/Internetoptionen/Erweitert). JavaScript läuft in einer so genannten "Sandbox". Das ist eine Art Sicherheitskäfig, in dem die Programmiersprache eingesperrt ist. Sie wird dabei um typische Möglichkeiten anderer Programmiersprachen beschnitten, vor allem um die Möglichkeit, beliebig Daten aus Dateien lesen und in Dateien schreiben zu können. So soll verhindert werden, dass JavaScript-Programmierer auf den Rechnern von Anwendern, die eine JavaScript-unterstützte Web-Seite aufrufen, Unfug treiben können. Nach anfänglichen Schwierigkeiten klappt das mittlerweile auch ganz gut. 2 JavaScript-Bereiche in HTML definieren 1.1 innerhalb der Datei (interne Definition) <head> <script type="text/javascript"> <!-document.write("Dieses Fenster wurde ohne Eventhandler geöffnet!"); alert("JavaScript-Meldungsfenster ohne Eventhandler"); //--> </script> </head> Mit <script type="text/javascript"> leitet man einen Bereich für JavaScript innerhalb einer HTMLDatei ein. Gleich in der nächsten Zeile sollte man mit <!-- einen HTML-Kommentar einleiten. Dadurch erreicht man, dass ältere Browser, die JavaScript nicht kennen, den folgenden JavaScript-Code ignorieren und nicht irrtümlich als Text innerhalb der HTML-Datei interpretieren. Im Beispiel wird mit dem JavaScript-Objekt document auf die aktuelle Seite zugegriffen und mit der Methode write() (angeschlossen mit einem Punkt) der Satz in Klammern ausgegeben. Anschließend wird wieder wie in Arbeitsblatt 20 ein Meldungsfenster ausgegeben, nur jetzt eben ohne Eventhandler. Jede JavaScriptAnweisung muss mit einem Semikolon ( ; ) abgeschlossen werden. Den JavaScript-Bereich schließt man mit einem einzeiligen JavaScript-Kommentar //, gefolgt vom schließenden HTML-Kommentar --> und </script> ab. Der JavaScript-Kommentar ist erforderlich, um Fehlermeldungen in scriptfähigen Browsern zu unterdrücken. Vor und nach dem HTML-Kommentar ist ein Zeilenumbruch zwingend erforderlich. Es gibt keine festen Vorschriften dafür, an welcher Stelle einer HTML-Datei ein JavaScript-Bereich definiert werden muss. Es ist unter JavaScript-Programmierern aber üblich, einen solchen Bereich im Kopf der HTML-Datei, also zwischen <head> und </head> zu definieren. Nur dadurch ist sichergestellt, dass der Code vom Browser bereits eingelesen ist und zur Verfügung steht, wenn er ausgeführt werden soll Seite 21.1 KL 7 Informatik Arbeitsblatt 21 1.2 Definition einer Funktion <head> <script type="text/javascript"> <!-function Quadrat( ) { var Produkt = document.Formular1.Eingabe.value*document.Formular1.Eingabe.value; alert(document.Formular1.Eingabe.value +“ * “ +document.Formular1.Eingabe.value + " = " + Produkt); } //--> </script> </head> Mit dem Schlüsselwort „function“ wird eine Funktion mit selbstgewähltem Namen (hier: Quadrat) definiert, gefolgt von geschlossenen runden Klammern für die Parameterliste (hier: leer) und geschlossenen geschweiften Klammern für den Funktionsrumpf. Dieser enthält den eigentlichen Code: Mit dem Schlüsselwort „var“ wird eine Variable „Ergebnis“ angelegt, der das Ergebnis der Rechenoperation (eine Zahl, die über ein HTML-Formular namens „Formular1“ vom Benutzer eingegeben wird, mit sich selber multipliziert, also quadriert) zugewiesen und über ein Meldungsfenster ausgegeben wird. Zur Beruhigung: Es ist noch nicht notwendig, alle Details zu verstehen. Ausführliche Erläuterungen zu Funktionen und Variabeln folgen. Hier sollen nur die Möglichkeiten von JavaScript angedeutet werden. Der Aufruf der Funktion geschieht sinnvollerweise wie im Arbeitsblatt 20 durch einen Eventhandler: <body > <h3>Berechnen von Quadratzahlen</h3> <hr> <form name="Formular1"> <input type="text" name="Eingabe" size="5"> <input type="button" value="Quadrat errechnen" onClick="Quadrat()"> </form> </body> 1.3 in einer eigenen Datei (externe Definition) Diese Methode kommt (wie bei CSS) dann zur Anwendung, wenn ein und dieselbe Funktion in mehreren HTML-Dateien verwendet werden soll. Die Datei mit dem Quellcode muss eine reine ASCIIDatei sein, darf nichts anderes als JavaScript-Code enthalten und sollte die Dateinamenerweiterung „.js“ tragen. Als Beispiel dient hier eine Funktion, die die Differenz zweier Zahlen berechnet. 1.4 Definition der Funktion (in der Datei „Sub.js“) function Sub() { var Differenz = document.Formular2.Summand1.value - document.Formular2.Summand2. value; alert(document.Formular2.Summand1.value + " - "+ document.Formular2.Summand2.value + " = " + Differenz); } Seite 21.2 KL 7 Informatik Arbeitsblatt 21 1.5 Einbinden der externen Datei <head> <script src="Sub.js" type="text/javascript"> </script> </head> 1.6 Dateneingabe und Aufruf der Funktion <body > <h3>Subtraktion zweier Zahlen (externe Definition der Funktion)</h3> <hr> <form name="Formular2"> <input type="text" name="Summand1" size="5"> <input type="text" name="Summand2" size="5"> <input type="button" value="Subtrahieren" onClick="Sub()"> </form> </body> 3 Aufgabe Öffne mit der vordefinierten Funktion alert() ein Fenster ohne Verwendung eines Eventhandlers. Definiere in dieser Datei (also intern) eine Funktion, die Quadratzahlen errechnet und schreibe den dazugehörigen HTML-Code zur Formulareingabe. Erstelle eine neue Datei „Sub.js“ und definiere darin (also extern) eine Funktion, die die Differenz zweier Zahlen berechnet. Binde diese Datei ein und schreibe den dazugehörigen HTML-Code zur Formulareingabe. Seite 21.3