0

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にリンクされていないためですか?

4

2 に答える 2

2

JavaFX 2 WebView にロードされた html の DOM モデルにアクセスするには、WebEngineAPI を使用できます。たとえば、リスナーを 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>");
于 2012-06-29T18:20:43.913 に答える
-2

いいえ。DOMはブラウザの一部であり、ブラウザはありません。

于 2012-06-29T15:47:48.887 に答える