How do you log to Firebug from an extension?

2019-02-06 05:46发布

I'm writing an extension for Firefox, and I need to log some data to Firebug's console. Within the scope of my addon, "console" is undefined, and "window.content.console" is also undefined. So how do I log to the console?

6条回答
戒情不戒烟
2楼-- · 2019-02-06 06:30

There are contexts in which even the Firebug object is unknown, like if you're trying to call it from a sidebar... in which case you have to go all the way back to the original window to get the firebug object:

 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;

You can then from within your sidebar call Firebug like so:

Firebug.Console.log("foo");

This is documented here: https://developer.mozilla.org/en/Code_snippets/Sidebar

查看更多
看我几分像从前
3楼-- · 2019-02-06 06:36

To log to the console from inside a firefox extension’s javascript:

Application.console.log("Hello from my Firefox Extension!");

查看更多
乱世女痞
4楼-- · 2019-02-06 06:41

Since you're not writing Javascript that executes within a window, console is not defined.

So you need to reference the Firebug extension first:

Firebug.Console.log(str);
查看更多
叼着烟拽天下
5楼-- · 2019-02-06 06:41

If in your extension you have access to the content Window object, you can unwrap it, and call the console methods directly:

window.wrappedJSObject.console.log('something important');
查看更多
叼着烟拽天下
6楼-- · 2019-02-06 06:45

Firebug console is associated with a particular page, so it wouldn't be very convenient even if you managed to log messages there. Did you try Chromebug? I didn't use it, but I would expect to find a similar console for extensions to use there.

You could also use the regular Error Console, although you won't get all the niceties Firebug's console provides. You could install Console^2 https://addons.mozilla.org/en-US/firefox/addon/1815 to make using the Error Console a little less painful.

查看更多
兄弟一词,经得起流年.
7楼-- · 2019-02-06 06:46

As far as I know you can only do that if you are creating a JetPack Add-on. Normal debugging is done with Venkman from Mozilla at http://www.mozilla.org/projects/venkman/

查看更多
登录 后发表回答