javascript - 检测何时使用 Firebug(或任何其他网络调试器)进行调试

标签 javascript debugging firefox firebug

我有一个依赖于捕获文本区域中的键盘事件的 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/

相关文章:

javascript - jQuery 查找的 IE7 问题?

javascript - AngularJS ngModelController

c# - Visual Studio 错误 : "The debugger cannot unwind to this frame." on any exceptions

css - 父级使用绝对定位时,Chrome/Firefox 不一致

javascript - 在 Firefox 中获取选项卡导航事件

javascript - Babeljs 中的 "loose"是什么意思?

C++ 这个类有什么问题?

python - 调试:使用 gdb 单步执行 Python 脚本?

python-3.x - 如何从网站中提取图片src

javascript - 箭头键在 Firefox 中无法使用给定的 javascript 工作