browser.tabs

Deskripsi

Gunakan chrome.tabs API untuk berinteraksi dengan sistem tab browser. Anda dapat menggunakan API ini untuk membuat, mengubah, dan mengatur ulang tab di browser.

Tabs API tidak hanya menawarkan fitur untuk memanipulasi dan mengelola tab, tetapi juga dapat mendeteksi bahasa tab, mengambil screenshot, dan berkomunikasi dengan skrip konten tab.

Izin

Sebagian besar fitur tidak memerlukan izin apa pun untuk digunakan. Misalnya: membuat tab baru, memuat ulang tab, membuka URL lain, dll.

Ada tiga izin yang harus diperhatikan developer saat menggunakan Tabs API.

Izin "tabs"

Izin ini tidak memberikan akses ke namespace browser.tabs. Sebagai gantinya, izin ini memberikan kemampuan kepada ekstensi untuk memanggil tabs.query() terhadap empat properti sensitif pada instance tabs.Tab: url, pendingUrl, title, dan favIconUrl.

{
  "name": "My extension",
  ...
  "permissions": [
    "tabs"
  ],
  ...
}
Izin host

Izin host memungkinkan ekstensi membaca dan mengkueri empat properti tabs.Tab sensitif tab yang cocok. Mereka juga dapat berinteraksi langsung dengan tab yang cocok menggunakan metode seperti tabs.captureVisibleTab(), scripting.executeScript(), scripting.insertCSS(), dan scripting.removeCSS().

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

activeTab memberikan izin host sementara ekstensi untuk tab saat ini sebagai respons terhadap pemanggilan pengguna. Tidak seperti izin host, activeTab tidak memicu peringatan apa pun.

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

Kasus penggunaan

Bagian berikut menunjukkan beberapa kasus penggunaan umum.

Membuka halaman ekstensi di tab baru

Pola umum untuk ekstensi adalah membuka halaman orientasi di tab baru saat ekstensi diinstal. Contoh berikut menunjukkan cara melakukannya.

background.js:

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

Mendapatkan tab saat ini

Contoh ini menunjukkan cara pekerja layanan ekstensi dapat mengambil tab aktif dari jendela yang saat ini difokuskan (atau jendela yang terakhir difokuskan, jika tidak ada jendela Chrome yang difokuskan). Ini biasanya dapat dianggap sebagai tab pengguna saat ini.

  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);
    });
  }

Membisukan audio tab yang ditentukan

Contoh ini menunjukkan cara ekstensi dapat mengalihkan status dibisukan untuk tab tertentu.

  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" }`);
    });
  }

Memindahkan tab saat ini ke posisi pertama saat diklik

Contoh ini menunjukkan cara memindahkan tab saat operasi tarik mungkin sedang berlangsung atau tidak. Meskipun contoh ini menggunakan browser.tabs.move, Anda dapat menggunakan pola tunggu yang sama untuk panggilan lain yang mengubah tab saat penyeretan sedang berlangsung.

  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.");
      }
    });
  }

Meneruskan pesan ke skrip konten tab yang dipilih

Contoh ini menunjukkan cara pekerja layanan ekstensi dapat berkomunikasi dengan skrip konten di tab browser tertentu menggunakan 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.
}

Contoh ekstensi

Untuk demo ekstensi Tabs API lainnya, pelajari salah satu referensi berikut:

Jenis

MutedInfo

Chrome 46+ browser.* sejak Chrome 148

Status tab yang dibisukan audionya dan alasan perubahan status terakhir.

Properti

  • extensionId

    string opsional

    ID ekstensi yang mengubah status audio nonaktif. Tidak ditetapkan jika ekstensi bukan alasan status audio terakhir diubah.

  • dibisukan

    boolean

    Apakah tab dibisukan (dicegah memutar suara). Tab dapat dibisukan meskipun belum memutar atau tidak sedang memutar suara. Setara dengan apakah indikator audio 'dibisukan' ditampilkan.

  • mampu bernalar

    MutedInfoReason opsional

    Alasan tab dibisukan atau dibunyikan. Tidak ditetapkan jika status bisu tab tidak pernah diubah.

MutedInfoReason

Chrome 46+ browser.* sejak Chrome 148

Peristiwa yang menyebabkan perubahan status dinonaktifkan.

Enum

"user"
Tindakan input pengguna menetapkan status dibisukan.

