browser.tabs

설명

chrome.tabs API를 사용하여 브라우저의 탭 시스템과 상호작용합니다. 이 API를 사용하여 브라우저에서 탭을 만들고, 수정하고, 재정렬할 수 있습니다.

Tabs API는 탭을 조작하고 관리하는 기능을 제공할 뿐만 아니라 탭의 언어를 감지하고, 스크린샷을 찍고, 탭의 콘텐츠 스크립트와 통신할 수도 있습니다.

권한

대부분의 기능은 사용하기 위해 권한이 필요하지 않습니다. 예를 들어 새 탭 만들기, 탭 새로고침, 다른 URL로 이동 등이 있습니다.

Tabs API를 사용할 때 개발자가 알아야 할 세 가지 권한이 있습니다.

'tabs' 권한

이 권한은 browser.tabs 네임스페이스에 대한 액세스 권한을 부여하지 않습니다. 대신 tabs.Tab 인스턴스의 민감한 속성 4개(url, pendingUrl, title, favIconUrl)에 대해 tabs.query()를 호출할 수 있는 기능을 확장 프로그램에 부여합니다.

{
  "name": "My extension",
  ...
  "permissions": [
    "tabs"
  ],
  ...
}
호스트 권한

호스트 권한을 사용하면 확장 프로그램이 일치하는 탭의 민감한 tabs.Tab 속성 4개를 읽고 쿼리할 수 있습니다. 또한 tabs.captureVisibleTab(), scripting.executeScript(), scripting.insertCSS(), scripting.removeCSS()와 같은 메서드를 사용하여 일치하는 탭과 직접 상호작용할 수 있습니다.

{
  "name": "My extension",
  ...
  "host_permissions": [
    "http://*/*",
    "https://*/*"
  ],
  ...
}
'activeTab' 권한

activeTab는 사용자 호출에 응답하여 현재 탭에 대한 확장 프로그램 임시 호스트 권한을 부여합니다. 호스트 권한과 달리 activeTab은 경고를 트리거하지 않습니다.

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

사용 사례

다음 섹션에서는 몇 가지 일반적인 사용 사례를 보여줍니다.

새 탭에서 확장 프로그램 페이지 열기

확장 프로그램의 일반적인 패턴은 확장 프로그램이 설치될 때 새 탭에서 온보딩 페이지를 여는 것입니다. 다음 예시는 이 작업을 수행하는 방법을 보여줍니다.

background.js:

browser.runtime.onInstalled.addListener(({reason}) => {
  if (reason === 'install') {
    browser.tabs.create({
      url: "onboarding.html"
    });
  }
});

현재 탭 가져오기

이 예에서는 확장 프로그램의 서비스 워커가 현재 포커스가 있는 창 (또는 Chrome 창에 포커스가 없는 경우 가장 최근에 포커스가 있는 창)에서 활성 탭을 가져오는 방법을 보여줍니다. 이는 일반적으로 사용자의 현재 탭으로 생각할 수 있습니다.

  async function getCurrentTab() {
    let queryOptions = { active: true, lastFocusedWindow: true };
    // `tab` will either be a `tabs.Tab` instance or `undefined`.
    let [tab] = await browser.tabs.query(queryOptions);
    return tab;
  }

  function getCurrentTab(callback) {
    let queryOptions = { active: true, lastFocusedWindow: true };
    browser.tabs.query(queryOptions, ([tab]) => {
      if (browser.runtime.lastError)
      console.error(browser.runtime.lastError);
      // `tab` will either be a `tabs.Tab` instance or `undefined`.
      callback(tab);
    });
  }

지정된 탭 음소거

이 예시에서는 확장 프로그램이 특정 탭의 음소거 상태를 전환하는 방법을 보여줍니다.

  async function toggleMuteState(tabId) {
    const tab = await browser.tabs.get(tabId);
    const muted = !tab.mutedInfo.muted;
    await browser.tabs.update(tabId, {muted});
    console.log(`Tab ${tab.id} is ${muted ? "muted" : "unmuted"}`);
  }

  function toggleMuteState(tabId) {
    browser.tabs.get(tabId, async (tab) => {
      let muted = !tab.mutedInfo.muted;
      await browser.tabs.update(tabId, { muted });
      console.log(`Tab ${tab.id} is ${ muted ? "muted" : "unmuted" }`);
    });
  }

클릭 시 현재 탭을 첫 번째 위치로 이동

이 예시에서는 드래그가 진행 중이거나 진행 중이 아닐 때 탭을 이동하는 방법을 보여줍니다. 이 예에서는 browser.tabs.move를 사용하지만 드래그가 진행되는 동안 탭을 수정하는 다른 호출에 동일한 대기 패턴을 사용할 수 있습니다.

  browser.tabs.onActivated.addListener(moveToFirstPosition);

  async function moveToFirstPosition(activeInfo) {
    try {
      await browser.tabs.move(activeInfo.tabId, {index: 0});
      console.log("Success.");
    } catch (error) {
      if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
        setTimeout(() => moveToFirstPosition(activeInfo), 50);
      } else {
        console.error(error);
      }
    }
  }

  browser.tabs.onActivated.addListener(moveToFirstPositionMV2);

  function moveToFirstPositionMV2(activeInfo) {
    browser.tabs.move(activeInfo.tabId, { index: 0 }, () => {
      if (browser.runtime.lastError) {
        const error = browser.runtime.lastError;
        if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
          setTimeout(() => moveToFirstPositionMV2(activeInfo), 50);
        } else {
          console.error(error);
        }
      } else {
        console.log("Success.");
      }
    });
  }

