2013-09-23 35 views
-1

我正在尋找Mozilla參考資料,瞭解如何在資源開始下載或在加載頁面時攔截資源以捕獲DOM,以便自定義內容的緩存方式。Firefox插件,修改地址欄行爲

預期的順序是這樣的:

Enter a URL into the addressbar and submit it 
> capture the url string and attempt to load any resource found 
> pause default parsing, separately parse & compare to user-defined list 
> run local rules and register functions against resources found in the dom 
> resume default parsing, call registered functions when resources are requested 

這個插件的目的是爲了讓開發人員修改哪些資源被緩存或不是每個頁面或站點緩存,無需先清除其整個緩存,因此我們可以調查網站如何以更細緻的方式處理失敗或延遲的資源。

如果您正在使用服務器,並且該網站的資源非常繁重,那麼您的開發可能會因持續超時而停滯不前。如果您需要繼續清理緩存以便測試功能,則可以使整個開發和測試過程比正常時間延長10倍以上。該插件的目的是更好地控制緩存的內容以及每個頁面和每個站點的時間,因此當您清除緩存時,您可以準確地確定要清除的內容以及保留的內容,並改善這些類型的交付時間的條件。

當您在位於中國,澳大利亞,泰國等的服務器上工作時,在英國/美國工作時,這種情況很常見,反之亦然。

目前,我們正在研究我們可以掛鉤到Firefox的位置,我們的開發人員無法確定插件可能暴露的步驟。

有沒有辦法在現有地址欄中訪問此步驟?

非常感謝。

UPDATE

根據下面的答案,有可能鉤到瀏覽器的暫停和恢復,但如果它的可能的資源之前得到的文檔中它是它尚未從文檔清晰調用。

+0

這是一個非常具體的問題 - downvote的原因是什麼? – MyStream

回答

0

您將不得不實現一個TabsProgressListener並實現OnLocationChanged函數。每次用戶在urlbar中輸入一個新的url時都會調用它。

+0

嗨Kashif,從文檔,我不能告訴如果這是在頁面開始下載後觸發,或者只是觸發,以便您可以監控它。你知道是否有可能將一個請求或一個位置傳遞給一個函數,並且只允許在該函數運行之後繼續下載?我有點卡在這裏是否有回調行爲,或只是觀察能力。 – MyStream

+0

我不完全相信,除非使用XPCOM或XBL,否則您可以請求等待。對於上述方法,您可以使用nsIRequest.suspend(),調用您的函數,然後調用nsIRequest.resume()。但請注意,由於文檔在此階段未加載,因此不會有DOM。 – Kashif

+0

嗨Kashif,你看到一種方式可以下載文件,但不開始渲染,以便它可以在渲染開始之前修改?我在想AdBlockPlus。這會在進行出站連接之前阻止腳本和其他資源。我想實現類似的功能,但不是阻止,我想將這些資源重定向到該資源的本地文件。爲此,我試圖找到在哪裏放置鉤子,以便可以應用類似的壓倒一切的行爲。 – MyStream