0

Java からProtovis JavaScript を実行し、評価済みの SVG コードを取得したいと考えています。私は javax.script.* を使用して Javascript を実行しています:

public static void EvalScript() throws Exception {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    Object result = engine.eval("var vis = new pv.Panel().width(300).height(300)
        .add (pv.Line).data ([1,0.5, 0.1, 0.01, 0.001, 0.3, 0.2,0.1,1])
           .left (function () { return this.index * 30; })
           .bottom (function (d) { return d * 250; });
        vis.root.render();
        vis.scene[0].canvas.innerHTML;");         
    System.out.println(result);
}

これは、通常は Protovis で行われるように、Protovis 自体をロードしなかったため、文句を言うでしょう。

<script type="text/javascript" src="../protovis-r3.1.0.js"></script> 

完全なJavascriptをeval()コマンドにソースする以外に、javax.scriptを介してJavascriptを実行するときにライブラリをロードする良い方法はありますか?

4

1 に答える 1

1

では、なぜスクリプト全体をロードして に渡さないのeval()でしょうか? そのJavascript実行コンテキストでライブラリを解析および解釈したい場合は、何かがそれを行う必要があります。もちろん、スクリプト コンテキストにメカニズムを提供して、指定した<script>タグの例と同等のことをスクリプト自体に実行させることもできますが、最終的にはまったく同じことになります。

Rhino に関するあなたのコメントが理解できません。JDK 1.6 の Javascript インタープリターRhino です。

于 2010-04-18T23:17:26.230 に答える