선택한 탭의 콘텐츠 스크립트에 메시지 전달

이 예에서는 확장 프로그램의 서비스 워커가 tabs.sendMessage()를 사용하여 특정 브라우저 탭의 콘텐츠 스크립트와 통신하는 방법을 보여줍니다.

function sendMessageToActiveTab(message) {
  const [tab] = await browser.tabs.query({ active: true, lastFocusedWindow: true });
  const response = await browser.tabs.sendMessage(tab.id, message);
  // TODO: Do something with the response.
}

확장 프로그램 예시

Tabs API 확장 프로그램 데모를 더 보려면 다음 중 하나를 살펴보세요.

유형

MutedInfo

Chrome 46 이상 Chrome 148 이후 browser.*

탭의 음소거 상태 및 마지막 상태 변경 이유입니다.

속성

  • extensionId

    문자열 선택사항

    음소거 상태를 변경한 확장 프로그램의 ID입니다. 음소거 상태가 마지막으로 변경된 이유가 확장 프로그램이 아닌 경우 설정되지 않습니다.

  • 음소거

    부울

    탭이 음소거되었는지 (소리 재생이 차단되었는지) 여부입니다. 소리가 재생되지 않았거나 현재 재생 중이 아니더라도 탭이 음소거될 수 있습니다. '음소거' 오디오 표시기가 표시되는지 여부와 동일합니다.

  • reason

    MutedInfoReason 선택사항

    탭이 음소거되거나 음소거 해제된 이유입니다. 탭의 음소거 상태가 변경된 적이 없는 경우 설정되지 않습니다.

MutedInfoReason

Chrome 46 이상 Chrome 148 이후 browser.*

음소거 상태 변경을 일으킨 이벤트입니다.

열거형

"user"
사용자 입력 작업으로 음소거 상태가 설정되었습니다.

'capture'
탭 캡처가 시작되어 음소거 상태 변경이 강제 적용되었습니다.

'extension'
extensionId 필드로 식별되는 확장 프로그램이 음소거 상태를 설정했습니다.

Tab

속성

  • 운영중

    부울

    창에서 탭이 활성 상태인지 여부입니다. 창에 포커스가 설정되어 있다는 의미는 아닙니다.

  • 오더블

    불리언 선택사항

    Chrome 45 이상 브라우저.* Chrome 148부터

    지난 몇 초 동안 탭에서 소리가 발생했는지 여부입니다 (음소거된 경우 들리지 않을 수 있음). '발표자 오디오' 표시기가 표시되는지 여부와 동일합니다.

  • autoDiscardable

    부울

    Chrome 54 이상 브라우저.*(Chrome 148부터)

    리소스가 부족할 때 브라우저에서 탭을 자동으로 삭제할 수 있는지 여부입니다.

  • 삭제됨

    부울

    Chrome 54 이상 브라우저.*(Chrome 148부터)

    탭이 삭제되었는지 여부입니다. 삭제된 탭은 콘텐츠가 메모리에서 언로드되었지만 탭 표시줄에 계속 표시되는 탭입니다. 콘텐츠는 다음에 활성화될 때 새로고침됩니다.

  • favIconUrl

    문자열 선택사항

    탭의 파비콘 URL입니다. 이 속성은 확장 프로그램에 "tabs" 권한이 있거나 페이지에 대한 호스트 권한이 있는 경우에만 표시됩니다. 탭이 로드 중인 경우 빈 문자열일 수도 있습니다.

  • 응답 없음

    부울

    Chrome 132 이상 브라우저.*(Chrome 148부터)

    탭이 정지되었는지 여부입니다. 정지된 탭은 이벤트 핸들러나 타이머를 비롯한 작업을 실행할 수 없습니다. 탭 표시줄에 표시되며 콘텐츠가 메모리에 로드됩니다. 활성화 시 고정이 해제됩니다.

  • groupId

    숫자

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    탭이 속한 그룹의 ID입니다.

  • 높이

    number 선택사항

    탭의 높이(픽셀)입니다.

  • 눈에 띄는 채팅 메시지

    부울

    탭이 강조 표시되는지 여부입니다.

  • id

    number 선택사항

    탭의 ID입니다. 탭 ID는 브라우저 세션 내에서 고유합니다. 경우에 따라 탭에 ID가 할당되지 않을 수 있습니다. 예를 들어 sessions API를 사용하여 외부 탭을 쿼리하는 경우 세션 ID가 있을 수 있습니다. 앱 및 개발자 도구 창의 경우 탭 ID를 chrome.tabs.TAB_ID_NONE로 설정할 수도 있습니다.

  • incognito

    부울

    탭이 시크릿 창에 있는지 여부입니다.

  • 색인

    숫자

    창 내에서 0부터 시작하는 탭 색인입니다.

  • lastAccessed

    숫자

    Chrome 121 이상 Chrome 148부터 browser.*

    탭이 창에서 마지막으로 활성화된 시간(에포크 이후의 밀리초 단위 경과 시간)입니다.

  • mutedInfo

    MutedInfo 선택사항

    Chrome 46 이상 Chrome 148 이후 browser.*

    탭의 음소거 상태 및 마지막 상태 변경 이유입니다.

  • openerTabId

    number 선택사항

    이 탭을 연 탭의 ID입니다(있는 경우). 이 속성은 오프너 탭이 여전히 존재하는 경우에만 표시됩니다.

  • pendingUrl

    문자열 선택사항

    Chrome 79 이상 Chrome 148 이후 browser.*

    커밋되기 전에 탭이 이동하는 URL입니다. 이 속성은 확장 프로그램에 "tabs" 권한이 있거나 페이지에 대한 호스트 권한이 있고 대기 중인 탐색이 있는 경우에만 표시됩니다.

  • 고정됨

    부울

    탭이 고정되어 있는지 여부입니다.

  • 선택됨

    부울

    지원 중단됨

    tabs.Tab.highlighted를 사용하세요.

    탭이 선택되었는지 여부입니다.

  • sessionId

    문자열 선택사항

    sessions API에서 가져온 탭을 고유하게 식별하는 데 사용되는 세션 ID입니다.

  • splitViewId

    number 선택사항

    Chrome 140 이상 브라우저.* Chrome 148부터

    탭이 속한 분할 보기의 ID입니다.

  • 상태

    TabStatus 선택사항

    탭의 로드 상태입니다.

  • 제목

    문자열 선택사항

    탭의 제목입니다. 이 속성은 확장 프로그램에 "tabs" 권한이 있거나 페이지에 대한 호스트 권한이 있는 경우에만 표시됩니다.

  • URL

    문자열 선택사항

    탭의 기본 프레임에서 마지막으로 커밋된 URL입니다. 이 속성은 확장 프로그램에 "tabs" 권한이 있거나 페이지에 대한 호스트 권한이 있는 경우에만 표시됩니다. 탭이 아직 커밋되지 않은 경우 빈 문자열일 수 있습니다. Tab.pendingUrl도 참고하세요.

  • 너비

    number 선택사항

    탭의 너비(픽셀)입니다.

  • windowId

    숫자

    탭이 포함된 창의 ID입니다.

