我尝试创建一个简单的示例,演示从Javascript到Java的回调,基于WebEngine javadoc中的最后一个示例(从JavaScript回调到Java)。但是当我在WebView中点击链接时,Java方法没有被调用,页面消失了。
注意:当使用
public class TestOnClick extends Application {
@Override
public void start(Stage stage) throws Exception {
try {
final WebView webView = new WebView();
final WebEngine webEngine = webView.getEngine();
Scene scene = new Scene(webView);
stage.setScene(scene);
stage.setWidth(1200);
stage.setHeight(600);
stage.show();
String webPage = "<html>\n"
+ " <body>\n"
+ " <a href=\"\" onclick=\"app.onClick()\">Click here</a>\n"
+ " </body>\n"
+ "</html>";
System.out.println(webPage);
webView.getEngine().loadContent(webPage);
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", new JavaApp());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
public static class JavaApp {
public void onClick() {
System.out.println("Clicked");
}
}
}
注意:当使用
webView.getEngine().getLoadWorker().exceptionProperty().addListener(...)
监控加载工作器时,我没有看到 WebView 抛出任何异常。
JavaApp
)必须声明为public
。 - spongebob