2017-09-27 79 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