简体   繁体   English

从java方法调用javaScript

[英]calling javaScript from java method

I want to execute JavaScript function from Java. 我想从Java执行JavaScript函数。 I used the following piece of code 我使用了以下代码

ScriptEngineManager manager = new ScriptEngineManager();    
ScriptEngine engine = manager.getEngineByName("JavaScript"); 

but this throws an exception for the alert() method ? 但这会引发alert()方法的异常?

engine.eval("alert('HI');");

So. 所以。 I'm pretty sure your code here is incorrect. 我很确定您的代码不正确。

engine.eval("alert(HI);");

Try. 尝试。

engine.eval("alert('Hi');");

unless you have a variable HI declared. 除非您声明了变量HI。

you can not call javascript from java in any way. 您不能以任何方式从Java调用javascript。 javascript is client side language and executed on browser where as java is executed on server javascript是客户端语言,在浏览器上执行,而在服务器上执行java

Update :- Thanks guys i learnt something new here. 更新:-谢谢大家,我在这里学到了一些新东西。

when i execute the code in op i get below error 当我在op中执行代码时,出现以下错误

Error executing script: ReferenceError: "alert" is not defined in <eval> at line number 1

Reason is alert is not part of JavaScript, it's part of the window object provided by web browsers.so, Nashhorn javascript engine does not know about it. 原因是警报不是JavaScript的一部分,而是Web浏览器提供的window对象的一部分。因此,Nashhorn javascript引擎对此一无所知。

Please see ReferenceError: "alert" is not defined 请参阅ReferenceError:未定义“警报”

It appears that "alert()" is part of the window object provided by web browsers. 看来“ alert()”是网络浏览器提供的窗口对象的一部分。 it doesn't exist here 它在这里不存在

I have modified java code: 我已经修改了Java代码:

ScriptEngineManager manager = new ScriptEngineManager();      
ScriptEngine engine  = manager.getEngineByName("JavaScript");
engine.eval("print('HI');");

This is useful: Java Scripting Programmer's Guide 这很有用: Java脚本程序员指南
Information about javscript window object: The Window Object 有关javscript窗口对象的信息: Window对象

您做错了方法,您无法从Java代码调用JavaScript函数,因为一个在客户端执行,而另一个在服务器端执行...即使您使用某种API来实现,这也是错误的代码结构方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM