chrome.runtime

설명

chrome.runtime API를 사용하여 서비스 워커를 가져오고, 매니페스트에 관한 세부정보를 반환하고, 확장 프로그램 수명 주기의 이벤트를 수신하고 이에 응답합니다. 이 API를 사용하여 URL의 상대 경로를 정규화된 URL로 변환할 수도 있습니다.

개요

런타임 API는 확장 프로그램에서 사용할 수 있는 여러 기능 영역을 지원하는 메서드를 제공합니다.

메시지 전달
확장 프로그램은 connect(), onConnect, onConnectExternal, sendMessage(), onMessage, onMessageExternal 메서드와 이벤트를 사용하여 확장 프로그램 내의 여러 컨텍스트와 통신할 수 있으며 다른 확장 프로그램과도 통신할 수 있습니다. 또한 확장 프로그램은 connectNative()sendNativeMessage()를 사용하여 사용자 기기의 기본 애플리케이션에 메시지를 전달할 수 있습니다.
확장 프로그램 및 플랫폼 메타데이터 액세스
이 메서드를 사용하면 확장 프로그램과 플랫폼에 관한 여러 특정 메타데이터를 가져올 수 있습니다. 이 카테고리의 메서드에는 getManifest()getPlatformInfo()가 포함됩니다.
확장 프로그램 수명 주기 및 옵션 관리
이러한 속성을 사용하면 확장 프로그램에서 일부 메타 작업을 실행하고 옵션 페이지를 표시할 수 있습니다. 이 카테고리의 메서드와 이벤트에는 onInstalled, onStartup, openOptionsPage(), reload(), requestUpdateCheck(), setUninstallURL()이 포함됩니다.
도우미 유틸리티
이러한 메서드는 내부 리소스 표현을 외부 형식으로 변환하는 등의 유틸리티를 제공합니다. 이 카테고리의 메서드에는 getURL()이 포함됩니다.
키오스크 모드 유틸리티
이러한 메서드는 ChromeOS에서만 사용할 수 있으며 주로 키오스크 구현을 지원하기 위해 존재합니다. 이 카테고리의 메서드에는 restartrestartAfterDelay가 포함됩니다.

권한

런타임 API의 대부분의 메서드는 nativeMessaging 권한이 필요한 sendNativeMessageconnectNative를 제외하고 권한이 필요하지 않습니다.

매니페스트

다음 예는 매니페스트에서 nativeMessaging 권한을 선언하는 방법을 보여줍니다.

manifest.json:

{
  "name": "My extension",
  ...
  "permissions": [
    "nativeMessaging"
  ],
  ...
}

사용 사례

웹페이지에 이미지 추가하기

웹페이지에서 다른 도메인에 호스팅된 애셋에 액세스하려면 리소스의 전체 URL(예: <img src="https://example.com/logo.png">)을 지정해야 합니다. 웹페이지에 확장 프로그램 애셋을 포함하는 경우에도 마찬가지입니다. 두 가지 차이점은 확장 프로그램의 애셋이 웹 액세스 가능 리소스로 노출되어야 하고 일반적으로 콘텐츠 스크립트가 확장 프로그램 애셋을 삽입해야 한다는 것입니다.

이 예에서 확장 프로그램은 runtime.getURL()를 사용하여 완전한 URL을 만들어 콘텐츠 스크립트삽입되는 페이지에 logo.png를 추가합니다. 하지만 먼저 애셋이 매니페스트에서 웹 액세스 가능 리소스로 선언되어야 합니다.

manifest.json:

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "logo.png" ],
      "matches": [ "https://*/*" ]
    }
  ],
  ...
}

content.js:

{ // Block used to avoid setting global variables
  const img = document.createElement('img');
  img.src = chrome.runtime.getURL('logo.png');
  document.body.append(img);
}

서비스 워커에서 콘텐츠 스크립트로 데이터 전송

확장 프로그램의 콘텐츠 스크립트가 서비스 워커와 같은 확장 프로그램의 다른 부분에서 관리하는 데이터가 필요한 경우가 많습니다. 동일한 웹페이지에 열린 두 개의 브라우저 창과 마찬가지로 이러한 두 컨텍스트는 서로의 값에 직접 액세스할 수 없습니다. 대신 확장 프로그램은 메시지 전달을 사용하여 이러한 다양한 컨텍스트 간에 조정할 수 있습니다.

