我想從Java執行JavaScript函數。我用下面的代碼段從java方法調用javaScript
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
但是,這將引發的alert()
方法的異常?
engine.eval("alert('HI');");
我想從Java執行JavaScript函數。我用下面的代碼段從java方法調用javaScript
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
但是,這將引發的alert()
方法的異常?
engine.eval("alert('HI');");
您無法以任何方式從java調用javascript。 JavaScript是其中的Java是在服務器上執行
更新客戶端的語言和瀏覽器上執行: - 謝謝你們我學到新的東西在這裏。
當我在運算執行的代碼,我得到以下錯誤
Error executing script: ReferenceError: "alert" is not defined in <eval> at line number 1
原因是警報不是JavaScript的一部分,它是由網絡browsers.so提供的窗口對象,Nashhorn JavaScript引擎不知道的一部分關於它。
有可能通過腳本API,其中OP使用:https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/api.html – user3707125
與腳本API的幫助下,我們可以調用基本的JavaScript,但我們不能使用Ÿ預定義的方法它會拋出一個異常,所以,如果你知道任何其他解決方案,請提供user3707125 –
@AbhijitDesai請參閱我的更新 –
所以。我很確定你的代碼在這裏是不正確的。
engine.eval("alert(HI);");
試試。
engine.eval("alert('Hi');");
除非你有一個變量HI聲明。
你需要逃出各地喜 –
引號,你可以請您給的鏈接在那裏我可以看到在java中使用js的一些示例/教程 –
你是做了錯誤的方式,你無法從Java代碼,因爲一個是在客戶端執行,並在服務器端其他調用JavaScript函數......即使你做到這一點使用一些API它的代碼architecturing的錯誤方式。
我的意思是,它與使用.Net調用powershell函數沒有什麼不同。或Sql語句... –
服務器端腳本是一個優雅的事情,甚至可以是複雜的體系結構 – Marged
似乎「警報()」是由網絡瀏覽器所提供的窗口對象的一部分。 it doesn't exist here
我已經修改Java代碼:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval("print('HI');");
這是有用的:Java Scripting Programmer's Guide
約javscript窗口對象信息:The Window Object
嘗試'的eval( 「警報(\」 HI \ 「)」 );' –