chrome插件開發之:關於Chrome插件的架構的理解

Chrome插件的入口就是:manifest.json。
這裏配置了整個插件所需要用到的東西,例如插件的名稱和圖標,插件的動作,和對應動作的執行的js文件等等。
Chrome插件有3個不同的運行環境:
1 首先是插件的運行環境。
這個運行環境包括popup運行和background.js的運行:
popup頁面運行,這個運行的結果是你點插件圖標直接顯示的內容。通過”default_popup”: “popup.html”定義。
–>注意:如果你不點擊圖標,這個popup頁面是不會執行的。
接着是background.js的運行環境。這個JS是插件啓動的時候,chrome就自動開通一個空間來運行你這裏所定義的js文件。注意:只要定義好了,插件啓動就一定會執行!
它通過”background”: { “scripts”: [“background.js”] },定義。這個運行可以理解爲是插件運行的時候就自動執行的腳本(但是和你所瀏覽的網頁無關)。
下面會說到一個content script的運行環境。插件background的運行正是可以連接插件運行環境和content script的運行環境!通過一些特殊的對象方法,進行數據溝通。
2 接着是content script的運行環境。
這個運行環境尤爲重要!因爲它的存在,可以完全地很方便地干預你所瀏覽的頁面!!做你想做的事情,例如自動購買等!
這個運行環境是比較特殊的,它可以完全訪問您瀏覽的網頁,但是又何您的網頁無關的環境!(Content Script能訪問DOM的內容,但卻不是簡單的直接嵌入到頁面原本的腳本!)
這個腳本的執行時間點是,對應的頁面已經加載完畢了,處於空閒的狀態的時候,它就會悄悄地執行,做腳本所定義好的事情。例如自動刷新啊等等。
3 最後是您所瀏覽的頁面的運行環境。
這個運行環境是原本頁面訪問的時候的運行環境。有DOM對象,也有本身頁面自己寫好的腳本文件。

理解了上面的3個運行環境,就可以做很多事情。
例如,我訪問了一個頁面,想將訪問頁面的內容記錄下來,傳到插件顯示我所訪問的歷史紀錄。
大概的實現邏輯是:定義一個content script來監控我所訪問的頁面,將這個頁面的內容通過message發送到插件的background js去。
然後插件的popup頁面,訪問background js的內容,顯示給用戶看。

關於 “permissions”的定義的理解:
就是申請訪問的權限。目前主要的作用是,當插件的運行環境需要訪問一些資源,例如用XHR異步訪問url獲取資源等,都需要通過這裏定義申請訪問的權限!

備註:
另外,如果要在content_script環境中用到一些外部資源,URL需要變更!
例如,boostrap要用到字體文件:http://v3.bootcss.com/components/#top
chrome-extension://MSG_@@extension_id/images/main.png
原來:../fonts/glyphicons-halflings-regular.woff
要改爲:
chrome-extension://MSG_@@extension_id/include/bootstrap/fonts/glyphicons-halflings-regular.woff
當前,前提必須要將這個文件載入到manifest.json文件的web_accessible_resources配置裏面!否則木有權限訪問這個資源的!

還有一定要說明的是,如果在插件的background運行環境執行content_script的js代碼,必須要在background定義資源,否則是無法執行!
開始我以爲這個js都已經在content_script已經有定義了,同一個插件裏面執行應該可以直接執行纔對。

個人覺得這篇文章寫得很好!分享一下:
Chrome插件(Extensions)開發攻略:http://www.cnblogs.com/mfryf/p/3701801.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章