TabStatus

Chrome 44 이상 브라우저.*(Chrome 148부터)

탭의 로드 상태입니다.

열거형

"unloaded"

"loading"

"complete"

WindowType

Chrome 44 이상 브라우저.*(Chrome 148부터)

기간 유형입니다.

열거형

"normal"

"popup"

"panel"

"app"

"devtools"

ZoomSettings

탭의 확대/축소 변경사항이 처리되는 방식과 범위를 정의합니다.

속성

  • defaultZoomFactor

    number 선택사항

    Chrome 43 이상 브라우저.*(Chrome 148부터)

    tabs.getZoomSettings 호출에서 현재 탭의 기본 확대/축소 수준을 반환하는 데 사용됩니다.

  • 모드

    ZoomSettingsMode 선택사항

    확대/축소 변경사항이 처리되는 방식, 즉 페이지의 실제 확장을 담당하는 항목을 정의합니다. 기본값은 automatic입니다.

  • 범위

    ZoomSettingsScope 선택사항

    확대/축소 변경사항이 페이지 출처에 유지되는지 또는 이 탭에만 적용되는지 정의합니다. automatic 모드에서는 기본값이 per-origin이고, 그 외의 경우에는 per-tab입니다.

ZoomSettingsMode

Chrome 44 이상 브라우저.*(Chrome 148부터)

확대/축소 변경사항이 처리되는 방식, 즉 페이지의 실제 확장을 담당하는 항목을 정의합니다. 기본값은 automatic입니다.

열거형

'automatic'
확대/축소 변경사항은 브라우저에서 자동으로 처리됩니다.

"manual"
확대/축소 변경사항의 자동 처리를 재정의합니다. onZoomChange 이벤트는 계속 전달되며, 이 이벤트를 수신 대기하고 페이지를 수동으로 확장하는 것은 확장 프로그램의 책임입니다. 이 모드는 per-origin 확대를 지원하지 않으므로 scope 확대 설정을 무시하고 per-tab로 가정합니다.

'disabled'
탭의 모든 확대/축소를 사용 중지합니다. 탭이 기본 확대/축소 수준으로 되돌아가고 시도된 모든 확대/축소 변경사항은 무시됩니다.

ZoomSettingsScope

Chrome 44 이상 브라우저.*(Chrome 148부터)

확대/축소 변경사항이 페이지 출처에 유지되는지 또는 이 탭에만 적용되는지 정의합니다. automatic 모드에서는 기본값이 per-origin이고, 그 외의 경우에는 per-tab입니다.

열거형

'per-origin'
확대/축소 변경사항이 확대/축소된 페이지의 출처에 유지됩니다. 즉, 동일한 출처로 이동한 다른 모든 탭도 확대/축소됩니다. 또한 per-origin 확대/축소 변경사항은 출처와 함께 저장됩니다. 즉, 동일한 출처의 다른 페이지로 이동하면 모두 동일한 확대/축소 비율로 확대/축소됩니다. per-origin 범위는 automatic 모드에서만 사용할 수 있습니다.

'per-tab'
확대/축소 변경사항은 이 탭에만 적용되며 다른 탭의 확대/축소 변경사항은 이 탭의 확대/축소에 영향을 미치지 않습니다. 또한 탐색 시 per-tab 확대/축소 변경사항이 재설정됩니다. 탭을 탐색하면 항상 per-origin 확대/축소 비율로 페이지가 로드됩니다.

속성

MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND

Chrome 92 이상 browser.*(Chrome 148 이후)

초당 captureVisibleTab를 호출할 수 있는 최대 횟수입니다. captureVisibleTab는 비용이 많이 들기 때문에 너무 자주 호출해서는 안 됩니다.

