Подтвердить что ты не робот

Как отлаживать javascript при загрузке всплывающего окна?

Каков наиболее эффективный способ отладки кода JavaScript, который запускается во всплывающем окне? В частности, мне нужно отслеживать, что происходит при загрузке страницы.

Это для курсов SCORM 1.2, работающих в LMS, что зависит от других объектов JavaScript в родительском окне, поэтому отладка всплывающего окна сама по себе не будет работать.

Я мог бы использовать технику для других контекстов, хотя большая часть моего времени отлаживает эти курсы.

Я могу использовать что-то вроде опции в отладчике в браузере, которая останавливается в первой строке JavaScript, которая выполняется для всплывающей страницы, как если бы я поставил там контрольную точку. (Я не могу или, по крайней мере, не знаю, как установить точки останова до начала страницы)

Edit:

Оператор debugger; работает, но только для кода, которым я управляю. Иногда мне приходится отслеживать JavaScript, который запускается, когда открывается всплывающее окно, и не может добавить точки останова, поскольку код уже запущен.

4b9b3361

Ответ 1

Вы можете поместить волшебство

debugger;

в любом месте вашего javascript-кода (каждый отладчик, о котором я знаю, остановится там, автоматически установив точку останова в этой строке).

Если это тоже не помогает, я просто "открываю эту страницу в новом окне/вкладке" и сам настраиваю точки останова, а также используя debugger;

Ответ 2

Развернувшись на ответе @jAndy, я обнаружил, что Fiddler AutoResponder является эффективным способом поместить в выражения debugger; или другие полезные вызовы в код, который вы не контролируете.

Что-то вроде:

  • Перед началом работы очистите кеш.
  • Запустите сайт, разрешив для загрузки все файлы, с которыми вы хотите работать.
  • Определите запрос, который вы хотите изменить, например. файл JavaScript, который вы хотите отлаживать.
  • Экспортировать этот сеанс из Fiddler в локальный файл.
  • Отредактируйте локальный файл, чтобы добавить операторы debugger; или что-то еще.
  • Вернитесь в fiddler, снова выберите запрос, затем вкладку AutoResponder.
  • Выберите "Добавить правило", который по умолчанию создаст новое правило для этого точного URL.
  • В поле со списком внизу выберите "Найти файл".. затем перейдите к файлу, который вы подделали.
  • Убедитесь, что отмечены флажки "Включить автоматические ответы" и "Непревзойденные запросы через верх" вверх.
  • Очистите кеш в браузере, затем перезапустите сайт или страницу, которую вы пытаетесь отладить.

Теперь браузер загрузит локальную версию файла вместо сайта. Могут быть другие способы заменить локальный файл удаленным URL-адресом в браузере (у Чарльза есть что-то вроде AutoResponder и Proxomitron, но я не знаю, есть ли там, например, аддон браузера, чтобы сделать это, но такие вещи, как Greasemonkey, могут также работа).

Ответ 3

В Chrome: загрузите всплывающее окно, пока оно по-прежнему загружается, сосредоточитесь на нем, быстро нажмите F12 (открыть инструмент разработчика), затем F8.

Ответ 4

Я бы рекомендовал выводить информацию на консоль с помощью функции console. Затем вы можете увидеть эту информацию в инструменте отладки, таком как Firebug для Firefox, или встроенные в Chrome. Кроме того, вы всегда можете использовать alert для отладки.

Или, может быть, я не понимаю что-то о вашем вопросе....

Ответ 5

В Chrome вы можете добавить // @sourceURL=myScriptName.js к концу своего script, затем загрузите вкладку Sources в Chrome Inspect, когда всплывающее окно откроется.

Обратитесь к Отладка JavaScript

Также, если вы используете ASP.NET MVC, вы можете добавить @{Write("//@ sourceURL=myScriptName.js");} и ваши скрипты, находящиеся внутри ваших файлов *.cshtml.

Chrome Inspect