Bik*_*ush 6 javascript debugging firefox firebug
我有一个Javascript应用程序,它依赖于捕获textarea中的键盘事件.在使用firebug(1.10.2)在Firefox(14.x)上测试和调试它时,我发现当我的断点处于活动状态并且调试器工作正常时,我的应用程序的行为会有所不同.
我知道如何检测Firebug,但我想知道是否可以检测(使用Javascript)Firebug实际用于调试时?
编辑:这是一些随机网站上的示例
此站点在输入框中捕获键事件,打印出字符代码并用文本表示替换按下的键(即输入键为"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
}
Run Code Online (Sandbox Code Playgroud)
第一个测试对于确保控制台实际存在很重要。第二个测试将测试 Firebug,尽管它仅适用于旧版本。第三个是 Firebug 添加了“例外”,这是因为“例外”属性是由 Firebug 的插件添加的。
(不相关但感兴趣:window.console.exception是 Firebug 用于在控制台上显示消息的方法。例如,键入:
>>> window.console.exception("A message", {param:'Value'})
Run Code Online (Sandbox Code Playgroud)
您将看到一个看起来非常熟悉的错误,其中包含传递对象的转储!
梅尔。