2009-12-31 10 views
6

So ... una extensión de script para Firefox. es somelika un webspider, escrito en javascript. lo que quiero hacer:extensión de firefox. Cómo atrapar el evento onload?

quiero cargar una página, hacer un trabajo, luego ir a otra página (usando una url de la página cargada). Después de que se carga la nueva página, la araña hace el mismo trabajo.

Algoritm es somelike éste:

  1. esperar hasta la página se carga
  2. hacer algún trabajo
  3. elegir un URL diferente
  4. ir a esta url
  5. Goto 1.

en m La función principal y hago este código:

gBrowser.addEventListener("DOMContentLoaded",haXahv8, false); 

y todo funciona bien hasta que vaya a otra página ... ¿Cómo puedo reutilizar caso DOMContentLoaded en mi extensión de Firefox? Entonces, la pregunta es: ¿es posible reutilizar la carga/evento DOMContentLoaded en la extensión de Firefox para diferentes páginas? ¿Si es así, entonces cómo?

p.s. \ anterior estaba solucionando este problema, em windows forms y webbrowser + C++ ... ooh, ¿qué hora era ... un sueño! porque todo funcionó bien =)

Respuesta

11

Solo debe registrarse para el evento una vez, y debe recibirlo cada vez que lo active una pestaña del navegador.

Su código debería funcionar bien, siempre que esté esperando que la ventana XUL active su evento load antes de agregar un detector de eventos al elemento gBrowser. Si está agregando un detector de eventos antes, gBrowser aún no se ha inicializado y el comportamiento no está definido.

Aquí se muestra un ejemplo:

window.addEventListener('load', function() { 
    gBrowser.addEventListener('DOMContentLoaded', function() { 
     // stuff that happens for each web page load goes here 
    }, false); 
}, false); 

Tenga en cuenta que en la práctica sólo puedo estar seguro de que esto funciona con Firefox 3.5 en adelante. Escribí una extensión (interna a mi empresa) que hace este tipo de cosas confiablemente para Firefox 1.5 a 3.5, pero desafortunadamente es un poco más complicado (y afortunadamente) mucho más robusto que la solución anterior. Si necesita soporte para más de Firefox 3.5+, hágamelo saber y le brindaré más información.

Aquí es un poco de lectura adicional:

2

El último parámetro del método addEventListener() que en su caso se establece en "false" debe establecerse en verdadero, esto le dice al navegador que active su manejador de eventos cada vez que ocurra el evento.

El valor actual false le dice que solo active su controlador la primera vez que ocurre el evento.

Espero que algunos de ustedes salgan de allí en algún momento, ¡me llevó bastante tiempo buscar en las páginas de eventos de Document Object Model en W3C.org!

Cuestiones relacionadas