회사에서 크롬 확장 프로그램을 개발하는 건 아니고 오픈 소스로 올라와 있는 크롬 확장 프로그램을 이용해야 해서 구조를 분석해야 하는 일이 생겼다. 잘 정리된 글들은 많았는데 내 머리가 부족해서 이해를 계속 실패하는 듯 해서 정리해본다.
참조
https://developer.chrome.com/docs/extensions/
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions
https://techblog.woowahan.com/2707/
https://zuminternet.github.io/Zum-Chrome-Extension/
https://www.letmecompile.com/chrome-extension-with-react/
{
"manifest_version": 2, // 해당 매니페스트의 버전 표시
"name": "...", // 확장 프로그램 이름
"description": "...", // 확장 프로그램 상세 설명
"icons": { // 아이콘
"48": "icon.png",
"96": "icon@2x.png"
},
"permissions": [
"bookmarks",
"topSites",
"https://*.example.com/*"
"<all_urls>"
"activeTab",
"tabs",
"storage",
"history"
],
"background": {
"scripts": ["jquery.js", "my-background.js"],
},
"browser_action": {
"default_icon": {
"19": "button/geo-19.png",
"38": "button/geo-38.png"
},
"default_title": "Whereami?",
"default_popup": "popup/geo.html"
},
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
"content_scripts": [
{
"exclude_matches": ["*://developer.mozilla.org/*"],
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
],
}
chrome.*
chrome.runtime.*
접근 가능window.postMessage
를 통해서 개별 웹 페이지의 스크립트와도 통신이 가능함.chrome.runtime.onMessage
chrome.runtime.sendMessage
window.postMessage
var port = chrome.runtime.connect(); port.postMessage