이 예에서 콘텐츠 스크립트는 UI를 초기화하기 위해 확장 프로그램의 서비스 워커에서 일부 데이터가 필요합니다. 이 데이터를 가져오기 위해 get-user-data 메시지를 서비스 워커에 전달하고 서비스 워커는 사용자 정보 사본으로 응답합니다.

content.js:

// 1. Send a message to the service worker requesting the user's data
chrome.runtime.sendMessage('get-user-data', (response) => {
  // 3. Got an asynchronous response with the data from the service worker
  console.log('received user data', response);
  initializeUI(response);
});

background.js:

// Example of a simple user data object
const user = {
  username: 'demo-user'
};

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  // 2. A page requested user data, respond with a copy of `user`
  if (message === 'get-user-data') {
    sendResponse(user);
  }
});

제거에 대한 의견 수집

많은 확장 프로그램은 제거 후 설문조사를 사용하여 확장 프로그램이 사용자에게 더 나은 서비스를 제공하고 유지율을 개선할 수 있는 방법을 파악합니다. 다음 예에서는 이 기능을 추가하는 방법을 보여줍니다.

background.js:

chrome.runtime.onInstalled.addListener(details => {
  if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
    chrome.runtime.setUninstallURL('https://example.com/extension-survey');
  }
});

확장 프로그램 예

런타임 API 예시를 더 보려면 Manifest V3 - 웹 액세스 가능 리소스 데모를 참고하세요.

유형

ContextFilter

Chrome 114 이상

특정 확장 프로그램 컨텍스트와 일치하는 필터입니다. 일치하는 컨텍스트는 지정된 모든 필터와 일치해야 합니다. 지정되지 않은 필터는 사용 가능한 모든 컨텍스트와 일치합니다. 따라서 `{}` 필터는 사용 가능한 모든 컨텍스트와 일치합니다.

속성

  • contextIds

    string[] 선택사항

  • contextTypes

    ContextType[] 선택사항

  • documentIds

    string[] 선택사항

  • documentOrigins

    string[] 선택사항

  • documentUrls

    string[] 선택사항

  • frameIds

    number[] 선택사항

  • 시크릿 모드

    불리언 선택사항

  • tabIds

    number[] 선택사항

  • windowIds

    number[] 선택사항

ContextType

Chrome 114 이상

열거형

'TAB'
컨텍스트 유형을 탭으로 지정

'POPUP'
컨텍스트 유형을 확장 프로그램 팝업 창으로 지정합니다

'BACKGROUND'
컨텍스트 유형을 서비스 워커로 지정합니다.

'OFFSCREEN_DOCUMENT'
컨텍스트 유형을 오프스크린 문서로 지정합니다.

'SIDE_PANEL'
컨텍스트 유형을 측면 패널로 지정합니다.

'DEVELOPER_TOOLS'
컨텍스트 유형을 개발자 도구로 지정합니다.

ExtensionContext

Chrome 114 이상

확장 프로그램 콘텐츠를 호스팅하는 컨텍스트입니다.

속성

  • 컨텍스트 ID

    문자열

    이 컨텍스트의 고유 식별자입니다.

  • contextType

    이 컨텍스트가 해당하는 유형입니다.

  • documentId

    문자열 선택사항

    이 컨텍스트와 연결된 문서의 UUID입니다. 이 컨텍스트가 문서에 호스팅되지 않은 경우 정의되지 않습니다.

  • documentOrigin

    문자열 선택사항

    이 컨텍스트와 연결된 문서의 출처입니다. 컨텍스트가 문서에 호스팅되지 않은 경우 undefined입니다.

  • documentUrl

    문자열 선택사항

    이 컨텍스트와 연결된 문서의 URL입니다. 컨텍스트가 문서에 호스팅되지 않은 경우 정의되지 않습니다.

  • frameId

    숫자

    이 컨텍스트의 프레임 ID입니다. 이 컨텍스트가 프레임에서 호스팅되지 않는 경우 -1입니다.

  • 시크릿 모드

    부울

    컨텍스트가 시크릿 모드 프로필과 연결되어 있는지 여부입니다.

  • tabId

    숫자

    이 컨텍스트의 탭 ID입니다. 이 컨텍스트가 탭에서 호스팅되지 않는 경우 -1입니다.

  • windowId

    숫자

    이 컨텍스트의 창 ID입니다. 컨텍스트가 창에서 호스팅되지 않는 경우 -1입니다.

