[英]how to call javascript method in a javacode
我试图在Java代码中调用javascript方法,但是出现很多错误,因此我将该方法放在主要位置进行检查,因此可以在控制台“ sun.org.mozilla.javascript.internal.InterpretedFunction”中找到它而且我看不到调用它的方法。 谢谢
public static void main(String[] argv) throws Exception
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String myJSCode = "function calcul()"
+ "{"
+ "alert('Veuillez verifier le nom et le prenom saisis ');"
+ "}";
System.out.println(engine.eval(myJSCode));
}
alert()
方法不是核心Javascript语言的一部分。 仅当脚本在Web浏览器中运行时才显示。 因此,它在Javascript ScriptEngine
实例中不可用。 (而且不,在Java applet中使用ScriptEngine
不算在内。这真的很令人困惑,我根本不建议这样做。)
如果要测试向控制台显示的内容,请尝试调用print()
。 我相信该功能是Rhino运行时的一部分。
我尝试了这个,它起作用了:
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// JavaScript code in a String
String script = "function Msg() {print('Veuillez verifier le nom et le prenom saisis !!! '); }";
// evaluate script
engine.eval(script);
// javax.script.Invocable is an optional interface.
// Check whether your script engine implements or not!
// Note that the JavaScript engine implements Invocable interface.
Invocable inv = (Invocable) engine;
// invoke the global function named "hello"
inv.invokeFunction("Msg" );
} `
现在我想做一些改变:
1) 将打印更改为消息框
2) 将整个代码放入将在html代码中调用的方法中,这样,消息框将在屏幕上显示给用户
非常感谢你的帮助 。
该消息实际上是告诉您它已进行了评估(但是,如果调用了您定义的函数,它将发出抱怨)。 这是输出输出的示例:
public static void main(String[] argv) throws Exception
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String myJSCode = "function calcul()"
+ "{"
+ "print ('Veuillez verifier le nom et le prenom saisis ');"
+ "}"
+ "\n"
+ "calcul();";
engine.eval(myJSCode);
}
输出:
Veuillez verifier le nom et le prenom saisis
或者,如果您只是调用函数以返回其输出,则可以使用如下所示的自执行匿名函数:
public static void main(String[] argv) throws Exception
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String myJSCode = "(function()"
+ "{"
+ "return 'Veuillez verifier le nom et le prenom saisis';"
+ "})()";
System.out.println(engine.eval(myJSCode));
}
这返回相同的东西
代码的另一个问题是,它只是定义了一个称为calcul
的函数,但没有调用它。 根据@duskwuff所说的内容并删除警报,您可以按以下方式定义和调用该函数:
String myJSCode = "function calcul()"
+ "{"
+ "println('hello world');"
+ "return true;"
+ "}" +
"calcul();";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.