"capture"
Perekaman tab dimulai, sehingga memaksa perubahan status dibisukan.

"extension"
Ekstensi, yang diidentifikasi oleh kolom extensionId, menetapkan status dibisukan.

Tab

Properti

  • aktif

    boolean

    Apakah tab aktif di jendelanya. Tidak berarti jendela difokuskan.

  • audible

    boolean opsional

    Chrome 45+ browser.* sejak Chrome 148

    Apakah tab telah menghasilkan suara selama beberapa detik terakhir (tetapi mungkin tidak terdengar jika juga dibisukan). Setara dengan apakah indikator 'audio pembicara' ditampilkan.

  • autoDiscardable

    boolean

    Chrome 54+ browser.* sejak Chrome 148

    Apakah tab dapat dihapus otomatis oleh browser saat resource hampir habis.

  • dihapus

    boolean

    Chrome 54+ browser.* sejak Chrome 148

    Apakah tab dihapus. Tab yang dihapus adalah tab yang kontennya telah dihapus dari memori, tetapi masih terlihat di kolom tab. Kontennya akan dimuat ulang saat diaktifkan lagi.

  • favIconUrl

    string opsional

    URL favicon tab. Properti ini hanya ada jika ekstensi memiliki izin "tabs" atau memiliki izin host untuk halaman tersebut. String ini juga dapat berupa string kosong jika tab sedang dimuat.

  • beku

    boolean

    Chrome 132+ browser.* sejak Chrome 148

    Apakah tab dibekukan. Tab yang dibekukan tidak dapat menjalankan tugas, termasuk pengendali peristiwa atau timer. Tab ini terlihat di kolom tab dan kontennya dimuat dalam memori. Statusnya akan dicairkan setelah diaktifkan.

  • groupId

    angka

    Chrome 88+ browser.* sejak Chrome 148

    ID grup tempat tab berada.

  • tinggi

    number opsional

    Tinggi tab dalam piksel.

  • disorot

    boolean

    Apakah tab ditandai.

  • id

    number opsional

    ID tab. ID tab bersifat unik dalam sesi browser. Dalam beberapa situasi, tab mungkin tidak diberi ID; misalnya, saat membuat kueri tab asing menggunakan sessions API, yang dalam hal ini ID sesi mungkin ada. ID tab juga dapat ditetapkan ke chrome.tabs.TAB_ID_NONE untuk jendela aplikasi dan devtools.

  • incognito

    boolean

    Apakah tab berada di jendela samaran.

  • indeks

    angka

    Indeks berbasis nol dari tab dalam jendelanya.

  • lastAccessed

    angka

    Chrome 121+ browser.* sejak Chrome 148

    Waktu terakhir tab menjadi aktif di jendelanya sebagai jumlah milidetik sejak epoch.

  • mutedInfo

    MutedInfo opsional

    Chrome 46+ browser.* sejak Chrome 148

    Status tab yang dibisukan audionya dan alasan perubahan status terakhir.

  • openerTabId

    number opsional

    ID tab yang membuka tab ini, jika ada. Properti ini hanya ada jika tab pembuka masih ada.

  • pendingUrl

    string opsional

    Chrome 79+ browser.* sejak Chrome 148

    URL yang dibuka tab, sebelum di-commit. Properti ini hanya ada jika ekstensi memiliki izin "tabs" atau memiliki izin host untuk halaman dan ada navigasi yang tertunda.

  • dipasang pin

    boolean

    Apakah tab disematkan.

  • dipilih

    boolean

    Tidak digunakan lagi

    Gunakan tabs.Tab.highlighted.

    Apakah tab dipilih.

  • sessionId

    string opsional

    ID sesi yang digunakan untuk mengidentifikasi tab secara unik yang diperoleh dari API sessions.

  • splitViewId

    number opsional

    Chrome 140+ browser.* sejak Chrome 148

    ID Tampilan Terpisah tempat tab berada.

  • status

    TabStatus opsional

    Status pemuatan tab.

  • judul

    string opsional

    Judul tab. Properti ini hanya ada jika ekstensi memiliki izin "tabs" atau memiliki izin host untuk halaman tersebut.

  • url

    string opsional

    URL terakhir yang di-commit dari frame utama tab. Properti ini hanya ada jika ekstensi memiliki izin "tabs" atau memiliki izin host untuk halaman tersebut. Dapat berupa string kosong jika tab belum di-commit. Lihat juga Tab.pendingUrl.

  • lebar

    number opsional

    Lebar tab dalam piksel.

  • windowId

    angka

    ID jendela yang berisi tab.

