2017-09-27 3 views
15

내가 구현하려고하는 것은 기본적으로 브라우저의 취소 버튼이지만 JavaFX의 webview를 사용하는 것입니다. 이것은 내가 지금까지 가지고있는 코드입니다 :웹 사이트를로드하는 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와 자바 스크립트 사용자 인터페이스의 메서드와 속성 콜백.

여기서 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