Сбой JavaFx WebEngine.executeScript без загрузки Firebug-lite на веб-странице
Я писал JavaFx с двумя WebView, один из которых обновляется с помощью синхронизированных вызовов WebEngine.executeScript(functionName(много данных)). Вызов выполняется после получения работника WebEngine и ожидания получения SUCCEEDED в измененном состоянии. Это работает. В процессе очистки я удалил firebug-lite со страницы, которая использовалась во время разработки для проверки прогресса. Теперь это не работает.
Если я беру скрипт из журналов консоли в NetBeans(8.2), загружаю страницу в chrome и вызываю (вставляю в нее) представление консоли, это работает. Я могу раскомментировать элемент скрипта, содержащий "getfirebug.com", и он работает как прежде. Кажется, что в firebug-lite (версия 1.2) что-то отсутствует в моих скриптах, перехватывает ошибку или переопределяет что-то в моем коде, что вызывает ошибку. Я использую jquery-3.2.1.js на веб-странице.
data_eng.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
@Override
public void changed(ObservableValue ov,
State oldState,
State newState) {
if (newState == State.SUCCEEDED) {
Object executeScript =
data_eng.executeScript( **stScriptText**) ;
System.out.println(executeScript.toString());
}
}
});
При вызове вышеуказанного в консоли NetBeans не отображаются ошибки. Но это не работает. Единственная ошибка, отображаемая в консоли NetBeans, возникает ПОСЛЕ закрытия веб-просмотра с загрузкой или без загрузки firebug-lite на веб-странице. (Исключение в потоке "Поток приложения JavaFX" netscape.javascript.JSException: TypeError: undefined не является функцией).
Обновление (работает сейчас):
Я работал над этим часами. Поскольку это мой первый проект с JavaFx, я многое не понял в этой среде. По сути, я заблокировал вторичный поток в ожидании изменения состояния, которое никогда не происходило. FireBug должен запускать функции, управляемые таймером, которые приводят к изменениям состояния. Это было исправлено путем выполнения сбора фоновой информации в потоке таймера и с помощью Platform.runLater() для отправки нового содержимого в WebView без "прослушивания" состояния LoadWorker. Поскольку WebView находится в основном потоке, похоже, что Platform.runLater сработает, когда WebView все равно не будет занят. Или, кажется, но сейчас это работает.
Комментарии будут приветствоваться, так как я все еще чувствую, что что-то упустил. Новое в этой среде программирования NetBeans/JavaFx. Я рекомендовал его своему клиенту, так как он лучше подходит для решения поставленной задачи. Это работает, но это заставило меня нервничать на некоторое время.