Spec-Zone.ru › Web APIs

ServiceWorker

Базовая версия Широко доступна *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.

* Некоторые части этой функции могут иметь разный уровень поддержки.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Интерфейс ServiceWorker API Service Worker предоставляет ссылку на сервис-воркер. Несколько контекстов просмотра (например, страницы, рабочие процессы и т. д.) могут быть связаны с одним сервис-воркером, каждый через уникальный объект ServiceWorker.

Объект ServiceWorker доступен через ряд свойств:

  • ServiceWorkerRegistration.active
  • ServiceWorkerGlobalScope.serviceWorker
  • ServiceWorkerContainer.controller — когда сервис-воркер находится в состоянии activating или activated
  • ServiceWorkerRegistration.installing — когда сервис-воркер находится в состоянии installing
  • ServiceWorkerRegistration.waiting — когда сервис-воркер находится в состоянии installed

Свойство ServiceWorker.state и событие statechanged могут быть использованы для проверки и наблюдения за изменениями в жизненном цикле связанного с объектом сервис-воркера. Связанные события жизненного цикла, такие как install и activate генерируются самим сервис-воркером.

Сервис-воркеры позволяют статически импортировать модули ECMAScript, если поддерживается, с помощью import. Динамический импорт запрещен спецификацией — вызов import() приведет к ошибке.

Сервис-воркеры могут быть зарегистрированы только в области Window в некоторых или во всех браузерах, так как объект ServiceWorker не доступен для DedicatedWorkerGlobalScope и SharedWorkerGlobalScope. Проверьте совместимость браузеров для получения информации.

EventTarget ServiceWorker

Свойства экземпляра

Интерфейс ServiceWorker наследует свойства от своего родителя, EventTarget.

ServiceWorker.scriptURL Только для чтения

Возвращает сериализованный URL-адрес скрипта ServiceWorker, определенный как часть ServiceWorkerRegistration. URL-адрес должен быть на том же происхождении, что и документ, который регистрирует ServiceWorker.

ServiceWorker.state Только для чтения

Возвращает состояние сервис-воркера. Возвращает одно из следующих значений: parsed, installing, installed, activating, activated, или redundant.

Методы экземпляра

Интерфейс ServiceWorker наследует методы от своего родителя, EventTarget.

ServiceWorker.postMessage()

Отправляет сообщение — состоящее из любого структурированного клонируемого объекта JavaScript — в сервис-воркер. Сообщение передается сервис-воркеру с помощью события message в его глобальной области.

События

statechange

Срабатывает при изменении ServiceWorker.state.

error

Срабатывает при возникновении ошибки внутри объекта ServiceWorker.

Примеры

Этот фрагмент кода взят из примера регистрации сервис-воркера (живая демонстрация). Код прослушивает любые изменения в ServiceWorker.state и возвращает его значение.

if ("serviceWorker" in navigator) {
  navigator.serviceWorker
    .register("service-worker.js", {
      scope: "./",
    })
    .then((registration) => {
      let 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", (e) => {
          // logState(e.target.state);
        });
      }
    })
    .catch((error) => {
      // Something went wrong during registration. The service-worker.js file
      // might be unavailable or contain a syntax error.
    });
} else {
  // The current browser doesn't support service workers.
  // Perhaps it is too old or we are not in a Secure Context.
}

Спецификации

Спецификация
Service Workers
# serviceworker-interface

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
ServiceWorker 40 17 44 27 11.1 40 44 27 11.3 4.0 40
ecmascript_modules 91 91 Нет 77
15["Поддержка вложенных рабочих процессов была добавлена в Safari 15.5.", "Загрузка скриптов во вложенных рабочих процессах была добавлена в Safari 16.4."]
91 Нет 64
15["Поддержка вложенных рабочих процессов была добавлена в Safari на iOS 15.5.", "Загрузка скриптов во вложенных рабочих процессах была добавлена в Safari на iOS 16.4."]
16.0 91
error_event 40 17 44 27 11.1 40 44 27 11.3 4.0 40
postMessage 40 17 44 27 11.1 40 44 27 11.3 4.0 40
scriptURL 40 17 44 27 11.1 40 44 27 11.3 4.0 40
state 40 17 44 27 11.1 40 44 27 11.3 4.0 40
statechange_event 40 17 44 27 11.1 40 44 27 11.3 4.0 40

См. также

  • Руководство по офлайн-приложениям (сервис-воркеры)
  • Использование сервис-воркеров
  • Базовый пример кода сервис-воркера
  • Использование веб-воркеров
END_OF_DOCUMENT_MARKER

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API