Может ли 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 ответ

Я буду честен, я не знаю, что должен делать JS. У вас есть eval завернутый в evalи функция не имеет оператора возврата. Кроме того, 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); }

Другие вопросы по тегам