JavaFX WebView 弹出处理程序未尝试加载页面

JavaFX WebView popup handler not attempting to load page

本文关键字:加载 程序 WebView 处理 JavaFX      更新时间:2023-09-26

我有一个WebView对象,我添加了一个弹出处理程序,如下所示:

WebView view = new WebView();
WebEngine engine = view.getEngine();
engine.setCreatePopupHandler(new Callback<PopupFeatures, WebEngine>() {
    public WebEngine call(PopupFeatures param) {
        Stage stage = new Stage(StageStyle.UTILITY);
        WebView popupView = new WebView();
        stage.setScene(new Scene(popupView));
        stage.show();
        return popupView.getEngine();
     }
});

当加载典型的网页(如 http://www.google.com)时,这将按预期工作。我遇到麻烦的地方是当JavaScript打开一个要传递给Windows命令行的URI时。特别是我试图通过传递"conf:sip..." 来启动 Lync 电话会议。到命令行:

window.open("conf:sip...")

我知道WebView无法加载这样的位置,这不是主要问题。我可以捕获格式错误的URLException,然后自己传递命令。问题是弹出处理程序似乎永远不会传递目的地。我尝试将侦听器添加到locationProperty和workDoneProperty,以及向原始引擎和popupView引擎添加onError侦听器。弹出窗口似乎永远不会传递窗口的目的地。open 函数和 popupView 引擎从不加载任何内容。

有没有办法在回调接口中获取 window.open 函数的目标或捕获阻止弹出窗口传递目标的任何错误?

谢谢!

conf: 协议创建自己的协议处理程序,则不会生成异常,您应该能够拦截并适当地响应请求。