繁体   English   中英

无法使用Rhino在Java中执行浏览器支持的JS代码

[英]Not able to execute browser supported JS code in Java using Rhino

我正在尝试使用ScriptEngine(Rhino)在Java中执行JS代码。

我在运行时获取了4个不同js文件的js代码,并将其存储在String变量中,然后将使用以下Java代码在js文件中调用方法,

字符串结果=(String)invocableEngine.invokeFunction(“ Execute”);

我能够看到Execute方法正在正确调用,但是面临以下两个问题

  1. 脚本引擎无法识别js文件中用作命令行的双斜杠(//)值,因此引擎无法在//后调用代码
  2. 另外scriptengine无法识别浏览器参数,例如window,navigator等,

有什么选择解决我的问题吗?

windownavigatordocument对象等不是JavaScript语言的一部分,而是DOM的一部分,而DOM是Web浏览器的单独部分。 Rhino引擎运行纯JavaScript语言,但不模拟Web浏览器。

要按原样运行与浏览器相关的JavaScript,您需要其他代码来模仿所需的浏览器API。 如果只需要一些简单功能,则可以轻松地自己编写(使用JavaScript)。 如果它需要对浏览器和DOM进行更完整的模拟,请参阅Envjs ,该工具正是针对Rhino设计的。 (注意:不过,我自己从未尝试过。)

HtmlUnitSelenium也可能对您有用,甚至对Greasemonkey也有用。 (如果您详细解释此JavaScript代码的来源以及以这种方式运行它的目标,则可能会给出更具体的答案。)

我不确定“用作命令行的双斜杠(//)值”是什么意思。 双斜杠引入注释,而不是命令。 //和行尾之间的任何代码都不应运行。

暂无
暂无

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

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