JavaFX WebView 弹出处理程序未尝试加载页面
JavaFX WebView popup handler not attempting to load page
我有一个 WebView object,我在其中添加了一个弹出处理程序:
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 引擎永远不会加载任何内容。
有没有办法在回调接口中获取 window.open 函数的目标,或者捕获阻止弹出窗口传递到目标的任何错误?
谢谢!
为 conf:
协议创建你的 own protocol handler,这样就不会产生异常,你应该能够拦截并适当地响应请求。
我有一个 WebView object,我在其中添加了一个弹出处理程序:
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 引擎永远不会加载任何内容。
有没有办法在回调接口中获取 window.open 函数的目标,或者捕获阻止弹出窗口传递到目标的任何错误?
谢谢!
为 conf:
协议创建你的 own protocol handler,这样就不会产生异常,你应该能够拦截并适当地响应请求。