MessageSender

메시지 또는 요청을 보낸 스크립트 컨텍스트에 관한 정보가 포함된 객체입니다.

속성

  • documentId

    문자열 선택사항

    Chrome 106 이상

    연결을 연 문서의 UUID입니다.

  • documentLifecycle

    문자열 선택사항

    Chrome 106 이상

    포트가 생성된 시점에 연결을 연 문서의 수명 주기입니다. 포트 생성 이후 문서의 수명 주기 상태가 변경되었을 수 있습니다.

  • frameId

    번호 선택사항

    연결을 연 프레임입니다. 최상위 프레임의 경우 0, 하위 프레임의 경우 양수입니다. tab가 설정된 경우에만 설정됩니다.

  • id

    문자열 선택사항

    연결을 연 확장 프로그램의 ID입니다(있는 경우).

  • nativeApplication

    문자열 선택사항

    Chrome 74 이상

    연결을 연 네이티브 애플리케이션의 이름입니다(있는 경우).

  • origin

    문자열 선택사항

    Chrome 80 이상

    연결을 연 페이지 또는 프레임의 출처입니다. URL 속성 (예: about:blank)과 다를 수 있으며 불투명할 수도 있습니다 (예: 샌드박스 처리된 iframe). URL에서 즉시 알 수 없는 경우 출처를 신뢰할 수 있는지 식별하는 데 유용합니다.

  •  선택사항

    연결을 연 tabs.Tab(있는 경우) 이 속성은 연결이 탭 (콘텐츠 스크립트 포함)에서 열린 경우에만, 수신자가 앱이 아닌 확장 프로그램인 경우에만 표시됩니다.

  • tlsChannelId

    문자열 선택사항

    확장 프로그램에서 요청하고 사용 가능한 경우 연결을 연 페이지 또는 프레임의 TLS 채널 ID입니다.

  • URL

    문자열 선택사항

    연결을 연 페이지 또는 프레임의 URL입니다. 발신자가 iframe에 있는 경우 iframe을 호스팅하는 페이지의 URL이 아닌 iframe의 URL이 됩니다.

OnInstalledReason

Chrome 44 이상

이 이벤트가 디스패치되는 이유입니다.

열거형

'install'
이벤트 이유를 설치로 지정합니다.

'update'
이벤트 이유를 확장 프로그램 업데이트로 지정합니다.

'chrome_update'
이벤트 이유를 Chrome 업데이트로 지정합니다.

'shared_module_update'
이벤트 이유를 공유 모듈 업데이트로 지정합니다.

OnRestartRequiredReason

Chrome 44 이상

이벤트가 디스패치되는 이유입니다. 'app_update'는 애플리케이션이 최신 버전으로 업데이트되어 다시 시작해야 하는 경우에 사용됩니다. 'os_update'는 브라우저/OS가 최신 버전으로 업데이트되어 다시 시작해야 하는 경우에 사용됩니다. 'periodic'은 시스템이 엔터프라이즈 정책에 설정된 허용 업타임을 초과하여 실행되는 경우에 사용됩니다.

열거형

'app_update'
이벤트 이유를 앱 업데이트로 지정합니다.

'os_update'
이벤트 이유를 운영체제 업데이트로 지정합니다.

'periodic'
이벤트 이유를 앱의 주기적 다시 시작으로 지정합니다.

PlatformArch

Chrome 44 이상

머신의 프로세서 아키텍처입니다.

열거형

'arm'
프로세서 아키텍처를 arm으로 지정합니다.

'arm64'
프로세서 아키텍처를 arm64로 지정합니다.

'x86-32'
프로세서 아키텍처를 x86-32로 지정합니다.

'x86-64'
프로세서 아키텍처를 x86-64로 지정합니다.

'mips'
프로세서 아키텍처를 mips로 지정합니다.

'mips64'
프로세서 아키텍처를 mips64로 지정합니다.

'riscv64'
프로세서 아키텍처를 riscv64로 지정합니다.

PlatformInfo

현재 플랫폼에 관한 정보가 포함된 객체입니다.

속성

  • 머신의 프로세서 아키텍처입니다.

  • nacl_arch

    PlatformNaclArch 선택사항

    네이티브 클라이언트 아키텍처 일부 플랫폼에서는 아키텍처와 다를 수 있습니다.

  • Chrome이 실행 중인 운영체제입니다.

