Izin "activeTab"

Izin "activeTab" memberi ekstensi akses sementara ke tab yang sedang aktif jika pengguna memanggil ekstensi - misalnya dengan mengklik tindakannya. Akses ke tab berlangsung selama pengguna berada di halaman tersebut, dan dicabut saat pengguna keluar atau menutup tab. Misalnya, jika pengguna memanggil ekstensi di https://example.com lalu menavigasi ke https://example.com/foo, ekstensi akan terus memiliki akses ke halaman. Jika pengguna membuka https://chromium.org, akses dicabut.

Tindakan ini berfungsi sebagai alternatif untuk banyak penggunaan "<all_urls>", tetapi menampilkan tidak ada pesan peringatan selama penginstalan:

Tanpa "activeTab":

Tanpa activeTab

Dengan "activeTab":

Dengan activeTab

Contoh

Lihat ekstensi contoh Page Redder:

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

pekerja layanan:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

Motivasi

Pertimbangkan ekstensi kliping web yang memiliki tindakan dan item menu konteks. Ini ekstensi mungkin hanya benar-benar perlu mengakses tab ketika tindakannya diklik, atau ketika dijalankan.

Tanpa "activeTab", ekstensi ini harus meminta akses penuh dan persisten ke setiap situs, hanya agar ia bisa melakukan pekerjaannya jika kebetulan dipanggil oleh pengguna. Ini merupakan banyak kekuasaan untuk memercayakan perluasan sederhana seperti itu. Dan jika ekstensi pernah disusupi, penyerang mendapatkan akses ke semua hal yang dimiliki ekstensi.

Sebaliknya, ekstensi dengan izin "activeTab" hanya mendapatkan akses ke tab sebagai respons hingga ke {i>gesture <i}eksplisit. Jika ekstensi disusupi, penyerang harus menunggu memanggil ekstensi sebelum mendapatkan akses. Dan akses itu hanya berlangsung sampai tab dinavigasi atau ditutup.

Apa itu "activeTab" mengizinkan

Saat izin "activeTab" diaktifkan untuk sebuah tab, ekstensi dapat:

Memanggil activeTab

Gestur pengguna berikut mengaktifkan izin "activeTab":