java代码调用js函数 java如何调用函数

Java调用JS脚本里的方法;本例子使用java代码调用js函数了JDK 以上java代码调用js函数的javax script包 通过Invocable接口实现JAVA调用JS脚本里的方法 本例中调用分为内部执行脚本和外部执行脚本 外部执行脚本分为不带参数调用和带参数调用 主要采用invokeFunction方法调用ObjectinvokeFunction(String name Object… args)用于调用脚本中定义的顶层程序和函数ObjectinvokeMethod(Object thiz String name Object… args)对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法package de javase;import javax script Invocable;import javax script ScriptEngineManager;import javax script ScriptEngine;import java io File;import java io Reader;import java io FileReader;public class AjavaInvokingFunction {public static void main(String[] args) {// 获得一个JavaScript脚本引擎 也可以是ECMAScript脚本引擎ScriptEngineManager manager = new ScriptEngineManager()ScriptEngine engine = manager getEngineByName( JavaScript )String titlescript = function sayTitle() {+println( 源码实例 使用javax script调用JS脚本里的方法 )+println( )+ } ;try {
// 调用内部脚本执行engine eval(titlescript)// 转换为InvocableInvocable invocableEngine = (Invocable) engine;// 不带参数调用sayTitle方法invocableEngine invokeFunction( sayTitle )// 调用外部脚本执行// 创建JS文件的File对象 并读入流File functionscript = new File( ajava js )Reader reader = new FileReader(functionscript)// 开始执行ajava js里的程序engine eval(reader)// 不带参数调用sayHello方法invocableEngine invokeFunction( sayHello )// 带参数调用sayHello方法invocableEngine invokeFunction( sayHello mark )} catch (Exception e) {e printStackTrace()}}}ajava js文件function sayHello(){sayHello(null)}function sayHello(name){if(name==null){println( 欢迎java代码调用js函数你java代码调用js函数!请注册Ajava会员 )}else{println(name+ 独立JAVA社区欢迎java代码调用js函数你 )}}运行结果(控制台)源码实例 使用javax script调用JS脚本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436
如何通过java代码调用jsJDK1.6版添加java代码调用js函数了新java代码调用js函数的ScriptEngine类java代码调用js函数,允许用户直接执行js代码 。
在Java中直接调用js代码
不能调用浏览器中定义的js函数java代码调用js函数,会抛出异常提示ReferenceError: “alert” is not defined 。
package com.sinaapp.manjushri;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;/*** 直接调用js代码*/
public class ScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try{
engine.eval("var a=3; var b=4;print (a+b);");
// engine.eval("alert(\"js alert\");");// 不能调用浏览器中定义的js函数 // 错误java代码调用js函数,会抛出alert引用不存在的异常
}catch(ScriptException e){
e.printStackTrace();
}
}
}
如何在java中调用js方法js代码如下:
[javascript] view plain copy
function formula(var1,var2){
return var1+var2-factor;
}
java代码如下:
[java] view plain copy
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 AboutJavaScript {
public static void main(String[] args) throws Exception {
ScriptEngine engine=new ScriptEngineManager().getEngineByName("javascript");

推荐阅读