chrome extension 是一個小型的程序,它可以修改并增強 chrome 瀏覽器的功能。你可以使用 web技術(如 HTML,CSS,JavaScript)來編寫。一個擴展就是一個壓縮的包,里面有 HTML、CSS、JavaScript、圖片或者任何你需要的資源。從本質(zhì)上來講,擴展就是一個 web 頁面,它也可以使用瀏覽器為 web 頁面提供的 API,如 XMLHttpRequest、JSON、HTML5等。
擴展的用戶界面類型
擴展的用戶界面類型有兩種:
- browser action:當你的擴展要操作大多數(shù)的網(wǎng)頁時,可以使用此類型。
- page action:當你的擴展只操作部分網(wǎng)頁時,可以使用此類型。
擴展的目錄結構
一個擴展通常包含以下文件:
- manifest.json
- HTML 文件
- 可選的 JS 文件
- 可選的其他文件(圖片、字體等等)
當你分發(fā)(distribute)擴展時,這些內(nèi)容都會打包進一個后綴是.crx的 ZIP 文件中。
引用文件
在擴展中,你可以使用相對 URL 來引用文件:

也可以使用絕對 URL 來引用文件,但這時候需要使用預定義信息 @@extension_id :

manifest
manifest.json包含著擴展的重要信息,類似package.json。
擴展的架構
很多擴展都含有一個包含擴展的主要邏輯的隱形的頁面,這個頁面就是background page。如果一個擴展要和用戶加載的 web 頁面進行交互,那么需要使用到content script。
background page
background page 通過background.html來定義,background.html可以包含控制擴展行為的 JS 代碼。
background page 可以分為兩類:
- persistent background pages:一直打開著
- event pages:按需打開和關閉
content script
如果你需要和瀏覽器加載的 web 頁面交互的話,則需要使用 content script 。content script 在瀏覽器加載的 web 頁面的上下文中運行,可以看成是瀏覽器加載的 web 頁面的一部分。
content script 可以改變當前瀏覽的 web 頁面的內(nèi)容,但是不能修改擴展的 background page。當然 content script 也沒有和擴展完全的分離開,還是可以和擴展交換信息的。
UI pages
在擴展中的 HTML 頁面可以訪問到其他頁面的 DOM,也可以調(diào)用其他頁面的函數(shù)。
chrome.* API
擴展除了可以訪問瀏覽器為 web 頁面提供的 API,還可以訪問 chrome-only API。
存儲數(shù)據(jù)
擴展可以使用storageAPI,HTML5 web storage API或者服務器來存儲數(shù)據(jù)。
隱身模式
incognito mode保證窗口不會留下任何的痕跡。所以當處理隱身模式下的數(shù)據(jù)時,盡可能的遵循這一點。
通過相關的tabs.Tab或者window.Window的incognito屬性來判斷是否處于隱身模式: