首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReferenceError:未定义"alert“

ReferenceError:未定义"alert“
EN

Stack Overflow用户
提问于 2012-06-29 17:00:25
回答 1查看 53.7K关注 0票数 18

我正在尝试从java代码中调用java脚本函数。

下面是我的Java代码

代码语言:javascript
复制
    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脚本文件:

代码语言:javascript
复制
(function() {
  alert("Hello World !!!");
})();

但是当我运行driver类的main方法时,它给出了如下错误:

代码语言:javascript
复制
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)

我所知道的是它需要一些脚本引擎来执行它。

为此,我在我的类path.But中添加了rhino.jar文件,这是不起作用的。

我不知道如何解决这个错误。请提前help.Thanks。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-29 17:02:33

alert不是JavaScript的一部分,它是web浏览器提供的window对象的一部分。所以它不存在于你试图使用它的上下文中。( setIntervalsetTimeout和其他与计时器相关的东西也是如此,仅供参考。)

如果您只想进行简单的控制台输出,Rhino为您的脚本提供了一个print函数,因此您可以用print替换alert。您的脚本还可以访问所有的Java类等等,例如,java.lang.System.out.println('Hello');可以从您的JavaScript脚本中运行(尽管使用所提供的print函数有点多余)。您还可以通过ScriptEngine.put轻松地将Java变量用于您的脚本,例如:

代码语言:javascript
复制
engine.put("out", System.out);

然后在您的脚本中使用...and:

代码语言:javascript
复制
out.println('Hello from JavaScript');

...so,这是从脚本输出的第三种方法。:-)

请参阅the javax.script package documentation中的讨论,特别是ScriptEngine#put,或者对于更复杂的情况,请参阅Bindings (和SimpleBindings)和ScriptContext

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11258888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档