Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java方法调用javaScript_Javascript_Java - Fatal编程技术网

从java方法调用javaScript

从java方法调用javaScript,javascript,java,Javascript,Java,我想从Java执行JavaScript函数。我使用了下面的代码 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); 但是这会引发alert()方法的异常 engine.eval("alert('HI');"); 您不能以任何方式从java调用javascript。javascript是客户端语言,在浏

我想从Java执行JavaScript函数。我使用了下面的代码

ScriptEngineManager manager = new ScriptEngineManager();    
ScriptEngine engine = manager.getEngineByName("JavaScript"); 
但是这会引发
alert()
方法的异常

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

您不能以任何方式从java调用javascript。javascript是客户端语言,在浏览器上执行,而java则在服务器上执行

更新:- 谢谢各位,我在这里学到了一些新东西

当我在op中执行代码时,我得到下面的错误

Error executing script: ReferenceError: "alert" is not defined in <eval> at line number 1
执行脚本时出错:ReferenceError:“警报”未在第1行中定义 原因是alert不是JavaScript的一部分,它是web浏览器提供的窗口对象的一部分。所以,Nashhorn JavaScript引擎不知道它


请参见

So。我很确定你的代码是错误的

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


除非您声明了一个变量HI。

您这样做是错误的,您不能从java代码中调用JavaScript函数,因为一个在客户端执行,另一个在服务器端执行……即使您使用某些API实现了这一点,这也是错误的代码架构。

似乎是“alert()”是web浏览器提供的窗口对象的一部分

我修改了java代码:

ScriptEngineManager manager = new ScriptEngineManager();      
ScriptEngine engine  = manager.getEngineByName("JavaScript");
engine.eval("print('HI');");
这很有用:

有关javscript窗口对象的信息:

可以通过脚本API,哪个OP在使用:借助脚本api,我们可以调用基本javascript,但我们不能使用任何预定义的方法,它会引发异常,因此,如果您知道任何其他解决方案,请提供用户3707125您需要转义Hican周围的引号,请提供链接,在那里我可以看到一些在javaTry中使用js的示例/教程
eval(“警报(\'HI\”)我的意思是,它与使用.Net调用powershell函数没有什么不同。或者Sql语句……服务器端脚本是一种优雅的东西,甚至可以是复杂的体系结构
ScriptEngineManager manager = new ScriptEngineManager();      
ScriptEngine engine  = manager.getEngineByName("JavaScript");
engine.eval("print('HI');");