TabStatus

Chrome 44+ browser.* sejak Chrome 148

Status pemuatan tab.

Enum

"unloaded"

"loading"

"complete"

WindowType

Chrome 44+ browser.* sejak Chrome 148

Jenis jendela.

Enum

"normal"

"popup"

"panel"

"app"

"devtools"

ZoomSettings

Menentukan cara penanganan perubahan zoom di tab dan cakupannya.

Properti

  • defaultZoomFactor

    number opsional

    Chrome 43+ browser.* sejak Chrome 148

    Digunakan untuk menampilkan tingkat zoom default untuk tab saat ini dalam panggilan ke tabs.getZoomSettings.

  • mode

    Menentukan cara penanganan perubahan zoom, yaitu entitas mana yang bertanggung jawab atas penskalaan halaman yang sebenarnya; defaultnya adalah automatic.

  • cakupan

    Menentukan apakah perubahan zoom akan dipertahankan untuk origin halaman, atau hanya diterapkan di tab ini; setelan defaultnya adalah per-origin saat dalam mode automatic, dan per-tab jika tidak.

ZoomSettingsMode

Chrome 44+ browser.* sejak Chrome 148

Menentukan cara penanganan perubahan zoom, yaitu entitas mana yang bertanggung jawab atas penskalaan halaman yang sebenarnya; defaultnya adalah automatic.

Enum

"automatic"
Perubahan zoom ditangani secara otomatis oleh browser.

"manual"
Mengganti penanganan otomatis perubahan zoom. Peristiwa onZoomChange akan tetap dikirim, dan ekstensi bertanggung jawab untuk memproses peristiwa ini dan menskalakan halaman secara manual. Mode ini tidak mendukung zoom per-origin, sehingga mengabaikan setelan zoom scope dan mengasumsikan per-tab.

"disabled"
Menonaktifkan semua zoom di tab. Tab akan kembali ke tingkat zoom default, dan semua upaya perubahan zoom akan diabaikan.

ZoomSettingsScope

Chrome 44+ browser.* sejak Chrome 148

Menentukan apakah perubahan zoom akan dipertahankan untuk origin halaman, atau hanya diterapkan di tab ini; setelan defaultnya adalah per-origin saat dalam mode automatic, dan per-tab jika tidak.

Enum

"per-origin"
Perubahan zoom dipertahankan di origin halaman yang di-zoom, yaitu semua tab lain yang dibuka ke origin yang sama juga di-zoom. Selain itu, perubahan zoom per-origin disimpan dengan origin, yang berarti saat membuka halaman lain di origin yang sama, semua halaman tersebut akan di-zoom ke faktor zoom yang sama. Cakupan per-origin hanya tersedia dalam mode automatic.

"per-tab"
Perubahan zoom hanya berlaku di tab ini, dan perubahan zoom di tab lain tidak memengaruhi zoom tab ini. Selain itu, perubahan zoom per-tab direset saat navigasi; menavigasi tab akan selalu memuat halaman dengan faktor zoom per-origin.

Properti

MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND

Chrome 92+ browser.* sejak Chrome 148

Frekuensi maksimum captureVisibleTab dapat dipanggil per detik. captureVisibleTab memerlukan banyak resource dan tidak boleh terlalu sering dipanggil.

Nilai

2

SPLIT_VIEW_ID_NONE

Chrome 140+ browser.* sejak Chrome 148

ID yang menunjukkan tidak adanya tab terpisah.

Nilai

-1

TAB_ID_NONE

Chrome 46+ browser.* sejak Chrome 148

ID yang mewakili tidak adanya tab browser.

Nilai

-1

TAB_INDEX_NONE

Chrome 123+ browser.* sejak Chrome 148

Indeks yang mewakili tidak adanya indeks tab di tab_strip.

Nilai

-1

Metode

captureVisibleTab()

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

Mengambil area yang terlihat dari tab yang saat ini aktif di jendela yang ditentukan. Untuk memanggil metode ini, ekstensi harus memiliki izin <all_urls> atau izin activeTab. Selain situs yang biasanya dapat diakses oleh ekstensi, metode ini memungkinkan ekstensi mengambil situs sensitif yang dibatasi, termasuk halaman chrome:-scheme, halaman ekstensi lain, dan URL data:. Situs sensitif ini hanya dapat diambil dengan izin activeTab. URL file hanya dapat diambil jika ekstensi telah diberi akses file.

