<AI>
JavaFXの WebView におけるJavaScript処理は、
実現したいこと(Javaから呼ぶか、HTML側で動かすか)に応じてHTMLファイル内またはJavaコード内の適切な箇所に記述します。
1. HTMLファイル内に記述する(一般的なWeb開発と同じ)
通常のWebページと同様に、<script> タグ内に記述します。
WebView に読み込ませるHTMLファイルを作成し、その中に処理を組み込みます。
html
<!DOCTYPE html>
<html>
<head>
<title>サンプル</title>
<script>
// ここにJavaScriptの処理を記述します
function showMessage(msg) {
alert("JavaFXから呼び出されました: " + msg);
}
</script>
</head>
<body>
<button onclick="showMessage('HTML内のボタン')">クリック</button>
</body>
</html>
2. Javaコード内に記述して実行する(JavaFX側から制御)
Javaプログラムの中から直接JavaScriptのコードを実行したい場合は、
WebView の WebEngine を経由して executeScript() メソッドに文字列として処理を記述します。
java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
// 1. HTMLを読み込む
webEngine.load("http://example.com");
// または、Javaのコード内でHTML文字列を直接指定することも可能
// webEngine.loadContent("<html><body><h1 id='text'>Hello</h1></body></html>");
// 2. Javaコード側から直接JavaScriptを実行する
webEngine.executeScript("document.getElementById('text').innerText = 'Javaから変更しました';");
primaryStage.setScene(new Scene(webView, 600, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
3. JavaとJavaScriptで連携させる場合
ボタンクリックなどのJavaScriptのイベントをきっかけにJavaのメソッドを動かしたい場合は、
JSObject を使用してJavaのオブジェクトをJavaScriptの実行コンテキストに公開します。
詳細な連携方法やAPI仕様については、Oracle公式のJavaFX JavaScriptコマンド処理ガイドをご参照ください