2012-04-05 9 views
2

My java Fx webviewが次のコードのJS例外をスローします。誰も私の理由を説明することはできますか?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 */ 

答えて

7

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の例があります。

+1

多くのことを説明するうわー...ありがとうたくさんのsergey :) –