2017-09-27 10 views
15

私が実装しようとしているのは、基本的にはブラウザのキャンセルボタンですが、JavaFXのwebviewを使用しています。これは私が今までに持っているコードです:ウェブサイトの読み込みをキャンセルするにはどうすればよいですか?

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

しかし、時にはうまく動作しないことがあります。

ページを読み込むwebview/webengineタスクをキャンセルする適切な方法は何ですか?

答えて

3

webEngineタスクをキャンセルした後、あなたはwebEnginenullの内容を設定して試すことができます:

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

WebEngine状態でテーブル、それに対応するWebEngineとJavaScriptのユーザ・インタフェース・メソッドとプロパティコールバック。

window.close()は、WebEngineonVisibilityChangedコールバックに対応します。


試す簡単な方法、その場合には、次のようになります。

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

あなたは、ウィンドウを確認している

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

別の方法が続きます閉じられているイベントは、WebView's EventDispatcherによってディスパッチされたイベントを定義することです現在のノード。唯一のWebページをロード解除しようとした場合には

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

関連する問題