我有一个依赖于捕获文本区域中的键盘事件的 Javascript 应用程序。在使用 firebug (1.10.2) 在 Firefox (14.x) 上测试和调试它时,我注意到当我的断点处于事件状态并且调试器正在运行时,我的应用程序表现不同。
我知道如何检测 Firebug,但我想知道是否可以(使用 Javascript)检测 Firebug 实际用于调试的时间?
编辑:这是一些随机站点上的示例
This site在输入框中捕获按键事件,打印出字符代码并用文本表示(即“enter”表示回车键)或大写字母(如果是字母)替换按下的键。
当我使用 Chrome 调试它并在监听器函数上放置一个断点时,到达断点时没有任何反应(如预期的那样),当我恢复脚本时,文本会正常打印出来。
当我在 Firefox 上使用 Firebug 进行调试时:假设我之前按下了“e”字母并且输入栏包含文本“E”。我打开断点并按下字母“z”。 Firebug 在断点处停止,但输入栏现在有文本“Ez”而不是“E”。当我恢复脚本时,此文本按预期替换为“Z”。
我尝试了另一个 Firefox 调试器 (Venkman 0.9.89),同样的事情发生了。所以我猜这是 Firefox 的问题,而不是调试器的问题。所以这个问题可能比较笼统,Javascript代码调试时能检测到吗?
最佳答案
这是我用来检测 Firebug 的方法:
if (window.console && (window.console.firebug || window.console.exception)) {
// At this point, Firebug is enabled
}
第一个测试对于确保控制台确实存在很重要第二个测试将测试 Firebug,尽管它只适用于它的旧版本。第三个是因为 Firebug 添加了“异常”这是因为属性“异常”是由 Firebug 的插件添加的。
(无关但感兴趣:window.console.exception
是 Firebug 用于在控制台上显示消息的方法。例如,键入:
>>> window.console.exception("A message", {param:'Value'})
您将看到一个看起来非常熟悉的错误,其中包含传递对象的转储!
雇佣兵。
关于javascript - 检测何时使用 Firebug(或任何其他网络调试器)进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11966885/