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 本身

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

在通过 javax.script 运行 Javascript 时,是否有一种好方法,除了将完整的 Javascript 导入 eval() 命令中来加载库?

4

1 回答 1

1

那么你为什么不加载整个脚本并将其交给eval()呢?如果您希望 Javascript 执行上下文解析和解释库,那么必须这样做。您当然可以为脚本上下文提供一种机制,让脚本本身执行与<script>您提供的标记示例等效的操作,但最终会完全一样。

我不明白你对犀牛的评论。JDK 1.6 中的 Javascript 解释器Rhino。

于 2010-04-18T23:17:26.230 回答