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

use*_*073 18 javascript webkit

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

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

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

jos*_*736 47

在HTML的最顶层:

window.alert = function() {
    debugger;
}
Run Code Online (Sandbox Code Playgroud)

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


gio*_*_13 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);
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*laz 5

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

window.alert = function(msg) {
    console.log(msg);
}
alert('test');
Run Code Online (Sandbox Code Playgroud)