--- 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.)