Исключение в веб-просмотре Java FX?

Мой java Fx Webview выдает исключение JS для следующего кода. Может кто-нибудь объяснить мне, почему?

WebView webview = new WebView();
WebEngine webengine=webview.getEngine();
newtab.setText("Start Page");
newtab.setContent(webview);
editTabset.getTabs().add(newtab);
webengine.load("file:///E:/myproj/src/novuseditor/resources/html/clike.html");/*works till here*/
webengine.executeScript("document.getElementById('code').value=\"Hi\"");
/*exception:netscape.javascript.JSException: TypeError: 'null' is not an object */

1 ответ

Решение

webengine.load() вызов асинхронный. Вам нужно подождать, пока документ не загрузится, прежде чем применять JavaScript. Например:

    WebView webview = new WebView();
    final WebEngine webengine = webview.getEngine();
    webengine.getLoadWorker().stateProperty().addListener(
    new ChangeListener<State>() {
        public void changed(ObservableValue ov, State oldState, State newState) {
            if (newState == Worker.State.SUCCEEDED) {
                webengine.executeScript("document.getElementById('header').innerHTML = '<p>Hi</p>';");
            }
        }
    });
    webengine.load("http://stackru.com");
    primaryStage.setScene(new Scene(webview, 400, 400));

Есть пример из javadoc WebEngine.

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