2009-07-25 27 views
13

Estoy escribiendo una extensión para Firefox, y necesito registrar algunos datos en la consola de Firebug. Dentro del alcance de mi complemento, "consola" no está definida, y "window.content.console" tampoco está definida. Entonces, ¿cómo me conecto a la consola?¿Cómo se conecta a Firebug desde una extensión?

Respuesta

16

Dado que no está escribiendo Javascript que se ejecuta dentro de una ventana, console no está definido.

Así que hay que hacer referencia a la extensión Firebug primera:

Firebug.Console.log(str); 
+5

¡Oopch, 'Firebug' no está definido! –

+0

Tengo Firebug instalado pero parece que ya no puedes hacer esto. 'Firebug' es' undefined'. –

+0

@TahaJahangir, simplemente encienda su Firebug para la página actual y presione f5;) –

1

La consola Firebug está asociada a una página en particular, por lo que no sería muy conveniente incluso si lograra registrar mensajes allí. ¿Has probado Chromebug? No lo usé, pero esperaría encontrar una consola similar para extensiones para usar allí.

También podría utilizar la consola de errores habitual, aunque no obtendrá todas las delicadezas que ofrece la consola de Firebug. Puede instalar Console^2 https://addons.mozilla.org/en-US/firefox/addon/1815 para hacer que el uso de la consola de errores sea un poco menos doloroso.

1

Si en su extensión a la que tiene acceso al objeto de ventana de contenido, puede desenvolverlo, y llamar a los métodos de la consola directamente:

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

window.wrappedJSObject no está definido –

1

Hay contextos en los que incluso el objeto Firebug es desconocido, como si estuviera tratando de llamarlo desde una barra lateral ... en cuyo caso tiene que volver a la ventana original para obtener el objeto 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; 

Puede entonces desde el interior de la barra lateral llamada Firebug así:

Firebug.Console.log("foo"); 

Esto está documentado aquí: https://developer.mozilla.org/en/Code_snippets/Sidebar

2

Para conectarse a la consola desde el interior de JavaScript de una extensión para Firefox:

Application.console.log ("¡Hola de mi extensión de Firefox!");

Cuestiones relacionadas