PlatformNaclArch

Chrome 44 이상

네이티브 클라이언트 아키텍처 일부 플랫폼에서는 아키텍처와 다를 수 있습니다.

열거형

'arm'
네이티브 클라이언트 아키텍처를 arm으로 지정합니다.

'x86-32'
네이티브 클라이언트 아키텍처를 x86-32로 지정합니다.

'x86-64'
기본 클라이언트 아키텍처를 x86-64로 지정합니다.

'mips'
네이티브 클라이언트 아키텍처를 mips로 지정합니다.

'mips64'
네이티브 클라이언트 아키텍처를 mips64로 지정합니다.

PlatformOs

Chrome 44 이상

Chrome이 실행 중인 운영체제입니다.

열거형

'mac'
MacOS 운영체제를 지정합니다.

'win'
Windows 운영체제를 지정합니다.

'android'
Android 운영체제를 지정합니다.

'cros'
Chrome 운영체제를 지정합니다.

'linux'
Linux 운영체제를 지정합니다.

'openbsd'
OpenBSD 운영체제를 지정합니다.

'fuchsia'
Fuchsia 운영체제를 지정합니다.

Port

다른 페이지와의 양방향 통신을 허용하는 객체입니다. 자세한 내용은 장기 연결을 참고하세요.

속성

  • 이름

    문자열

    runtime.connect 호출에 지정된 포트의 이름입니다.

  • onDisconnect

    Event<functionvoidvoid>

    포트가 다른 쪽에서 연결 해제될 때 발생합니다. 오류로 인해 포트 연결이 끊어진 경우 runtime.lastError가 설정될 수 있습니다. 연결 해제를 통해 포트가 닫히면 이 이벤트는 다른 쪽에서만 발생합니다. 이 이벤트는 최대 한 번 발생합니다 (포트 수명 참고).

    onDisconnect.addListener 함수는 다음과 같습니다.

    (callback: function) => {...}

    • callback

      함수

      callback 매개변수는 다음과 같습니다.

      (port: Port) => void

  • onMessage

    Event<functionvoidvoid>

    이 이벤트는 포트의 다른 쪽에서 postMessage를 호출할 때 발생합니다.

    onMessage.addListener 함수는 다음과 같습니다.

    (callback: function) => {...}

    • callback

      함수

      callback 매개변수는 다음과 같습니다.

      (message: any, port: Port) => void

      • 메시지

        모두

      • 포트
  • sender

    MessageSender 선택사항

    이 속성은 onConnect / onConnectExternal / onConnectNative 리스너에 전달된 포트에만 있습니다.

  • 연결 해제

    void

    포트를 즉시 분리합니다. 이미 연결이 해제된 포트에서 disconnect()를 호출해도 아무런 효과가 없습니다. 포트가 연결 해제되면 새 이벤트가 이 포트로 디스패치되지 않습니다.

    disconnect 함수는 다음과 같습니다.

    () => {...}

  • postMessage

    void

    포트의 다른 쪽 끝으로 메시지를 보냅니다. 포트가 연결 해제되면 오류가 발생합니다.

    postMessage 함수는 다음과 같습니다.

    (message: any) => {...}

    • 메시지

      모두

      Chrome 52 이상

      전송할 메시지입니다. 이 객체는 JSON으로 변환할 수 있어야 합니다.

RequestUpdateCheckStatus

Chrome 44 이상

업데이트 확인 결과입니다.

열거형

'제한됨'
상태 확인이 제한되었음을 지정합니다. 이 문제는 짧은 시간 내에 반복적으로 확인한 후에 발생할 수 있습니다.

'no_update'
설치할 수 있는 업데이트가 없음을 지정합니다.

'update_available'
설치할 수 있는 업데이트가 있음을 지정합니다.

속성

id

확장 프로그램/앱의 ID입니다.

유형

문자열

lastError

API 함수 호출이 실패하면 오류 메시지로 채워지고, 그렇지 않으면 정의되지 않습니다. 이는 해당 함수의 콜백 범위 내에서만 정의됩니다. 오류가 발생했지만 콜백 내에서 runtime.lastError에 액세스하지 않으면 오류를 생성한 API 함수를 나열하는 메시지가 콘솔에 로깅됩니다. 프로미스를 반환하는 API 함수는 이 속성을 설정하지 않습니다.

유형

객체

