如果Firefox看到debugger
关键字,该如何告诉Firefox不要停止?
我需要避免连续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);
});
答案 0 :(得分:3)
显然,该页面试图避免人们使用该结构调试他们的JavaScript代码。
在Firebug中调试
Firebug允许在debugger
语句中设置禁用的断点。由于页面生成可变调用堆栈深度,因此您需要为所有这些设置禁用的断点,以便能够正确调试JavaScript。不幸的是,在设置这些断点时,Firebug似乎有些错误。
此外,Firebug没有选择忽略所有debugger
语句。
因此,如果您不需要调试JavaScript,只需要调试HTML,CSS,网络请求等,您只需禁用脚本面板即可避免这些烦人的调试器暂停。为此,请右键单击脚本选项卡,然后在打开菜单中单击启用。
注意:由于Firebug development is discontinued,提交增强请求无效。
在Firefox DevTools中调试
不幸的是,Firefox DevTools目前不允许避免暂停debugger
语句。因此,您必须等到bug 1300934(以同一网站为例),bug 925269和/或issue 828已修复。
此外,无法完全禁用调试器面板,该面板归档为bug 1247198。
答案 1 :(得分:3)
如果你使用 Greasemonkey ,你可以重写setTimeout/setInterval
函数来禁用脚本
unsafeWindow.setTimeout = function () {};
答案 2 :(得分:3)
答案 3 :(得分:1)
在chrome中,您可以编辑断点并设置一个始终为false的条件,它将不再对调试器起作用
另一种选择是使用“从不在这里暂停”
对于Firefox,您可以blackbox不想被断点击中的脚本。对我来说,它导致挂Firefox。但是当您重新启动浏览器时。那没关系