Preguntas frecuentes sobre Extensiones

Esta es una recopilación de respuestas breves a los problemas más frecuentes del desarrollo de extensiones. Están escritas pensando principalmente en Firefox, pero la mayoría de ellas- si no todas- son fácilmente aplicables a SeaMonkey, Thunderbird o cualesquiera de las demás aplicaciones.

Si estás buscando còmo empezar a programar una extensión, prueba con el tutorial Creando una extensión o Primeros pasos (en).

Asegúrate de configurar el entorno de desarrollo (en) correctamente antes de empezar.

Depuración

Deberías configurar el entorno de desarrollo antes de empezar a depurar tu extensión.

¿Cómo puedo encontrar los errores de mi código?

Después de activar la opción javascript.options.showInConsole (poniéndola a true), podrás leer los errores en la consola de JavaScript. A pesar de su nombre, en esta consola se mostrarán todo tipo de errores (no solo de JavaScript).

¿Cómo puedo monitorizar qué está haciendo mi extensión?

Puedes usar las funciones alert() o dump() o nsIConsoleService.

¿Por qué no se ejecuta correctamente mi script?

Si tu script no hace lo que debiera, lo primero que debes hacer es comprobar  la consola de JavaScript (lee más arriba).

Un error muy común es intentar acceder al DOM de una ventana antes de que haya terminado de cargarse. Esto ocurre si colocas el código de inicialización fuera de cualquier función (en el programa principal). La solución es usar un listener del evento load que retrase la ejecución de ese código hasta que la ventana haya terminado de cargarse:

function exampleBrowserStartup(event)
{
  // place your startup code here
}
window.addEventListener("load", exampleBrowserStartup, false);

El acceso al documento de la página web no funciona

Para acceder al documento de la página web en uso desde un browser.xul, debes usar content.document, en lugar de simplemente document (que es el documento de la ventana del propio navegador). Lee Trabajando con ventanas en código chrome para más información.

Al mismo tiempo, la configuración por defecto de XPCNativeWrapper impide el acceso a objetos definidos por script en la página web y algunas otras cosas.

Tengo un error parseando el XML, y el fichero parece correcto

Un motivo muy frecuente de errores de parseo (resaltados en <font color="red">rojo</font> con texto como este: <font color="red">-------------^</font> subrayándolos) es la presencia en tu script de un carácter o valor de atributo que tiene un significado especial en XML. Por ejemplo:

<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>

o

<script>function lesser(a,b) { return a < b ? a : b; }</script>

El problema puede resolverse de distintas formas:

  1. Escribir el caràcter con la representación apropiada en XML. (Por ejemplo: "&" -> "&amp;", "<" -> "&lt;")
  2. (En caso de tratarse de un nodo de texto, como un script) etiquetar el texto con CDATA:
    <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
  3. Colocar el script en un fichero separado, e incluirlo usando:
    <script type="application/x-javascript" src="our.js"/>

Código de ejemplo

La forma más sencilla de descubrir cómo codificar lo que necesitas, es buscar una extensión (o una parte del propio Mozilla) que lo haga y mirar su código. (Los fichero XPI y JAR están comprimidos en formato ZIP).

También puedes encontrar alguna documentación. Busca en Artículos sobre extensiones en MDC y Página de ejemplos de código en MozillaZine.

¿Dónde puedo encontrar más ayuda?

Puedes buscar más información en la página de la Comunidad y en la categoría Herramientas.

Antes de pedir ayuda, asegúrate de configurar las preferencias de depuración y comprobar la consola de JavaScript. Tampoco olvides hacer al menos una búsqueda por internet antes de preguntar, y... ¡leer esta lista de preguntas!

 

Etiquetas y colaboradores del documento

Última actualización por: DoctorRomi,