Parameter

Hasil

  • Promise<string>

    Chrome 88+ browser.* sejak Chrome 148

connect()

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

Menghubungkan ke skrip konten di tab yang ditentukan. Peristiwa runtime.onConnect diaktifkan di setiap skrip konten yang berjalan di tab yang ditentukan untuk ekstensi saat ini. Untuk mengetahui detail selengkapnya, lihat Pesan Skrip Konten.

Parameter

  • tabId

    angka

  • connectInfo

    objek opsional

    • documentId

      string opsional

      Chrome 106+ browser.* sejak Chrome 148

      Membuka port ke dokumen tertentu yang diidentifikasi oleh documentId, bukan semua frame di tab.

    • frameId

      number opsional

      Membuka port ke frame tertentu yang diidentifikasi oleh frameId, bukan semua frame di tab.

    • nama

      string opsional

      Diteruskan ke onConnect untuk skrip konten yang memproses peristiwa koneksi.

Hasil

  • Port yang dapat digunakan untuk berkomunikasi dengan skrip konten yang berjalan di tab yang ditentukan. Peristiwa runtime.Port port diaktifkan jika tab ditutup atau tidak ada.

create()

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

Membuat tab baru.

Parameter

  • createProperties

    objek

    • aktif

      boolean opsional

      Apakah tab harus menjadi tab aktif di jendela. Tidak memengaruhi apakah jendela difokuskan (lihat windows.update). Defaultnya adalah true.

    • indeks

      number opsional

      Posisi yang harus diambil tab di jendela. Nilai yang diberikan dibatasi antara nol dan jumlah tab di jendela.

    • openerTabId

      number opsional

      ID tab yang membuka tab ini. Jika ditentukan, tab pembuka harus berada di jendela yang sama dengan tab yang baru dibuat.

    • dipasang pin

      boolean opsional

      Apakah tab harus disematkan. Default-nya adalah false

    • dipilih

      boolean opsional

      Tidak digunakan lagi

      Gunakan active.

      Apakah tab harus menjadi tab yang dipilih di jendela. Default-nya adalah true

    • splitWithTabId

      number opsional

      Chrome 155+

      ID tab yang ada untuk membuat tampilan terpisah. Jika ditentukan, tab split-with harus memenuhi kondisi berikut:

      • Tab tidak boleh berupa tab yang sudah dibagi.
      • Tab tersebut harus berada di jendela yang sama dengan tab yang baru dibuat.
      • Jika windowId ditentukan, ID-nya harus sama dengan ID jendela tab yang dibagi.
      • Jika index ditentukan, indeks tersebut harus berdekatan dengan tab yang dibagi dan akan memengaruhi posisi relatif tab yang baru dibuat.
    • url

      string opsional

      URL yang akan dibuka di tab pada awalnya. URL yang sepenuhnya memenuhi syarat harus menyertakan skema (yaitu, 'http://www.google.com', bukan 'www.google.com'). URL relatif bersifat relatif terhadap halaman saat ini dalam ekstensi. Default-nya adalah Halaman Tab Baru.

    • windowId

      number opsional

      Jendela tempat tab baru akan dibuat. Default-nya adalah jendela saat ini.

Hasil

  • Promise<Tab>

    Chrome 88+ browser.* sejak Chrome 148

createSplit()

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

Memisahkan dua tab yang ada menjadi Tampilan Terpisah.

Parameter

  • tabIds

    [number, number]

    Array yang berisi tepat dua ID tab untuk dipasangkan ke Tampilan Terpisah. Semua tab harus memenuhi kondisi berikut:

    Keduanya harus berdekatan. Aplikasi tidak boleh sudah berada dalam tampilan terpisah. Keduanya harus memiliki status windowId, pinned, dan groupId yang cocok.

Hasil

  • Promise<number>

detectLanguage()

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

Mendeteksi bahasa utama konten di tab.

Parameter

Hasil

  • Promise<string>

    Chrome 88+ browser.* sejak Chrome 148

discard()

Chrome 54+ browser.* sejak Chrome 148
browser.tabs.discard(
  tabId?: number,
)
: Promise<Tab | undefined>

Menghapus tab dari memori. Tab yang dihapus masih terlihat di kolom tab dan dimuat ulang saat diaktifkan.