값

2

SPLIT_VIEW_ID_NONE

Chrome 140 이상 브라우저.* Chrome 148부터

분할 탭이 없음을 나타내는 ID입니다.

값

-1

TAB_ID_NONE

Chrome 46 이상 Chrome 148 이후 browser.*

브라우저 탭이 없음을 나타내는 ID입니다.

값

-1

TAB_INDEX_NONE

Chrome 123 이상 Chrome 148 이후 브라우저.*

탭 표시줄에 탭 색인이 없음을 나타내는 색인입니다.

값

-1

메서드

captureVisibleTab()

browser.tabs.captureVisibleTab(
  windowId?: number,
  options?: ImageDetails,
)
: Promise<string>

지정된 창에서 현재 활성 상태인 탭의 표시 영역을 캡처합니다. 이 메서드를 호출하려면 확장 프로그램에 <all_urls> 권한 또는 activeTab 권한이 있어야 합니다. 이 메서드를 사용하면 확장 프로그램이 일반적으로 액세스할 수 있는 사이트 외에도 chrome:-scheme 페이지, 다른 확장 프로그램의 페이지, data: URL을 비롯하여 제한된 민감한 사이트를 캡처할 수 있습니다. 이러한 민감한 사이트는 activeTab 권한이 있어야만 캡처할 수 있습니다. 파일 URL은 확장 프로그램에 파일 액세스 권한이 부여된 경우에만 캡처할 수 있습니다.

매개변수

반환 값

  • Promise<string>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

connect()

browser.tabs.connect(
  tabId: number,
  connectInfo?: object,
)
: runtime.Port

지정된 탭의 콘텐츠 스크립트에 연결합니다. runtime.onConnect 이벤트는 현재 확장 프로그램의 지정된 탭에서 실행되는 각 콘텐츠 스크립트에서 실행됩니다. 자세한 내용은 콘텐츠 스크립트 메시지를 참고하세요.

매개변수

  • tabId

    숫자

  • connectInfo

    객체 선택사항

    • documentId

      문자열 선택사항

      Chrome 106 이상 Chrome 148 이후의 browser.*

      탭의 모든 프레임 대신 documentId로 식별되는 특정 문서에 대한 포트를 엽니다.

    • frameId

      number 선택사항

      탭의 모든 프레임 대신 frameId로 식별되는 특정 프레임에 포트를 엽니다.

    • 이름

      문자열 선택사항

      연결 이벤트를 수신 대기하는 콘텐츠 스크립트의 onConnect에 전달됩니다.

반환 값

  • 지정된 탭에서 실행 중인 콘텐츠 스크립트와 통신하는 데 사용할 수 있는 포트입니다. 탭이 닫히거나 존재하지 않으면 포트의 runtime.Port 이벤트가 실행됩니다.

create()

browser.tabs.create(
  createProperties: object,
)
: Promise<Tab>

새 탭을 만듭니다.

매개변수

  • createProperties

    객체

    • 운영중

      불리언 선택사항

      탭이 창에서 활성 탭이 되어야 하는지 여부입니다. 창에 포커스가 맞춰져 있는지 여부에는 영향을 미치지 않습니다(windows.update 참고). 기본값은 true입니다.

    • 색인

      number 선택사항

      창에서 탭이 차지해야 하는 위치입니다. 제공된 값은 0과 창의 탭 수 사이로 고정됩니다.

    • openerTabId

      number 선택사항

      이 탭을 연 탭의 ID입니다. 지정된 경우 오프너 탭은 새로 생성된 탭과 동일한 창에 있어야 합니다.

    • 고정됨

      불리언 선택사항

      탭을 고정해야 하는지 여부입니다. 기본값은 false입니다.

    • 선택됨

      불리언 선택사항

      지원 중단됨

      active를 사용하세요.

      탭이 창에서 선택된 탭이 되어야 하는지 여부입니다. 기본값은 true입니다.

    • splitWithTabId

      number 선택사항

      Chrome 155 이상

      분할 보기를 만들 기존 탭의 ID입니다. 지정된 경우 분할 탭은 다음 조건을 충족해야 합니다.

      • 이미 분할된 탭이 아니어야 합니다.
      • 새로 만든 탭과 동일한 창에 있어야 합니다.
      • windowId를 지정하는 경우 분할 탭의 창 ID와 동일해야 합니다.
      • index이 지정된 경우 분할 탭에 인접한 색인이어야 하며 새로 생성된 탭의 상대 위치에 영향을 미칩니다.
    • URL

      문자열 선택사항

      탭을 처음으로 이동할 URL입니다. 정규화된 URL에는 스킴 (예: 'www.google.com'이 아닌 'http://www.google.com'). 상대 URL은 확장 프로그램 내의 현재 페이지를 기준으로 합니다. 기본값은 새 탭 페이지입니다.

    • windowId

      number 선택사항

      새 탭을 만들 창입니다. 기본값은 현재 기간입니다.

반환 값

  • Promise<Tab>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

createSplit()

Chrome 155 이상
browser.tabs.createSplit(
  tabIds: [number, number],
)
: Promise<number>

기존 탭 두 개를 분할 뷰로 분할합니다.

매개변수

  • tabIds

    [숫자, 숫자]

    분할 보기에 페어링할 정확히 두 개의 탭 ID 배열입니다. 모든 탭은 다음 조건을 충족해야 합니다.

    인접해야 합니다. 이미 분할 뷰에 있는 앱은 사용할 수 없습니다. windowId, pinned, groupId 상태가 일치해야 합니다.

