亲们,你们写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