引用错误:“警报”未定义
ReferenceError: "alert" is not defined
我正在尝试从java代码调用java脚本函数。
这是我的Java代码
public static void main(String[] args) throws FileNotFoundException {
try {
/**
* To call a anonymous function from java script file
*/
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
FileReader fr = new FileReader("src/js/MySpec.js");
engine.eval(fr);
} catch (ScriptException scrEx) {
scrEx.printStackTrace();
}
}
这是我的java脚本文件:
(function() {
alert("Hello World !!!");
})();
但是当我运行驱动程序类的主要方法时,它给我的错误如下:
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "alert" is not defined. (<Unknown source>#2) in <Unknown source> at line number 2
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)
at Java6RhinoRunner.load(Java6RhinoRunner.java:42)
at Java6RhinoRunner.main(Java6RhinoRunner.java:12)
我所知道的是,它需要一些脚本引擎来执行它。
为此,我将 rhino.jar 文件添加到我的类路径中。但这行不通。
我不知道如何解决此错误。请帮忙。提前谢谢。
alert
不是JavaScript的一部分,它是Web浏览器提供的window
对象的一部分。因此,它不存在于您尝试使用它的上下文中。(setInterval
、setTimeout
和其他与计时器相关的东西也是如此,仅供参考。
如果你只想做简单的控制台输出,Rhino 为你脚本提供了一个print
函数,所以你可以用print
替换alert
。您的脚本还可以访问所有 Java 类等,因此例如java.lang.System.out.println('Hello');
可以从您的 JavaScript 脚本中工作(尽管它与提供的 print
函数有点多余)。您还可以通过ScriptEngine.put
轻松地使Java变量可用于脚本,例如:
engine.put("out", System.out);
。然后在脚本中:
out.println('Hello from JavaScript');
。因此,这是从脚本进行输出的第三种方法。:-)
请参阅javax.script
包文档中的讨论,特别是ScriptEngine#put
,或者对于更复杂的情况,Bindings
(和SimpleBindings
)和ScriptContext
。
相关文章:
- 无法读取未定义的属性“警报”
- 离子警报 - 检查结果是否未定义
- 如何使用警报进行调试来解决(未定义的)时间问题
- 无法调用未定义的方法,但警报(方法)仍在工作
- 离子框架:$scope在简单警报中未定义
- 引用错误:“警报”未定义
- 使用参数成功调用简单函数后出现意外警报,消息为“未定义”
- 返回 JavaScript 对象警报“未定义”
- 显示“未定义”的 JS 警报
- 如何检查 Javascript 中的变量是否在另一个 Javascript 文件中定义,如果未定义,则显示警报
- 从 API 抓取页面标题是未定义的警报
- 在 Jquery 中,如何向 JSON 对象的一部分发出警报?我得到“未定义”
- Rails测试-检查警报存在抛出“;未定义的方法`driver'&”;
- 正在获取警报框中未定义的输入框值
- 来自文本框和单选按钮的用户输入在警报中重复,显示未定义
- jquery-attr在发出警报时显示未定义
- 触发未定义错误的警报
- JSON输出在代码中仍然未定义,但警报是好的,这是范围的问题吗?
- 自定义警报框未在android WebView中加载
- 为什么此警报返回未定义