--- title: ServiceWorker slug: Web/API/ServiceWorker translation_of: Web/API/ServiceWorker ---
Интерфейс ServiceWorker
, являющийся частью ServiceWorker API, позволяет взаимодействовать с Service Worker. К одному Service Worker могут быть привязаны несколько контекстов (например страниц, Web Workers, и т.д.), каждый с использованием собственного объекта ServiceWorker
.
Объект ServiceWorker
можно получить через свойства {{domxref("ServiceWorkerRegistration.active")}} и {{domxref("ServiceWorkerContainer.controller")}} — это Service Worker, который активировал и контролирует текущую страницу (в случае, если Service Worker был успешно зарегистрирован и страница была обновлена)
Интерфейс ServiceWorker
обрабатывает события жизненного цикла: install
и activate
и функциональные события, например fetch
. Объект ServiceWorker
также содержит опцию {{domxref("ServiceWorker.state")}}, отражающую его состояние.
Интерфейс ServiceWorker
наследует свойства {{domxref("Worker")}}.
ServiceWorker
.installing
, installed,
activating
, activated
или redundant
.statechange
; По сути, срабатывает при каждом изменении {{domxref("ServiceWorker.state")}}.Интерфейс ServiceWorker
наследует все методы интерфейса {{domxref("Worker")}}, кроме {{domxref("Worker.terminate")}}, который не должен быть доступен для Service Worker.
Этот фрагмент кода из примера событий Service Worker (демо). Данный код возвращает значение {{domxref("ServiceWorker.state")}} при каждом изменении состояния.
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 = 'installing'; } else if (registration.waiting) { serviceWorker = registration.waiting; document.querySelector('#kind').textContent = 'waiting'; } else if (registration.active) { serviceWorker = registration.active; document.querySelector('#kind').textContent = 'active'; } if (serviceWorker) { // logState(serviceWorker.state); serviceWorker.addEventListener('statechange', function (e) { // logState(e.target.state); }); } }).catch (function (error) { // Произошла ошибка при регистрации Service Worker. // Файл service-worker.js может быть недоступным или содержать ошибки синтаксиса. }); } else { // Данный браузер не поддерживает Service Worker. }
Спецификация | Статус | Комментарии |
---|---|---|
{{SpecName('Service Workers', '#serviceworker', 'ServiceWorker')}} | {{Spec2('Service Workers')}} | Изначальное определение. |
{{Compat("api.ServiceWorker")}}