Zum registrieren einer JavaScript-callback-in ein Java-Applet?
Entwickle ich eine unsichtbare Java-Applet, das wird kontrolliert, vollständig von JavaScript.
Kann ich nennen, die den applet-Java-Methoden leicht, und ich kann den Aufruf von JavaScript-Methoden innerhalb des Applets mithilfe netscape.javascript.JSObject.getWindow(this).call()
.
Aber um sich zu registrieren einer JavaScript-callback in das applet, ich denke, ich bräuchte eine JavaScript-Funktion, die ein Objekt der Art.
Ich würde das gerne machen:
public void registerCallback( SomeJavascriptFunction func ) { ... }
Konnte ich aus Javascript aufgerufen werden:
myapplet.registerCallback(function(){ alert("called back"); });
So konnte ich rufen Sie diese Funktion in späteren code:
func.call( ... );
Macht soetwas existieren? Wie kann ich dies tun?
Rigth jetzt denke ich an die Erstellung einiger Javascript, um diese zu bewältigen callback-Mechanismus, anstatt das zu tun, so von dem applet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ganz neu in Java <-> JavaScript-Kommunikation, wie ich geplant, um es in dieser Woche. Eine gute Gelegenheit, hier... 🙂
Nach einigen tests, es scheint, Sie können nicht passieren Sie eine JS-Funktion, um ein Java-applet. Es sei denn, ich Tue es der falsche Weg...
Habe ich versucht:
Nennen, wo ist (sind) definiert als:
Wenn ich den pass einer JS-Funktion (alle tests in FF3), bekomme ich eine null auf der Java-Seite.
Beachten Sie, dass die folgende Java-routine ermöglicht die Anzeige der JS-code von DumberTest Funktion!
Auf den Punkt: ich habe eine JS-Funktion:
Extrahiere ich den Namen der JS-Funktion aus der toString-Ergebnis, und übergeben Sie es an Java-applet. Ich glaube nicht, dass wir bewältigen können anonyme Funktionen, da Java-Aufruf von JS-Funktionen, indem Namen.
Java-Seite:
Merke ich, das ist ein wirklich alte Frage, aber es auf Platz 2 in einem meiner sucht etwas anderes, und ich denke, die unten, kann helfen, jemand anderes, der Sie findet, diese.
Ich habe vor kurzem etwas ähnliches gemacht, wobei ein Java-applet aufrufen muss zurück in JavaScript auf die Fertigstellung einer Aufgabe, ruft verschiedene Funktionen auf Erfolg oder Fehler. Wie hat sich der trend im Laufe der letzten Zeit, meine Bedürfnisse wurden, zu nennen, die in anonym definierten Funktionen als Parameter weitergegeben werden, um andere Funktionen. Dies ist das javascript auf der client-Seite:
Wie bereits in den anderen Antworten, kann Java nur call-in-JavaScript-Methoden, mit Namen. Dies bedeutet, dass Sie eine Globale callback-Methode, die dann aufrufen kann, die in anderen Methoden, wie es sein muss:
Dieser Funktion direkt innerhalb des Java-applet:
Könnten Sie halten, um die Referenz der parameter Objekt übergeben, auf unbestimmte Zeit, wenn Sie wollte, es zu benutzen als eine form der registrierten callback-eher als eine nebensächliche, wenn es sein muss etc.
In unserem Fall die Bearbeitung kann einige Zeit in intenstive, so dass wir eigentlich drehen bis ein anderer thread - der Rückrufe noch arbeiten hier auch:
gewinnen.eval () - Aufruf einer vordefinierten javascript.