2012-04-05 3 views
2

내 java Fx webview는 다음 코드에 대한 JS 예외를 throw합니다. 아무도 그 이유를 설명 할 수 있습니까?자바 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() 호출은 비동기입니다. 자바 스크립트를 적용하기 전에 문서가로드 될 때까지 기다려야합니다. 예 :

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

많은 것들을 설명하는 와우 ... 고맙습니다. 세르게이 :) –

관련 문제