반환 값

  • <number> 약속

detectLanguage()

browser.tabs.detectLanguage(
  tabId?: number,
)
: Promise<string>

탭에 있는 콘텐츠의 기본 언어를 감지합니다.

매개변수

  • tabId

    number 선택사항

    기본값은 현재 창의 활성 탭입니다.

반환 값

  • Promise<string>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

discard()

Chrome 54 이상 브라우저.*(Chrome 148부터)
browser.tabs.discard(
  tabId?: number,
)
: Promise<Tab | undefined>

메모리에서 탭을 삭제합니다. 삭제된 탭은 탭 표시줄에 계속 표시되며 활성화되면 새로고침됩니다.

매개변수

  • tabId

    number 선택사항

    삭제할 탭의 ID입니다. 지정된 경우 탭이 활성 상태이거나 이미 삭제되지 않은 한 삭제됩니다. 생략하면 브라우저에서 가장 중요하지 않은 탭을 삭제합니다. 삭제 가능한 탭이 없으면 실패할 수 있습니다.

반환 값

  • Promise<Tab | undefined>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    작업이 완료되면 확인됩니다.

duplicate()

browser.tabs.duplicate(
  tabId: number,
)
: Promise<Tab | undefined>

탭을 복제합니다.

매개변수

  • tabId

    숫자

    복제할 탭의 ID입니다.

반환 값

  • Promise<Tab | undefined>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

get()

browser.tabs.get(
  tabId: number,
)
: Promise<Tab>

지정된 탭에 관한 세부정보를 가져옵니다.

매개변수

  • tabId

    숫자

반환 값

  • Promise<Tab>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

getCurrent()

browser.tabs.getCurrent(): Promise<Tab | undefined>

이 스크립트 호출이 이루어지는 탭을 가져옵니다. 탭이 아닌 컨텍스트 (예: 백그라운드 페이지 또는 팝업 보기)에서 호출된 경우 undefined를 반환합니다.

반환 값

  • Promise<Tab | undefined>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

getZoom()

browser.tabs.getZoom(
  tabId?: number,
)
: Promise<number>

지정된 탭의 현재 확대/축소 비율을 가져옵니다.

매개변수

  • tabId

    number 선택사항

    현재 확대/축소 비율을 가져올 탭의 ID입니다. 기본값은 현재 창의 활성 탭입니다.

반환 값

  • <number> 약속

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    탭의 현재 확대/축소 비율을 가져온 후 이 비율로 확인됩니다.

getZoomSettings()

browser.tabs.getZoomSettings(
  tabId?: number,
)
: Promise<ZoomSettings>

지정된 탭의 현재 확대/축소 설정을 가져옵니다.

매개변수

  • tabId

    number 선택사항

    현재 확대/축소 설정을 가져올 탭의 ID입니다. 기본값은 현재 창의 활성 탭입니다.

반환 값

  • Promise<ZoomSettings>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    탭의 현재 확대/축소 설정으로 확인합니다.

goBack()

Chrome 72 이상 브라우저.* Chrome 148부터
browser.tabs.goBack(
  tabId?: number,
)
: Promise<void>

이전 페이지로 돌아갑니다(있는 경우).

매개변수

  • tabId

    number 선택사항

    뒤로 이동할 탭의 ID입니다. 기본값은 현재 창의 선택된 탭입니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

goForward()

Chrome 72 이상 브라우저.* Chrome 148부터
browser.tabs.goForward(
  tabId?: number,
)
: Promise<void>

다음 페이지가 있는 경우 다음 페이지로 이동합니다.

매개변수

  • tabId

    number 선택사항

    앞으로 이동할 탭의 ID입니다. 기본값은 현재 창의 선택된 탭입니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

group()

Chrome 88 이상 브라우저(Chrome 148 이후).*
browser.tabs.group(
  options: object,
)
: Promise<number>

지정된 그룹에 하나 이상의 탭을 추가하거나, 그룹이 지정되지 않은 경우 새로 만든 그룹에 지정된 탭을 추가합니다.

매개변수

  • 옵션

    객체

    • createProperties

      객체 선택사항

      그룹을 만들기 위한 구성입니다. groupId가 이미 지정된 경우 사용할 수 없습니다.

      • windowId

        number 선택사항

        새 그룹의 기간입니다. 기본값은 현재 기간입니다.

    • groupId

      number 선택사항

      탭을 추가할 그룹의 ID입니다. 지정하지 않으면 새 그룹이 생성됩니다.

    • tabIds

      number | [number, …number[]]

      지정된 그룹에 추가할 탭 ID 또는 탭 ID 목록입니다.

반환 값

  • <number> 약속

highlight()

browser.tabs.highlight(
  highlightInfo: object,
)
: Promise<windows.Window>

지정된 탭을 강조 표시하고 그룹의 첫 번째 탭에 포커스를 맞춥니다. 지정된 탭이 현재 활성 상태인 경우 아무 작업도 수행하지 않는 것처럼 보입니다.

매개변수

  • highlightInfo

    객체

    • tabs

      number | number[]

      강조 표시할 탭 색인 하나 이상입니다.

    • windowId

      number 선택사항

      탭이 포함된 창입니다.

반환 값

  • Chrome 88 이상 브라우저(Chrome 148 이후).*

move()

browser.tabs.move(
  tabIds: number | number[],
  moveProperties: object,
)
: Promise<Tab | Tab[]>

