Alexander Foken: + (JAVASCRIPT) - Ich seh den Wald vor lauter Bäumen nicht

Beitrag lesen

Moin Moin !

Ich habe:
* ein Java-Applet, daß die Methode "public String getJavaInfo()" implementiert
* eine Test-HTML-Seite, die dieses Applet einbindet
* Javascript in der Seite, das diese Methode aufruft
... und ein Timing-Problem:

Der Browser (diverse aus den letzten paar Jahren, Minimum IE4/NN4/Opera6) lädt die Seite, führt dabei den eingebetteten Javascript-Code aus, irgendwann davor oder danach wird das Java-Applet geladen, und irgendwann ist das Applet auch initialisiert. Die getJavaInfo()-Methode funktioniert, sobald alles geladen ist. Ein Klick auf den Button zeigt den erwarteten String in einer alert-Box an.

Blöderweise ist das Applet erst "lange" nach dem Ausführen des Javascript-Code zur Zusammenarbeit bereit, selbst im onLoad-Handler des Bodys ist das Applet noch nicht fertig. So lange ist document.applets[0].getJavaInfo nicht vorhanden.

Die Klasse netscape.javascript.JSObject kommt aus zwei Gründen nicht in Frage:
1. Das Applet muß in *jeden* Java-fähigen Browser laufen, und nicht jeder bringt diese Klasse mit.
2. Wenn das Applet geladen ist, ist das Dokument schon "fertig" und ich kann es nicht mehr ändern.

Ich möchte aber gerne, daß das Ergebnis der getJavaInfo()-Methode als preformatierter Text mitten im Dokument auftaucht, damit es ein unbedarfter User ("Was ist eine Maus?") mir einen Ausdruck der Seite aus seinem Browser zukommen lassen kann. Das Ergebnis der getJavaInfo()-Methode ist ein viele Zeilen langer String, der ohne Scrollen nie ins Applet-Fenster passen und deswegen beim Ausdruck verstümmelt werden würde.

So, irgendwo ist in meinem Gedankengang der Wurm drin. Nur wo?

Aktueller HTML-Quelltext:

<html>
<head>
<title>Java Testgebiet</title>
</head>
<body>
<applet scriptable mayscript name="infoapplet" code="JavaInfo.class" codebase="current.cgi/2003/07/21/18/57/48/" width="300" height="200">
<param name="invokedVia" value="applet">
<param name="mode" value="">
Doesn't work
</applet>
<br>
<pre>2003/07/21/18/57/48
<script language="Javascript" type="text/javascript"><!--
if (document.applets) {
 if (document.applets[0]) {
  if (document.applets[0].getJavaInfo) {
   document.write(document.applets[0].getJavaInfo());
  } else {
   document.write('missing getJavaInfo()');
  }
 } else {
  document.write('missing document.applets[0]');
 }
} else {
 document.write("Missing document.applets");
}
//--></script></pre>
<form>
<input type="button" value="click me" onclick="alert(document.applets[0].getJavaInfo())">
</form>
</body>
</html>

Alexander

--
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.\n\nToday I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"