2013-11-20 86 views
10

我正在構建一個firefox擴展,它創建了幾個隱藏的瀏覽器元素。Firefox onLocationChange並不總是叫

我想addProgressListener()來處理onLocationChange爲我加載的頁面。但是,我的處理程序並不總是被調用。

更具體地說,這裏是我在做什麼:

  1. 創建一個瀏覽器元件,而不設置其src財產
  2. 其附加到另一個元素
  3. 添加進度監聽器監聽onLocationChange到瀏覽器元素
  4. 致電loadURIWithFlags()加上所需的網址和發佈數據

我希望處理程序在每次4之後都被調用,但有時它不會(儘管它似乎卡在相同的頁面上)。

有趣的是,如果我將3和4包裝在setTimeout(..., 5000);中,它每次都有效。

我也試過洗牌一些步驟,但沒有任何效果。

大圖:我希望在瀏覽器的contentDocument是新加載的頁面(重定向之後)時得到可靠的通知。有一個更好的方法嗎?

更新:因爲我已經打開了Mozilla的bug跟蹤系統中的錯誤與出現這些行爲,如果有人想細看最小的XULRunner應用程序:https://bugzilla.mozilla.org/show_bug.cgi?id=941414

+0

我們可以得到一些代碼/小提琴嗎?你如何設置你的聽衆? – Cracker0dks

+0

@ Cracker0dks有一個最小的xulrunner應用程序附加到bug:https://bugzilla.mozilla.org/show_bug.cgi?id=941414 –

+0

我意識到這是一個簡化的測試用例,但是你想完成什麼?爲什麼使用onLocationChange而不是簡單的加載監聽器?爲什麼一個而不是一個