J2V8可以执行匿名功能吗?

时间:2017-03-28 15:50:54

标签: javascript j2v8

我正在尝试执行这段javascript代码

(function() {
    var z = '';
    var b = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    for (var i = 0; i < b.length; i += 2) {
        z = z + parseInt(b.substring(i, i + 2), 16) + ',';
    }
    z = z.substring(0, z.length - 1);
    eval(eval('String.fromCharCode(' + z + ')'));
})();

但是我收到了这个错误:

undefined:1: ReferenceError: document is not defined

如果我将函数分配给变量,我既没有错误也没有结果。

var a = function() {
    var z = '';
    var b = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    for (var i = 0; i < b.length; i += 2) {
        z = z + parseInt(b.substring(i, i + 2), 16) + ',';
    }
    z = z.substring(0, z.length - 1);
    eval(eval('String.fromCharCode(' + z + ')'));
};

您是否了解如何使用J2V8运行此脚本? 提前谢谢

1 个答案:

答案 0 :(得分:0)

我说实话,我不知道JS应该做什么。你有一个eval包裹在eval中,该函数没有return语句。另外,xxxxx似乎不是有效的输入。

说了这么多,如果我删除包装的eval,使用变量b的数字并返回结果,它对我来说很好。

@Test public void testExample2() { String jsCode = "(function() {\n" + "var z = '';\n" + "var b = '12345678';\n" + "for (var i = 0; i < b.length; i += 2) {\n" + " z = z + parseInt(b.substring(i, i + 2), 16) + ',';\n" + "}\n" + "z = z.substring(0, z.length - 1);\n" + "return eval('String.fromCharCode(' + z + ')');\n" + "})();"; Object result = v8.executeScript(jsCode); System.out.println(result); }