是否可以使用Java中的ScriptEngine或WebEngine类修改html元素?我尝试了以下内容:
/* theSite is a WebEngine object. Assume the id 'Email' is correct */
Element email=(Element) theSite.executeScript("document.getElementById('Email');");
email.setAttribute( "value", "navon.josh" );
我在一个例子中看到过这样的东西,但它似乎没有用。我也试过这个:
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName( "js" );
try {
engine.eval( "document.getElementById( 'Email' ).value = 'navon.josh'" );
} catch( ScriptException e) {
e.printStackTrace();
}
这也行不通。是因为该声明没有链接到WebEngine吗?
答案 0 :(得分:2)
要访问加载到JavaFX 2 WebView中的html的DOM模型,您可以使用WebEngine
API。例如。这是一个向HTML TextArea添加监听器的示例:
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) {
// note next classes are from org.w3c.dom domain
EventListener listener = new EventListener() {
public void handleEvent(Event ev) {
System.out.println(ev.getType());
}
};
Document doc = webEngine.getDocument();
Element el = doc.getElementById("textarea");
((EventTarget) el).addEventListener("keypress", listener, false);
}
}
});
webEngine.loadContent("<textarea id='textarea'></textarea>");
答案 1 :(得分:-2)
没有。 DOM是浏览器的一部分,您没有浏览器。