java如何调用javascript的函数
比如我在js文件里有一个函数functionfa(s),请问要怎么在java里面调用这个函数呢?我下了别人的js代码,但是我要用在Android上面,由于下载过来的代码太...
比如我在js文件里有一个函数function fa(s),请问要怎么在java里面调用这个函数呢?
我下了别人的js代码,但是我要用在Android上面,由于下载过来的代码太长,全部改成java代码的话太麻烦了,请问有没有办法可以在java代码里面调用js的函数?望高手指教,谢谢!
是用在Android上面的,就是在Android应用程序里面调用js的函数。我没怎么学过js,大家能不能具体点,谢谢了 展开
我下了别人的js代码,但是我要用在Android上面,由于下载过来的代码太长,全部改成java代码的话太麻烦了,请问有没有办法可以在java代码里面调用js的函数?望高手指教,谢谢!
是用在Android上面的,就是在Android应用程序里面调用js的函数。我没怎么学过js,大家能不能具体点,谢谢了 展开
展开全部
package com.sinaapp.manjushri;
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();
}
}
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();
}
}
展开全部
[java] view plaincopyprint?
<span style="font-size:18px;">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());
}
}
}
}
</span>
其中的“E:/cal.js”就旦茄是我们js文件的保存路径。并且这个主函数可以循环的输入。
我们运行一下这个程序得到的结果如下:
[html] view plaincopyprint?
<span style="font-size:18px;">1
2
输入的参数为:1 , 2
运算结果为:1
</span>
上面也就是 调用了 1 + 2 - 2 = 1 ,所以结果为1
我们将js文件中的function方法改变下,改编为下面的函数:
[javascript] view plaincopyprint?
<span style="font-size:18px;">function cal(var1,var2)
{
return var1+var2*factor;
}</span>
<span style="font-size:18px;">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());
}
}
}
}
</span>
其中的“E:/cal.js”就旦茄是我们js文件的保存路径。并且这个主函数可以循环的输入。
我们运行一下这个程序得到的结果如下:
[html] view plaincopyprint?
<span style="font-size:18px;">1
2
输入的参数为:1 , 2
运算结果为:1
</span>
上面也就是 调用了 1 + 2 - 2 = 1 ,所以结果为1
我们将js文件中的function方法改变下,改编为下面的函数:
[javascript] view plaincopyprint?
<span style="font-size:18px;">function cal(var1,var2)
{
return var1+var2*factor;
}</span>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在埋猜你的java函坦液闭数里写一个callback供调用js函数,在你的callback里{javascript:函让裂数名(%d)}就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以用字符串拼接 然后传回页面调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
里哟过后台调用 或者 JSP
追问
额,能不能具体点?
追答
不可以的,因为我也正在研究, 但是方向是肯定对的 ,你可以上csdn 看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询