2013-11-20 21 views
10

Sto costruendo un'estensione firefox che crea diversi elementi del browser nascosti.Firefox onLocationChange non sempre chiamato

Mi piacerebbe addProgressListener() per gestire onLocationChange per la pagina che carico. Tuttavia, il mio gestore non viene sempre chiamato.

In particolare, ecco quello che sto facendo:

  1. Creare un elemento del browser, senza impostare la sua proprietà src
  2. Fissare a un altro elemento
  3. aggiungere un listener di avanzamento di ascolto per onLocationChange al elemento del browser
  4. chiamata loadURIWithFlags() con i dati url e post desiderati

Mi aspetto che il gestore venga chiamato ogni volta dopo 4, ma a volte non lo fa (sembra rimanere bloccato sulle stesse pagine).

È interessante notare che, se avvolgo 3 e 4 all'interno di un setTimeout(..., 5000);, esso funziona sempre.

Ho anche provato a mischiare alcuni dei passi in giro, ma non ha avuto alcun effetto.

L'immagine più grande: vorrei essere avvisato in modo affidabile quando il browser contentDocument è quello della pagina appena caricata (dopo i reindirizzamenti). C'è un modo migliore per farlo?

Aggiornamento: allora ho aperto un bug sul bug tracker di Mozilla con un'applicazione xulrunner minimo la visualizzazione di questo comportamento, nel caso in cui qualcuno vuole dare un'occhiata più da vicino: https://bugzilla.mozilla.org/show_bug.cgi?id=941414

+0

possiamo ottenere del codice/violino? Come si imposta l'ascoltatore? – Cracker0dks

+0

@ Cracker0dks c'è un'app minima xulrunner collegata al bug: https://bugzilla.mozilla.org/show_bug.cgi?id=941414 –

+0

Mi rendo conto che questo è un testcase ridotto, ma cosa stai cercando di realizzare? Perché utilizzare onLocationChange anziché un semplice listener di carico? Perché uno anziché uno