java如何调用javascript的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何调用javascript的函数相关的知识,希望对你有一定的参考价值。
比如我在js文件里有一个函数function fa(s),请问要怎么在java里面调用这个函数呢?
我下了别人的js代码,但是我要用在android上面,由于下载过来的代码太长,全部改成java代码的话太麻烦了,请问有没有办法可以在java代码里面调用js的函数?望高手指教,谢谢!
是用在Android上面的,就是在Android应用程序里面调用js的函数。我没怎么学过js,大家能不能具体点,谢谢了
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();
参考技术A [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> 参考技术B 你可以在你的java函数里写一个callback供调用js函数,在你的callback里javascript:函数名(%d)就可以了 参考技术C 你可以用字符串拼接 然后传回页面调用 参考技术D 里哟过后台调用 或者 JSP追问
额,能不能具体点?
追答不可以的,因为我也正在研究, 但是方向是肯定对的 ,你可以上csdn 看看
如何从java调用javascript函数?
【中文标题】如何从java调用javascript函数?【英文标题】:How to call javascript function from java? 【发布时间】:2019-10-24 00:51:30 【问题描述】:我有一个原生 android 库,它需要一个作为事件工作的 java 函数。但在我的 nativescript 插件中,我想将 javascript 函数传递给库,以便在 javascript 运行时触发库事件。
【问题讨论】:
您能否分享更多信息,可能是 Java 代码 sn-p 以了解您的 Java 方法是否需要接口/可调用等, 是的,它需要一个接口,其中定义了 2 个方法。 【参考方案1】:如果您的 Java 方法需要回调函数的接口,那么 NativeScript docs 已经涵盖了它。
Java
button.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
// Perform action on click
);
JavaScript
button.setOnClickListener(new android.view.View.OnClickListener(
onClick: function()
// Perform action on click
));
【讨论】:
以上是关于java如何调用javascript的函数的主要内容,如果未能解决你的问题,请参考以下文章