2011-04-16 61 views
0

我是Firefox附加組件開發新手,並計劃編寫一個Firefox移動附加組件,以優化某些頁面內容,使其更適合在移動設備上查看設備。Firefox附加組件和頁面HTML內容更改事件(Google Reader)

我學習如何創建一個附加在其上截取頁面加載事件......

https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads

...這是這一步很簡單。

但是,我也想與在正常HTML負載鏈之外加載/顯示的HTML內容進行交互。這就是Google Reader使用AJAX獲取的Google Reader內容。

Firefox是否提供了通過innerHTML等插入到頁面的後處理內容的鉤子?此外,作爲替代方案,我一直在考慮捕獲點擊/觸摸事件,並在每個事件之後重新運行處理:當您在Google閱讀器中單擊某篇文章時,它將打開一個包含文章內容的新視圖。

其他附加組件通常會這樣做嗎?

回答

1

MDC上的XUL School和XUL教程內容將幫助您瞭解如何使用XUL構建用戶界面。 MDC代碼片段部分提供了代碼示例,其中顯示了可供附加開發人員使用的一些API。

您應該注意的一件事是,Firefox Mobile是一個多進程應用程序:UI在主進程中,Web內容(標籤)都在第二個子進程中。這不同於Firefox桌面,它是一個單一的過程應用程序。

我們有關於如何構建多進程附加組件的筆記[1],並且我製作了一些視頻教程[2]來幫助您。

與Firefox中的Web內容交互移動意味着您需要創建一個腳本,該腳本在子進程中運行。該腳本可以直接訪問網頁的DOM窗口和DOM文檔。如果您的加載項具有UI,則將使用消息在兩個進程之間進行通信。鏈接[1]和[2]詳細介紹瞭如何進行DOM交互和發送消息。

收聽後載內容注入非常棘手。除了普通網頁所使用的外,您沒有額外的鉤子。您可以使用輪詢(使用setInterval檢查更改),或者您可以偵聽DOM突變事件(這對性能不利)。

Firefox移動開發者在#mobile頻道中在Mozilla的IRC上聚會。

[1] https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis

[2] http://people.mozilla.com/~mfinkle/tutorials/