Parameter

  • tabId

    number opsional

    ID tab yang akan dihapus. Jika ditentukan, tab akan dihapus kecuali jika tab tersebut aktif atau sudah dihapus. Jika dihilangkan, browser akan menghapus tab yang paling tidak penting. Hal ini dapat gagal jika tidak ada tab yang dapat dihapus.

Hasil

  • Promise<Tab | undefined>

    Chrome 88+ browser.* sejak Chrome 148

    Menyelesaikan setelah operasi selesai.

duplicate()

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

Menduplikasi tab.

Parameter

  • tabId

    angka

    ID tab yang akan diduplikasi.

Hasil

  • Promise<Tab | undefined>

    Chrome 88+ browser.* sejak Chrome 148

get()

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

Mengambil detail tentang tab yang ditentukan.

Parameter

  • tabId

    angka

Hasil

  • Promise<Tab>

    Chrome 88+ browser.* sejak Chrome 148

getCurrent()

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

Mendapatkan tab tempat panggilan skrip ini dibuat. Menampilkan undefined jika dipanggil dari konteks non-tab (misalnya, halaman latar belakang atau tampilan pop-up).

Hasil

  • Promise<Tab | undefined>

    Chrome 88+ browser.* sejak Chrome 148

getZoom()

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

Mendapatkan faktor zoom saat ini dari tab yang ditentukan.

Parameter

  • tabId

    number opsional

    ID tab untuk mendapatkan faktor zoom saat ini; defaultnya adalah tab aktif dari jendela saat ini.

Hasil

  • Promise<number>

    Chrome 88+ browser.* sejak Chrome 148

    Menyelesaikan dengan faktor zoom tab saat ini setelah diambil.

getZoomSettings()

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

Mendapatkan setelan zoom saat ini dari tab yang ditentukan.

Parameter

  • tabId

    number opsional

    ID tab untuk mendapatkan setelan zoom saat ini; defaultnya adalah tab aktif dari jendela saat ini.

Hasil

  • Promise<ZoomSettings>

    Chrome 88+ browser.* sejak Chrome 148

    Menyelesaikan dengan setelan zoom tab saat ini.

goBack()

Chrome 72+ browser.* sejak Chrome 148
browser.tabs.goBack(
  tabId?: number,
)
: Promise<void>

Kembali ke halaman sebelumnya, jika tersedia.

Parameter

  • tabId

    number opsional

    ID tab untuk kembali; defaultnya adalah tab yang dipilih di jendela saat ini.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

goForward()

Chrome 72+ browser.* sejak Chrome 148
browser.tabs.goForward(
  tabId?: number,
)
: Promise<void>

Maju ke halaman berikutnya, jika tersedia.

Parameter

  • tabId

    number opsional

    ID tab untuk membuka halaman berikutnya; defaultnya adalah tab yang dipilih di jendela saat ini.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

group()

Chrome 88+ browser.* sejak Chrome 148
browser.tabs.group(
  options: object,
)
: Promise<number>

Menambahkan satu atau beberapa tab ke grup yang ditentukan, atau jika tidak ada grup yang ditentukan, menambahkan tab yang diberikan ke grup yang baru dibuat.

Parameter

  • opsi

    objek

    • createProperties

      objek opsional

      Konfigurasi untuk membuat grup. Tidak dapat digunakan jika groupId sudah ditentukan.

      • windowId

        number opsional

        Jendela grup baru. Default-nya adalah jendela saat ini.

    • groupId

      number opsional

      ID grup tempat tab akan ditambahkan. Jika tidak ditentukan, grup baru akan dibuat.

    • tabIds

      number | [number, ...number[]]

      ID tab atau daftar ID tab yang akan ditambahkan ke grup yang ditentukan.

Hasil

  • Promise<number>

highlight()

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

Menandai tab yang diberikan dan berfokus pada tab pertama dalam grup. Akan tampak tidak melakukan apa pun jika tab yang ditentukan saat ini aktif.

Parameter

  • highlightInfo

    objek

    • tabs

      number | number[]

      Satu atau beberapa indeks tab yang akan ditandai.

    • windowId

      number opsional

      Jendela yang berisi tab.

Hasil

move()

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

Memindahkan satu atau beberapa tab ke posisi baru dalam jendelanya, atau ke jendela baru. Perhatikan bahwa tab hanya dapat dipindahkan ke dan dari jendela normal (window.type === "normal").

