26

我使用一些不是我编写的非常大且令人困惑的 JavaScript 文件。有时会出现警报,但我不知道它来自哪里。

您可以在所有文件中搜索警报中包含的文本,但如果该文本是动态的,它将不起作用。

有没有办法设置断点以拦截警报?

4

4 回答 4

69

在 HTML 的最顶部:

window.alert = function() {
    debugger;
}

debugger是调用任何可用调试功能的语句。alert打开开发人员工具后,无论何时调用,您都会自动命中断点。然后,您可以检查调用堆栈以准确查看调用自定义alert函数的内容。

于 2013-01-04T14:51:42.497 回答
8

它可能对您有帮助,也可能没有帮助,但是您可以覆盖该alert函数来做任何您想做的事情。例如,您可以让它将消息记录到控制台,而不是警告框。

window.alert = function(msg) {
    console.log(msg);
}
alert('test');
于 2013-01-04T14:49:35.287 回答
6

我同意 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);
}
于 2013-01-04T14:53:56.533 回答
3

打开 ChromeF12按键并转到Sources。然后选择一个脚本文件Ctrl+F并搜索警报。您可以在任何您希望的行上放置断点

于 2013-01-04T14:51:55.217 回答