如果火狐看到一个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);
});
发布于 2018-11-25 12:10:53
在当前版本的Firefox编写此答案时(版本63.0.3),在开发人员工具的调试器部分,有一个图标和工具提示“跳过所有暂停”或“停用断点”。启用时,它似乎禁用在任何debugger
指令处停止。
发布于 2016-09-30 13:48:04
显然,该页面试图避免人们使用该构造调试其JavaScript代码。
Firebug中的调试
Firebug允许在debugger
语句上设置禁用的断点。因为页面会生成一个可变的调用堆栈深度,所以您需要为所有这些被禁用的断点设置断点,以便能够正确地调试JavaScript。不幸的是,当涉及到设置这些断点时,Firebug似乎存在错误。
此外,Firebug没有忽略所有debugger
语句的选项。
因此,如果你不需要调试JavaScript,只需要调试HTML、CSS、网络请求等,你可以简单地禁用脚本面板来避免这些恼人的调试器停顿。为此,请右键单击脚本选项卡,然后在打开的菜单中单击Enable。
注意:因为,所以提交增强请求是没有用的。
火狐DevTools中的调试
不幸的是,Firefox DevTools目前不允许避免在debugger
语句上停止。因此,你必须等到bug 1300934 (以同一网站为例)、bug 925269和/或issue 828被修复。
此外,没有办法完全禁用调试器面板,它被归档为bug 1247198。
发布于 2017-04-26 01:05:46
如果使用Greasemonkey,则可以重写setTimeout/setInterval
函数以禁用该脚本
unsafeWindow.setTimeout = function () {};
https://stackoverflow.com/questions/39766524
复制相似问题