2009-04-09 38 views
1

我想開發一個firefox插件,應該在每次頁面加載時執行。可以請某人告訴我使用它的是哪個事件。在Firefox中,當我打開一個新窗口的document.ready被執行,並沒有得到執行,當我打開一個新標籤:(。 任何幫助表示讚賞。 感謝火狐插件和document.ready

回答

3

本來我是掛鉤到DOMContentLoaded,但這花了太長的時間,因爲直到Firefox加載頁面及其任何iframe的DOM樹後纔會觸發。

Load同樣緩慢,因爲它需要頁面完全加載以及其所有圖像

最終,經過這些,以及爲nsIWebProgressListener.onLocationChange和其他一些設置XPCOM,我ulti在DOMTitleChanged三方共同解決這樣:

appcontent.addEventListener("DOMTitleChanged", events.onPageLoad, true);

(注:DOMTitleChanged似乎火即使在HTML頁面沒有<title>屬性,或具有相等<title>到前一頁。)

我不不記得100%爲什麼我在DOMTitleChanged上解決了這個問題,但我相信這是因爲它最適合我的需求 - 基本上,這是最快的方式,無需等待任何東西加載,同時觸發就可以獲得用戶導航的URL每一個可以想象的方式加載一個新的頁面...新標籤,頁面更改,以及其他所有。

唯一的問題是您需要添加代碼來手動查找您的加載項覆蓋啓動代碼中的URL,除非您在FF開始在新窗口中加載第一頁之前addEventListener(),否則您將添加您的事件監聽器來不及可靠地捕獲初始頁面加載。 (這是因爲每次Firefox打開一個新窗口時都會加載一個新的,孤立的插件實例。)