Parameter

  • tabIds

    number | number[]

    ID tab atau daftar ID tab yang akan dipindahkan.

  • moveProperties

    objek

    • indeks

      angka

      Posisi tujuan pemindahan jendela. Gunakan -1 untuk menempatkan tab di akhir jendela.

    • windowId

      number opsional

      Default-nya adalah jendela tempat tab saat ini berada.

Hasil

  • Promise<Tab | Tab[]>

    Chrome 88+ browser.* sejak Chrome 148

query()

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

Mendapatkan semua tab yang memiliki properti yang ditentukan, atau semua tab jika tidak ada properti yang ditentukan.

Parameter

  • queryInfo

    objek

    • aktif

      boolean opsional

      Apakah tab aktif di jendelanya.

    • audible

      boolean opsional

      Chrome 45+ browser.* sejak Chrome 148

      Apakah tab dapat didengar.

    • autoDiscardable

      boolean opsional

      Chrome 54+ browser.* sejak Chrome 148

      Apakah tab dapat dihapus secara otomatis oleh browser saat resource hampir habis.

    • currentWindow

      boolean opsional

      Apakah tab berada di jendela saat ini.

    • dihapus

      boolean opsional

      Chrome 54+ browser.* sejak Chrome 148

      Apakah tab dihapus. Tab yang dihapus adalah tab yang kontennya telah dihapus dari memori, tetapi masih terlihat di kolom tab. Kontennya akan dimuat ulang saat diaktifkan lagi.

    • beku

      boolean opsional

      Chrome 132+ browser.* sejak Chrome 148

      Apakah tab dibekukan. Tab yang dibekukan tidak dapat menjalankan tugas, termasuk pengendali peristiwa atau timer. Tab ini terlihat di kolom tab dan kontennya dimuat dalam memori. Statusnya akan dicairkan setelah diaktifkan.

    • groupId

      number opsional

      Chrome 88+ browser.* sejak Chrome 148

      ID grup tempat tab berada, atau tabGroups.TAB_GROUP_ID_NONE untuk tab yang tidak dikelompokkan.

    • disorot

      boolean opsional

      Apakah tab ditandai.

    • indeks

      number opsional

      Posisi tab dalam jendelanya.

    • lastFocusedWindow

      boolean opsional

      Apakah tab berada di jendela yang terakhir difokuskan.

    • dibisukan

      boolean opsional

      Chrome 45+ browser.* sejak Chrome 148

      Apakah tab dibisukan.

    • dipasang pin

      boolean opsional

      Apakah tab disematkan.

    • splitViewId

      number opsional

      Chrome 140+ browser.* sejak Chrome 148

      ID Tampilan Terpisah tempat tab berada, atau tabs.SPLIT_VIEW_ID_NONE untuk tab yang tidak berada dalam Tampilan Terpisah.

    • status

      TabStatus opsional

      Status pemuatan tab.

    • judul

      string opsional

      Mencocokkan judul halaman dengan pola. Properti ini diabaikan jika ekstensi tidak memiliki izin "tabs" atau izin host untuk halaman tersebut.

    • url

      string | string[] opsional

      Mencocokkan tab dengan satu atau beberapa pola URL. ID fragmen tidak dicocokkan. Properti ini diabaikan jika ekstensi tidak memiliki izin "tabs" atau izin host untuk halaman tersebut.

    • windowId

      number opsional

      ID jendela induk, atau windows.WINDOW_ID_CURRENT untuk jendela saat ini.

    • windowType

      WindowType opsional

      Jenis jendela tempat tab berada.

Hasil

  • Promise<Tab[]>

    Chrome 88+ browser.* sejak Chrome 148

reload()

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

Muat ulang tab.

Parameter

  • tabId

    number opsional

    ID tab yang akan dimuat ulang; defaultnya adalah tab yang dipilih dari jendela saat ini.

  • reloadProperties

    objek opsional

    • bypassCache

      boolean opsional

      Apakah akan mengabaikan caching lokal. Default-nya adalah false.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

remove()

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

Menutup satu atau beberapa tab.

Parameter

  • tabIds

    number | number[]

    ID tab atau daftar ID tab yang akan ditutup.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

sendMessage()

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

Mengirim satu pesan ke skrip konten di tab yang ditentukan. Peristiwa runtime.onMessage diaktifkan di setiap skrip konten yang berjalan di tab yang ditentukan untuk ekstensi saat ini.

