Skip to main content

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.syncchrome.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보다 우선순위를 갖는다.

더 많은 정보는 공식 문서를 참고한다.