如何告诉 Firefox 在看到
debugger
关键字时不要停止?
我需要避免连续的
debugger
循环,以防网站使用调试保护使用计时器动态生成 debugger
语句。
这是一个例子。如果您打开调试控制台,脚本将抛出大量调试器语句,这将阻止您正常的调试工作。
一个示例网站是 http://www.avito.ru - 俄罗斯最大的分类网站。打开它,然后打开调试器控制台,它将立即停止在生成脚本中的
debugger
关键字处。
(function(x/**/) {
(function(f){
(function a(){
try {
function b(i) {
if(
(''+(i/i)).length !== 1 ||
i % 20 === 0
) {
(function(){}).constructor('debugger')();
} else {
debugger;
}
b(++i);
}
b(0);
} catch(e) {
f.setTimeout(a, x)
}
})()
})(document.body.appendChild(document.createElement('frame')).contentWindow);
});
显然,该页面试图避免人们使用该构造调试他们的 JavaScript 代码。
在 Firebug 中调试
Firebug 允许在
debugger
语句上设置禁用断点。由于该页面生成可变的调用堆栈深度,因此您需要为所有这些断点设置这些禁用的断点,以便能够正确调试 JavaScript。不幸的是,Firebug 在设置这些断点时似乎有问题。
此外,Firebug 没有选项可以忽略所有
debugger
语句。
因此,如果您不需要调试 JavaScript,而只需要调试 HTML、CSS、网络请求等,则只需禁用 Script 面板即可避免这些烦人的调试器停止。为此,请右键单击“脚本”选项卡,然后在打开的菜单中单击“启用”。
注意:由于Firebug 开发已停止
,因此对其提出增强请求是没有用的。不幸的是,Firefox DevTools 目前不允许避免在
debugger
语句上停止。因此,您必须等到 bug 1300934(其中提到了同一网站作为示例)、
bug 925269和/或 issue 828 得到修复。 此外,无法完全禁用 Debugger 面板,该面板被归档为 bug 1247198Greasemonkey
setTimeout/setInterval
函数来禁用脚本
unsafeWindow.setTimeout = function () {};
铬
火狐 对于 Firefox,您可以
blackbox