--- title: ServiceWorker slug: Web/API/ServiceWorker tags: - API - Draft - Offline - Referensi - ServiceWorker translation_of: Web/API/ServiceWorker ---
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 {{domxref("ServiceWorkerRegistration.active")}} , dan properti {{domxref("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 {{domxref("ServiceWorker.state")}}, berdasarkan siklusnya.
Antarmuka ServiceWorker mewarisi properti dari induknya, {{domxref("Worker")}}.
ServiceWorker didefinisikan sebagai bagian dari {{domxref("ServiceWorkerRegistration")}}. URL harus dari origin yang sama dengan dokumen yang mendaftarkan ServiceWorker.installing, installed, activating, activated, atau redundant.statechange di jalankan; Pada dasarnya dijalankan setiap ada perubahan pada {{domxref("ServiceWorker.state")}}.Antarmuka ServiceWorker mewarisi method dari induknya, {{domxref("Worker")}}, dengan pengecualian {{domxref("Worker.terminate")}} — tidak harus dapat diakses dari service workers.
Ini adalah potongan kode dari service worker registration-events sample (live demo). Kode memperhatikan setiap perubahan di {{domxref("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 | Status | Comment |
|---|---|---|
| {{SpecName('Service Workers', '#service-worker-obj', 'ServiceWorker')}} | {{Spec2('Service Workers')}} | Definisi inisial |
| Fitur | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Dukungan dasar | {{CompatChrome(40.0)}} | {{CompatGeckoDesktop("44.0")}}[1] | {{CompatNo}} | 24 | {{CompatNo}} |
| Fitur | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|---|
| Dukungan dasar | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile("44.0")}} | {{ CompatVersionUnknown }} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatChrome(40.0)}} |
[1] Service workers (dan Push) telah di nonaktifkan di Firefox 45 Extended Support Release (ESR.)