Question

Je veux courir Protovis javascript de Java et d'obtenir le évalué le code SVG. J'utilise javax.script * pour exécuter le 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);
}

se plaignait parce que je ne se Protovis chargé, comme on pouvait normalement fait avec

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

Y at-il un bon moyen, à court d'approvisionnement en plein Javascript dans la commande eval (), de charger une bibliothèque lors de l'exécution Javascript par javax.script?

Était-ce utile?

La solution

Eh bien pourquoi ne pas charger le script entier dans la main et à eval()? Si vous voulez que le contexte d'exécution Javascript pour analyser et interpréter la bibliothèque, puis quelque chose doit le faire. Vous pouvez bien sûr fournir un mécanisme dans le contexte de script pour que le script lui-même faire l'équivalent de l'exemple d'étiquette <script> que vous avez donné, mais il finirait par être exactement la même chose.

Je ne comprends pas vos commentaires sur Rhino. L'interpréteur Javascript dans JDK 1.6 Rhino.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top