前言
嚴(yán)格來講,我們正在說的東西應(yīng)該叫Chrome擴(kuò)展(Chrome Extension),真正意義上的Chrome插件是更底層的瀏覽器功能擴(kuò)展,可能需要對瀏覽器源碼有一定掌握才有能力去開發(fā)。鑒于Chrome插件的叫法已經(jīng)習(xí)慣,本文也全部采用這種叫法,但讀者需深知本文所描述的Chrome插件實際上指的是Chrome擴(kuò)展。
Chrome插件是一個用Web技術(shù)開發(fā)、用來增強(qiáng)瀏覽器功能的軟件,它其實就是一個由HTML、CSS、JS、圖片等資源組成的一個.crx后綴的壓縮包.
個人猜測crx可能是Chrome Extension如下3個字母的簡寫:

另外,其實不只是前端技術(shù),Chrome插件還可以配合C++編寫的dll動態(tài)鏈接庫實現(xiàn)一些更底層的功能(NPAPI),比如全屏幕截圖。

由于安全原因,Chrome瀏覽器42以上版本已經(jīng)陸續(xù)不再支持NPAPI插件,取而代之的是更安全的PPAPI。
學(xué)習(xí)Chrome插件開發(fā)有什么意義
增強(qiáng)瀏覽器功能,輕松實現(xiàn)屬于自己的“定制版”瀏覽器,等等。
Chrome插件提供了很多實用API供我們使用,包括但不限于:
- 書簽控制;
- 下載控制;
- 窗口控制;
- 標(biāo)簽控制;
- 網(wǎng)絡(luò)請求控制,各類事件監(jiān)聽;
- 自定義原生菜單;
- 完善的通信機(jī)制;
為什么是Chrome插件而不是Firefox插件
- Chrome占有率更高,更多人用;
- 開發(fā)更簡單;
- 應(yīng)用場景更廣泛,F(xiàn)irefox插件只能運(yùn)行在Firefox上,而Chrome除了Chrome瀏覽器之外,還可以運(yùn)行在所有webkit內(nèi)核的國產(chǎn)瀏覽器,比如360極速瀏覽器、360安全瀏覽器、搜狗瀏覽器、QQ瀏覽器等等;
- 除此之外,F(xiàn)irefox瀏覽器也對Chrome插件的運(yùn)行提供了一定的支持;
開發(fā)與調(diào)試
Chrome插件沒有嚴(yán)格的項目結(jié)構(gòu)要求,只要保證本目錄有一個manifest.json即可,也不需要專門的IDE,普通的web開發(fā)工具即可。
從右上角菜單->更多工具->擴(kuò)展程序可以進(jìn)入 插件管理頁面,也可以直接在地址欄輸入 chrome://extensions 訪問。

勾選開發(fā)者模式即可以文件夾的形式直接加載插件,否則只能安裝.crx格式的文件。Chrome要求插件必須從它的Chrome應(yīng)用商店安裝,其它任何網(wǎng)站下載的都無法直接安裝,所以,其實我們可以把crx文件解壓,然后通過開發(fā)者模式直接加載。
開發(fā)中,代碼有任何改動都必須重新加載插件,只需要在插件管理頁按下Ctrl+R即可,以防萬一最好還把頁面刷新一下。
api 相關(guān)
http://www.kkh86.com/it/chrome-extension-doc/extensions/tabs.html#method-captureVisibleTab