Подтвердить что ты не робот

Могу ли я "перешагнуть" только код 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.

4b9b3361

Ответ 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();
}

Почти наверняка будет работать с половинным приличным отладчиком.