Как вы отменили веб-просмотр загрузки веб-сайта?

То, что я пытаюсь реализовать, - это, по сути, кнопка отмены браузера, но использующая веб-просмотр JavaFX. Это код, который у меня есть до сих пор:

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

но он иногда работает, а иногда и нет.

Каков правильный способ отмены задачи webview/webengine по загрузке страницы?

Ответ 1

После отмены задачи webEngine вы можете попробовать установить содержимое webEngine в null:

webView.getEngine().load(null);

Ответ 2

В таблице WebEngine указаны методы и свойства пользовательского интерфейса JavaScript с соответствующими обратными вызовами WebEngine.

Где window.close() соответствует обратному сообщению onVisibilityChanged WebEngine.


Быстрый способ опробовать в этом случае может быть:

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

а затем

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

Другой способ, по которому вы закрываете окно, - это определить событие, которое может быть отправлено WebView EventDispatcher для текущего node.

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

Ответ 3

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

- ваш мальчик