20120321

開發自己的 Firefox add-on 附加元件(二) 認識Content Scripts

幾乎所有有趣的 add-ons 都需要與網頁內容或瀏覽器的使用者介面作互動。
例如,他們可能需要存取或修改網頁的內容或是當使用者點擊了一個連結時被通知。

SDK 提供了數個核心模組來支援:

panel
建立可以保存網頁內容的對話框( dialog )。

page-worker
取得網頁並存取其內容,而不將網頁顯示給使用者。

page-mod
在某個選取的網頁中執行 script。

widget
建立 add-on 的使用者介面,包括網頁內容。

context-menu
新增物件到瀏覽器的 context menu (按滑鼠右鍵時跳出的選單)中。

Firefox 正在發展一個使用不同處理方式來顯示UI、處理網頁、執行add-ons的模型。主要的 add-on 程式碼將會在add-on流程中執行,而部會直接存取網頁內容。

這代表一個需要和網頁內容互動的 add-on 必須被建構為兩個部分:
  • the main script runs in the add-on process
  • any code that needs to interact with web content is loaded into the web content process as a separate script. These separate scripts are called content scripts.
單一一個 add-on 可能使用多個 content scripts,且載入同一個context的 content scripts 不但可以和網頁內容互動,也可以直接和彼此互動。See the chapter on content script access.

add-on script 和 content script 不能直接存取彼此的狀態。不過,我們可以自己定義其中一邊可以emit的事件,然後另一邊可以 register listeners 來處理事件。 The interfaces are similar to the event-handling interfaces described in the Working with Events guide.

下圖顯示主要元件和他們之間的關係的總覽,填滿灰色的部分代表以add-on developer寫的程式碼。

沒有留言:

張貼留言