(WebE) - Vorlesung 5: DOM Implementierungen, JavaScript, DHTML

Werbung
Web (Site) Engineering (WebE)
Vorlesung 5: DOM Implementierungen, JavaScript, DHTML
B. Schiemann, P. Reiß
Lehrstuhl für Informatik 8
Universität Erlangen-Nürnberg
17. 11. 2009
1 / 24
Übersicht
JavaScript
JSON
DHTML
DOM-Support durch Implementierung
DOM und Java
2 / 24
JavaScript
Was ist JavaScript?
I
Relativ einfache Skriptsprache
I
Für HTML geschaffen
I
Im Browser interpretiert
Nicht streng typisiert:
I
I
I
I
I
I
Numerische Variablen (Number)
Zeichenketten (String)
Boolesche Werte (Boolean)
null, undefined
Alle anderen sind vom Typ object
Der Datentyp einer Variablen kann sich ändern (!)
I
Sandbox-Modell
3 / 24
JavaScript
Einsatzgebiete
I
Validierung von Formulardaten
I
Dynamisierung von Webseiten
I
Aussehen
I
Anpassung an Browserversion
I
Interaktion mit Server
I
Reaktion auf Events (z.B. Mausklick)
I
Spielereien (nützlich bis nervig)
I
Web 2.0-Anwendungen (später im Semester)
4 / 24
JavaScript
Geschichte
I
1995: Netscape Navigator 2.0 mit LiveScript
I
Dez 1995: Umbenennung in JavaScript, Version 1.0
−→ Marketinggründe
I
April 1996: Navigator 3.0 mit JavaScript 1.1
Zugriff auf Bilder (Rollover-Effekte)
Mai 1996: Internet Explorer 3 ist JavaScript-fähig (1.0)
I
I
I
I
JScript (rechtliche Gründe)
Spezielle Erweiterungen: Zugriff auf Dateisystem, Betriebssystem
Okt. 1996: Veröffentlichung von JavaScript 1.2
(Netscape Communicator 4.0, Juni 1997 erster Browser)
5 / 24
JavaScript
Geschichte II
I
Juni 1997: ECMA (European Computer Manufacturers
Association) veröffentlicht ECMA-262 (EMCAScript)
I
Okt. 1997: IE4, deckt JavaScript 1.1 ab, DOM-ähnliche
Erweiterungen zum Zugriff auf alle Elemente
I
April 1998: ISO-Norm: „ISO/IEC 16262:1998 ECMAScript
language specification“
I
. . . (verschiedene Sprachversionen, v.a. Etablierung des DOM)
I
Okt. 2006: Firefox 2.0 mit JavaScript 1.7
6 / 24
JavaScript
Nachteile
I
Möglicher Missbrauch:
I
I
I
I
Verschleiern von Linkzielen (Statusbar)
Deaktivieren der üblichen Mausfunktionen
z.B. Verhindern, Quelltext zu sehen
Werbepopups
Bereits zahlreiche Sicherheitslücken
„Deaktivieren Sie JavaScript“
7 / 24
JavaScript
Einbinden in HTML
I
Externe Datei
< s c r i p t s r c = " JS . j s " t y p e = " t e x t / j a v a s c r i p t " >
</ script>
I
Quelltext in HTML-Datei
< s c r i p t type=" t e x t / j a v a s c r i p t " >
a l e r t ( " H a l l o Welt ! " ) ;
</ script>
I
Über Eventhandler in HTML-Tags
< i n p u t t y p e = " t e x t " name= " Eingabe "
onclick=" validate ( ) ">
8 / 24
JavaScript
Vordefinierte Standardobjekte
Beim Laden einer Seite werden verschiedene JavaScript-Objekte
initialisiert:
I
navigator: U.a. Name und Version des Browsers
I
window: Hierarchisch höchstes Objekt
document: Eigenschaften des HTML-Dokuments, z.B.
I
I
I
I
title
background
documentElement (DOM)
I
location: Eigenschaften der aktuellen URL
I
history: Zuvor besuchte Seiten
9 / 24
JavaScript
Beispiel: Window-Objekt
I
open/close: Öffnen, schliessen von Fenstern
I
alert: Popup eines Alarm-Fensters
I
confirm: Bestätigungsfenster
I
prompt: Eingabefenster
I
focus/blur: Setzt Fenster in Vorder-/Hintergrund
I
scrollTo: scrollt zu übergebenen Koordinaten
10 / 24
JavaScript
Events
I
Load: Das Laden eines Dokumentes wurde abgeschlossen.
I
Unload: Das Dokument wird wieder verlassen.
I
Abort: Das Laden wurde durch den Anwender abgebrochen.
I
Focus: Eingabefokus wurde erhalten.
I
Blur: Abgabe des Eingabefokus.
I
KeyUp: Taste wurde losgelassen.
I
KeyPress: Taste wurde gedrückt und wieder losgelassen.
11 / 24
JavaScript
Events II
I
KeyDown: Taste wird gedrückt.
I
Error: Beim Laden des Dokumentes ist ein Fehler aufgetreten.
I
Change: Der Wert hat sich geändert.
I
Click: Das Element wurde von der Maus angeklickt.
I
Submit: Ein Formular wurde abgeschickt.
I
Reset: Ein Formular wurde zurückgesetzt.
I
Select: Ein Text oder ein Teil davon wurde markiert.
12 / 24
JavaScript
Events III
I
Resize: Die Größe eines Fensters oder Frames wurde verändert.
I
Move: Ein Fenster oder ein Frame wurde bewegt.
I
MouseDown: Maustaste wird gedrückt
I
MouseUp: Die Maustaste wurde wieder losgelassen.
I
MouseOver: Der Mauszeiger ist in den Bereich des Objektes
eingetreten.
I
MouseOut: Der Mauszeiger hat den Bereich des Objektes wieder
verlassen.
I
MouseMove: Die Maus wurde bewegt.
13 / 24
JavaScript
JavaScript Beispiel
f u n c t i o n p l a y E x t ( playerType , u r l ) {
i f ( playerType == " r e a l " ) {
l o c a t i o n . h r e f = " h t t p : / / . . . / n−j o y . rm " ;
} e l s e i f ( playerType == "ms" ) {
l o c a t i o n . h r e f = " h t t p : / / . . . r e d i r e c t . l s c ?c= l i v e &
media=ms&stream=ndr / l i v e / n−j o y .wma" ;
}
}
14 / 24
JavaScript
JSON
JSON — JavaScript Object Notation [Cro07]
I
I
Text Format für JavaScript Objekte und Daten
Es gibt im wesentlichen zwei Strukturen:
1. Mengen von Name-Werte-Paaren
2. Listen (Arrays)
I
Mit den Name-Werte-Paaren, kann ein Objekt übertragen werden:
15 / 24
DHTML
Dynamic HTML (DHTML)
I
Seiten ändern sich während der Darstellung im Browser
I
Interaktivität (Ergonomie!)
I
Events für Benutzerinteraktion
Kombination aus
I
I
I
I
I
HTML
Skriptsprache: meist JavaScript
DOM
CSS
16 / 24
DHTML
JavaScript und DOM
Über das DOM kann JavaScript
I
auf alle Elemente einer Webseite zugreifen
I
Elemente oder ihre Eigenschaften ändern
I
Neue Elemente hinzufügen
I
Elemente entfernen
17 / 24
DHTML
JavaScript-Navigation DOM-Baum
Zugriff auf DOM-Elemente
I
Über id: document.getElementById("theID")
I
Über tags: document.getElementByTagName("h1")
Über Methoden der Elemente:
I
I
I
I
I
I
I
Array childNodes
firstChild: erster Kindknoten
lastChild: letzter Kindknoten
parentNode: Elternknoten
previousSibling: vorheriger Geschwisterknoten
nextSibling: nächster Geschwisterknoten
18 / 24
DHTML
Modifikation des DOM-Baums
I
appendChild(Kind): Hängt Kind unterhalb des Elements ein
I
cloneNode: Erzeugt identischen Knoten
I
createElement: Erzeugt neuen Knoten
I
removeNode: Entfernen des Kontens
I
replaceNode: Ersetzen des Knotens
I
setAttribute: Attribut eines Knotens wird gesetzt
19 / 24
DHTML
DOM-Support durch Implementierung
Gecko und DOM
I
DOM Level 1 −→ perfekt
I
DOM Level 2 −→ gut (NodeIterator fehlt, Bugs)
I
DOM Level 3 −→ 5 Teile nur teilweise implementiert
I
Gut dokumentierte API [Ind07] auf den Mozilla Seiten
I
Schwierige Performance-Ausagen, da Crossplatform
I
Fazit: Manipulation der XML-Inhalte clientseitig gut machbar
20 / 24
DOM und Java
DOM und Java
I
Java implementiert DOM direkt
→ org.w3c.dom Paket direkt in Java API enthalten
NodeList topNodes =
doc . getDocumentElement ( ) . getChildNodes ( ) ;
for ( i n t j = 0;
j <= ( topNodes . getLength ( ) − 1 ) ; j ++) {
Node topNode = topNodes . i t e m ( j ) ;
if (
topNode . getNodeName ( ) . equalsIgnoreCase (
" #comment " ) ) {
I
Seit Java 5.0: Java API for XML Processing (JAXP) integriert.
I
JDOM[H+ 07] und dom4j [Str07] nicht vergessen!
21 / 24
DOM und Java
JDOM
I
Pure Java-API für die Verarbeitung von XML
I
Eine der Möglichkeiten für DOM-Zugriff
I
Beinhaltet SAX und DOM
I
Kann mit Xerces und Xalan kombiniert werden
22 / 24
DOM und Java
Zusammenfassung
JavaScript
JSON
DHTML
DOM-Support durch Implementierung
DOM und Java
23 / 24
DOM und Java
Vielen Dank
I
Für Ihre Aufmerksamkeit!
I
Fragen?
24 / 24
DOM und Java
Douglas Crockfor.
Introducing json.
http://json.org/, 2007.
Jason Hunter et al.
Jdom.
http://www.jdom.org/index.html, 2007.
Individual mozilla.org Contributors.
Gecko dom reference.
http://developer.mozilla.org/en/docs/Category:
Gecko_DOM_Reference, 2007.
James Strachan.
dom4j: the flexible xml framework for java.
http://dom4j.org/index.html, 2007.
24 / 24
Herunterladen