2012-06-16 27 views
0

我試圖創建一個firefox插件,它將在啓動時查找某個頁面,並從中獲取一些信息。我在加載時找不到頁面時遇到問題。這是我到目前爲止有:使用gBrowser和observerService在啓動時查找選項卡

var myfancyaddon = { 
    onLoad: function() { 
     var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); 
     observerService.addObserver(function restored() { 
      observerService.removeObserver(restored, "sessionstore-windows-restored"); 
      var browser = myfancyaddon.findMySite(); 
      if (browser) { 
       alert("tree falling in the woods"); // THIS LINE NEVER RUNS 
       browser.contentWindow.addEventListener("load", function tab_loaded(){ 
        browser.contentWindow.removeEventListener("load", tab_loaded(), false); 
        alert("mysite loaded!"); 
       }, false); 
      } 
     }, "sessionstore-windows-restored", false); 
    }, 

    findMySite: function() { 
     var browsers = gBrowser.browsers; 
     for (var i = 0; i < browsers.length; i++) { 
      var browser = browsers[i]; 
      if (!browser.currentURI.spec) continue; 
      if (browser.currentURI.spec.match('^https?://(www\.)?mysite\.com/')) return browser; 
     } 
     return null; 
    } 
}; 

window.addEventListener("load", function ff_loaded(){ 
    window.removeEventListener("load", ff_loaded, false); //remove listener, no longer needed 
    myfancyaddon.onLoad(); 
},false); 

經過一些調查似乎currentURI.spec是「關於:空白」因爲它變成mysite.com前很短的時間。有任何想法嗎?

回答

0

時從前一交易日的標籤已經被恢復的"sessionstore-windows-restored"發送通知並在這些選項卡中加載已經開始(有時是:「不要加載標籤頁,直到選擇」選項意味着負載甚至沒有在背景選項卡中啓動)。但是這些標籤的位置仍然是about:blank,直到與服務器聯繫爲止,因爲加載的地址可能會重定向或服務器可能無法訪問(意味着內部重定向到about:neterror)。當內容確實從新位置提供時,Firefox只會更改瀏覽器的位置。

它應該確實比intercept page loads更好,而不是等待會話恢復。

相關問題