你如何从扩展程序登录Firebug?

时间:2009-07-25 19:15:58

标签: debugging firefox logging console firebug

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

6 个答案:

答案 0 :(得分:16)

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

所以你需要首先引用Firebug扩展:

Firebug.Console.log(str);

答案 1 :(得分:2)

从firefox扩展程序的javascript:

内部登录到控制台

Application.console.log(“来自我的Firefox扩展程序的Hello!”);

答案 2 :(得分:1)

据我所知,只有在创建JetPack附加组件时才能这样做。正常调试由Mozilla的Venkman在http://www.mozilla.org/projects/venkman/

完成

答案 3 :(得分:1)

Firebug控制台与特定页面相关联,因此即使您设法在那里记录消息也不会很方便。你尝试过Chromebug吗?我没有使用它,但我希望找到一个类似的控制台,用于在那里使用扩展。

您也可以使用常规错误控制台,尽管您无法获得Firebug控制台提供的所有细节。您可以安装Console ^ 2 https://addons.mozilla.org/en-US/firefox/addon/1815以使错误控制台使用起来不那么痛苦。

答案 4 :(得分:1)

如果在您的扩展程序中您可以访问内容Window对象,则可以将其解包,并直接调用控制台方法:

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

答案 5 :(得分:1)

甚至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");

此处记录了这些内容:https://developer.mozilla.org/en/Code_snippets/Sidebar