하나 이상의 탭을 창 내의 새 위치 또는 새 창으로 이동합니다. 탭은 일반 (window.type === 'normal') 창으로만 이동할 수 있습니다.

매개변수

  • tabIds

    number | number[]

    이동할 탭 ID 또는 탭 ID 목록입니다.

  • moveProperties

    객체

    • 색인

      숫자

      창을 이동할 위치입니다. -1를 사용하여 탭을 창 끝에 배치합니다.

    • windowId

      number 선택사항

      기본값은 탭이 현재 있는 창입니다.

반환 값

  • Promise<Tab | Tab[]>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

query()

browser.tabs.query(
  queryInfo: object,
)
: Promise<Tab[]>

지정된 속성이 있는 모든 탭을 가져오거나, 속성이 지정되지 않은 경우 모든 탭을 가져옵니다.

매개변수

  • queryInfo

    객체

    • 운영중

      불리언 선택사항

      창에서 탭이 활성 상태인지 여부입니다.

    • 오더블

      불리언 선택사항

      Chrome 45 이상 브라우저.* Chrome 148부터

      탭의 소리가 들리는지 여부입니다.

    • autoDiscardable

      불리언 선택사항

      Chrome 54 이상 브라우저.*(Chrome 148부터)

      리소스가 부족할 때 브라우저에서 탭을 자동으로 삭제할 수 있는지 여부입니다.

    • currentWindow

      불리언 선택사항

      탭이 현재 창에 있는지 여부

    • 삭제됨

      불리언 선택사항

      Chrome 54 이상 브라우저.*(Chrome 148부터)

      탭이 삭제되었는지 여부입니다. 삭제된 탭은 콘텐츠가 메모리에서 언로드되었지만 탭 표시줄에 계속 표시되는 탭입니다. 콘텐츠는 다음에 활성화될 때 새로고침됩니다.

    • 응답 없음

      불리언 선택사항

      Chrome 132 이상 브라우저.*(Chrome 148부터)

      탭이 정지되었는지 여부 정지된 탭은 이벤트 핸들러나 타이머를 비롯한 작업을 실행할 수 없습니다. 탭 표시줄에 표시되며 콘텐츠가 메모리에 로드됩니다. 활성화 시 고정이 해제됩니다.

    • groupId

      number 선택사항

      Chrome 88 이상 브라우저(Chrome 148 이후).*

      탭이 속한 그룹의 ID입니다. 그룹화되지 않은 탭의 경우 tabGroups.TAB_GROUP_ID_NONE입니다.

    • 눈에 띄는 채팅 메시지

      불리언 선택사항

      탭이 강조 표시되는지 여부입니다.

    • 색인

      number 선택사항

      창 내 탭의 위치입니다.

    • lastFocusedWindow

      불리언 선택사항

      탭이 마지막으로 포커스가 맞춰진 창에 있는지 여부입니다.

    • 음소거

      불리언 선택사항

      Chrome 45 이상 브라우저.* Chrome 148부터

      탭이 음소거되었는지 여부입니다.

    • 고정됨

      불리언 선택사항

      탭이 고정되어 있는지 여부

    • splitViewId

      number 선택사항

      Chrome 140 이상 브라우저.* Chrome 148부터

      탭이 있는 분할 보기의 ID입니다. 분할 보기에 없는 탭의 경우 tabs.SPLIT_VIEW_ID_NONE입니다.

    • 상태

      TabStatus 선택사항

      탭 로드 상태입니다.

    • 제목

      문자열 선택사항

      페이지 제목을 패턴과 일치시킵니다. 확장 프로그램에 페이지에 대한 "tabs" 권한 또는 호스트 권한이 없는 경우 이 속성은 무시됩니다.

    • URL

      string | string[] 선택사항

      하나 이상의 URL 패턴과 탭을 일치시킵니다. 프래그먼트 식별자가 일치하지 않습니다. 확장 프로그램에 페이지에 대한 "tabs" 권한 또는 호스트 권한이 없는 경우 이 속성은 무시됩니다.

    • windowId

      number 선택사항

      상위 창의 ID 또는 현재 창의 windows.WINDOW_ID_CURRENT입니다.

    • windowType

      WindowType 선택사항

      탭이 있는 창의 유형입니다.

반환 값

  • Promise<Tab[]>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

reload()

browser.tabs.reload(
  tabId?: number,
  reloadProperties?: object,
)
: Promise<void>

탭을 새로고침합니다.

매개변수

  • tabId

    number 선택사항

    새로고침할 탭의 ID입니다. 기본값은 현재 창의 선택된 탭입니다.

  • reloadProperties

    객체 선택사항

    • bypassCache

      불리언 선택사항

      로컬 캐싱을 우회할지 여부입니다. 기본값은 false입니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

remove()

browser.tabs.remove(
  tabIds: number | number[],
)
: Promise<void>

하나 이상의 탭을 닫습니다.

매개변수

  • tabIds

    number | number[]

    닫을 탭 ID 또는 탭 ID 목록입니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

sendMessage()

browser.tabs.sendMessage(
  tabId: number,
  message: any,
  options?: object,
)
: Promise<any>

지정된 탭의 콘텐츠 스크립트에 단일 메시지를 전송합니다. runtime.onMessage 이벤트는 현재 확장 프로그램의 지정된 탭에서 실행되는 각 콘텐츠 스크립트에서 실행됩니다.

