【问题标题】:JSexception in webview of java fx?java fx的webview中的JSexception?
【发布时间】:2012-04-18 18:28:36
【问题描述】:

我的 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 */

【问题讨论】:

    标签: javascript javafx javafx-2


    【解决方案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://stackoverflow.com");
        primaryStage.setScene(new Scene(webview, 400, 400));
    

    WebEngine javadoc 中有一个示例。

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2014-05-06
      • 2017-06-06
      • 2019-05-03
      相关资源
      最近更新 更多