【问题标题】:How to set breakpoint in Firebug on alert()?如何在警报()上的 Firebug 中设置断点?
【发布时间】:2014-10-21 13:49:27
【问题描述】:

我有一个非常复杂的网站,我知道某处有一个带有描述的alert()。有没有办法在alert() 调用上设置断点? HTML 已生成,所以我不能只 grep 获取消息。

【问题讨论】:

    标签: javascript debugging firebug


    【解决方案1】:

    可以使用控制台替换alert函数:

    window.alert = function() { debugger; };
    

    【讨论】:

    • 你是个传奇。谢谢!
    【解决方案2】:

    Firebug 的 Script 面板允许您在所有 JavaScript 源代码中搜索代码。

    因此您可以简单地搜索alert( 或搜索警报框显示的消息并在调用它的行设置断点。

    另一种方法是使用 Break On Next button ( ) 在下一个执行的 JavaScript 语句处停止。因此,请单击按钮,然后执行导致警报框移位的操作。
    注意:这仅适用于在显示警报框的事件之前没有调用其他事件处理程序的情况。

    【讨论】:

    • 如果有数百个这样的地方,在混淆/缩小代码中?
    • 如果代码被混淆和缩小,您至少可以通过 {} 按钮将其取消缩小并在alert() 中搜索文本。此外,您可以尝试@SLaks 的技巧。但是,如果您没有缩小代码的源代码,则通常是第三方代码,您应该为其维护者提交错误报告,而不是尝试自己调试。
    • 或者它可能是遗留代码。或者,上帝保佑,它可能是 eval()ed 通过字符串连接,或其他。你错过了重点。关键是挂钩库函数是一个广泛有用的调试功能,它应该很容易。挖掘任意数量的陌生代码并不容易。
    • 我同意挂钩到库函数应该很容易(同时我认为应尽可能避免调试混淆或缩小的代码)。我使用 Firebug 的 Break On Next 功能添加了第二个解决方案,尽管我不知道适用于每个用例的简单解决方案。如果您知道找到提问者要求的alert() 的更好方法,请随时写下答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多