Сбой 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. Я рекомендовал его своему клиенту, так как он лучше подходит для решения поставленной задачи. Это работает, но это заставило меня нервничать на некоторое время.

0 ответов

Другие вопросы по тегам