Отладка событий JavaScript с помощью Firebug
мне нужно установить точку останова для определенного события, но я не знаю, где она определена, потому что у меня есть гигантская куча свернутого кода JavaScript, поэтому я не могу найти его вручную.
можно ли как-то установить точку останова, например, событие click на элемент с ID registerButton
, или найти где-нибудь, какая функция связана с этим событием?
Я нашел дополнение Firefox Javascript Deobfuscator, который показывает выполняемый в настоящее время JavaScript, который приятно, но код, который мне нужно отладить, использует jQuery, поэтому есть множество вызовов функций даже на простейшем событии,поэтому я не могу использовать это.
есть ли отладчик специально для jQuery?
кто-нибудь знает какой-нибудь инструмент, который поворачивает уменьшенный JavaScript обратно в в формате код как включить function(){alert("aaa");v=3;}
обратно в
function() {
alert("aaa");
v = 3;
}
8 ответов
Ну, это может быть слишком много проблем, чем это стоит, но, похоже, у вас есть три вещи, чтобы сделать:
De-minify источник. Мне нравится этот онлайн-инструмент для быстрого и грязного. Просто вставьте код и нажмите кнопку. Никогда не подводил меня, даже на самом фанковом JavaScript.
все связыватели событий jQuery перенаправляются в
"jQuery.event.add"
(вот как это выглядит в unbuilt источник), поэтому вам нужно найти этот метод и установить там точку останова.если вы достигли этого, все, что вам нужно сделать, это проверить callstack в точке останова, чтобы увидеть, кто вызвал что. Обратите внимание, что поскольку вы находитесь во внутреннем месте в библиотеке, вам нужно будет проверить несколько прыжков (так как код вызывает
"jQuery.event.add"
скорее всего, просто другие функции jQuery).
обратите внимание, что 3) требуется Firebug для FF3. Если вы похожи на меня и предпочитаете отлаживать Firebug для FF2, вы можете использовать age-old arguments.callee.caller.toString()
метод проверки callstack, вставляя столько ".caller
" s по мере необходимости.
редактировать: кроме того, см. " как отлаживать привязки событий Javascript / jQuery с помощью FireBug (или аналогичного инструмента)".
вы можете быть в состоянии уйти с:
// inspect
var clickEvents = jQuery.data($('#foo').get(0), "events").click;
jQuery.each(clickEvents, function(key, value) {
alert(value) // alerts function body
})
вышеупомянутый трюк позволит вам увидеть код код обработки событий, и вы можете просто начать охоту его в код source, в отличие от попытки установить точку останова в источнике jQuery.
сначала замените minified jquery или любой другой источник, который вы используете с formated. Еще один полезный трюк, который я нашел, - это использование profiler в firebug. Профайлер показывает, какие функции выполняются и вы можете нажать на одну и поехать туда, чтобы установить точку останова.
просто обновление:
Google Chrome (the dev tools В) все точки останова, вместе с перерыв на событие.
все событий вместе с ориентация устройства изменения и таймеры
вы можете ознакомиться видео с презентацией всех возможностей от Google IO.
там также встроенный deminifier/ unminimizer/ prettifier который поможет вам установить точки останова вручную на сжатых файлах javascript.
Что вы можете сделать, это получить мини-код - у вас будет доступ к этому. Де-минимизировать код согласно Полумесяца свежее по (1) или любой метод вы предпочитаете.
затем загрузите и установите Fiddler-у всех веб-разработчиков должен быть установлен этот невероятный инструмент.
затем с помощью Fiddler вы можете перехватить вызов браузера для minified.JS-файл с локальным unminified.js у вас есть на вашем местном диске.
Fiddler в основном перехватывает Ваш браузер запрос на определенный файл и может обслуживать другой файл в вашем браузере. Таким образом, теперь вы можете посмотреть на un-minified код.
легко.
другой вариант-использовать Firefox и установить на него отладчик Venkman - намного лучше, чем Firebug IMHO, - и отладчик Venkman имеет опцию "pretty print", которая может визуально уменьшать уменьшенный код во время выполнения. Придерживайтесь точки разрыва, где вы хотите сейчас...
другое обновление: теперь есть расширение firebug, которое украшает JavaScript:
https://addons.mozilla.org/en-US/firefox/addon/javascript-deminifier/
Он отлично работает для меня в Firefox 12.0.
кредит на этот ответ для наблюдения за ним.
можно использовать debugger
команда в любом месте файла javascript. Когда интерпретатор попадает в это состояние, если отладчик доступен (например, Firebug), то он запускается
найдите линию и поместите точку останова. Затем перезагрузите сайт / страницу. Затем firebug автоматически приостанавливает выполнение инструкции при попадании точки останова.
Это сделает работу. http://jsbeautifier.org/ Вы также можете искать Google для JavaScript beautifier.