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

Создание Firebug в динамически загружаемом javascript

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

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

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

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

Адриан

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

4b9b3361

Ответ 1

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

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

//myExternal.js
debugger;
function myExternalFunction(){
 debugger;
 /* do something here */
}

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

Работает, отделив окно Firebug ( "Открыть Firebug в новом окне" ).

Ответ 5

Там также есть ключевое слово 'debugger', которое поддерживается отладчиком IE JScript и Safari Web Inspector, поэтому я был бы удивлен, если бы ifit не был включен в firebug.

В принципе:

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

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