Узнать строку и символ, где возникла ошибка (вопрос по eval и new Function)
try { eval( 'var x = 5;\ var = 6' ); } catch( e ) { console.log( e ) } В объекте ошибки можно увидеть только type, message и stack. Как узнать, где именно возникла ошибка? |
Maxmaxmахimus, щитаймана постамана шайтана.
|
Если нужно выловить синтаксическую ошибку в коде eval, то можно записать код в eval в отдельный скрипт и выполнить.
|
Цитата:
SyntaxError: Unexpected token = at eval (eval at <anonymous> (unknown source)) at eval (native) at Object.InjectedScript._evaluateOn (unknown source) at Object.InjectedScript._evaluateAndWrap (unknown source) at Object.InjectedScript.evaluate (unknown source) |
Цитата:
|
Цитата:
|
Цитата:
<script> window.onerror = function (description, url, line) { alert("Где возникла ошибка : " + url + "\n\nОшибка на линии : " + line + "\n\nСама ошибка : " + description); return true; }; </script> <script>ОШИБКА!</script> |
melky, нет.
Лучше объясню, что мне нужно: я беру аяксом (именно аяксом) некоторый код, меняю его, запускаю. Нужно узнать, в какой строке и каком столбце (позиции "курсора") появилась ошибка. |
Можно подробнее, пожалуйста? Где меняешь код и как?
|
Допиливаю эту функцию: http://javascript.ru/forum/project/2...ak-v-node.html
Если в модуле появляется ошибка, неизвестно где она. |
Цитата:
... <script> window.onerror = function (description, url, line) { alert("Где возникла ошибка : " + url + "\n\nОшибка на линии : " + line + "\n\nСама ошибка : " + description); return true; }; function superEval (code) { var doc = document; doc.body.appendChild(doc.createElement("script")).innerHTML = code; } superEval("alert('Hello World!');\n\n\n\n LOL"); </script> |
melky, а как узнать, что ошибка именно в целевом скрипте, а не каком-то другом? Я вижу только вариант с айфреймом (для каждого скрипта создавать айфрейм).
|
Цитата:
если через ajax берётся и eval'тся, то надо как-то отыскивать этот скриптец. мб просто реализовать стековый тип данных ?? (последним вошёл, последним вышел) |
melky, фиг знает, слишком геморно. Наверно, все-таки, айфрейм.
Цитата:
|
Вот, собсно: http://jsfiddle.net/P4BSx/
|
Часовой пояс GMT +3, время: 02:27. |