我使用一些不是我编写的非常大且令人困惑的 JavaScript 文件。有时会出现警报,但我不知道它来自哪里。
您可以在所有文件中搜索警报中包含的文本,但如果该文本是动态的,它将不起作用。
有没有办法设置断点以拦截警报?
我使用一些不是我编写的非常大且令人困惑的 JavaScript 文件。有时会出现警报,但我不知道它来自哪里。
您可以在所有文件中搜索警报中包含的文本,但如果该文本是动态的,它将不起作用。
有没有办法设置断点以拦截警报?
在 HTML 的最顶部:
window.alert = function() {
debugger;
}
debugger
是调用任何可用调试功能的语句。alert
打开开发人员工具后,无论何时调用,您都会自动命中断点。然后,您可以检查调用堆栈以准确查看调用自定义alert
函数的内容。
它可能对您有帮助,也可能没有帮助,但是您可以覆盖该alert
函数来做任何您想做的事情。例如,您可以让它将消息记录到控制台,而不是警告框。
window.alert = function(msg) {
console.log(msg);
}
alert('test');
我同意 Brian Glaz 的观点,但为了获得更多详细信息(行号),您可能会尝试在发出警告并在控制台上输出错误时抛出错误。这样,控制台会将您指向调用警报函数的正确行号。
将此代码段放在文档顶部并试一试:
var originalAlert = window.alert;
window.alert = function(){
try{
throw new Error('alert was called');
} catch(e){
console.warn(e);
}
return originalAlert.apply(window, arguments);
}
打开 ChromeF12
按键并转到Sources
。然后选择一个脚本文件Ctrl+F
并搜索警报。您可以在任何您希望的行上放置断点