Rhino - 如何仅从javascript端在全局上下文/范围中进行评估(无Java端访问)

时间:2013-10-17 00:58:43

标签: javascript rhino

我正在使用具有Mozilla Rhino提供的嵌入式JS脚本环境的第三方应用程序。

所以不幸的是,这意味着我无法访问Java源,或者意味着在此产品中配置/嵌入了Rhino。

考虑到这一点,我的目标是使用JS和 only JS在全局上下文/范围中执行任意数量的其他编码JS。这就是我所处的位置(注意,这个例子有点人为,但请耐心等待):

var engine = new Packages.javax.script.ScriptEngineManager().getEngineByName("javascript");
engine = Packages.javax.script.Invocable(engine);

这是我在的地方。所以,我知道我可以这样做:

engine.eval("var myVar = \"Hello World!\";");
engine.get("myVar");
=> "Hello World!"

但我想要的是好像eval以某种方式在“当前”全局上下文/范围内执行了编码字符串。即所以我可以这样做:

engine.eval("var myVar = \"Hello World!\";");
myVar
=> "Hello World!"

期望行为的另一个例子:

engine.eval("function sayHello(){ return \"Hello Again!\";}var a = \"Apple\";");
sayHello();
=> "Hello Again!"
a
=> "Apple"

我注意到有一些重载的eval方法可能很有用:

class java.lang.Object eval(java.lang.String,javax.script.Bindings)
class java.lang.Object eval(java.lang.String,javax.script.ScriptContext)

然而,我的扩展实验尚未取得任何成功。

非常感谢任何想法和想法...

0 个答案:

没有答案