속성

  • 메시지

    문자열 선택사항

    발생한 오류에 관한 세부정보입니다.

메서드

connect()

chrome.runtime.connect(
  extensionId?: string,
  connectInfo?: object,
)

확장 프로그램 (예: 백그라운드 페이지) 또는 기타 확장 프로그램/앱 내에서 리스너를 연결하려고 시도합니다. 이는 확장 프로그램 프로세스에 연결되는 콘텐츠 스크립트, 앱/확장 프로그램 간 통신, 웹 메시지에 유용합니다. 콘텐츠 스크립트의 리스너에는 연결되지 않습니다. 확장 프로그램은 tabs.connect를 통해 탭에 삽입된 콘텐츠 스크립트에 연결할 수 있습니다.

매개변수

  • extensionId

    문자열 선택사항

    연결할 확장 프로그램의 ID입니다. 생략하면 자체 확장 프로그램으로 연결이 시도됩니다. 웹 메시지를 위해 웹페이지에서 메시지를 보내는 경우 필요합니다.

  • connectInfo

    객체 선택사항

    • includeTlsChannelId

      불리언 선택사항

      연결 이벤트를 수신 대기하는 프로세스의 onConnectExternal에 TLS 채널 ID가 전달되는지 여부입니다.

    • 이름

      문자열 선택사항

      연결 이벤트를 수신 대기하는 프로세스의 onConnect에 전달됩니다.

반환 값

  • 메시지를 주고받을 수 있는 포트입니다. 확장 프로그램이 없으면 포트의 onDisconnect 이벤트가 발생합니다.

connectNative()

chrome.runtime.connectNative(
  application: string,
)

호스트 머신의 네이티브 애플리케이션에 연결합니다. 이 메서드에는 "nativeMessaging" 권한이 필요합니다. 자세한 내용은 네이티브 메시지를 참고하세요.

매개변수

  • 애플리케이션

    문자열

    연결할 등록된 애플리케이션의 이름입니다.

반환 값

  • 애플리케이션으로 메시지를 주고받을 수 있는 포트

getBackgroundPage()

Promise 포그라운드 전용 Chrome 133부터 지원 중단됨
chrome.runtime.getBackgroundPage(
  callback?: function,
)

MV3 확장 프로그램에는 백그라운드 페이지가 없습니다.

현재 확장 프로그램/앱 내에서 실행되는 백그라운드 페이지의 JavaScript 'window' 객체를 가져옵니다. 백그라운드 페이지가 이벤트 페이지인 경우 시스템은 콜백을 호출하기 전에 페이지가 로드되도록 합니다. 백그라운드 페이지가 없으면 오류가 설정됩니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (backgroundPage?: Window) => void

    • backgroundPage

      창 선택사항

      백그라운드 페이지의 JavaScript 'window' 객체입니다.

반환 값

  • Promise<Window | undefined>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

getManifest()

chrome.runtime.getManifest()

매니페스트에서 앱 또는 확장 프로그램에 관한 세부정보를 반환합니다. 반환된 객체는 전체 매니페스트 파일의 직렬화입니다.

반환 값

  • 객체

    매니페스트 세부정보입니다.

getPackageDirectoryEntry()

약속 포그라운드 전용
chrome.runtime.getPackageDirectoryEntry(
  callback?: function,
)

패키지 디렉터리의 DirectoryEntry를 반환합니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (directoryEntry: DirectoryEntry) => void

    • directoryEntry

      DirectoryEntry

반환 값

  • Promise<DirectoryEntry>

    Chrome 122 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

getPlatformInfo()

Promise
chrome.runtime.getPlatformInfo(
  callback?: function,
)

현재 플랫폼에 관한 정보를 반환합니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (platformInfo: PlatformInfo) => void

반환 값

  • Promise<PlatformInfo>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

getURL()

chrome.runtime.getURL(
  path: string,
)

앱/확장 프로그램 설치 디렉터리 내의 상대 경로를 정규화된 URL로 변환합니다.

매개변수

  • 경로

    문자열

    앱/확장 프로그램 내 리소스의 경로로, 설치 디렉터리를 기준으로 표현됩니다.

반환 값

  • 문자열

    리소스의 정규화된 URL입니다.

openOptionsPage()

Promise
chrome.runtime.openOptionsPage(
  callback?: function,
)

가능한 경우 확장 프로그램의 옵션 페이지를 엽니다.

