|[[:inf:js:objektmodell:Fragen]]|**Inhalte**|[[:inf:js:objektmodell:Übungen]]|
====== JavaScript - Objektmodell ======
===== Hierarchie der JavaScript-Objekte =====
{{ :inf:js:js-88-1.jpg?direct&150}}In JavaScript werden dem Benutzer neben den vordefinierten Objekten wie stringund Arrayweitere Objekte zur Verfügung gestellt, über die wir beispielsweise auf ein Element eines Formulars zugreifen und dieses ändern können. Diese JavaScript-Objekte sind in einer Hierarchie geordnet. Die hierarchiehöchsten Objekte sind das Fensterobjekt window, das Navigatorobjekt navigator und das Bildschirmobjekt screen.
Der Inhalt eines Fensters und somit das HTML-Dokument werden durch das document-Objekt repräsentiert. Dieses Objekt ist dem window-Objekt untergeordnet. Das HTML-Dokument enthält Elemente, wie zum Beispiel Grafiken, Verweise und Formulare. Für diese Elemente gibt es weitere Objekte, beispielsweise das Objekt ''forms'' für Formulare. Um auf die Elemente des Formulars (Eingabefelder, Auswahllisten oder Schaltflächen) zuzugreifen, existiert das Objekt ''elements'', mit dem wir einzelne Felder und andere Elemente innerhalb eines Formulars ansprechen können.
Das ''navigator''-Objekt und das ''screen''-Objekt existieren unabhängig vom window-Objekt und geben Auskunft über den Browser, in dem das Skript läuft, bzw. über die Einstellungen des Computer-Bildschirms.
Aufgrund der großen Menge an Objekten werden wir anhand von ausgesuchten Beispielen im Folgenden die wichtigsten Objekte und deren Eigenschaften und Methoden erläutert.
[[http://de.selfhtml.org/javascript/objekte/index.htm|Weitergehende Informationen zu allen JavaScript-Objekten finden sich hier]].
===== Objekt navigator =====
Um die Eigenschaften eines Browsers auszulesen, wird das Objekt navigator angewendet.
{{:inf:js:js-89-1.jpg?direct&700}}
{{:inf:js:js-89-2.jpg?direct&700}}
Um zu ermitteln, welchen Browser der Besucher der Webseite verwendet, wird der Wert der Eigenschaft ''appName'' überprüft. Diese gibt den Namen des Browsers zurück. Eine weitere Spezifizierung kann mit der Nutzung von ''appVersion'' durchgeführt werden, da diese Eigenschaft die spezielle Versionsnummer des Browsers angibt.
Die Browser besitzen meist noch weitere individuelle Eigenschaften, die wir durch das Ausführen des folgenden Beispiels anzeigen können.
**Beispiel: [[http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_navigator.html|objekt_navigator.html]]**
Dieses Beispiel liefert Angaben zu allen Eigenschaften des ''navigator''-Objekts des verwendeten Browsers und den Rückgabewert der Methode ''javaEnabled()''.
Das Objekt navigator
Eigenschaften des navigator-Objekts
Zu beachten ist, dass in den verschiedenen Browsern nicht alle Eigenschaften gleich verhanden sind und daher unterschiedliche Ergebnisse angezeigt werden.
Diese Informationen sind dann wichtig, wenn Verzweigungen für browserspezifische JavaScript-Anweisungen benötigt werden. Die weitverbreiteten Browser Internet Explorer und Mozilla Firefox weisen auch in den neuen Versionen Unterschiede in ihren Implementierungen der HTML- und JavaScript-Standards auf. Somit ist das Verzweigen in unterschiedliche Codesegmente nötig, um nicht eine Fehlermeldung in dem einen oder anderen Browser zu erhalten.
Beispiel: {{http://elearn.bgamstetten.ac.at/infowpf/addons/JS/objekt_navigator_weiche.html|objekt_navigator_weiche.html}}
Ein typischer Einsatzzweck für das Objekt ''navigator'' ist die sogenannte Browserweiche, in der die verwendeten Browser abgefragt und speziell für die verschiedenen Browser angepasste Funktionen ausgeführt werden. Statt der hier angegebenen Funktion ''alert()'' können andere Funktionen ausgeführt werden.
Browserweiche
Browserweiche
Dieses Skript dient zum Ermitteln des vom Nutzer verwendeten Browsers.
\\ \\
===== Objekt window =====
Das Objekt ''window'' (Fenster) steht in der Objekthierarchie an oberster Stelle. Alle anderen Objekte, die das im Fenster geladene Dokument beschreiben, sind Eigenschaften des ''window''-Objekts. Es erlaubt uns somit die Abfragen zu den einzelnen Dokumentfenstern und ermöglicht uns, neue Fenster zu öffnen sowie deren Eigenschaften (Name, Höhe, Breite usw.) festzulegen. Auch das Schließen von Fenstern ist hiermit möglich. {{:inf:js:js-90-1.jpg?direct&100}}
* Ist das Browserfenster in Frames unterteilt, befinden sich die Objekte der HTML-Dokumente in einer eigenen Hierarchie unterhalb eines frames-Objekts.
* Das document-Objekt enthält alle wesentlichen HTML-Elemente wie Links, Anker, Bilder und Formulare des betreffenden HTML-Dokuments.
* Das history-Objekt enthält die Liste der zuletzt geladenen URLs.
* Das location-Objekt enthält Informationen über die URL des aktuellen Dokuments.
==== Methoden des window-Objekts ====
{{:inf:js:js-90-2.jpg?direct&700}}{{:inf:js:js-91-1.jpg?direct&700}}{{:inf:js:js-91-2.jpg?direct&700}}
Standardmäßig müssen wir zum Aufruf einer Methode eines Objekts den Objektnamen voranstellen, z.B. ''window.alert()''. Im Falle des ''window''-Objekts können wir den Namen ''window'' weglassen. Dieser wird automatisch von JavaScript vorangesetzt.
==== Statusanzeige ====
Standardmäßig ist der Browser für die Textanzeige der Statuszeile verantwortlich. Nach dem Laden einer Webseite zeigt er z. B. den Text ''Fertig'' an oder beim Überfahren eines Hyperlinks mit der Maus die betreffende URL.
Standardmäßig können wir den Statusleistentext im Mozilla Firefox nicht per JavaScript ändern. Hierzu müssen wir in den erweiterten JavaScript-Einstellungen des Browsers das Überschreiben des Statusleistentextes explizit erlauben.
Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_window_status.html|objekt_window_status.html}}
Diese Statusanzeige soll von Ihnen mit einem individuellen Text überschrieben werden. Zusätzlich soll beim Überfahren eines Links mit der Maus eine spezielle Anzeige erfolgen. Um die Statusanzeige anzusprechen, bietet das Objekt ''window'' die Eigenschaften ''defaultstatus'' (standardmäßige Statusanzeige) und ''status'' (aktuelle Statusanzeige).
Statusanzeige beeinflussen
Statusanzeige ändern
Führen Sie die Maus über den Link und beobachten Sie die Statuszeile.
Ändern der Statuszeile
\\ \\
==== Vorheriges Dokument aufrufen ====
Im Browser können wir mit der Schaltfläche Zurück zum vorherigen HTML-Dokument wechseln. Die entsprechende Methode nennt sich ''back()''. Sie wird sehr oft in Zusammenhang mit einem Verweis angewendet. Diese Methode funktioniert nur, wenn sich vor der Webseite im Browserverlauf eine weitere Webseite befindet.
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_window_back.html|objekt_window_back.html}} **
Objekt:window, Methode:back()
Zur vorherigen Seite
==== Fenster öffnen und schließen ====
Beim Browsen im Internet werden bei vielen Webseiten automatisch weitere Fenster, meist Werbeeinblendungen, geöffnet. Dazu wird die Methode ''open()'' verwendet.
window.open("URL","Fenstername",[Optionen])
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_window_open.html|objekt_window_open.html}} **
Beim Laden der Webseite sollen zwei weitere Fenster per JavaScript geöffnet werden. Damit wir die geöffneten Fenster per JavaScript steuern können, werden die Referenzen auf die ''window''-Objekte der neuen Fenster in Variablen gespeichert.
Objekt:window, Methode:open()
Das Hauptfenster
Beim Öffnen eines neuen Fensters können wir weitere Optionen für die Anzeige des Fensters festlegen, z.B. ob im geöffneten Fenster die Statuszeile oder die Adresszeile angezeigt werden soll.
{{:inf:js:js-93-1.jpg?direct&700}}
**Beispiel**
Wir öffnen ein Fenster, in dem die Anzeige aller Fensterelemente abgeschaltet ist. Die Höhe und die Breite des Fensters sollen dabei jeweils 300 Pixel betragen.
Zu beachten ist, dass die Fensteroptionen in einer Zeichenkette angegeben werden. Die einzelnen Optionen werden jeweils durch ein Komma voneinander getrennt. Ein Fenster können wir über die Methode'' window.close()'' schließen. Beispielsweise lässt sich diese Funktion als Link im HTML-Dokument darstellen.
Aktuelles Fenster schließen
// oder
Aktuelles Fenster schließen
* [[http://openbook.galileocomputing.de/javascript_ajax/08_fenster_007.htm|Mehr zum Öffnen und Schließen von Fenstern im Browser]]
==== Zeitgeber verwenden ====
Mit der Methode ''setTimeout()'' haben wir die Möglichkeit, eine Anweisung oder Funktion nach einer bestimmten Verzögerungszeit auszuführen. Dazu geben wir innerhalb der Klammern den entsprechenden JavaScript-Code an. Als zweite Angabe folgt die Verzögerungszeit in Millisekunden.
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_window_settimeout.html|objekt_window_settimeout.html}} **
Durch die Anweisung ''setTimeout("Zeitvorbei()",5000)'' wird nach einer Zeit von 5 Sekunden (5.000 Millisekunden) die Funktion ''Zeitvorbei()'' aufgerufen.
Objekt:window, Methode:setTimeout()
Bitte warten, der Countdown läuft
==== Meldungsfenster ====
Meldungsfenster zeigen eine Information an, die der Benutzer mit einem Klick auf die Schaltfläche Ok bestätigen muss. Die Methode ''alert()'' (Alarm) öffnet ein Dialogfenster. Innerhalb der Anführungszeichen können wir eine Zeichenkette angeben, die als Meldung angezeigt werden soll. Möchten wir einen Zeilenumbruch einfügen, geben wir die Escapesequenz ''\n'' innerhalb des Textes an.
window.alert("Anzeige");
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/interaktion_alert.html|interaktion_alert.html}} **
Interaktion - Dialogfenster
\\ \\
==== Eingabefenster ====
In einem Eingabefenster kann der Benutzer einen Text eingeben, der danach einer Variablen zugewiesen wird und weiterverarbeitet werden kann. Die Methode ''prompt()'' (Eingabe) öffnet ein Eingabefenster. Als ersten Wert geben wir den Text an, der beschreibt, was für ein Wert eingegeben werden soll. Mit dem zweiten Parameter legen wir fest, welcher Vorgabewert im Eingabefeld angezeigt wird.
window.prompt("Anzeige", "Vorgabewert");
In einem Eingabefenster wird der Name des Benutzers eingegeben, der im darauf folgenden Meldungsfenster vom Programm wieder ausgegeben wird.
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/interaktion_prompt.html|interaktion_prompt.html}} **
Interaktion
\\ \\
==== Bestätigungsfenster ====
Über dieses Dialogfenster können wir eine Frage anzeigen, die der Benutzer über die Schaltflächen Ok und Abbrechen beantworten kann. Die Methode ''confirm()'' (Bestätigung) zeigt das Dialogfenster an. Als Parameter geben wir die anzuzeigende Frage an.
window.confirm("Frage");
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/interaktion_confirm.html|interaktion_confirm.html}} **
In Abhängigkeit von der Beantwortung der Frage soll eine entsprechende Meldung angezeigt werden.
Interaktion
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/interaktion_komplett.html|interaktion_komplett.html}} **
Das folgende Beispiel verwendet alle bisher vorgestellten Dialogfenster. Dabei soll der Name des Besuchers erfragt und auf der Webseite ausgegeben werden. Gibt er keinen Namen ein, wird ihm der Name Herr Namenlos zugewiesen.
Interaktion
Meine Homepage
===== Objekt screen =====
Nicht alle Eigenschaften des ''screen''-Objekts sind sowohl im Internet Explorer als auch in Firefox implementiert. Für die häufigste Anwendung des ''screen''-Objekts, das Öffnen neuer Fenster an der richtigen Position und in der richtigen Größe, sind Eigenschaften in beiden Browsern vorhanden.
{{:inf:js:js-98-1.jpg?direct&700}}
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_screen.html|objekt_screen.html}} **
Es werden die ermittelten Bildschirmwerte ausgegeben.
Objekt: screen
Eigenschaften des screen-Objekts
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_screen2.html|objekt_screen2.html}} **
Eine häufige Verwendung des ''screen''-Objekts ist die Zentrierung eines Fensters in Abhängigkeit der vom Besucher verwendeten Bildschirmauflösung. Durch das Betätigen eines der Links wird ein leeres Fenster in der angegebenen Auflösung zentriert auf dem Bildschirm angezeigt.
Objekt: screen
Fenster zentriert in folgenden Größen öffnen
300 x 300
640 x 480
800 x 600
200 x 600
{{:inf:js:js-99-1.jpg?direct&500}} \\ Berechnung der Werte, um das Browserfenster zentriert darzustellen.
===== Objekt document =====
Das ''document''-Objekt ist das komplexeste Unterobjekt des ''window''-Objekts. Es enthält eine Vielzahl weiterer Eigenschaften, über die wir auf die Elemente eines HTML-Dokuments zugreifen. So enthält das ''document''-Objekt in der Eigenschaft ''forms'' weitere Objektreferenzen, sobald sich ein HTML-Formular ''
'' auf einer Webseite befindet. Weitere Eigenschaften sind ''anchors-'' (Verweisanker), ''applets-'' (Java-Applets), ''images-'' (Grafiken), ''layers-'' (Ebenen) und ''links-'' Objekte (Verweise).
In diesem Abschnitt werden die Eigenschaften und Methoden erläutert, die sich nicht auf HTML-Elemente beziehen.
==== Eigenschaften ====
{{:inf:js:js-100-1.jpg?direct&700}}
**Beispiel: {{http://elearn.bgamstetten.ac.at/wiki/addons/JS/objekt_document.html|objekt_document.html}} **
Die meisten der Eigenschaften entsprechen den Tags in HTML. Über diese Eigenschaften werden im Beispiel die Werte der Tags einer Webseite ausgelesen.
Objekt: document
Eigenschaften des document-Objekts
{{:inf:js:js-101-1.jpg?direct&700}}
==== HTML-Elemente als Objekte von document ====
Der Zugriff auf die Elemente der Dokumenthierarchie erfolgt in der Regel über die im HTML-Quelltext vergebenen Namen. Zusätzlich werden die Objekte der Elemente in Feldern angelegt.
* ''window.document.images[]'' enthält alle Grafiken in der Reihenfolge, in der die ''
''-Tags im HTML-Quelltext verwendet werden.
* ''window.document.anchors[]'' enthält alle Anker entsprechend den Tags ''''.
* ''window.document.links[]'' enthält alle Links entsprechend den Tags ''''.
* ''window.document.forms[]'' enthält alle Formulare, die durch ''