我正在尝试使用ScriptEngine(Rhino)在Java中执行JS代码。
我在运行时获取4个不同js文件的js代码并将其存储在String变量中,并使用以下java代码调用js文件中的方法,
String result =(String)invocableEngine.invokeFunction(“Execute”);
我能够看到Execute方法正确调用,但面临两个问题
有没有解决我问题的方法?
答案 0 :(得分:1)
window
,navigator
,document
个对象等不是JavaScript语言的一部分,而是DOM的一部分,Envjs是其中的一部分网络浏览器。 Rhino引擎运行纯JavaScript语言,但不模拟Web浏览器。
要按原样运行依赖于浏览器的JavaScript,您需要额外的代码来模拟所需的浏览器API。如果它只需要几个简单的函数,您可以轻松地自己编写它们(在JavaScript中)。如果它需要更完整的浏览器和DOM模拟,请参阅HtmlUnit,它正是这样做的,并且是为Rhino设计的。 (注意:我自己从未尝试过。)
Selenium或Greasemonkey也可能对您有用,甚至可能对{{3}}有用。 (如果您详细解释这个JavaScript代码的来源以及以这种方式运行它的目标,可能会给出一个更具体的答案。)
我不确定“用作命令行的双斜杠(//)值”是什么意思。双斜杠引入注释,而不是命令。 //和行尾之间的任何代码都不应该运行。