2

JavaFX を使用して JavaScript から Java Function をコールバックとして呼び出そうとしています。まず、初期化中にウィンドウのメンバーとして Java クラスを追加しました。

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);

Java リクエスト関数は、 内に次のように記述されていますPlatform.runLater()

String script = "document.makeRequest('"+inputString+"')";
currentWebEngine.executeScript(script);

JavaScript 側で非同期要求が行われた後、Java 関数を呼び出して結果を返す必要があります。ただし、その側で例外が発生しています。引数なしで関数を呼び出してみましたが、まだ機能しません:

window.java.returnResult();

しかし、次の例外が発生します。

実行可能な netscape.javascript.JSException の例外: TypeError: 'undefined' はオブジェクトではありません

makeRequest() 関数で直接呼び出しようとしても同じエラーが発生したため、非同期要求とは関係ありません。その分野で私が何を間違えたのか分かりますか?前のコードは、アプレットではなく、デスクトップ JFrame アプリケーションに統合されています。

4

2 に答える 2

3

問題の解決策を見つけることができました。次のコードは少し早い段階で呼び出されたため、クラスは JavaScript 内に登録されていません。

JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);

Web エンジンのリスナーで呼び出したところ、うまくいきました。

于 2013-05-07T14:11:55.453 に答える