如何取消加载网站的webview?

时间:2017-09-27 17:47:55

标签: java javafx webview javafx-webengine

我想要实现的实际上是浏览器的取消按钮,但使用JavaFX的webview。这是我到目前为止的代码:

Worker<Void> loadWorker = webView.getEngine().getLoadWorker();
if (loadWorker != null) {
    Platform.runLater(() -> loadWorker.cancel());
}

但它有时会起作用,有时却不起作用。

取消加载网页的webview / webengine任务的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

取消webEngine任务后,您可以尝试将webEngine的内容设置为null

webView.getEngine().load(null);

答案 1 :(得分:2)

WebEngine 中的表格列出了 JavaScript用户界面方法和属性及其对应的WebEngine回调。

window.close()对应onVisibilityChanged的{​​{1}}回调。

在这种情况下,尝试快速的方法可能是:

WebEngine

后跟

webEngine.getOnVisibilityChanged().handle(closeWindowEvent); //event definition below

确保窗口关闭的另一种方法是定义一个事件,该事件可由 WebView's EventDispatcher 为当前节点分派。

webEngine.executeScript("window.close()");

如果尝试取消仅加载网页,您可以使用// Here the event to be dispatched for closing the window shall be WebEvent<Boolean> closeWindowEvent = new WebEvent<>(webEngine, VISIBILITY_CHANGED, Boolean.FALSE); webView.getEventDispatcher().dispatchEvent(closeWindowEvent, null); // no further events 来执行此操作:

executeScript

答案 2 :(得分:0)

webView.getEngine().getLoadWorker().cancel()

是你的男孩