Peristiwa di pekerja layanan

Pekerja layanan ekstensi mendukung peristiwa pekerja layanan standar dan banyak peristiwa di API ekstensi. Bagian ini menjelaskan apa saja yang tersedia dan memberikan tips untuk menggunakannya.

Mendeklarasikan peristiwa ekstensi

Pengendali peristiwa di pekerja layanan perlu dideklarasikan dalam cakupan global, yang berarti pengendali peristiwa harus berada di tingkat teratas skrip dan tidak disarangkan di dalam fungsi. Hal ini memastikan bahwa keduanya terdaftar secara sinkron pada eksekusi skrip awal, yang memungkinkan Chrome mengirim peristiwa ke pekerja layanan segera setelah dimulai. Contoh:

Tidak disarankan
chrome.storage.local.get(["badgeText"], ({ badgeText }) => {
  chrome.action.setBadgeText({ text: badgeText });
  chrome.action.onClicked.addListener(handleActionClick);
});

Lebih baik
chrome.action.onClicked.addListener(handleActionClick);

chrome.storage.local.get(["badgeText"], ({ badgeText }) => {
  chrome.action.setBadgeText({ text: badgeText });
});

Peristiwa umum

Pekerja layanan ekstensi mendukung peristiwa di API tertentu. Beberapa metode umum akan dijelaskan dalam berikut ini. Perhatikan bahwa beberapa API ini memerlukan izin agar dapat digunakan dan yang lainnya mungkin memiliki peristiwa, metode, atau properti yang tidak tersedia di semua versi Chrome. Untuk detailnya, lihat dokumentasi API tertaut, khususnya peristiwa, metode, atau properti yang ingin Anda gunakan.

chrome.action
Diaktifkan sebagai respons terhadap interaksi pengguna dengan ikon toolbar ekstensi Anda, baik untuk halaman (tab) tertentu atau untuk seluruh ekstensi.
chrome.management
Menyediakan peristiwa yang terkait dengan penginstalan, uninstal, pengaktifan, dan penonaktifan ekstensi.
chrome.notifications
Menyediakan peristiwa yang terkait dengan interaksi pengguna dengan notifikasi sistem yang dihasilkan oleh ekstensi.
chrome.permissions
Menunjukkan kapan izin ekstensi diberikan atau dicabut oleh pengguna.
chrome.runtime
Menyediakan peristiwa yang terkait dengan siklus proses ekstensi, pesan yang dikirim dari bagian ekstensi lainnya, dan notifikasi tentang ekstensi yang tersedia atau update Chrome.
chrome.storage.onChanged
Diaktifkan setiap kali objek StorageArea dihapus atau saat nilai kunci diubah atau disetel. Perhatikan bahwa setiap instance StorageArea memiliki peristiwa onChanged sendiri.
chrome.webNavigation
Memberikan informasi tentang status permintaan navigasi yang sedang berlangsung.

Filter

Untuk membatasi peristiwa ke kasus penggunaan tertentu, atau menghilangkan panggilan peristiwa yang tidak perlu, gunakan API yang mendukung filter peristiwa. Misalnya, pertimbangkan ekstensi yang memproses peristiwa tabs.onUpdated untuk mendeteksi saat pengguna membuka situs tertentu. Peristiwa ini akan dipanggil pada setiap navigasi di setiap tab. Sebagai gantinya, gunakan webNavigation.onCompleted dengan filter. Contoh:

const filter = {
  url: [
    {
      urlMatches: 'https://www.google.com/',
    },
  ],
};

chrome.webNavigation.onCompleted.addListener(() => {
  console.info("The user has loaded my favorite website!");
}, filter);

Peristiwa pekerja layanan web

Pekerja layanan ekstensi mendukung lebih dari sekadar peristiwa siklus proses yang dijelaskan di tempat lain.

ServiceWorkerGlobal.fetch

Diaktifkan jika apa pun diambil dari paket ekstensi atau saat fetch() dan XMLHttpRequest() dipanggil dari ekstensi atau skrip pop-up. (Panggilan dari skrip konten tidak dicegat oleh pengendali fetch pekerja layanan.) Pada kasus yang terakhir, Anda perlu menambahkan URL halaman yang ingin diambil ke kunci "host_permissions" di manifest.json.

ServiceWorkerGlobal.message

Penerusan pesan pekerja layanan tersedia selain penyampaian pesan ekstensi, tetapi kedua sistem ini tidak dapat dioperasikan. Artinya, pesan yang dikirim menggunakan sendMessage() (yang tersedia dari beberapa API ekstensi) tidak dicegat oleh pengendali pesan pekerja layanan. Demikian pula, pesan yang dikirim menggunakan postMessage() tidak akan dicegat oleh pengendali pesan ekstensi. Kedua jenis pengendali pesan—artinya ServiceWorkerGlobal.message dan chrome.runtime.onMessage—didukung dalam pekerja layanan ekstensi.

Sebaiknya pilih pesan ekstensi kecuali jika Anda memiliki alasan tertentu untuk menggunakan pesan pekerja layanan.