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도 지원할 수 있지만, 이는 임시적이며 언제든지 제거될 수 있다.
지원되는 매니페스트 키
nameversionauthorpermissionscontent_scriptsdefault_localedevtools_pageshort_namehost_permissions(Manifest V3)manifest_versionbackground(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.getURLchrome.extension.getBackgroundPage
자세한 내용은 공식 문서를 참고한다.
chrome.management
chrome.management에서 지원하는 메서드는 다음과 같다:
chrome.management.getAllchrome.management.getchrome.management.getSelfchrome.management.getPermissionWarningsByIdchrome.management.getPermissionWarningsByManifest
chrome.management에서 지원하는 이벤트는 다음과 같다:
chrome.management.onEnabledchrome.management.onDisabled
더 자세한 정보는 공식 문서를 참고한다.
chrome.runtime
chrome.runtime의 다음 속성들이 지원된다:
chrome.runtime.lastErrorchrome.runtime.id
chrome.runtime의 다음 메서드들이 지원된다:
chrome.runtime.getBackgroundPagechrome.runtime.getManifestchrome.runtime.getPlatformInfochrome.runtime.getURLchrome.runtime.connectchrome.runtime.sendMessagechrome.runtime.reload
chrome.runtime의 다음 이벤트들이 지원된다:
chrome.runtime.onStartupchrome.runtime.onInstalledchrome.runtime.onSuspendchrome.runtime.onSuspendCanceledchrome.runtime.onConnectchrome.runtime.onMessage
더 자세한 정보는 공식 문서를 참고한다.
chrome.scripting
이 API의 모든 기능을 지원한다.
자세한 내용은 공식 문서를 참고한다.
chrome.storage
chrome.storage에서 지원하는 메서드는 다음과 같다:
chrome.storage.local
chrome.storage.sync와 chrome.storage.managed는 지원되지 않는다.
더 자세한 정보는 공식 문서를 참고한다.
chrome.tabs
chrome.tabs의 다음 메서드를 지원한다:
chrome.tabs.sendMessagechrome.tabs.reloadchrome.tabs.executeScriptchrome.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보다 우선순위를 갖는다.
더 많은 정보는 공식 문서를 참고한다.