정확한 동작은 매니페스트의 options_ui 또는 options_page 키나 당시 Chrome에서 지원하는 내용에 따라 달라질 수 있습니다. 예를 들어 페이지가 새 탭에서 열리거나, chrome://extensions 내에서 열리거나, 앱 내에서 열리거나, 열려 있는 옵션 페이지에 포커스가 맞춰질 수 있습니다. 호출자 페이지가 새로고침되지는 않습니다.

확장 프로그램이 옵션 페이지를 선언하지 않거나 다른 이유로 Chrome에서 옵션 페이지를 만들지 못한 경우 콜백은 lastError을 설정합니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

reload()

chrome.runtime.reload()

앱 또는 확장 프로그램을 새로고침합니다. 이 메서드는 키오스크 모드에서 지원되지 않습니다. 키오스크 모드의 경우 chrome.runtime.restart() 메서드를 사용합니다.

requestUpdateCheck()

Promise
chrome.runtime.requestUpdateCheck(
  callback?: function,
)

이 앱/확장 프로그램에 대한 즉각적인 업데이트 확인을 요청합니다.

중요: Chrome에서 이미 몇 시간마다 자동 검사를 실행하므로 대부분의 확장 프로그램/앱은 이 메서드를 사용하면 안 됩니다. requestUpdateCheck를 호출하지 않고도 runtime.onUpdateAvailable 이벤트를 수신 대기할 수 있습니다.

이 메서드는 확장 프로그램이 백엔드 서비스와 통신하고 백엔드 서비스에서 클라이언트 확장 프로그램 버전이 매우 오래되었다고 판단하여 사용자에게 업데이트를 요청하려는 경우와 같이 매우 제한된 상황에서만 호출하는 것이 적절합니다. 반복 타이머를 기반으로 무조건 호출하는 등 requestUpdateCheck의 다른 대부분의 용도는 클라이언트, 네트워크, 서버 리소스만 낭비할 뿐입니다.

참고: 콜백과 함께 호출되면 이 함수는 객체를 반환하는 대신 콜백에 전달된 별도의 인수로 두 속성을 반환합니다.

매개변수

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (result: object) => void

    • 결과

      객체

      Chrome 109 이상

      업데이트 확인 상태와 업데이트가 있는 경우 결과의 세부정보를 보유하는 RequestUpdateCheckResult 객체

      • 업데이트 확인 결과입니다.

      • version

        문자열 선택사항

        사용 가능한 업데이트가 있는 경우 사용 가능한 업데이트의 버전을 포함합니다.

반환 값

  • Promise<object>

    Chrome 109 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

restart()

chrome.runtime.restart()

앱이 키오스크 모드로 실행될 때 ChromeOS 기기를 다시 시작합니다. 그렇지 않으면 no-op입니다.

restartAfterDelay()

Promise Chrome 53 이상
chrome.runtime.restartAfterDelay(
  seconds: number,
  callback?: function,
)

지정된 시간이 지난 후 앱이 키오스크 모드로 실행되면 ChromeOS 기기를 다시 시작합니다. 시간이 끝나기 전에 다시 호출되면 재부팅이 지연됩니다. -1 값으로 호출되면 재부팅이 취소됩니다. 키오스크 모드가 아닌 경우 no-op입니다. 이 API를 호출하는 첫 번째 확장 프로그램에서만 반복적으로 호출할 수 있습니다.

매개변수

  • 숫자

    기기를 재부팅하기 전에 대기할 시간(초)입니다. 예약된 재부팅을 취소하려면 -1을 사용합니다.

  • callback

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

sendMessage()

Promise
chrome.runtime.sendMessage(
  extensionId?: string,
  message: any,
  options?: object,
  callback?: function,
)

확장 프로그램 또는 다른 확장 프로그램/앱 내의 이벤트 리스너에 단일 메시지를 전송합니다. runtime.connect와 유사하지만 선택적 응답과 함께 단일 메시지만 전송합니다. 확장 프로그램으로 전송하는 경우 runtime.onMessage 이벤트는 발신자의 프레임을 제외한 확장 프로그램의 모든 프레임에서 발생합니다. 다른 확장 프로그램인 경우 runtime.onMessageExternal이 발생합니다. 확장 프로그램은 이 메서드를 사용하여 콘텐츠 스크립트에 메시지를 보낼 수 없습니다. 콘텐츠 스크립트에 메시지를 보내려면 tabs.sendMessage를 사용합니다.

