chrome extension 是一個小型的程序奕枢,它可以修改并增強(qiáng) chrome 瀏覽器的功能健田。你可以使用 web技術(shù)(如 HTML烛卧,CSS,JavaScript)來編寫妓局。一個擴(kuò)展就是一個壓縮的包总放,里面有 HTML、CSS好爬、JavaScript局雄、圖片或者任何你需要的資源。從本質(zhì)上來講存炮,擴(kuò)展就是一個 web 頁面炬搭,它也可以使用瀏覽器為 web 頁面提供的 API,如 XMLHttpRequest穆桂、JSON宫盔、HTML5等。
擴(kuò)展的用戶界面類型
擴(kuò)展的用戶界面類型有兩種:
- browser action:當(dāng)你的擴(kuò)展要操作大多數(shù)的網(wǎng)頁時享完,可以使用此類型灼芭。
- page action:當(dāng)你的擴(kuò)展只操作部分網(wǎng)頁時,可以使用此類型般又。
擴(kuò)展的目錄結(jié)構(gòu)
一個擴(kuò)展通常包含以下文件:
- manifest.json
- HTML 文件
- 可選的 JS 文件
- 可選的其他文件(圖片彼绷、字體等等)
當(dāng)你分發(fā)(distribute)擴(kuò)展時,這些內(nèi)容都會打包進(jìn)一個后綴是.crx
的 ZIP 文件中茴迁。
引用文件
在擴(kuò)展中寄悯,你可以使用相對 URL 來引用文件:
![](./images/foo.png)
也可以使用絕對 URL 來引用文件,但這時候需要使用預(yù)定義信息 @@extension_id
:
![](chrome-extension://__MSG_@@extension_id__/images/foo.png)
manifest
manifest.json包含著擴(kuò)展的重要信息堕义,類似package.json
热某。
擴(kuò)展的架構(gòu)
很多擴(kuò)展都含有一個包含擴(kuò)展的主要邏輯的隱形的頁面,這個頁面就是background page
。如果一個擴(kuò)展要和用戶加載的 web 頁面進(jìn)行交互昔馋,那么需要使用到content script
筹吐。
background page
background page 通過background.html
來定義,background.html
可以包含控制擴(kuò)展行為的 JS 代碼秘遏。
background page 可以分為兩類:
- persistent background pages:一直打開著
- event pages:按需打開和關(guān)閉
content script
如果你需要和瀏覽器加載的 web 頁面交互的話丘薛,則需要使用 content script 。content script 在瀏覽器加載的 web 頁面的上下文中運行邦危,可以看成是瀏覽器加載的 web 頁面的一部分洋侨。
content script 可以改變當(dāng)前瀏覽的 web 頁面的內(nèi)容,但是不能修改擴(kuò)展的 background page倦蚪。當(dāng)然 content script 也沒有和擴(kuò)展完全的分離開希坚,還是可以和擴(kuò)展交換信息的。
UI pages
在擴(kuò)展中的 HTML 頁面可以訪問到其他頁面的 DOM陵且,也可以調(diào)用其他頁面的函數(shù)裁僧。
chrome.* API
擴(kuò)展除了可以訪問瀏覽器為 web 頁面提供的 API,還可以訪問 chrome-only API慕购。
存儲數(shù)據(jù)
擴(kuò)展可以使用storageAPI聊疲,HTML5 web storage API或者服務(wù)器來存儲數(shù)據(jù)。
隱身模式
incognito mode
保證窗口不會留下任何的痕跡沪悲。所以當(dāng)處理隱身模式下的數(shù)據(jù)時获洲,盡可能的遵循這一點。
通過相關(guān)的tabs.Tab或者window.Window的incognito
屬性來判斷是否處于隱身模式: