我可以在调试时“跳过”jQuery代码吗?

时间:2010-05-21 19:36:36

标签: javascript jquery visual-studio firefox firebug

在逐步使用jQuery的脚本时,我只是想要测试代码我写的。我不想进入jQuery文件 - 我不是在调试jQuery,只是我自己的文件。

有没有办法告诉调试器不要进入jQuery文件?我使用Visual Studio + Internet Explorer以及Firefox + Firebug来逐步执行代码......两者似乎都喜欢介绍几十个jQuery语句。

例如,假设我有一个这样的脚本:

$("div").each(function() {
   $(this).hide();
});

这在技术上是单个语句 - 因此“Step Over”将立即执行所有代码,这将跳过内部“hide”语句。但是,“Step Into”将把我带到jQuery代码,在将它带到“隐藏”语句之前,我将不得不执行几十行代码。

我希望调试器完全忽略jQuery代码,因此我可以轻松地单步执行自己的代码,而不必单步执行jQuery代码。

在C#中,可以通过使用类的[DebuggerStepThrough()]属性来实现。但这对JavaScript没有帮助。

5 个答案:

答案 0 :(得分:10)

是的,你可以

至少在FireFox(25+)和Chrome(30 +)中。

在FireFox中,此功能称为"Black boxing",可以在FireFox 25中使用。它可以让您完全按照所需的方式进行操作:

Nick Fitzgerald and Chris Heilmann: "New Features of Firefox Developer Tools: Episode 25"

此功能也被引入Chrome(v30 +),但查找/配置更难。它被称为“跳过具有特定名称的来源”,而Collin Miller在描述如何配置它方面做得非常出色:

Collin Miller: "Tips and Tricks: Ignoring library code while debugging in Chrome"

我现在正在Chrome中使用它。它就像一个魅力,为我节省了很多时间。

答案 1 :(得分:2)

很确定答案是“不,这个功能不存在”。

但你的动机是什么?在我看来,就像在第2行设置一个断点并为第1行的“结果集”创建一个手表,而你在那里会得到你可能想要的东西。

答案 2 :(得分:1)

至少Firebug的JavaScript调试器有一个“跳过”选项,它仍然不会进入函数调用。

但是,您必须根据所调用的函数类型手动选择“step(into)”和“step over”。

答案 3 :(得分:1)

F10应该跳过函数调用,F11应该进入函数调用。这适用于VS和firebug。

答案 4 :(得分:0)

答案很简单,你只需重构函数即可。我不记得了

$("div").each(function() {
   doThis(this);
});

function doThis(object) {
   $(this).hide();
}

几乎肯定会使用一个中途不错的调试器。