Javascript

Transcrição

Javascript
Javasscript
Zentrale Frage
Wie sieht das API / Objekt-Modell aus?
Sprache / Runtime
 Etliche Klassen zur Unterstützung (Datu
um, String, Array usw.)
Browser
 window
 document
se
elfthtml.org
xu
ulplanet.com
l l
t
Dokument
 DOM des W3C
 Kompletter Zugriff auf alle HTML Tags
 Inhalte: Via innerHTML
 Stil:
Via style und className
Via style auch die komplette
e CSS Welt
 Events: Via Event-Handler und W3C DOM
D
Events
Tag Referenz
Obj kt R
Objekt
Referenz
f
fü
für HTML
und Firefox Browser
Javasscript
Typen:
yp
Schwach g
getypte
yp Sprache
p
 typeof
Operator prüft grund
dlegende Typen (primitiv / Objekt)
 instanceof
Operator prüft auf Klasse
K
eines Objekts
Variablen nicht getypt
Ausführungsmodell:
A
füh
d ll
I t
Interpreter
t
 Keine statische Syntaxprüfung
 Erfordert White-Box Testen mit vollständiger Pfadabdeckung
 Daraus entstehen viele Nachteile für da
as Debugging
 Performance relativ gering

Aber: eval (text); Methode verfügb
bar und sehr mächtig
(und daher sicherheitstechnisch sehr prroblematisch)
Javascript Funktionen
Funktionsdeklarationen
 Rekursion unterstützt
 Variablen und Retouren nicht getypt (mixed content möglich)
function f(n) {if (n<=0) return (1); else return (n*f(n-1));}
Funktionen
F
kti
sind
i d "First
"Fi t Class
Cl
Objects"
Obj t "
 Können in Variablen gespeichert werde
en
 Können als Parameter übergeben werd
den
var fun = Math.sin;
alert ("sin(pi/2)="+fun(Math.PI/
(
(p / )
(
/
/2));
));
Javascript Funktionen
Funktionen erlauben anonyme
y
Lambda
a-Definition
var quad = function (x) {return x*x;}
Closures: Anonyme Lambda-Definitione
en mit freien Variablen
var x = 7;
7
var f = function (y) {return x*y
y;}
x = 8;
f(3) = ??
Scripting Features
Attribute von Objekten
j
werden dynamis
y
sch generiert
g
var test = new Object();
test.feld1 = "Wert";
test feld2 = 34;
test.feld2
test.feld1 = 99; // Umtypisieru
ung zulässig
Kurznotation
K
t ti
var test = new Object();
test = {feld1:3, feld2:"Wert"};
for / in Iterator
I
Bietet Möglichkeit,
g
alle Instanzvariablen
n zu iterieren
 In Java und C++ nicht ohne Weiteres möglich
m
 Vgl: Java Reflection API
for (fieldName in object) {alert
t(fieldName);}
A
Anwendung:
d
K
Kompakte
kt W
Werte-Tabellen
t T b ll zu einem
i
Objekt
Obj kt
document.writeln ("<table>")
for (field in object) {
document.writeln ("<tr><td>"+f
field+"</td>");
document.writeln ("<td>"+objec
(
j ct[field]+"</td></tr>");
[
]
/
/
);
}
document.writeln ("</table>");
Grund
dlagen
Anforderungen
 Dynamische Webseiten ohne Se
erver-Interaktion
 Raschere Reaktion auf Client-Intteraktion
 Ankoppelung an lokale Browser-Features
 Adaptive Webseiten
Umsetzungen
 Javascript
 Java

Visual Basic und weitere M$ Scriipt-Sprachen
Proprietär, nicht standardisiert, daher nicht empfohlen und
hier auch nicht weiter behandelt
Zugriff auf
f Webseite
<html><head>...</head>
<body><h1>Beispiel</h1>
<script type="text/javascript">
document write("<hr>");
document.write(
<hr> );
document.write("<b>Hello</b> World");
W
var x = document.getElementByI
Id("name");
x.innerHTML
i
HTML = "
"<b>Cap</b>";
b C
/b "
</script>
Guten Morgen Herr <span id="name
e"></span>
</body></html>
Zugriff au
uf Header
...
Diese Seite hatte als Referrer
<script type="text/javascript">
function referrer() {
if (document.referrer.length ==
= 0) {return ("<i>nichts</i>");}
else {return (document.referre
er);}
}
document.writeln (referrer());
</script>
Schnittstelle Ja
ava - Javascript
Applets
pp
mittels Javascript
p bedienen
 Applet muß Methoden zur Verfügung
g stellen
 document.applets[i].methodenN
Name (paras)
Javascript aus Java heraus aufrufen
 Klasse
Kl
JSObject
SObj t benötigt
b öti t und
d iim Ap
Applet
l t importiert
i
ti t
 Stellt Methoden zum Zugriff auf Java
aScript zur Verfügung
 Applet muß Attribut MAYSCRIPT im Tag
T tragen
Beide Schnittstellen verfügbar
Sicherheitseinschränkungen möglich
Server-Side
e Javascript
Ermöglicht
g
Interpretation
p
und Verarbeitu
ung
g von Seiten am Server
Verfügt über einige weitere Objekte
Beispiele:
 Screen Scraping
 Simulation eines Clients
Implementierungen
 Rhinola
 Apache Cocoon