Lektion 4: JavaScript und Applets

Werbung
Lektion 4:
JavaScript und Applets
Helmar Burkhart/
Martin Guggisberg
Dep. Informatik
Universität Basel
Helmar.Burkhart@...
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-1
Kurzprofil JavaScript
• Programmiersprache. Prozeduraler Kern mit C-Syntax.
• Objektbasierte Erweiterungen
• Skriptsprache
• Ereignisorientierte Programmierung
• Einbettung in HTML-Seiten
• Browser Interpretation
• Kern-, Klient- und Server-Aspekte
• Synergien mit Java
• Sprachversion: JavaScript 1.5 (1999)
• JScript, ActionScript, …, ECMAScript
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-2
Wechselwirkungen
Dynamisches HTML (DHTML) ist ein Sammelbegriff für
alle Techniken, die das Aussehen eines HTML-Dokuments
verändern lassen.
JavaScript-Teil
Beispiel:
Erzeugen
eines
HTMLDokuments
zur Laufzeit
© Helmar Burkhart
HTML-Teil
•
Beispiel: Auf
Knopfdruck wird
eine Funktion
aufgerufen, die
ihrerseits das
Erscheinungsbild
des Dokuments
ändert.
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-3
Beispiele
Quelle: Internet & World-Wide Web: How to program.
www.deitel.com.
• Hintergrundfarbe
• Fontänderungen
• Textänderungen
• Zeit
• Dialogabläufe
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-4
Objekte einer HTML-Seite
In einem JavaScript-Browser werden die Elemente einer
Webseite als Objekt aufgefasst. Man kann unterteilen in
• Browser-Objekte
• HTML-Objekte
window
document
location
history
HTML Objekte
© Helmar Burkhart
•
navigator
screen
...
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-5
Das window-Objekt
Jede geladene Seite setzt ein Dialogfenster voraus. Dies ist das globale
Fenster window,das viele Eigenschaften und Methoden besitzt:
– Fensterangaben: outerWidth, outerHeight, innerwidth,
innerHeight.
– Fensterpositionierung: moveTo(x,y). Koordinaten sind die linke
obere Ecke.
– Bildung weiterer Unterfenster: open() und close().
– Dialogfunktionen: prompt(),alert(),confirm().
– Periodische Ereignisse: setTimeOut(), setInterval().
– Statusbalken: status.
var window.open("http://www.selfhtml.org");
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-6
Das document-Objekt
Das document-Objekt repräsentiert die momentan
geladene HTML Seite:
– Titel des Dokuments: title
– Eingabe bzw. Ausgabe eröffnen bzw. schliessen:
open() close()
– Ausgabeanweisung: write() und writeln()
– Farbangaben: bgColor
– Alle HTML-Elemente wie z.B. Bilder und Formulare
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-7
Ereignisorientiertes
Programmieren
Beim ereignisorientierten Programmieren ist der
Programmablauf verteilt:
Benutzereingabe: Taste drücken
Aufruf der Ereignisbehandlung
Ereignisreaktion
© Helmar Burkhart
•
Ereignisbehandler
aktivieren: onClick
Ereignisbehandlung
aufrufen: Fenster
schliessen
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-8
Ereignisse
Ereignis
Beschreibung
onClick
Element gedrückt
Objekte
Button, Checkbox, Radio,
Link
Fokus erhalten
Select, Text, Textarea,
Window
Fokus verloren
Select, Text, Textarea,
Window
Element geändert
Select, Text, Textarea
Element geladen
Image, Window
Maus über Element
Link
Maus weg von Element Link
onFocus
onBlur
onChange
onLoad
onMouseover
onMouseout
Beispiel: Datum per Knopfdruck
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-9
Zeitgesteuerte Ereignisse
• Aufruf einer Aktion nach Ablauf einer Zeit:
<timer> = setTimeout( <aktion>,<zeit> )
clearTimeout( <timer> )
• Setzen einer periodischen Aktion:
<interval> =setInterval( <aktion>,<zeit >)
clearInterval( <interval> )
Beispiel: Uhr
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-10
HTML Objekte einer Webseite
Wichtige Elemente der HTML-Seite sind zugreifbar in
Objekthierarchie:
document
forms[]
images[]
links[]
applets[]
elements[]
Bilder
Dialogelemente
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-11
Formulare (1)
Gegeben sei folgendes Formular:
<form>
Name: <input type="text" size=20>
<input type="button" value="anmelden">
</form>
Die Elemente werden
gemäss ihrem
lexikalischen
Erscheinen in die
Objekthierarchie
eingebettet.
© Helmar Burkhart
•
document
forms[0]
elements[0]
elements[1]
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-12
Formulare (2)
Formular und Formularelemente per explizitem Namen:
<form name="meinFormular">
Name: <input type="text" name="eingabe" size=20>
<input type="button" name="knopf"
value="anmelden"></form>
Die Elemente werden
mit ihrem Namen in
die Hierarchie
eingebettet.
document
meinFormular
eingabe
© Helmar Burkhart
•
knopf
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-13
Zugriff auf Formularelemente
Gemäss den vorigen Definitionen gibt es 2 Möglichkeiten HTML
Elemente von JavaScript aus zu referenzieren:
– anonym: Formularelemente, Bilder, sowie weitere Elemente
(aber nicht Tabellen und Paragraphen) werden in Felder
eingetragen: z.B. bei Formulare
document.forms[0].elements[0].value
+ flexibel
- anfällig gegen Veränderungen im Dokument
– mit explizitem Namen:
document.meinFormular.eingabe.value
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-14
Anonymer Zugriff
function auslesen() {
var res = ""; // leere Zeichenkette
with (document.forms[0])
res+=elements[0].value+"\n"+
elements[1].value;
return res;
}
<form>
Name: <input type="text" size=20>
<input type="button" value="anmelden"
onClick="alert(auslesen())">
</form>
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-15
Zugriff per explizitem Namen
function auslesen() {
var res = ""; // leere Zeichenkette
with (document.meinFormular)
res+=eingabe.value+"\n"+
knopf.value;
return res;
}
<form name="meinFormular">
Name: <input type="text" name="eingabe" size=20>
<input type="button" name="knopf"
value="anmelden"
onClick="alert(auslesen())">
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-16
Zugriff auf Formularelemente (1)
• Eingabefelder (input type="text")
value referenziert Eingabefeld (Zeichenkette).
Kann gelesen und geschrieben werden.
• Schaltfläche (input type="button")
value referenziert Knopfbeschriftung. Nur
Lesezugriff.
• Kontrollkästchen (input type="checkbox")
checked ergibt Booleschen Wert ob angekreuzt
wurde.
• Optionsfeld (input type="radio")
checked liefert Wert von Element i: radioName[i]
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-17
Auslesen Formularelemente (2)
• Auswahldialog (select,option)
selectedIndex referenziert gewählten Fall bei
1-elementiger Auswahl. Sonst in Schleife alle
Attribute selected abfragen.
auswahlName[i].text ergibt Wert der Auswahl i.
• Abschickschaltfläche (submit)
Eine wichtige Anwendung von JavaScript ist das
klientenseitige Überprüfen durch Aufruf von
Prüffunktionen vor dem Abschicken des Formulars.
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-18
Zugriff in der Objekthierarchie
<form name="meinFormular">
Name: <input type="text" name="eingabe“...>
<input type="button" name="knopf" ...></form>
Zueinander parallel liegende Objekte können sich nicht direkt
referenzieren:
Beispiel: onClick("pruefe(eingabe.value) ")
geht nicht innerhalb type=button.
⇒ Entweder voller Pfadname:
meinFormular.eingabe.value
⇒ objektorientiert: this.form.eingabe.value
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-19
Dynamischer Bildwechsel
Durch Zuweisung an die src-Komponente eines Bilds
in document erfolgt ein dynamischer Bildwechsel.
document.images[0].src
Frog1.gif
Frog3.gif
Frog5.gif
Modernes Daumenkino
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-20
Vorausladen mittels Objekt Image
– Das wiederholte Neuladen eines Bilds
insbesondere vom Internet ist langsam.
– Man kann ein Bild in einem Objekt vom Typ
Image aufbereiten und dann nur noch die srcReferenz zuweisen.
bild = new Image();
bild.src= "hb.jpg";
....
document.images[0].src = bild.src;
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-21
Graphische Hyperlinks
<body>
<a href="http://www.altavista.com">AltaVista besuchen</a><br>
<a href="http://www.lycos.de/">Lycos besuchen</a>
<a href="http://www.altavista.com"><img src="xavista1.jpg"
width=186 height=99 border=0 alt="AltaVista besuchen"></a>
<a href="http://www.lycos.de/"><img src="xlycos1.jpg" width=186
height=99 border=0 alt="Lycos besuchen"></a>
AltaVista besuchen
Lycos besuchen
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-22
Was ist ein Applet ?
• Ein Applet ist eine "Mini-Anwendung", die
dynamisch vom Internet geladen werden kann.
• Technisch gesprochen: Applets sind mobiler Code,
der erst auf Anforderung von einem ServerRechner geladen wird und vom javafähigen
Webbrowser auf der Arbeitsstation ausgeführt wird.
• Anwendungen sind eigenständige Programme mit
voller Funktionalität. Werden vom Betriebssystem
aus aufgerufen.
• Applets haben aus sicherheitstechnischen
Aspekten eingeschränkte Funktionalität.
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-23
http://javaalmanac.com/egs/java.applet/pkg.html
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-24
http://java.sun.com/docs/books/tutorial/applet/
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-25
Restriktionen
Aktuelle Browser schränken die Funktionalität des
Browsers in folgenden Punkten ein:
• Ein Applet darf keine Bibliotheken oder Klassen
laden.
• Es darf keine Files vom ausführenden Computer
speichern oder öffnen.
• Es darf keine Netzwerkverbindungen zu Computer
aus dem Applet Host aufbauen.
• Es darf keine Programme auf dem Computer
starten.
• Es kann nicht alle System Eigenschaften lesen.
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-26
Applet
import java.applet.*;
import java.awt.*;
public class BasicApplet extends
Applet {
public void init() {
}
public void start() {
}
public void stop() {
}
public void destroy() {
}
public void paint(Graphics g) {
}
}
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-27
Lebenszyklus eines Applets
Der Lebenszyklus eines Applets umfasst folgende
Phasen:
– Erzeugen
– Initialisieren: init()
beim Laden der Seite
– Starten
start()
beim Sichtbarwerden
– Zeichnen
paint(), update()
– Stoppen
stop()
beim nicht
Sichtbarwerden
– Löschen
destroy()
beim nicht mehr
benötigen
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-28
HTML und Applets
Applets werden von einer HTML Seite aus geladen.
<BODY>
<APPLET CODE="class-file Name"
WIDTH=breite HEIGHT= hoehe>
<APPLET>
Weitere Elemente:
© Helmar Burkhart
•
CODEBASE, ARCHIVE,ALT,
NAME, PARAM,...
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-29
Einfaches Applet
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet {
public void paint(Graphics g) {
g.drawString("First applet", 10, 10);
g.drawRoundRect(20,20,50,50,10,10);
}
}
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-30
Parameterübergabe
<applet code=AppletClassName width=100 height=100>
<param name=p1 value="some text">
<param name=p2 value="some more text">
</applet>
String parameterName = "p1";
String value = applet.getParameter(parameterName);
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-31
System Properties
Key
Meaning
"file.separator"
File separator (for example, "/")
Java class version number
Java vendor-specific string
Java vendor URL
Java version number
Line separator
Operating system architecture
Operating system name
Path separator (for example, ":")
"java.class.version"
"java.vendor"
"java.vendor.url"
"java.version"
"line.separator"
"os.arch"
"os.name"
"path.separator"
String newline = System.getProperty("line.separator");
http://java.sun.com/docs/books/tutorial/applet/practical/properties.html
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-32
Zugriff auf den Browser
try {
URL url = new URL(getDocumentBase(),
"http://hostname.com/page.html");
applet.getAppletContext().showDocument(url);
}
catch (MalformedURLException e) {
}
applet.showStatus("Your Message Here");
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-33
Audio
public void init() {
// Load audio clip
AudioClip ac = getAudioClip(getDocumentBase(),
”name.au”);
// Play audio clip
ac.play();
// Stop playing audio clip
ac.stop();
// Play audio clip continuously
ac.loop();
}
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-34
Bilder
Image image;
public void init() {
// Load image
image = getImage(getDocumentBase(),
/xxx.gif");
}
public void paint(Graphics g) {
// Draw image
g.drawImage(image, 0, 0, this);
}
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-35
Bilder
m_images = new Image[12];
MediaTracker tracker = new MediaTracker (this);
try
{
for (int i = 0; i <= 11; i++)
{
m_images[i] = getImage (getDocumentBase (),
"img" + i + ".png");
tracker.addImage(m_images[i], i);
}
tracker.waitForAll ();
}
catch (Exception e){}
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-36
Taschenrechner als Applet
public class CalcApplet extends JApplet
implements ActionListener{
public void init(){
contentPane = getContentPane();
....
<HTML>
<HEAD> <TITLE> Taschenrechner</TITLE> </HEAD>
<BODY> <APPLET CODE="CalcApplet.class" WIDTH=300 HEIGHT=200>
</APPLET>
</BODY>
</HTML>
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-37
Applets und
Browserabhängigkeiten
– Da nicht alle Browser immer auf dem
neuesten Stand der Java-Implementierung
sind, kann es Probleme wie etwa bei der
Verwendung von Swing geben. SUN bietet
seit Java 1.3 ein Plugin an.
– appletviewer ist ein Programm, das zur
SDK Umgebung gehört und mit dem
entsprechende Applets getestet werden
können.
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-38
Applet-Beispiele
Applet-Beispiele (teilweise mit Quellcode) finden sich
in der SDK Dokumentation,
sowie auf dem Internet:
• java.sun.com/applets/index.html
• lectureonline.cl.msu.edu/~mmp/applist/applets.htm
• javaboutique.internet.com/
• http://webphysics.davidson.edu/Course_Material/P
y230L/relativity/relativity.htm
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-39
http://www.wackerart.de/fractal.html
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-40
http://www.opensourcephysics.org/
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-41
Sicherheits Warnungen
November 04 - April 05
http://www.securityfocus.com/
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-42
http://www.heise.de/security/news/meldung/53544
© Helmar Burkhart
•
Webtechnologies (CS211) • Lektion 4: JavaScript and Applets
4-43
Herunterladen