Izin activeTab

Izin activeTab memberi ekstensi akses sementara ke tab yang sedang aktif jika pengguna memanggil ekstensi - misalnya dengan mengklik tindakan browser. Akses ke tab berlangsung selama pengguna berada di halaman tersebut, dan dicabut saat pengguna keluar atau menutup tab.

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

Catatan: Mulai M72 dan seterusnya, izin activeTab akan diberikan hingga pengguna membuka asal yang berbeda. Artinya, 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.

Tanpa activeTab:

Tanpa activeTab

Dengan activeTab:

Dengan activeTab

Contoh

Lihat ekstensi contoh Page Redder:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

Motivasi

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

Tanpa activeTab, ekstensi ini harus meminta akses penuh dan persisten ke setiap situs web, 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.

Yang diizinkan activeTab

Saat izin activeTab diaktifkan untuk sebuah tab, ekstensi dapat:

  • Panggil tabs.executeScript atau tabs.insertCSS di tab tersebut.
  • Mendapatkan URL, judul, dan favicon untuk tab tersebut melalui API yang menampilkan objek tabs.Tab (pada dasarnya, activeTab memberikan izin tabs untuk sementara).
  • Mencegah permintaan jaringan di tab ke asal frame utama tab menggunakan webRequest Compute Engine API. Ekstensi untuk sementara mendapatkan izin host untuk asal frame utama tab.

Memanggil activeTab

Gestur pengguna berikut mengaktifkan activeTab: