亲们,你们写javascript代码一般是不是就这样写:documnet.getElementById("username");
.......
var arr_date=new Array();
arr_date.put(new Date());
------------------------------------------------------------------------------------------
现在用java可以调用javascript代码了,但是注意不能调用broswer window对象的方法,只是最原始的最纯粹的javascript代码。
不能用java api直接操作broswer的bom和dom,不要去执行jquery,除非你能保证jquery中有全局的broswer window对象,java提供这个功能感觉有点扯淡,不过有些运算可以用javascript处理,比如,正则、日期转换,java也可以实现这些六个指头挠痒。。。
不废话了,直接上代码:
// test.js function merge(a, b) { c = a * b; return c; }
import java.io.FileReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; /** * Java调用并执行js文件,传递参数,并活动返回值 * * @author manjushri */ public class ScriptEngineTest { public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); String jsFileName = "expression.js"; // 读取js文件 FileReader reader = new FileReader(jsFileName); // 执行指定脚本 engine.eval(reader); if(engine instanceof Invocable) { Invocable invoke = (Invocable)engine; // 调用merge方法,并传入两个参数 // c = merge(2, 3); Double c = (Double)invoke.invokeFunction("merge", 2, 3); System.out.println("c = " + c); } reader.close(); } }
输出结果:
c = 5.0