매개변수

  • tabId

    숫자

  • 메시지

    모두

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

  • 옵션

    객체 선택사항

    • documentId

      문자열 선택사항

      Chrome 106 이상 Chrome 148 이후의 browser.*

      탭의 모든 프레임이 아닌 documentId로 식별되는 특정 문서에 메시지를 보냅니다.

    • frameId

      number 선택사항

      탭의 모든 프레임이 아닌 frameId로 식별되는 특정 프레임에 메시지를 전송합니다.

반환 값

  • Promise<any>

    Chrome 99 이상 브라우저.*(Chrome 148부터)

    콘텐츠 스크립트의 응답으로 확인되는 프로미스입니다. 지정된 탭에 연결하는 중에 오류가 발생하면 프로미스가 거부됩니다.

setZoom()

browser.tabs.setZoom(
  tabId?: number,
  zoomFactor: number,
)
: Promise<void>

지정된 탭을 확대/축소합니다.

매개변수

  • tabId

    number 선택사항

    확대/축소할 탭의 ID입니다. 기본값은 현재 창의 활성 탭입니다.

  • zoomFactor

    숫자

    새 확대/축소 비율입니다. 값이 0이면 탭이 현재 기본 확대/축소 비율로 설정됩니다. 0보다 큰 값은 탭의 확대/축소 비율 (기본값이 아닐 수 있음)을 지정합니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    확대/축소 비율이 변경된 후 해결됩니다.

setZoomSettings()

browser.tabs.setZoomSettings(
  tabId?: number,
  zoomSettings: ZoomSettings,
)
: Promise<void>

지정된 탭의 확대/축소 설정을 지정하여 확대/축소 변경사항이 처리되는 방식을 정의합니다. 탭을 탐색하면 이러한 설정이 기본값으로 재설정됩니다.

매개변수

  • tabId

    number 선택사항

    확대/축소 설정을 변경할 탭의 ID입니다. 기본값은 현재 창의 활성 탭입니다.

  • zoomSettings

    확대/축소 변경사항이 처리되는 방식과 범위를 정의합니다.

반환 값

  • 약속<void>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

    확대/축소 설정을 변경하면 문제가 해결됩니다.

ungroup()

Chrome 88 이상 브라우저(Chrome 148 이후).*
browser.tabs.ungroup(
  tabIds: number | [number, ...number[]],
)
: Promise<void>

각 그룹에서 하나 이상의 탭을 삭제합니다. 그룹이 비어 있으면 삭제됩니다.

매개변수

  • tabIds

    number | [number, …number[]]

    각 그룹에서 삭제할 탭 ID 또는 탭 ID 목록입니다.

반환 값

  • 약속<void>

unsplit()

Chrome 155 이상
browser.tabs.unsplit(
  splitViewId: number,
)
: Promise<void>

분할 뷰의 탭을 독립적인 탭으로 분리합니다.

매개변수

  • splitViewId

    숫자

    분리할 분할 뷰의 ID입니다.

반환 값

  • 약속<void>

update()

browser.tabs.update(
  tabId?: number,
  updateProperties: object,
)
: Promise<Tab | undefined>

탭의 속성을 수정합니다. updateProperties에 지정되지 않은 속성은 수정되지 않습니다.

매개변수

  • tabId

    number 선택사항

    기본값은 현재 창의 선택된 탭입니다.

  • updateProperties

    객체

    • 운영중

      불리언 선택사항

      탭이 활성 상태여야 하는지 여부입니다. 창에 포커스가 설정되어 있는지 여부에는 영향을 미치지 않습니다(windows.update 참고).

    • autoDiscardable

      불리언 선택사항

      Chrome 54 이상 브라우저.*(Chrome 148부터)

      리소스가 부족할 때 브라우저에서 탭을 자동으로 삭제할지 여부입니다.

    • 눈에 띄는 채팅 메시지

      불리언 선택사항

      현재 선택 항목에서 탭을 추가하거나 삭제합니다.

    • 음소거

      불리언 선택사항

      Chrome 45 이상 브라우저.* Chrome 148부터

      탭을 음소거해야 하는지 여부입니다.

    • openerTabId

      number 선택사항

      이 탭을 연 탭의 ID입니다. 지정된 경우 오프너 탭은 이 탭과 동일한 창에 있어야 합니다.

    • 고정됨

      불리언 선택사항

      탭을 고정해야 하는지 여부입니다.

    • 선택됨

      불리언 선택사항

      지원 중단됨

      강조 표시를 사용하세요.

      탭을 선택해야 하는지 여부입니다.

    • URL

      문자열 선택사항

      탭을 이동할 URL입니다. JavaScript URL은 지원되지 않습니다. 대신 scripting.executeScript를 사용하세요.

반환 값

  • Promise<Tab | undefined>

    Chrome 88 이상 브라우저(Chrome 148 이후).*

이벤트

onActivated

browser.tabs.onActivated.addListener(
  callback: function,
)

창의 활성 탭이 변경될 때 실행됩니다. 이 이벤트가 실행될 때 탭의 URL이 설정되지 않을 수 있지만 URL이 설정될 때 알림을 받도록 onUpdated 이벤트를 수신할 수 있습니다.

매개변수

  • callback

    함수

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

    (activeInfo: object) => void

    • activeInfo

      객체

      • tabId

        숫자

        활성화된 탭의 ID입니다.

      • windowId

        숫자

        활성 탭이 변경된 창의 ID입니다.

onAttached

browser.tabs.onAttached.addListener(
  callback: function,
)

