Debugging 如何从扩展登录到Firebug?

Debugging 如何从扩展登录到Firebug?,debugging,firefox,logging,console,firebug,Debugging,Firefox,Logging,Console,Firebug,我正在为Firefox编写一个扩展,我需要将一些数据记录到Firebug的控制台。在我的插件范围内,“console”未定义,“window.content.console”也未定义。那么如何登录控制台呢?据我所知,只有在创建JetPack附加组件时,您才能登录控制台。正常的调试是由Mozilla的Venkman在Firebug控制台上完成的,Firebug控制台与特定的页面相关联,因此即使您设法在那里记录消息,也不会很方便。你试过Chromebug吗?我没有使用它,但我希望找到一个类似的控制台

我正在为Firefox编写一个扩展,我需要将一些数据记录到Firebug的控制台。在我的插件范围内,“console”未定义,“window.content.console”也未定义。那么如何登录控制台呢?

据我所知,只有在创建JetPack附加组件时,您才能登录控制台。正常的调试是由Mozilla的Venkman在Firebug控制台上完成的,Firebug控制台与特定的页面相关联,因此即使您设法在那里记录消息,也不会很方便。你试过Chromebug吗?我没有使用它,但我希望找到一个类似的控制台供扩展使用


您还可以使用常规错误控制台,尽管您无法获得Firebug控制台提供的所有细节。您可以安装Console ^2,以使使用错误控制台的痛苦减少一点。

由于您没有编写在窗口中执行的Javascript,因此未定义
Console

因此,您需要首先引用Firebug扩展:

Firebug.Console.log(str);

如果在扩展中您有权访问内容窗口对象,则可以将其展开,并直接调用控制台方法:

window.wrappedJSObject.console.log('something important');

有些上下文甚至连Firebug对象都是未知的,比如如果您试图从侧边栏调用它。。。在这种情况下,您必须返回原始窗口以获取firebug对象:

 var Firebug = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
 .getInterface(Components.interfaces.nsIWebNavigation)
 .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
 .rootTreeItem
 .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
 .getInterface(Components.interfaces.nsIDOMWindow).Firebug;
然后,您可以在侧边栏中调用Firebug,如下所示:

Firebug.Console.log("foo");

这里记录了这一点:

要从firefox扩展的javascript内部登录到控制台:


Application.console.log(“来自我的Firefox扩展的你好!”)

哎呀,
Firebug
未定义!我已经安装了Firebug,但似乎你不能再这样做了
Firebug
未定义的
@TahaJahangir,只需打开当前页面的Firebug,然后按f5;)试试这个Application.console.log(“你好,来自我的Firefox扩展!”);window.wrappedJSObject未定义