如何取消加载网站的 Web 视图?

2022-09-03 15:55:16

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

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

但它有时有效,有时不起作用。

取消加载页面的Webview/Web引擎任务的正确方法是什么?


答案 1

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

webView.getEngine().load(null);

答案 2

WebEngine 中的表声明了 JavaScript 用户界面方法和属性及其相应的 WebEngine 回调。

其中对应于 的回调。window.close()onVisibilityChangedWebEngine


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

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

后跟

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

确保窗口关闭的另一种方法是定义一个事件,该事件可由 WebView 的事件部署程序为当前节点调度。

// 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

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

推荐