How do you log to Firebug from an extension?

前端 未结 6 642
灰色年华
灰色年华 2020-12-31 08:08

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.consol

相关标签:
6条回答
  • 2020-12-31 08:38

    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/

    0 讨论(0)
  • 2020-12-31 08:42

    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');
    
    0 讨论(0)
  • 2020-12-31 08:43

    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);
    
    0 讨论(0)
  • 2020-12-31 08:47

    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.

    0 讨论(0)
  • 2020-12-31 08:49

    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

    0 讨论(0)
  • 2020-12-31 09:01

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

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

    0 讨论(0)
提交回复
热议问题