在使用"Break on Next"进行调试时,如何排除setTimeout或setInterval类型语句?

Mic*_*ler 6 javascript

我目前正在处理一个大的预先存在的代码库,它可能有一个或多个setInterval 定时器,它们从各种插件或库中一直运行.这基本上使得无法尝试使用Break on Next来调试单击元素时发生的情况.

问题:一旦我单击Break on Next,浏览器调试器(尝试使用Firebug和Chrome)会在其中一个setInterval函数中停止,然后我才有机会与页面进行交互以真正调试我想要的事件.

具体问题:无论多少次点击它们,我都会在未经检查时保持未选中的复选框.我删除了ID和类名也没有用,似乎没有附加事件处理程序.

注意:不使用jQuery

Mar*_*ski 1

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

window.setInterval = function() { console.log("setInterval", arguments); };
window.setTimeout = function() { console.log("setTimeout", arguments); };
Run Code Online (Sandbox Code Playgroud)

如果您发现确实需要一些超时/间隔来重现您的问题,您可以尝试让它们通过。代码可能是这样的:

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

注意:我不会惊讶猴子补丁 setTimeout 不能跨浏览器工作,但它可以在 FF 18.0 上工作