2017-09-27 23 views
15

Điều tôi đang cố gắng triển khai thực chất là nút hủy của trình duyệt nhưng sử dụng webview của JavaFX. Đây là mã tôi có cho đến thời điểm này:Làm thế nào để bạn hủy một trang web tải một trang web?

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

nhưng đôi khi đôi khi không hoạt động và đôi khi không.

Cách thích hợp để hủy tác vụ tải trang web/webengine là gì?

Trả lời

3

Sau khi hủy nhiệm vụ webEngine, bạn có thể thử với thiết lập các nội dung của webEngine để null:

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

Bảng trong WebEngine bang các JavaScript phương pháp giao diện người dùng và các thuộc tính với WebEngine tương ứng của họ callbacks.

Trường hợp window.close() tương ứng với số WebEngine gọi lại là onVisibilityChanged.


Một cách nhanh chóng để thử ra, trong trường hợp đó, có thể là:

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

theo sau là một

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

Một cách khác mà bạn chắc chắn rằng cửa sổ bị đóng là xác định sự kiện có thể được gửi đi bởi WebView's EventDispatcher cho nút hiện tại.

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

Trong trường hợp cố gắng hủy tải trang web chỉ, bạn có thể tận dụng các executeScript làm:

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

tôi m không cố gắng đóng cửa sổ, chỉ cần hủy tải trang web. – Pablo

+0

@Pablo 'window.stop()' sẽ giúp bạn ở đó trong trường hợp đó ...? – nullpointer

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

là cậu bé của bạn

+3

Không giống như đã được chia sẻ trong câu hỏi chưa? – nullpointer

Các vấn đề liên quan