매개변수

  • extensionId

    문자열 선택사항

    메시지를 보낼 확장 프로그램의 ID입니다. 생략하면 메시지가 자체 확장 프로그램/앱으로 전송됩니다. 웹 메시지용 웹페이지에서 메시지를 전송하는 경우 필수입니다.

  • 메시지

    모두

    전송할 메시지입니다. 이 메시지는 JSON으로 변환 가능한 객체여야 합니다.

  • 옵션

    객체 선택사항

    • includeTlsChannelId

      불리언 선택사항

      연결 이벤트를 수신 대기하는 프로세스의 onMessageExternal에 TLS 채널 ID가 전달되는지 여부입니다.

  • callback

    함수 선택사항

    Chrome 99 이상

    callback 매개변수는 다음과 같습니다.

    (response: any) => void

    • 응답

      모두

      메시지 핸들러가 전송한 JSON 응답 객체입니다. 확장 프로그램에 연결하는 중에 오류가 발생하면 인수가 없는 콜백이 호출되고 runtime.lastError이 오류 메시지로 설정됩니다.

반환 값

  • Promise<any>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

sendNativeMessage()

Promise
chrome.runtime.sendNativeMessage(
  application: string,
  message: object,
  callback?: function,
)

네이티브 애플리케이션에 단일 메시지를 전송합니다. 이 메서드에는 "nativeMessaging" 권한이 필요합니다.

매개변수

  • 애플리케이션

    문자열

    기본 메시지 호스트의 이름입니다.

  • 메시지

    객체

    네이티브 메시지 호스트에 전달될 메시지입니다.

  • callback

    함수 선택사항

    Chrome 99 이상

    callback 매개변수는 다음과 같습니다.

    (response: any) => void

    • 응답

      모두

      기본 메시지 호스트에서 전송한 응답 메시지입니다. 네이티브 메시징 호스트에 연결하는 동안 오류가 발생하면 인수가 없는 콜백이 호출되고 runtime.lastError이 오류 메시지로 설정됩니다.

반환 값

  • Promise<any>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

setUninstallURL()

Promise
chrome.runtime.setUninstallURL(
  url: string,
  callback?: function,
)

제거 시 방문할 URL을 설정합니다. 이는 서버 측 데이터를 정리하고, 분석을 실행하고, 설문조사를 구현하는 데 사용될 수 있습니다. 최대 1,023자(영문 기준)

매개변수

  • URL

    문자열

    확장 프로그램이 제거된 후 열릴 URL입니다. 이 URL에는 http: 또는 https: 스키마가 있어야 합니다. 제거 시 새 탭을 열지 않으려면 빈 문자열을 설정하세요.

  • callback

    함수 선택사항

    Chrome 45 이상

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    Chrome 99 이상

    Promise는 Manifest V3 이상에서만 지원되며 다른 플랫폼에서는 콜백을 사용해야 합니다.

이벤트

onBrowserUpdateAvailable

지원 중단됨
chrome.runtime.onBrowserUpdateAvailable.addListener(
  callback: function,
)

runtime.onRestartRequired를 사용하세요.

Chrome 업데이트가 제공되지만 브라우저를 다시 시작해야 하므로 즉시 설치되지 않는 경우에 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    () => void

onConnect

chrome.runtime.onConnect.addListener(
  callback: function,
)

확장 프로그램 프로세스 또는 콘텐츠 스크립트에서 연결이 이루어질 때 (runtime.connect에 의해) 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (port: Port) => void

onConnectExternal

chrome.runtime.onConnectExternal.addListener(
  callback: function,
)

다른 확장 프로그램 (runtime.connect) 또는 외부에서 연결 가능한 웹사이트에서 연결이 이루어질 때 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (port: Port) => void

onConnectNative

Chrome 76 이상
chrome.runtime.onConnectNative.addListener(
  callback: function,
)

네이티브 애플리케이션에서 연결이 이루어질 때 발생합니다. 이 이벤트에는 "nativeMessaging" 권한이 필요합니다. ChromeOS에서만 지원됩니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (port: Port) => void

onInstalled

chrome.runtime.onInstalled.addListener(
  callback: function,
)

