[Beschreibung] [Quelltext] [Erläuterung] [Referenz]

JavaScript steuert Java



Java steuert JavaScript

Beschreibung

Die Laufschrift wurde als Java-Applet realisiert. Über das Formular unterhalb der Laufschrift ist es möglich, Erscheinungsbild und Inhalt der Laufschrift zu ändern.
Unterhalb des Formulars wiederum befindet sich ein weiteres Java-Applet. Eine Anwendereingabe in das Textfeld wird vom Applet mit Hilfe von JavaScript an das Formular weitergegeben.
Zusätzlich werden von JavaScript noch einige Meldungen in die "Java-Console" (bei Netscape unter "Options / Show Java Console") ausgegeben.

Quelltext


<head>
<script language="JavaScript">
<!--

  if(document.applets != null && java != null) {
    var System=java.lang.System;
    System.err.println("\nJetzt sind wir auf Seite 23\n");
  } else {
    System=null;
  }

  function add_text(dele) {
    if(document.form1.text.value != "") {
      if(System != null)System.err.println("add_text: "+
        document.form1.text.value);
      document.lauf.add_text(" +++ "+document.form1.text.value);
      if(dele != null && dele)document.form1.text.value="";
    }
  }
//-->
</script>
</head>
<body>
<applet code="lauf.class" name="lauf" width="500" height="100">
<param name="text" value="ich bin ein Java-Applet">
<param name="font" value="Helvetica">
<param name="size" value="24">
<param name="step" value="5">
<param name="col"  value="0000ff">
<param name="border" value="false">
</applet>
<p>

<form name="form1" onSubmit="return false;">

<select name="font"
 onChange="document.lauf.set_font(document.form1.font.options[document.form1.font.selectedIndex].value);">
<option value="Helvetica" selected>Helvetica
<option value="TimesRoman">TimesRoman
<option value="Courier">Courier
</select>

<select name="size"
 onChange="document.lauf.set_size(document.form1.size.options[document.form1.size.selectedIndex].value);">
<option value="12">12
<option value="14">14
<option value="18">18
<option value="24" selected>24
<option value="36">36
</select>
<select name="col"
 onChange="document.lauf.set_col(document.form1.col.options[document.form1.col.selectedIndex].value);">
<option value="000000">schwarz
<option value="ff0000">rot
<option value="00ff00">grün
<option value="0000ff" selected>blau
<option value="ffff00">gelb
<option value="ff00ff">lila
<option value="00ffff">türkis
</select>
<br>
<input type="text" name=text size=64 onChange="add_text(true);">
<br>
<input type="button" value="Text anhängen" onClick="add_text(true);">
<input type="button" value="Text löschen" onClick="document.lauf.clear_text();">
</form>

<applet code="jsdemo.class" name="jsdemo" width="500" height="50" MAYSCRIPT>
</applet>
</body>

lauf.java

jsdemo.java

Erläuterung

Im oben demonstrierten Beispiel wurde das Applet "lauf.class" mit dem Parameter name="lauf" in die HTML-Seite eingebunden. In dem zugehörigen Java-Quelltext werden eine Reihe von Methoden als public definiert:
 public void set_font(String para) 
 public void set_size(String para) 
 public void set_col(String para) 
 public void add_text(String para)
 public void clear_text()
Damit kann von JavaScript aus auf die Methoden zugegriffen werden;
z.B. document.lauf.add_text() greift auf die Methode "add_text" des Applets zu und bewirkt, daß der als Parameter übergebene Text an die Laufschrift angehängt wird.

Das Java-Applet "jsdemo.class" wurde mit der Option "MAYSCRIPT" eingebunden. Damit wird dem Applet gestattet, auf JavaScript zuzugreifen.
In dem entsprechenden Java-Quelltext werden die Java-Methoden "eval" und "call" zum Zugriff auf JavaScript verwendet. Mit "eval" wird ein komplette JavaScript-Anweisung ausgeführt, mit "call" eine JavaScript-Function aufgerufen.


Referenz

[
applets-array] [LiveConnect]

applets-array

Das applets-Array enthält alle auf der aktuellen Seite verwendeten Java-Applets. Die einzelnen Elemente des Feldes sind applet-Objekte.
applets.length gibt die Anzahl der Elemente im applets-Array an.

Die Eigenschaften und Methoden der einzelnen applet-Objekte werden von dem eigentlichen Java-Applet bestimmt. Alle im Applet als public definierten Methoden und Eigenschaften stehen zur Verfügung.

LiveConnect

Als LiveConnect wird von Netscape die Funktionalität bezeichnet, daß JavaScript auf öffentliche Java-Eigenschaften und Methoden zugreifen kann und daß Java auf JavaScript zugreifen kann. Die letztere Funktionalität muß ausdrücklich freigegeben werden: dazu ist im <applet>-Tag der Parameter "MAYSCRIPT" anzugeben.

Für den Zugriff von JavaScript auf Java gibt es zwei Möglichkeiten:
1. Über das oben beschriebene applet-Objekt können die Methoden des jeweiligen Applets aufgerufen werden.
2. Es kann direkt die Funktionalität der einzelnen Java-Pakete genutzt werden. Um z.B. von JavaScript aus in die Java-Console zu schreiben, kann die Java-Klasse "System" aus dem Paket "java.lang" benutzt werden :

 var System = java.lang.System
 System.err.println("Greetings from JavaScript")

Für den Zugriff von Java auf JavaScript ist die Klasse "JSObject" aus dem Paket "netscape.javascript" erforderlich.
Zunächst muß mit der Methode getWindow ein Objekt vom Typ "JSObject" ermittelt werden. Dies stellt dann folgende Methoden bereit :
call Aufruf einer in JavaScript definierten function
eval Ausführung einer JavaScript-Anweisung
getMember Zugriff auf ein benamtes Element eines JavaScript-Arrays
getSlot Zugriff auf ein Element eines JavaScript-Arrays über den Index
removeMember entfernt ein benamtes Element aus einem JavaScript-Array
setMember weist einem benamten Element eine Eigenschaft zu
setSlot weist einem über den Index bezeichneten Element eine Eigenschaft zu
toString Umwandlung in eine string-Variable

Nähere Informationen zu LiveConnect finden Sie direkt bei Netscape.
API: netscape.javascript.JSObject


Auf der nächsten Seite beschäftigen wir uns mit Plugins und MimeTypes.

home
Erstellt von © Uwe Brinkmann - bingo e.V. - Stand 12.05.98