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

时间:2015-03-11 02:48:53

标签: java javascript webview javafx popup

我有一个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无法加载这样的位置,这不是主要问题。我可以捕获MalformedURLException然后自己传递命令。问题是弹出处理程序似乎永远不会传递目标。我已经尝试向locationProperty和workDoneProperty添加一个监听器以及一个原始引擎和popupView引擎的onError监听器。弹出窗口似乎永远不会传递给window.open函数的目标,而popupView引擎永远不会加载任何东西。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

conf:协议创建own protocol handler,然后不会生成任何异常,您应该能够拦截并对请求做出适当的响应。