[英]How to call window.atob() javascript function from java code?
我正在尝试使用犀牛。 我想使用Java代码中的window.atob(param)
javascript函数。 首先有可能吗? 这就是我尝试过的。
ScriptEngine runtime = null;
try {
runtime = new ScriptEngineManager().getEngineByName("javascript");
runtime.put(
"str",
"PGh0bJvZHk+PC9odG1sPg==");
System.out.println((String)runtime.eval("window.atob(str)"));
} catch (Exception ex) {
ex.printStackTrace();
}
我收到以下异常。
sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "window" is not defined
我知道我可以使用Java进行解码,但是任何人都可以让我知道如何使用Rhino进行解码吗?
正如Vache所写, window
对象仅存在于浏览器中。 但是,您可以使用env.js模拟浏览器。
加载此脚本后,您可以访问window
对象。
感谢@feuerball。 经过SO和Docs之后,我找到了解决问题的方法。
这是代码示例:
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.tools.shell.Global;
import org.mozilla.javascript.tools.shell.Main;
.................
Context cx = ContextFactory.getGlobal().enterContext();
cx.setOptimizationLevel(-1);
cx.setLanguageVersion(Context.VERSION_1_5);
Global global = Main.getGlobal();
global.init(cx);
try {
Main.processSource(cx, "C:\\Desktop\\env.rhino.1.2.js");
System.out.println(cx.evaluateString(global, "window.atob(\"UmYXNlahcg==\")", "js", 1, null));
} catch (IOException e) {
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.