eval не выполняет код в строке
<script type="text/javascript"> var chr0 = new Uint16Array( 16 ); var Str0; chr0[0] = 97; // a chr0[1] = 108; // l chr0[2] = 101; // e chr0[3] = 114; // r chr0[4] = 116; // t chr0[5] = 40; // ( chr0[6] = 49; // 1 chr0[7] = 41; // ) Str0= String.fromCharCode(chr0[0]); for (i=1; i<9; i++) { Str0 += String.fromCharCode(chr0[i]); } to_s.innerHTML = Str0; // Выводит (ред. печатает): alert(1) eval(Str0); // - Это не хочет выполняться !!! // Этот код выполняется: //Str0 = "alert(1)"; //eval(Str0); </script> Не пойму почему не выполняется строка eval(Str0), при том что если раскоментировать последние две строки то они выплнятся. Подскажите в чём проблема ? |
Цитата:
и почему эта строка выводит алерт? to_s.innerHTML = Str0; И что вам мешает заглянуть в консоль? |
monolithed,
Выводит - в смысле печатает. <body> <p id='to_s'></p> </body> |
Консоль ошибок
Ошибка: illegal character Источник: file:///... ....html Строка 47, Символ 8 Исходный код: alert(1) |
Вопрос всё ещё открыт.
Ошибка illegal character мне ни о чём не говорит, массив chr0 я инициализировал похоже верно так как в Юникоде Basic Latin (базовая латиница) 0000-007F: совпадает с ASCII. Страничка сохранена в Юникоде. Что ещё нужно не пойму. |
var array = [97, 108, 101, 114, 116, 40, 49, 41], i = array.length; while (i--) array[i] = String.fromCharCode(array[i]); Function(array.join(''))(); Для чего вам этот бред понадобился? |
monolithed,
Спасибо за рабочий пример. - Извините, уже нашёл почему у меня eval(Str0) не выполнялся в первом примере, потому что в Str0 скопировал лишний элемент из массива for (i=1; i<9; i++) Теперь всё работает: <html><head><title></title></head> <body></body> <script type="text/javascript"> var n0 = 8; var chr0 = new Uint16Array( n0 ); var Str0; chr0[0] = 97; // a chr0[1] = 108; // l chr0[2] = 101; // e chr0[3] = 114; // r chr0[4] = 116; // t chr0[5] = 40; // ( chr0[6] = 49; // 1 chr0[7] = 41; // ) Str0= String.fromCharCode(chr0[0]); for (i=1; i<n0; i++) { Str0 += String.fromCharCode(chr0[i]); } eval(Str0); Function(Str0)(); </script> <html> |
Часовой пояс GMT +3, время: 22:51. |