我想要实现的实际上是浏览器的取消按钮,但使用JavaFX的webview。这是我到目前为止的代码:
Worker<Void> loadWorker = webView.getEngine().getLoadWorker();
if (loadWorker != null) {
Platform.runLater(() -> loadWorker.cancel());
}
但它有时会起作用,有时却不起作用。
取消加载网页的webview / webengine任务的正确方法是什么?
答案 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()
是你的男孩