Как игнорировать определенные файлы скриптов / строк при отладке? - PullRequest
11 голосов
/ 02 июня 2011

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

Обычно я бы использовал средство «Разбить все» / «Разбить дальше», предоставляемое Developer Tools / Firebug, но моя проблема в том, что другой код (тикеры, слушатели движения мыши и т. д.). Вместо этого сразу же ловится.

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

Ответы [ 6 ]

15 голосов
/ 26 сентября 2013

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

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

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

5 голосов
/ 09 июня 2011

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

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

5 голосов
/ 04 июня 2011

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

2 голосов
/ 04 июня 2011

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

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

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

0 голосов
/ 02 июня 2011

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

...