0

を使用してJavaFXで簡単なブラウザを作成しましたWebView。Web サイトを検査するために Firebug Lite も追加しました。Firebug Lite を有効にするために、次WebEngineのメソッドを使用しましたexecuteScript()

engine.executeScript("if (!document.getElementById('FirebugLite')){E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('id', 'FirebugLite');E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}");

JavaFX で Firebug Lite のインスペクターの関数の戻り値 (おそらく文字列) をインターセプトするにはどうすればよいですか?

4

2 に答える 2

1

変数に入れるだけです:

Object result = engine.executeScript("if (!document.getElementById('FirebugLite')){"+
    "E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;"+
    "E = E ? document['createElement' + 'NS'](E, 'script') :"+
    "document['createElement']('script');"+
    "E['setAttribute']('id', 'FirebugLite');"+
    "E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');"+
    "E['setAttribute']('FirebugLite', '4');"+
    "(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);"+
    "E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}"
);

返される値の実際の型は、Javascript の実行結果に依存し、適切な型にダウンキャストできます。たとえば、それが であることがわかっている場合はString、次のことができます

String result = (String) engine.executeScript(...);

ドキュメントには、さまざまな Javascript 型が返される Java 型にどのようにマップされるかが明示的にリストされています。

于 2015-04-09T12:13:59.413 に答える