Parameter

  • tabId

    angka

  • pesan

    apa pun

    Pesan yang akan dikirim. Pesan ini harus berupa objek yang dapat di-JSON-kan.

  • opsi

    objek opsional

    • documentId

      string opsional

      Chrome 106+ browser.* sejak Chrome 148

      Mengirim pesan ke dokumen tertentu yang diidentifikasi oleh documentId, bukan ke semua frame di tab.

    • frameId

      number opsional

      Mengirim pesan ke frame tertentu yang diidentifikasi oleh frameId, bukan ke semua frame di tab.

Hasil

  • Promise<any>

    Chrome 99+ browser.* sejak Chrome 148

    Promise yang diselesaikan dengan respons dari skrip konten. Jika terjadi error saat menghubungkan ke tab yang ditentukan, promise akan ditolak.

setZoom()

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

Memperbesar tab yang ditentukan.

Parameter

  • tabId

    number opsional

    ID tab yang akan di-zoom; defaultnya adalah tab aktif di jendela saat ini.

  • zoomFactor

    angka

    Faktor zoom baru. Nilai 0 akan menetapkan tab ke faktor zoom default saat ini. Nilai yang lebih besar dari 0 menentukan faktor zoom (mungkin non-default) untuk tab.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

    Diselesaikan setelah faktor zoom diubah.

setZoomSettings()

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

Menetapkan setelan zoom untuk tab yang ditentukan, yang menentukan cara penanganan perubahan zoom. Setelan ini direset ke default saat membuka tab.

Parameter

  • tabId

    number opsional

    ID tab yang setelan zoom-nya akan diubah; defaultnya adalah tab aktif di jendela saat ini.

  • zoomSettings

    Menentukan cara penanganan perubahan zoom dan cakupannya.

Hasil

  • Promise<void>

    Chrome 88+ browser.* sejak Chrome 148

    Masalah akan teratasi setelah setelan zoom diubah.

ungroup()

Chrome 88+ browser.* sejak Chrome 148
browser.tabs.ungroup(
  tabIds: number | [number, ...number[]],
)
: Promise<void>

Menghapus satu atau beberapa tab dari grupnya masing-masing. Jika ada grup yang menjadi kosong, grup tersebut akan dihapus.

Parameter

  • tabIds

    number | [number, ...number[]]

    ID tab atau daftar ID tab yang akan dihapus dari grup masing-masing.

Hasil

  • Promise<void>

unsplit()

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

Memisahkan tab dalam Tampilan Terpisah menjadi tab independen.

Parameter

  • splitViewId

    angka

    ID Tampilan Terpisah yang akan dipisahkan.

Hasil

  • Promise<void>

update()

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

Mengubah properti tab. Properti yang tidak ditentukan di updateProperties tidak akan diubah.

Parameter

  • tabId

    number opsional

    Setelan defaultnya adalah tab yang dipilih dari jendela saat ini.

  • updateProperties

    objek

    • aktif

      boolean opsional

      Apakah tab harus aktif. Tidak memengaruhi apakah jendela difokuskan (lihat windows.update).

    • autoDiscardable

      boolean opsional

      Chrome 54+ browser.* sejak Chrome 148

      Apakah tab harus dihapus otomatis oleh browser saat resource hampir habis.

    • disorot

      boolean opsional

      Menambahkan atau menghapus tab dari pilihan saat ini.

    • dibisukan

      boolean opsional

      Chrome 45+ browser.* sejak Chrome 148

      Apakah tab harus dibisukan.

    • openerTabId

      number opsional

      ID tab yang membuka tab ini. Jika ditentukan, tab pembuka harus berada di jendela yang sama dengan tab ini.

    • dipasang pin

      boolean opsional

      Apakah tab harus disematkan.

    • dipilih

      boolean opsional

      Tidak digunakan lagi

      Gunakan highlighted.

      Apakah tab harus dipilih.

    • url

      string opsional

      URL yang akan dibuka di tab. URL JavaScript tidak didukung; gunakan scripting.executeScript sebagai gantinya.

Hasil

  • Promise<Tab | undefined>

    Chrome 88+ browser.* sejak Chrome 148

Acara

onActivated

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

