Как игнорировать определенные script файлы/строки при отладке?

Я пытаюсь отладить некоторый JavaScript, я хочу узнать, какой код запускается, когда я навешиваю над определенным элементом div (я понятия не имею, какой бит кода, потому что нет прямого "onmouseover" - я подумайте, где где-нибудь есть селектор jQuery?).

Обычно я использую средство "Break All" / "Break On Next", предоставляемое Developer Tools/Firebug, но моя проблема заключается в том, что вместо этого вместо этого запускается другой код (тикеры, мышиные прослушиватели и т.д.).

Что бы я хотел сделать, это сказать отладчику игнорировать некоторые файлы JavaScript или отдельные строки, чтобы он не останавливался на коде, который мне неинтересен или не был исключен. Есть ли способ достичь этого в IE (плевать, плевать!) - или вы могли бы предложить лучший подход?

Ответ 1

В FireFox эта функция называется "Черный бокс" и будет доступна с FireFox 25. Она позволяет делать именно то, что вы ищете.

Эта функция была также представлена ​​в Chrome (v30 +), хотя она сложнее найти/настроить. Он назвал "пропустить источники с конкретными именами", а Collin Miller отлично справился с описанием того, как его настроить.

Обычно я за то, что вместо ответов ссылки и howtos здесь, но это просто закончилось мной, копируя сообщение Collin.

Ответ 3

Возможно, вам стоит взглянуть на Paul Irish Re-Introduction для инструментов разработчика Chrome, в частности раздел Timeline (начинается около 15 минут в видео.)

Вы можете начать запись всех событий javascript - выполнение функций (с исходными строками и т.д.) и отладки на основе событий, которые были запущены. Есть и другие действительно удобные инструменты отладки, скрывающиеся в этом разговоре с Google IO, который также поможет вам решить эту проблему.

Ответ 4

Если вы уверены, что это обработчик событий jQuery, вы можете попытаться сокрушить события jQuery. Это перезапишет все обработчики кликов (замените их интересующим вас типом) и выйдет из системы до того, как вызывается каждый обработчик событий:

var elem = document.body; // replace with your div
// wrap all click events:
$.each($._data(elem).events.click, function(i, v) { 
    var h = v.handler; 
    v.handler = function() {
      // or use 'alert' or something here if no Dev Tools
      console.log('calling event: '+ i);
      console.log('event handler src: '+ h.toString()); 
      h.apply(h, arguments); 
    };
})

Затем попробуйте вызвать тип события непосредственно через jQuery, чтобы исключить этот тип:

$('#your_div').click()

Ответ 5

Вы можете использовать расширение JavaScript Deobfuscator в Firefox: https://addons.mozilla.org/addon/javascript-deobfuscator/. Он использует тот же API отладки, что и Firebug, но представляет результаты по-разному.

На вкладке "Выполненные скрипты" будет показан весь запущенный код. Если какой-то несвязанный код также выполняется, его обычно достаточно легко пропустить. Но вы также можете настроить фильтры по умолчанию, чтобы ограничить количество отображаемого кода.

Ответ 6

Если вы используете IE 7.0, вы должны иметь панель инструментов разработчика, из которой вы можете отлаживать. Просто используйте точку останова, где вам нужно, остальная часть кода не остановится. Alternatavely вы также можете определить другие приложения, такие как Interdev/Visual Studio.net, для целей отладки.