Chrome 확장 프로그램 지원
Electron은 Chrome 확장 프로그램 API의 일부를 지원한다. 주로 DevTools 확장 프로그램과 Chromium 내부 확장 프로그램을 지원하기 위한 것이지만, 다른 확장 기능도 일부 지원한다.
참고: Electron은 Chrome 스토어의 임의의 확장 프로그램을 지원하지 않는다. 또한 Chrome의 확장 프로그램 구현과 완벽하게 호환되는 것은 Electron 프로젝트의 목표가 아니다.
확장 프로그램 로드하기
Electron은 패키지되지 않은 확장 프로그램만 로드할 수 있다. 즉, .crx
파일은 작동하지 않는다. 확장 프로그램은 각 session
별로 설치된다. 확장 프로그램을 로드하려면 ses.loadExtension
을 호출한다:
const { session } = require('electron')
session.defaultSession.loadExtension('path/to/unpacked/extension').then(({ id }) => {
// ...
})
로드된 확장 프로그램은 앱 종료 시 자동으로 저장되지 않는다. 앱이 실행될 때 loadExtension
을 호출하지 않으면 확장 프로그램이 로드되지 않는다.
확장 프로그램 로드는 영구 세션에서만 지원된다. 메모리 내 세션에 확장 프로그램을 로드하려고 하면 오류가 발생한다.
확장 프로그램 로드, 언로드, 활성 확장 프로그램 조회에 대한 자세한 내용은 session
문서를 참고한다.
지원하는 확장 API
다음과 같은 확장 API를 지원한다. 단, 몇 가지 주의사항이 있다. 여기에 나열되지 않은 다른 API도 지원할 수 있지만, 이는 임시적이며 언제든지 제거될 수 있다.
지원되는 매니페스트 키
name
version
author
permissions
content_scripts
default_locale
devtools_page
short_name
host_permissions
(Manifest V3)manifest_version
background
(Manifest V2)minimum_chrome_version
각 키의 목적에 대해 더 자세히 알고 싶다면 매니페스트 파일 형식을 참고한다.
chrome.devtools.inspectedWindow
이 API의 모든 기능을 지원한다.
자세한 내용은 공식 문서를 참고한다.
chrome.devtools.network
이 API의 모든 기능을 지원한다. 자세한 내용은 공식 문서를 참고한다.
chrome.devtools.panels
이 API의 모든 기능을 지원한다.
더 자세한 정보는 공식 문서를 참고한다.
chrome.extension
chrome.extension
은 다음과 같은 속성을 지원한다:
chrome.extension.lastError
또한 다음과 같은 메서드를 제공한다:
chrome.extension.getURL
chrome.extension.getBackgroundPage
자세한 내용은 공식 문서를 참고한다.
chrome.management
chrome.management
에서 지원하는 메서드는 다음과 같다:
chrome.management.getAll
chrome.management.get
chrome.management.getSelf
chrome.management.getPermissionWarningsById
chrome.management.getPermissionWarningsByManifest
chrome.management
에서 지원하는 이벤트는 다음과 같다:
chrome.management.onEnabled
chrome.management.onDisabled
더 자세한 정보는 공식 문서를 참고한다.
chrome.runtime
chrome.runtime
의 다음 속성들이 지원된다:
chrome.runtime.lastError
chrome.runtime.id
chrome.runtime
의 다음 메서드들이 지원된다:
chrome.runtime.getBackgroundPage
chrome.runtime.getManifest
chrome.runtime.getPlatformInfo
chrome.runtime.getURL
chrome.runtime.connect
chrome.runtime.sendMessage
chrome.runtime.reload
chrome.runtime
의 다음 이벤트들이 지원된다:
chrome.runtime.onStartup
chrome.runtime.onInstalled
chrome.runtime.onSuspend
chrome.runtime.onSuspendCanceled
chrome.runtime.onConnect
chrome.runtime.onMessage
더 자세한 정보는 공식 문서를 참고한다.
chrome.scripting
이 API의 모든 기능을 지원한다.
자세한 내용은 공식 문서를 참고한다.
chrome.storage
chrome.storage
에서 지원하는 메서드는 다음과 같다:
chrome.storage.local
chrome.storage.sync
와 chrome.storage.managed
는 지원되지 않는다.
더 자세한 정보는 공식 문서를 참고한다.
chrome.tabs
chrome.tabs
의 다음 메서드를 지원한다:
chrome.tabs.sendMessage
chrome.tabs.reload
chrome.tabs.executeScript
chrome.tabs.query
(부분 지원)- 지원 속성:
url
,title
,audible
,active
,muted
.
- 지원 속성:
chrome.tabs.update
(부분 지원)- 지원 속성:
url
,muted
.
- 지원 속성:
참고: Chrome에서는
-1
을 탭 ID로 전달하면 "현재 활성 탭"을 의미한다. 하지만 Electron에는 이러한 개념이 없기 때문에,-1
을 탭 ID로 전달하면 에러가 발생한다.
더 자세한 정보는 공식 문서를 참고한다.
chrome.webRequest
이 API의 모든 기능을 지원한다.
참고: 충돌하는 핸들러가 있는 경우, Electron의
webRequest
모듈이chrome.webRequest
보다 우선순위를 갖는다.
더 많은 정보는 공식 문서를 참고한다.