0

JRubyでHTTPリクエストの直後にJSを実行する最もパフォーマンスの高い方法は何ですか? HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS などのすべてのテスト フレームワークについて知っていますが、それらはまだテスト フレームワークです。

私が必要としているのは、たとえば Net::Http によって URL を取得した後、HTML に含まれるすべての JS コードを実行する簡単な方法です。

4

1 に答える 1

0

まず第一に、言うまでもありませんが、本番環境ではこれを行わないでください。

インターネット上のどこかから引っ張ってきたスクリプトを実行すると、大惨事になります。テスト インフラストラクチャの一部として使用している場合は、ある程度役立つかもしれませんが、問題を解決するためのより簡単な方法があると思います。

より一般的な質問に答えるために、JDK 1.6+ にバンドルされている JavaScript エンジンを初期化する方法を次に示します (実質的には Rhino のカットダウン バージョンですが、これはおそらく Java 8 で変更される予定です)。

import javax.script.ScriptEngineManager
import javax.script.SimpleBindings

manager = ScriptEngineManager.new
engine = manager.getEngineByName("JavaScript")

bindings = SimpleBindings.new
bindings['x'] = 1

engine.eval("print(x)", bindings)

jQuery などの依存関係をエンジンに評価させることは、ユーザーの課題として残されています。javax.script JavaDocを見てください。

評価環境をさらに制御する必要がある場合は、Rhinoを直接使用するか、 Nashornを待つ必要があります...

于 2013-05-20T13:23:24.343 に答える