탭이 창에 연결될 때 실행됩니다(예: 창 간에 이동되었기 때문).

매개변수

  • callback

    함수

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

    (tabId: number, attachInfo: object) => void

    • tabId

      숫자

    • attachInfo

      객체

      • newPosition

        숫자

      • newWindowId

        숫자

onCreated

browser.tabs.onCreated.addListener(
  callback: function,
)

탭이 생성될 때 실행됩니다. 이 이벤트가 실행될 때 탭의 URL 및 탭 그룹 멤버십이 설정되지 않을 수 있지만, URL이 설정되거나 탭이 탭 그룹에 추가될 때 알림을 받도록 onUpdated 이벤트를 수신할 수 있습니다.

매개변수

  • callback

    함수

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

    (tab: Tab) => void

onDetached

browser.tabs.onDetached.addListener(
  callback: function,
)

탭이 창에서 분리될 때(예: 창 간에 이동되었기 때문에) 실행됩니다.

매개변수

  • callback

    함수

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

    (tabId: number, detachInfo: object) => void

    • tabId

      숫자

    • detachInfo

      객체

      • oldPosition

        숫자

      • oldWindowId

        숫자

onHighlighted

browser.tabs.onHighlighted.addListener(
  callback: function,
)

창에서 강조표시되거나 선택된 탭이 변경될 때 실행됩니다.

매개변수

  • callback

    함수

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

    (highlightInfo: object) => void

    • highlightInfo

      객체

      • tabIds

        number[]

        창에서 강조표시된 모든 탭

      • windowId

        숫자

        탭이 변경된 창입니다.

onMoved

browser.tabs.onMoved.addListener(
  callback: function,
)

창 내에서 탭이 이동될 때 실행됩니다. 사용자가 직접 이동한 탭을 나타내는 이동 이벤트가 하나만 실행됩니다. 수동으로 이동된 탭에 대한 응답으로 이동해야 하는 다른 탭에 대해서는 이동 이벤트가 실행되지 않습니다. 이 이벤트는 창 간에 탭이 이동될 때 실행되지 않습니다. 자세한 내용은 tabs.onDetached를 참고하세요.

매개변수

  • callback

    함수

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

    (tabId: number, moveInfo: object) => void

    • tabId

      숫자

    • moveInfo

      객체

      • fromIndex

        숫자

      • toIndex

        숫자

      • windowId

        숫자

onRemoved

browser.tabs.onRemoved.addListener(
  callback: function,
)

탭이 닫힐 때 실행됩니다.

매개변수

  • callback

    함수

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

    (tabId: number, removeInfo: object) => void

    • tabId

      숫자

    • removeInfo

      객체

      • isWindowClosing

        부울

        상위 창이 닫혀 탭이 닫힌 경우 true입니다.

      • windowId

        숫자

        탭이 닫힌 창입니다.

onReplaced

browser.tabs.onReplaced.addListener(
  callback: function,
)

사전 렌더링 또는 인스턴트로 인해 탭이 다른 탭으로 대체될 때 실행됩니다.

매개변수

  • callback

    함수

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

    (addedTabId: number, removedTabId: number) => void

    • addedTabId

      숫자

    • removedTabId

      숫자

onUpdated

browser.tabs.onUpdated.addListener(
  callback: function,
)

탭이 업데이트될 때 실행됩니다.

매개변수

  • callback

    함수

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

    (tabId: number, changeInfo: object, tab: Tab) => void

    • tabId

      숫자

    • changeInfo

      객체

      • 오더블

        불리언 선택사항

        Chrome 45 이상 브라우저.* Chrome 148부터

        탭의 새로운 가청 상태입니다.

      • autoDiscardable

        불리언 선택사항

        Chrome 54 이상 브라우저.*(Chrome 148부터)

        탭의 새로운 자동 삭제 상태입니다.

      • 삭제됨

        불리언 선택사항

        Chrome 54 이상 브라우저.*(Chrome 148부터)

        탭의 새 삭제 상태입니다.

      • favIconUrl

        문자열 선택사항

        탭의 새 파비콘 URL입니다.

      • 응답 없음

        불리언 선택사항

        Chrome 132 이상 브라우저.*(Chrome 148부터)

        탭의 새로운 고정 상태입니다.

      • groupId

        number 선택사항

        Chrome 88 이상 브라우저(Chrome 148 이후).*

        탭의 새 그룹입니다.

      • mutedInfo

        MutedInfo 선택사항

        Chrome 46 이상 Chrome 148 이후 browser.*

        탭의 새로운 음소거 상태 및 변경 이유입니다.

      • 고정됨

        불리언 선택사항

        탭의 새 고정 상태입니다.

      • splitViewId

        number 선택사항

        Chrome 140 이상 브라우저.* Chrome 148부터

        탭의 새 분할 보기입니다.

      • 상태

        TabStatus 선택사항

        탭의 로드 상태입니다.

      • 제목

        문자열 선택사항

        Chrome 48 이상 브라우저.*(Chrome 148부터)

        탭의 새 제목입니다.

      • URL

        문자열 선택사항

        탭의 URL(변경된 경우)

    • 탭

onZoomChange

browser.tabs.onZoomChange.addListener(
  callback: function,
)

탭이 확대되면 실행됩니다.

매개변수

  • callback

    함수

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

    (ZoomChangeInfo: object) => void

    • ZoomChangeInfo

      객체

      • newZoomFactor

        숫자

      • oldZoomFactor

        숫자

      • tabId

        숫자

      • zoomSettings