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

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

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

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

6 ответов


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

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

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


Похоже, вы ищете Визуальное Событие.


возможно, вы захотите взглянуть на повторное введение пола Айриша в Инструменты разработчика Chrome, в частности, раздел временной шкалы (начинается примерно через 15 минут после начала видео.)

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


Если вы уверены, что это обработчик событий 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()

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

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


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