Может ли 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);
}