gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:32:44 24 4
gpt4 key购买 nike

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

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

字符串结果 = (String)invocableEngine.invokeFunction("执行");

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

  1. Scriptengine 无法识别 js 文件中用作命令行的双斜杠 (//) 值,因此引擎无法调用//之后的代码
  2. 脚本引擎也无法识别浏览器参数,如窗口、导航器等,

有什么办法可以解决我的问题吗?

最佳答案

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

要按原样运行依赖于浏览器的 JavaScript,您需要额外的代码来模拟所需的浏览器 API。如果它只需要一些简单的函数,您可以轻松地自己编写它们(用 JavaScript)。如果需要对浏览器和DOM进行更完整的模拟,请参见Envjs ,它正是这样做的,并且是为 Rhino 设计的。 (注:不过,我自己从未尝试过。)

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

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

关于java - 无法使用 Rhino 在 Java 中执行浏览器支持的 JS 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21474085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com