This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Antarmuka ServiceWorker
dari ServiceWorker API menyediakan referensi kepada service worker. Konteks multi browsing (mis. halaman, pekerja, dll.) dapat dikaitkan dengan service worker yang sama, masing - masing melalui objek ServiceWorker
tersendiri.
Objek ServiceWorker
tersedia di properti ServiceWorkerRegistration.active
, dan properti ServiceWorkerContainer.controller
— ini adalah service worker yang aktif dan mengontrol halaman (service worker telah sukses terdaftar, dan halaman yang di kontrol telah di muat kembali.)
Antarmuka ServiceWorker
terbagi sebagai rangkaian siklus event — install
dan activate
— dan fungsional event termasuk fetch
. Objek ServiceWorker
memiliki keterkaitan ServiceWorker.state
, berdasarkan siklusnya.
Properti
Antarmuka ServiceWorker
mewarisi properti dari induknya, Worker
.
ServiceWorker.scriptURL
Read only- Mengembalikan serialisasi script URL
ServiceWorker
didefinisikan sebagai bagian dariServiceWorkerRegistration
. URL harus dari origin yang sama dengan dokumen yang mendaftarkanServiceWorker
. ServiceWorker.state
Read only- Mengembalikan status keadaan service worker. Akan mengembalikan salah satu dari nilai berikut:
installing
,installed,
activating
,activated
, atauredundant
.
Event handlers
ServiceWorker.onstatechange
Read only- Properti
EventListener
dipanggil setiap kali event typestatechange
di jalankan; Pada dasarnya dijalankan setiap ada perubahan padaServiceWorker.state
.
Method
Antarmuka ServiceWorker
mewarisi method dari induknya, Worker
, dengan pengecualian Worker.terminate
— tidak harus dapat diakses dari service workers.
Contoh
Ini adalah potongan kode dari service worker registration-events sample (live demo). Kode memperhatikan setiap perubahan di ServiceWorker.state
dan mengembalikan nilainya.
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js', {
scope: './'
}).then(function (registration) {
var serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
document.querySelector('#kind').textContent = 'Menginstall';
} else if (registration.waiting) {
serviceWorker = registration.waiting;
document.querySelector('#kind').textContent = 'Mengunggu';
} else if (registration.active) {
serviceWorker = registration.active;
document.querySelector('#kind').textContent = 'Aktif';
}
if (serviceWorker) {
// logState(serviceWorker.state);
serviceWorker.addEventListener('statechange', function (e) {
// logState(e.target.state);
});
}
}).catch (function (error) {
// Terjadi kesalahan saat mendaftarkan. File service-worker.js
// mungkin tidak tersedia atau terdapat sintaks yang error.
});
} else {
// Browser ini tidak mendukung service worker.
}
Spesifikasi
Spesifikasi | Status | Comment |
---|---|---|
Service Workers The definition of 'ServiceWorker' in that specification. |
Working Draft | Definisi inisial |
Fitur | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Dukungan dasar | 40.0 | 44.0 (44.0)[1] | No support | 24 | No support |
Fitur | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Dukungan dasar | No support | No support | 44.0 (44.0) | (Yes) | No support | ? | No support | 40.0 |
[1] Service workers (dan Push) telah di nonaktifkan di Firefox 45 Extended Support Release (ESR.)