2017-09-27 39 views
15

我试图实现的实质上是浏览器的取消按钮,但使用JavaFX的webview。这是我到目前为止的代码:你如何取消web视图加载网站?

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

但它有时工作,有时不工作。

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

回答

3

取消webEngine任务后,你可以尝试设置webEnginenull的内容:

webView.getEngine().load(null); 
3

WebEngine状态表的JavaScript的用户界面的方法和属性与其对应的WebEngine回调。

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


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

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

接着是

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

中,你要确保窗口的另一种方法是关闭的是定义一个事件,可以通过WebView's EventDispatcher当前节点。

// 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()"); 
+0

我没有试图关闭一个窗口,只是取消加载的网页。 – Pablo

+0

@Pablo'window.stop()'在这种情况下可以帮助你...? – nullpointer

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

是你的男孩

+3

是不是已经在问题中分享了? – nullpointer