有没有办法获得警报框的来源?

时间:2013-01-04 14:45:53

标签: javascript webkit

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

您可以在所有文件中搜索警报中包含的文本,但如果该文本是动态的,则无效。

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

4 个答案:

答案 0 :(得分:41)

位于HTML的最顶层:

window.alert = function() {
    debugger;
}

debugger是一个调用任何可用调试功能的语句。打开开发人员工具后,只要调用alert,您就会自动点击断点。然后,您可以检查调用堆栈以确切了解调用自定义alert函数的内容。

答案 1 :(得分:5)

它可能对您有帮助,也可能没有帮助,但您可以覆盖alert函数以随意执行任何操作。例如,您可以将消息记录到控制台,而不是警告框。

window.alert = function(msg) {
    console.log(msg);
}
alert('test');

答案 2 :(得分:3)

打开Chrome推送F12键,然后转到Sources。 然后选择脚本文件Ctrl+F并搜索警报。 你可以在你想要的任何一行上放置断点

答案 3 :(得分:3)

我同意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);
}
相关问题