| Jede Webseite besteht aus einem Objekt-Baum (tree) nach dem DOM (Document Object Model)-Modell. Auch ein darin enthaltenes Java-Applet ist ein DOM-Element. |
Hier werden einige Möglichkeiten demonstriert,
die sich für die dynamische Gestaltung von Webseiten ergeben. Derzeit funktionieren einige, jedoch noch nicht alle Beispiele, je nach Browser und Version. |
Java
|
Starker Kaffee für EntwicklerInnen |
| Demo | Java-Applets auf Befehl laden oder löschen. |
| <applet> | Java-Applets als <embed>-Element behandeln |
| <object> | Java-Applets als <object>-Element behandeln |
| Löschen | Löschen aller childNodes eines DOM-Elements |
| Verzögerung | Verzögertes Laden von Java-Applets |
Laden von Java-Applets 'auf Befehl' |
|
| DOM-Methoden bieten die Möglichkeit, beliebige Elemente einer Webseite live zu erzeugen, zu ändern oder zu löschen. Das gilt auch für Java-Applets. |
Hier wird in 9
Sekunden oder auf ihren Befehl ein Java-Applet geladen. |
|
Live- |
Wenn das Applet nicht angezeigt wird, dann sollten sie testen, ob ihr Browser überhaupt Java beherrscht. |
| Details zum Laden und Löschen von Java-Applets finden sie weiter unten auf dieser Seite. | |
Java-Applet als <applet> |
|
|
Hier wird gezeigt, wie man ein Applet als <applet>-Element an
einen DOM-Knoten anhängt, in diesem Beispiel an das
Element <div id="jav1">,
welches sich an einer beliebigen Stelle im <body> der Webseite
befinden kann. Rechts der HTML-Code - Allerdings wird das <applet>-Element in diesem Beispiel erst mit Javascript erzeugt ! |
HTML-Code: leerer Knoten "jav1" (befindet sich real im anfangs gelben Feld unten) <div id="jav1"></div>
Der gleiche Knoten mit Applet
<div id="jav1">
<applet code="rubik.class" style="height:120px; width:120px;" ></applet> </div> |
|
Zuerst wird der DOM-Knoten <div id="jav1">
mit getElementById adressiert und der
Variablen njav zugewiesen. Das <applet>-Element wird mit createElement erzeugt und der Variablen napp zugewiesen. Nun werden die Attribute des <applet>-Elements erzeugt: Jedes Attribut (code, width, height) wird mit createAttributeNode erzeugt, sein Wert mit nodeValue zugewiesen. Danach wird der "fertige" Attribut-Knoten mit setAttributeNode an das <applet>-Element angehängt. Zuletzt wird das fertige <applet>-Element an das bestehende Element <div id="jav1"> angehängt - Damit wird das Java-Applet angezeigt. Wenn der adressierte DOM-Knoten <div id="jav1"> nicht leer ist, müssen anfangs seine childNodes gelöscht werden. Das wird hier mit Funktion childnodes_delete (s.u.) ausgeführt. |
Javascript-Code:
function java_applet(id,src,x,y) {
// childnodes_delete(id);
}
var njav=document.getElementById(id); var napp=document.createElement("applet"); var att=document.createAttribute("code"); att.nodeValue=src; napp.setAttributeNode(att); att=document.createAttribute("width"); att.nodeValue=x; napp.setAttributeNode(att); att=document.createAttribute("height"); att.nodeValue=y; napp.setAttributeNode(att); njav.appendChild(napp); |
|
Live- Im anfangs gelben Feld rechts unterhalb befindet sich das Element <div id="jav1">. Sie können die gezeigten Funktionen mit diesen Links auslösen:
<a href="javascript:java_applet('jav1','rubik.class',120,120)">
applet erzeugen
</a>
<a href="javascript:childnodes_delete('jav1')"> childNodes löschen </a> |
|
|
Klicken sie die Links im Absatz oberhalb, um das Applet zu erzeugen oder zu löschen. Wenn das Java-Applet auf Befehl nicht angezeigt wird, dann sollten sie testen, ob ihr Browser überhaupt Java beherrscht. |
Hier wird auf ihren Befehl ein Java-<applet> in das Element
<div id="jav1"></div> geladen. |
Java-Applet als <object> |
|
|
Hier wird gezeigt, wie man ein Applet als <object>-Element an
einen DOM-Knoten anhängt - In diesem Beispiel an das
Element <div id="jav2">,
welches sich an einer beliebigen Stelle im <body> der Webseite
befinden kann. Rechts der HTML-Code - Allerdings wird das <object>-Element in diesem Beispiel erst mit Javascript erzeugt ! |
HTML-Code: leerer Knoten jav2 (befindet sich real im anfangs gelben Feld unten) <div id="jav2"></div>
Der gleiche Knoten mit Applet
<div id="jav2">
<object classid="java:test2.svg"
codetype="application/java"
</object>width="120" height="120"> </div> |
|
Zuerst wird der DOM-Knoten <div id="jav2">
mit getElementById adressiert und der
Variablen njav zugewiesen. Das <object>-Element wird mit createElement erzeugt und der Variablen nobj zugewiesen. Nun werden die Attribute des <object>-Elements erzeugt: Jedes Attribut wird mit createAttributeNode erzeugt, sein Wert mit nodeValue zugewiesen. Danach wird der "fertige" Attribut-Knoten mit setAttributeNode an das <object>-Element angehängt. Zuletzt wird das fertige <object>-Element an das bestehende Element <div id="jav2"> angehängt - Damit sollte das Applet angezeigt werden - Funktioniert mit Browsern der Mozilla / Firefox - Familie. Wenn der adressierte DOM-Knoten <div id="jav2"> nicht leer ist, müssen anfangs seine childNodes gelöscht werden. Das wird hier mit Funktion childnodes_delete (s.u.) ausgeführt. |
Javascript-Code:
function java_object(id,src,x,y) {
// childnodes_delete(id);
var njav=document.getElementById(id);var nobj=document.createElement("object"); var att=document.createAttribute("classid"); att.nodeValue="java:"+src; nobj.setAttributeNode(att); var att=document.createAttribute("codetype"); att.nodeValue="application/java"; nobj.setAttributeNode(att); att=document.createAttribute("width"); att.nodeValue=x; nobj.setAttributeNode(att); att=document.createAttribute("height"); att.nodeValue=y; nobj.setAttributeNode(att); njav.appendChild(nobj); |
|
Live- Im anfangs gelben Feld rechts unterhalb befindet sich das Element <div id="jav2">. Sie können die gezeigten Funktionen mit diesen Links auslösen:
<a href="javascript:java_object('jav2','rubik.class',120,120)">
object erzeugen
</a>
<a href="javascript:childnodes_delete('jav2')"> childNodes löschen </a> |
|
|
Klicken sie die Links im Absatz oberhalb, um das Applet-Objekt zu erzeugen oder zu löschen. Wenn das Java-Applet nicht angezeigt wird, dann verwenden sie vermutlich M$IE (Fehler bei Java-Objekten) oder sie sollten testen, ob ihr Browser überhaupt Java beherrscht. |
Hier wird auf ihren Befehl ein Java-<object> in das Element
<div id="jav2"></div> geladen. |
Automatische Auslösung von DOM-Arbeiten |
|
|
DOM-Methoden greifen auf Elemente (Knoten) der Webseite zu und lassen sich daher
erst nach dem vollständigen Laden ausführen. Dafür eignet sich besonders das onLoad-Ereignis (event). Das onLoad-Attribut m <body>-Element verweist auf eine Javascript-Funktion (hier my_onload). |
<html>
<head> ... <script type="text/javascript">
function my_onload() {
</script>java_applet('jav1','tst.class',50,50); // andere Aufgaben ...
}
</head> <body onload="my_onload()"> ... </body> </html> |
|
Eine weitere Möglichkeit bietet das Timeout-Ereignis: setTimeout verweist auf eine Javascript-Funktion, welche nach der angegebenen Zeit in Millisekunden (hier: 1000ms = 1 s) ausgerufen wird. |
Ausführung der Funktion java_applet 1 Sekunde (1000ms)
nach dem Start der Funktion my_onload:
function my_onload() {
window.setTimeout("java_applet('jav1','tst.class',50,50)", 1000);
}
|
| Periodische Auslösung von Timeouts: Eine Funktion kann sich mit setTimeout auch selbst aufrufen. |
function do_repeat() {
// do something
window.setTimeout("do_repeat()", 1000);
|
| ♦ Details zu DOM, Javascript | |
|