javaeval-ag真人国际官网
① java如何調用javascript的函數
[java] view plainprint?
package suggestion16;
import java.io.filenotfoundexception;
import java.io.filereader;
import java.util.scanner;
import javax.script.bindings;
import javax.script.invocable;
import javax.script.scriptcontext;
import javax.script.scriptengine;
import javax.script.scriptenginemanager;
import javax.script.scriptexception;
public class scripttext {
public static void main(string[] args) throws filenotfoundexception, scriptexception, exception {
scriptengine engine = new scriptenginemanager().getenginebyname("javascript");
bindings bind = engine.createbindings();
bind.put("factor", 2); //這里綁定一個factor的值為2.
engine.setbindings(bind,scriptcontext.engine_scope);
scanner input = new scanner(system.in);
while(input.hasnext())
{
int first = input.nextint();
int sec = input.nextint();
system.out.println("輸入的參數為:" first " , " sec);
engine.eval(new filereader("e:/cal.js"));
if(engine instanceof invocable)
{
invocable in = (invocable)engine;
double result = (double)in.invokefunction("cal",first,sec);
system.out.println("運算結果為:" result.intvalue());
}
}
}
}
其中的「e:/cal.js」就是我們js文件的保存路徑。並且這個主函數可以循環的輸入。
我們運行一下這個程序得到的結果如下:
[html] view plainprint?
1
2
輸入的參數為:1 , 2
運算結果為:1
上面也就是 調用了 1 2 - 2 = 1 ,所以結果為1
我們將js文件中的function方法改變下,改編為下面的函數:
[javascript] view plainprint?
function cal(var1,var2)
{
return var1 var2*factor;
}