<AI>
JavaFXのWebViewでJavaScriptの関数を実行するには、
WebEngineクラスの executeScript メソッドを使用します。
引数に関数名と渡したい引数を文字列として記述することで、Javaから簡単に呼び出せます。
基本的な呼び出し手順
webEngine.executeScript() を使用して、対象のJavaScript関数を実行します。
戻り値を受け取ることも可能です。
java
// WebEngineを取得
WebEngine webEngine = webView.getEngine();
// JavaScript関数を呼び出す(引数なし)
webEngine.executeScript("myFunction()");
// 引数を渡して呼び出し、戻り値を受け取る例
String result = (String) webEngine.executeScript("myFunctionWithArgs('Hello', 123)");
System.out.println(result);
具体的な実装例(全体コード)
以下は、読み込まれたHTML内のJavaScript関数をJavaのボタン押下で実行する最小限のサンプルコードです。
java
// ... (前述のimport文)
// HTMLを読み込み、ボタン押下で「myFunction()」を実行してコンソールに出力するシンプルな実装です。
webEngine.loadContent("<html><body><script>function myFunction(){return '呼び出されました';}</script></body></html>");
btn.setOnAction(e -> {
Object result = webEngine.executeScript("myFunction()");
System.out.println(result); // 「呼び出されました」と出力
});
// ... (残りのScene設定)
注意点・補足
オブジェクトの変換: executeScript の戻り値はJavaの型(String, Double等)に変換されますが、
JSオブジェクトは適宜キャストが必要です。
公式の詳細は JavaFX 8のJavaScriptドキュメント