--- title: ServiceWorker slug: Web/API/ServiceWorker tags: - API - Draft - Offline - Referensi - ServiceWorker translation_of: Web/API/ServiceWorker ---
{{SeeCompatTable}}{{APIRef("Service Workers API")}}

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.

Properti

Antarmuka ServiceWorker mewarisi properti dari induknya, {{domxref("Worker")}}.

{{domxref("ServiceWorker.scriptURL")}} {{readonlyinline}}
Mengembalikan serialisasi script URL ServiceWorker didefinisikan sebagai bagian dari {{domxref("ServiceWorkerRegistration")}}. URL harus dari origin yang sama dengan dokumen yang mendaftarkan ServiceWorker.
{{domxref("ServiceWorker.state")}} {{readonlyinline}}
Mengembalikan status keadaan service worker. Akan mengembalikan salah satu dari nilai berikut: installing, installed, activating, activated, atau redundant.

Event handlers

{{domxref("ServiceWorker.onstatechange")}} {{readonlyinline}}
Properti {{domxref("EventListener")}} dipanggil setiap kali event type statechange di jalankan; Pada dasarnya dijalankan setiap ada perubahan pada {{domxref("ServiceWorker.state")}}.

Method

Antarmuka ServiceWorker mewarisi method dari induknya, {{domxref("Worker")}}, dengan pengecualian {{domxref("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 {{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

Spesifikasi Status Comment
{{SpecName('Service Workers', '#service-worker-obj', 'ServiceWorker')}} {{Spec2('Service Workers')}} Definisi inisial
{{CompatibilityTable}}
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.)

See also