Javascript 使用“调试”时,如何排除setTimeout或setInterval类型的语句;“下一次休息”吗;?

Javascript 使用“调试”时,如何排除setTimeout或setInterval类型的语句;“下一次休息”吗;?,javascript,Javascript,我目前正在使用一个大型的预先存在的代码库,它可能有一个或多个setInterval计时器一直在运行,来自各种插件或库。这基本上不可能尝试使用下一步中断来调试单击元素时发生的情况 问题:只要单击“下一步中断”,浏览器调试器(使用Firebug和Chrome进行了尝试)就会在其中一个setInterval函数中停止,然后我才有机会与页面交互以真正调试所需的事件 特定问题:我有一些复选框,无论单击多少次,在未选中时都会保持未选中状态。我已经删除了ID和类名,但毫无用处,似乎没有附加任何事件处理程序 注

我目前正在使用一个大型的预先存在的代码库,它可能有一个或多个setInterval计时器一直在运行,来自各种插件或库。这基本上不可能尝试使用下一步中断来调试单击元素时发生的情况

问题:只要单击“下一步中断”,浏览器调试器(使用Firebug和Chrome进行了尝试)就会在其中一个setInterval函数中停止,然后我才有机会与页面交互以真正调试所需的事件

特定问题:我有一些复选框,无论单击多少次,在未选中时都会保持未选中状态。我已经删除了ID和类名,但毫无用处,似乎没有附加任何事件处理程序


注意:不使用jQuery这可能会阻止其他事情,但是如果您尝试像这样用猴子修补这些调用会怎么样:

window.setInterval = function() { console.log("setInterval", arguments); };
window.setTimeout = function() { console.log("setTimeout", arguments); };
如果您发现一些超时/间隔实际上需要重现您的问题,您可以尝试让它们通过。代码可能是这样的:

window.oldSetTimeout = window.setTimeout;
window.setTimeout = function() { 
    if (arguments[0] == "code you want to allow") {
         oldSetTimeout.apply(null, arguments);
    } else {
         console.log("setTimeout", arguments); 
    }
};

注意:我不会感到惊讶,因为monkey patching setTimeout不能跨浏览器工作,但它可以在FF 18.0上工作。这不是一个通用的解决方案,甚至可能不足以解决您的问题,但您可以放置一个
调试器调用单击处理程序,以便在单击复选框时激活调试器。(如果您不知道click处理程序连接到哪里,或者是否有多个处理程序,那么这可能不够。)我不知道调用的是哪个处理程序,或者从哪里。。。它甚至可以是父元素。这就是为什么我想在浏览器中使用break-on-next,但不要让setInterval代码妨碍我。谢谢,这实际上是一个很好的解决方法来停止(或至少延迟)setInterval,只要我确定将monkey补丁放在文档的最顶端。