当加载到浏览器中的网页调用 Window.alert 或 window.confirm 时,我正在使用 JavaFX/JXBrowser 显示警报/对话框。但是,我不知道如何将确认对话框的结果(真/假)返回给 JS。由于 alert.showAndWait() 是一个阻塞函数,JS 应该等待这个结果。但是,showAndWait 也在 Platform.runLater runnable 中调用,所以我无法返回结果。除了编写 JS 函数来执行真/假代码并根据 showAndWait 的结果调用这些函数之外,还有其他选择吗?
browser.setDialogHandler(new DialogHandler() {
@Override
public CloseStatus onConfirmation(DialogParams params) {
Platform.runLater(new Runnable() {
@Override
public void run() {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Yes/No");
alert.setHeaderText(null);
alert.setContentText("Yes/No");
Optional<ButtonType> result = alert.showAndWait();
if(result.isPresent())
{
if(result.get()==ButtonType.YES)
{
//Send true to calling JS function
}else
{
//Send false to calling JS function
}
}else
{
System.out.println("No result!");
}
}
});
return null; //because I need to return something and I can't figure out how to get values from the runnable
}
...
}