확장 프로그램이 처음 설치될 때, 확장 프로그램이 새 버전으로 업데이트될 때, Chrome이 새 버전으로 업데이트될 때 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (details: object) => void

    • 세부정보

      객체

      • id

        문자열 선택사항

        업데이트된 가져온 공유 모듈 확장 프로그램의 ID를 나타냅니다. 'reason'이 'shared_module_update'인 경우에만 표시됩니다.

      • previousVersion

        문자열 선택사항

        방금 업데이트된 확장 프로그램의 이전 버전을 나타냅니다. 'reason'이 'update'인 경우에만 표시됩니다.

      • 이 이벤트가 디스패치되는 이유입니다.

onMessage

chrome.runtime.onMessage.addListener(
  callback: function,
)

확장 프로그램 프로세스 (runtime.sendMessage) 또는 콘텐츠 스크립트 (tabs.sendMessage)에서 메시지가 전송될 때 발생합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (message: any, sender: MessageSender, sendResponse: function) => boolean | undefined

    • 메시지

      모두

    • sender
    • sendResponse

      함수

      sendResponse 매개변수는 다음과 같습니다.

      () => void

    • returns

      boolean | undefined

onMessageExternal

chrome.runtime.onMessageExternal.addListener(
  callback: function,
)

다른 확장 프로그램에서 메시지를 전송할 때 (runtime.sendMessage에 의해) 발생합니다. 콘텐츠 스크립트에서는 사용할 수 없습니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (message: any, sender: MessageSender, sendResponse: function) => boolean | undefined

    • 메시지

      모두

    • sender
    • sendResponse

      함수

      sendResponse 매개변수는 다음과 같습니다.

      () => void

    • returns

      boolean | undefined

onRestartRequired

chrome.runtime.onRestartRequired.addListener(
  callback: function,
)

앱 또는 앱이 실행되는 기기를 다시 시작해야 할 때 발생합니다. 앱은 다시 시작이 발생하도록 가장 편리한 시간에 모든 창을 닫아야 합니다. 앱이 아무것도 하지 않으면 24시간의 유예 기간이 지난 후 강제 다시 시작됩니다. 현재 이 이벤트는 ChromeOS 키오스크 앱에 대해서만 발생합니다.

매개변수

onStartup

chrome.runtime.onStartup.addListener(
  callback: function,
)

이 확장 프로그램이 설치된 프로필이 처음 시작될 때 실행됩니다. 이 확장 프로그램이 '분할' 시크릿 모드에서 작동하는 경우에도 시크릿 프로필이 시작되면 이 이벤트가 발생하지 않습니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    () => void

onSuspend

chrome.runtime.onSuspend.addListener(
  callback: function,
)

이벤트 페이지가 언로드되기 직전에 전송됩니다. 이렇게 하면 확장 프로그램이 정리 작업을 할 수 있습니다. 페이지가 언로드되므로 이 이벤트를 처리하는 동안 시작된 비동기 작업이 완료된다는 보장은 없습니다. 이벤트 페이지가 언로드되기 전에 더 많은 활동이 발생하면 onSuspendCanceled 이벤트가 전송되고 페이지가 언로드되지 않습니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    () => void

onSuspendCanceled

chrome.runtime.onSuspendCanceled.addListener(
  callback: function,
)

onSuspend 후에 전송되어 앱이 결국 언로드되지 않음을 나타냅니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    () => void

onUpdateAvailable

chrome.runtime.onUpdateAvailable.addListener(
  callback: function,
)

업데이트가 제공되지만 앱이 현재 실행 중이므로 즉시 설치되지 않는 경우에 발생합니다. 아무것도 하지 않으면 백그라운드 페이지가 언로드될 때 업데이트가 설치됩니다. 더 빨리 설치하려면 chrome.runtime.reload()를 명시적으로 호출하면 됩니다. 확장 프로그램이 영구 백그라운드 페이지를 사용하는 경우 백그라운드 페이지는 언로드되지 않으므로 이 이벤트에 응답하여 chrome.runtime.reload()를 수동으로 호출하지 않으면 Chrome 자체가 다시 시작될 때까지 업데이트가 설치되지 않습니다. 이 이벤트를 수신하는 핸들러가 없고 확장 프로그램에 영구 백그라운드 페이지가 있는 경우 이 이벤트에 대한 응답으로 chrome.runtime.reload()가 호출된 것처럼 동작합니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (details: object) => void

    • 세부정보

      객체

      • version

        문자열

        사용 가능한 업데이트의 버전 번호입니다.