Как отлаживать javascript при загрузке всплывающего окна?
Каков наиболее эффективный способ отладки кода JavaScript, который запускается во всплывающем окне? В частности, мне нужно отслеживать, что происходит при загрузке страницы.
Это для курсов SCORM 1.2, работающих в LMS, что зависит от других объектов JavaScript в родительском окне, поэтому отладка всплывающего окна сама по себе не будет работать.
Я мог бы использовать технику для других контекстов, хотя большая часть моего времени отлаживает эти курсы.
Я могу использовать что-то вроде опции в отладчике в браузере, которая останавливается в первой строке JavaScript, которая выполняется для всплывающей страницы, как если бы я поставил там контрольную точку. (Я не могу или, по крайней мере, не знаю, как установить точки останова до начала страницы)
Edit:
Оператор debugger;
работает, но только для кода, которым я управляю. Иногда мне приходится отслеживать JavaScript, который запускается, когда открывается всплывающее окно, и не может добавить точки останова, поскольку код уже запущен.
Ответы
Ответ 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]()
Ответ 6
С 2016 года Chrome теперь имеет эту опцию в настройках ChromeDevTools
https://twitter.com/chromedevtools/status/697993811696291842?lang=en