我目前正在开发基于JavaFX的应用程序,用户可以在该应用程序中与世界地图上标记的地点进行交互.为此,我使用的方法类似于http://captaincasa.blogspot.de/2014/01/javafx-and-osm-openstreetmap.html([1 ])中描述的方法.
但是,我正面临一个难以调试的问题,该问题与使用WebEngine的setMember()方法注入嵌入式HTML页面的Javascript回调变量有关(另请参阅https://docs.oracle.com/javase/8/javafx /embedded-browser-tutorial/js-javafx.htm([2 ])用于官方教程).
运行程序一段时间后,回调变量无法预测地失去其状态!为了演示这种行为,我开发了一个最小的工作/失败示例.我在Windows 10计算机上使用64位的jdk1.8.0_121.
JavaFx应用程序如下所示:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Application;
import javafx.concurrent.Worker.State;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import netscape.javascript.JSObject;
public class WebViewJsCallbackTest extends Application {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
public static void main(String[] args) {
launch(args);
}
public class JavaScriptBridge {
public void callback(String data) {
System.out.println("callback retrieved: " + data);
}
}
@Override
public void start(Stage primaryStage) throws Exception {
WebView …Run Code Online (Sandbox Code Playgroud)