Diaktifkan saat tab aktif di jendela berubah. Perhatikan bahwa URL tab mungkin tidak ditetapkan pada saat peristiwa ini diaktifkan, tetapi Anda dapat memproses peristiwa onUpdated agar diberi tahu saat URL ditetapkan.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (activeInfo: object) => void

    • activeInfo

      objek

      • tabId

        angka

        ID tab yang telah aktif.

      • windowId

        angka

        ID jendela tempat tab aktif berubah.

onAttached

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

Diaktifkan saat tab dipasang ke jendela; misalnya, karena dipindahkan antar-jendela.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • tabId

      angka

    • attachInfo

      objek

      • newPosition

        angka

      • newWindowId

        angka

onCreated

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

Diaktifkan saat tab dibuat. Perhatikan bahwa URL tab dan keanggotaan grup tab mungkin tidak ditetapkan pada saat peristiwa ini diaktifkan, tetapi Anda dapat memproses peristiwa onUpdated agar diberi tahu saat URL ditetapkan atau tab ditambahkan ke grup tab.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (tab: Tab) => void

onDetached

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

Diaktifkan saat tab dilepaskan dari jendela; misalnya, karena dipindahkan antar-jendela.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • tabId

      angka

    • detachInfo

      objek

      • oldPosition

        angka

      • oldWindowId

        angka

onHighlighted

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

Diaktifkan saat tab yang ditandai atau dipilih di jendela berubah.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (highlightInfo: object) => void

    • highlightInfo

      objek

      • tabIds

        number[]

        Semua tab yang ditandai di jendela.

      • windowId

        angka

        Jendela yang tab-nya berubah.

onMoved

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

Diaktifkan saat tab dipindahkan dalam jendela. Hanya satu peristiwa pemindahan yang diaktifkan, yang mewakili tab yang dipindahkan pengguna secara langsung. Peristiwa pemindahan tidak diaktifkan untuk tab lain yang harus dipindahkan sebagai respons terhadap tab yang dipindahkan secara manual. Peristiwa ini tidak diaktifkan saat tab dipindahkan antar-jendela; untuk mengetahui detailnya, lihat tabs.onDetached.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • tabId

      angka

    • moveInfo

      objek

      • fromIndex

        angka

      • toIndex

        angka

      • windowId

        angka

onRemoved

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

Diaktifkan saat tab ditutup.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • tabId

      angka

    • removeInfo

      objek

      • isWindowClosing

        boolean

        True (benar) jika tab ditutup karena jendela induknya ditutup.

      • windowId

        angka

        Jendela yang tab-nya ditutup.

onReplaced

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

Diaktifkan saat tab diganti dengan tab lain karena pra-rendering atau instan.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • addedTabId

      angka

    • removedTabId

      angka

onUpdated

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

Diaktifkan saat tab diperbarui.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

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

    • tabId

      angka

    • changeInfo

      objek

      • audible

        boolean opsional

        Chrome 45+ browser.* sejak Chrome 148

        Status audio baru tab.

      • autoDiscardable

        boolean opsional

        Chrome 54+ browser.* sejak Chrome 148

        Status baru tab yang dapat dihapus otomatis.

      • dihapus

        boolean opsional

        Chrome 54+ browser.* sejak Chrome 148

        Status tab baru yang dihapus.

      • favIconUrl

        string opsional

        URL favicon baru tab.

      • beku

        boolean opsional

        Chrome 132+ browser.* sejak Chrome 148

        Status baru tab yang dibekukan.

      • groupId

        number opsional

        Chrome 88+ browser.* sejak Chrome 148

        Grup baru tab.

      • mutedInfo

        MutedInfo opsional

        Chrome 46+ browser.* sejak Chrome 148

        Status baru tab yang dibisukan audionya dan alasan perubahan tersebut.

      • dipasang pin

        boolean opsional

        Status baru tab yang disematkan.

      • splitViewId

        number opsional

        Chrome 140+ browser.* sejak Chrome 148

        Tampilan Terpisah baru tab.

      • status

        TabStatus opsional

        Status pemuatan tab.

      • judul

        string opsional

        Chrome 48+ browser.* sejak Chrome 148

        Judul baru tab.

      • url

        string opsional

        URL tab jika telah berubah.

    • tab

onZoomChange

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

Dipicu saat tab diperbesar.

Parameter

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (ZoomChangeInfo: object) => void

    • ZoomChangeInfo

      objek

      • newZoomFactor

        angka

      • oldZoomFactor

        angka

      • tabId

        angka

      • zoomSettings