Установите точки останова и отлаживайте eval'd JavaScript

я* Я использую JS на стороне клиента для анализа XML-файлов и создания сложного кода JS дляeval в следствии. (Создание многократно используемых функций, запускаемых средой выполнения.) Однако мне нужно отладить сгенерированный код, и я хотел бы использовать встроенные в Chrome точки останова, пошаговое выполнение, окна просмотра и т. Д.

Есть ли более простой способ сделать это, чем:

Dump the generated JS string to the console and/or window. Copy the JavaScript (optional) Run the JS through a prettifier like JSBeautifier. Paste the JS into a file that is loaded via <script src="..."> in another web page.

* actually, a friend of mine was doing this, not me

Ответы на вопрос(1)

Решение Вопроса

Вместо того, чтобы использоватьevalи вместо того, чтобы вручную копировать / вставлять в отдельный файл, вы можете динамически загружать JS непосредственно на страницу, которая его сгенерировала, используяданные URI на динамически созданном<script> элемент. При таком подходе инструменты разработчика Chrome (и Firebug) позволяют вам выбирать URI-данные в качестве сценария, включать симпатичную печать, устанавливать точки останова и все готово.

var js = createMyJSCodeString();
addCode(js); // Right now! Debuggable!

// Dynamically evaluate JavaScript-as-string in the browser
function addCode(js){
  var e = document.createElement('script');
  e.type = 'text/javascript';
  e.src  = 'data:text/javascript;charset=utf-8,'+escape(js);
  document.body.appendChild(e);
}
 28 июн. 2012 г., 18:32
Итак, что жеcreateMyJSCodeString делать? Вы сказали, что он анализирует файлы XML?
 09 дек. 2013 г., 15:47
(в случае, если я снова Google это.) Это также может быть использовано для устранения ошибок сnew Function
 28 июн. 2012 г., 17:41
Вы только ... ответили себе? Похоже, вы уже говорили об этом в своем вопросе.
 Phrogz28 июн. 2012 г., 17:45
@TheZ Да, я сделал. Этоaccepted practice on Stack Overflow для добавления в базу знаний. Теперь есть даже галочка, чтобы нажать для автоматического добавления ответа при публикации вопроса, что я и использовал здесь.
 28 июн. 2012 г., 17:48
О, я вижу! Спасибо за объяснение

Ваш ответ на вопрос