Могу ли я "перешагнуть" только код jQuery во время отладки?
При переходе через script, который использует jQuery, я просто хочу протестировать код , который я написал. Я не хочу входить в файл jQuery - я не отлаживаю jQuery, просто мой собственный файл.
Есть ли способы сказать отладчику не входить в файл jQuery? Я использую Visual Studio + Internet Explorer, а также Firefox + Firebug для перехода через код... и оба, похоже, любят проходить через десятки операторов jQuery.
Например, скажем, у меня есть script, как это:
$("div").each(function() {
$(this).hide();
});
Это технически один оператор, поэтому "Step Over" будет выполнять весь код сразу, что пропустит внутренний оператор "hide". Тем не менее, "Step Into" перенесет меня в код jQuery, и мне нужно будет выполнить десятки строк кода, прежде чем он перенесет меня в оператор "hide".
Я бы хотел, чтобы отладчик полностью игнорировал код jQuery, поэтому я могу легко выполнить свой собственный код и никогда не переходить через код jQuery.
В С# это возможно с помощью атрибута [DebuggerStepThrough()] для класса. Но это не помогает с JavaScript.
Ответы
Ответ 1
Да, вы можете
По крайней мере, в FireFox (25+) и Chrome (30 +).
В FireFox эта функция называется "Black boxing"
и будет доступна с FireFox 25. Она позволяет делать именно то, что вы ищете:
Ник Фитцджеральд и Крис Хейлманн: "Новые возможности Firefox Developer Tools: Episode 25"
Эта функция была также представлена в Chrome (v30 +), хотя она сложнее найти/настроить. Он назвал "пропустить источники с конкретными именами", и Коллин Миллер отлично справился с описанием того, как его настроить:
Collin Miller: "Советы и рекомендации: Игнорирование кода библиотеки при отладке в Chrome"
Я использую его сейчас в Chrome. Он работает как шарм и спасает меня так много времени.
Ответ 2
Довольно уверен, что ответ "нет, эта функция не существует".
Какова ваша мотивация здесь? Мне кажется, что установить точку останова на линии 2 и создать часы для "набора результатов" строки 1, пока вы там, получите то, что вы, вероятно, захотите.
Ответ 3
По крайней мере, у отладчика JavaScript Firebug есть опция "перейти", которая по-прежнему не спускается в вызовы функций.
Однако вам придется выбирать между "step (in)" и "step over" вручную в зависимости от того, какую функцию вызывается.
Ответ 4
F10 должен переходить через вызовы функций, F11 должен входить в вызовы функций. Это работает в VS, а также в firebug.
Ответ 5
Ответ довольно прост, вам просто нужно реорганизовать функцию. Я не могу вспомнить
$("div").each(function() {
doThis(this);
});
function doThis(object) {
$(this).hide();
}
Почти наверняка будет работать с половинным приличным отладчиком.