Разрыв Firebug внутри динамически загружаемого JavaScript - PullRequest
17 голосов
/ 13 мая 2009

Я ищу способ отладки динамически загруженной функции jQuery document.ready.

Очевидно, что я не могу просто вызвать панель сценариев и добавить точку останова с помощью мыши, так как функция там не существует.

Я также попытался добавить "отладчик"; к функции (без кавычек), но это ничего не сделало. Я гарантировал, что функция действительно выполняется, пока я пытался это сделать.

Спасибо за вашу помощь,

Адриан

Редактировать: Я только что заметил, что Firebug действительно ломается при отладке. Однако, когда он делает это на динамически загружаемом скрипте, он не вызывает исходный код этого скрипта, как обычно. Плюс, стек вызовов заканчивается прямо под моим собственным кодом. Я могу вызвать реализацию для document.ready через стек вызовов, но это не очень помогает. Это ошибка Firebug или я что-то пропустил?

Ответы [ 5 ]

17 голосов
/ 17 мая 2009

Я только что работал над этим похожим вопросом . Решение включает добавление слова отладчик дважды; один раз в верхней части внешнего файла и еще один в верхней части функции, которую необходимо отладить.

Я заметил, что если слово отладчика использовалось только один раз, оно не работало. Пример:

//myExternal.js
debugger;
function myExternalFunction(){
 debugger;
 /* do something here */
}
0 голосов
/ 16 июля 2011

Только что встретил то же поведение (Firebug игнорирует оператор debugger; в динамически загруженном коде) в Firefox 5.0 / Firebug 1.7.3 .

Обошлось, отсоединив окно Firebug («Открыть Firebug в новом окне»).

0 голосов
/ 31 июля 2010

Я не знаю, понимали ли вы когда-нибудь это, но в случае, если это кому-то еще нужно ...

Я справился с этим, переместив код, который я хотел отладить, во внешний файл, связанный с главной страницей.

В моем случае у меня был default.aspx, который загружал services.aspx в div содержимого с помощью jQuery AJAX. Services.aspx, в свою очередь, загружал элементы вкладки пользовательского интерфейса jQuery с помощью AJAX из веб-службы, которая предоставляла ему данные. Код веб-сервиса был в файле с именем data.js, который был связан с default.aspx. Мне нужно было отладить код, который был в заголовке services.aspx (который загружал вкладки с данными), но не мог увидеть его ни в одном из доступных инспекторов. Я просто переместил нужный мне код в новую функцию в data.js и вызвал его из заголовка в services.aspx.

Надеюсь, это имеет смысл для тех, кто в этом нуждается!

0 голосов
/ 14 мая 2009

Существует также ключевое слово «отладчик», которое поддерживается отладчиком IE JScript и веб-инспектором Safari, поэтому я был бы удивлен, если бы он не поддерживался в firebug.

В основном:

// mydynamicallyloadedfile.js
... // do stuff
debugger; // triggers debugger
... // more stuff

И я ожидаю, что firebug сломается по ключевому слову debugger

.
0 голосов
/ 13 мая 2009

Вы можете попытаться установить точку останова там, где вызывается событие, а затем вместо «Play» выбрать «Step Into» (F11). Передо мной нет тестового примера, но я думаю, что это может сработать.

...