2013-11-20 9 views
10

Ich baue eine Firefox-Erweiterung, die mehrere versteckte Browser-Elemente erstellt.Firefox onLocationChange nicht immer

Ich möchte addProgressListener() OnLocationChange für die Seite, die ich lade. Mein Handler wird jedoch nicht immer angerufen.

Genauer gesagt, hier ist, was ich tue:

  1. einen Browser Element erstellen, ohne seine src-Eigenschaft
  2. es Befestigen an einem anderen Element
  3. einen Fortschritt Zuhörer hinzu onLocationChange auf das Hören Browser Element
  4. Anruf loadURIWithFlags() mit den gewünschten URL und Post-Daten

Ich erwarte, dass der Handler jedes Mal nach 4 aufgerufen wird, aber manchmal nicht (es scheint jedoch auf den gleichen Seiten stecken zu bleiben).

Interessanterweise, wenn ich 3 und 4 in einem setTimeout(..., 5000); wickeln, funktioniert es jedes Mal.

Ich habe auch versucht, einige der Schritte zu mischen, aber es hatte keine Wirkung.

Das größere Bild: Ich möchte zuverlässig benachrichtigt werden, wenn der Browser contentDocument der der neu geladenen Seite (nach Weiterleitungen) ist. Gibt es einen besseren Weg, dies zu tun?

aktualisieren: Ich habe da einen Fehler auf Mozillas Bug-Tracker mit einem minimalen xulrunner App Anzeige dieses Verhaltens geöffnet, falls jemand will einen genaueren Blick nehmen: https://bugzilla.mozilla.org/show_bug.cgi?id=941414

+0

Können wir Code/Geige bekommen? Wie stellen Sie Ihren Zuhörer ein? – Cracker0dks

+0

@ Cracker0dks gibt es eine minimale Xulrunner App an den Fehler angehängt: https://bugzilla.mozilla.org/show_bug.cgi?id=941414 –

+0

Ich weiß, dies ist ein reduzierter Testfall, aber was versuchst du zu erreichen? Warum sollte onLocationChange anstelle eines einfachen Load-Listeners verwendet werden? Warum eine anstelle einer