Spec-Zone.ru › Web APIs

ServiceWorkerGlobalScope

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

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

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

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

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

Примечание: Эта функция доступна только в работе с сервисным рабочим потоком.

Интерфейс ServiceWorkerGlobalScope API сервисного рабочего потока представляет глобальный контекст выполнения сервисного рабочего потока.

Разработчики должны учитывать, что состояние ServiceWorker не сохраняется при завершении/перезапуске цикла, поэтому каждый обработчик событий должен предполагать, что он вызывается с чистым, стандартным глобальным состоянием.

После успешной регистрации сервисный рабочий поток может и будет завершен при бездействии для экономии памяти и ресурсов процессора. Активный сервисный рабочий поток автоматически перезапускается для ответа на события, такие как fetch или message.

Кроме того, синхронные запросы не разрешены внутри сервисного рабочего потока — можно использовать только асинхронные запросы, такие как те, которые инициированы с помощью метода fetch().

Этот интерфейс наследуется от интерфейса WorkerGlobalScope, а его родительский интерфейс — EventTarget.

EventTarget WorkerGlobalScope ServiceWorkerGlobalScope

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

Этот интерфейс наследует свойства от интерфейса WorkerGlobalScope и его родительского интерфейса EventTarget.

ServiceWorkerGlobalScope.clients Только для чтения

Содержит объект Clients, связанный с сервисным рабочим потоком.

ServiceWorkerGlobalScope.cookieStore Только для чтения Экспериментальный

Возвращает ссылку на объект CookieStore, связанный с сервисным рабочим потоком.

ServiceWorkerGlobalScope.registration Только для чтения

Содержит объект ServiceWorkerRegistration, представляющий регистрацию сервисного рабочего потока.

ServiceWorkerGlobalScope.serviceWorker Только для чтения

Содержит объект ServiceWorker, представляющий сервисный рабочий поток.

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

Этот интерфейс наследует методы от интерфейса WorkerGlobalScope и его родительского интерфейса EventTarget.

ServiceWorkerGlobalScope.skipWaiting()

Позволяет текущей регистрации сервисного рабочего потока перейти из состояния ожидания в активное состояние, пока клиенты сервисного рабочего потока используют его.

События

Прослушайте это событие с помощью addEventListener() или назначив обработчик событий для свойства oneventname этого интерфейса.

activate

Происходит, когда регистрация ServiceWorkerRegistration получает нового активного ServiceWorkerRegistration.active работника.

backgroundfetchabort Экспериментально

Вызывается, когда операция фонового извлечения была отменена пользователем или приложением.

backgroundfetchclick Экспериментально

Вызывается, когда пользователь нажал на интерфейс для операции фонового извлечения.

backgroundfetchfail Экспериментально

Вызывается, когда хотя бы один из запросов в операции фонового извлечения завершился неудачно.

backgroundfetchsuccess Экспериментально

Вызывается, когда все запросы в операции фонового извлечения завершились успешно.

canmakepayment Экспериментально

Вызывается в рабочем процессе приложения для платежей, чтобы проверить, готов ли он обработать платеж. В частности, он вызывается, когда веб-сайт продавца вызывает конструктор PaymentRequest().

contentdelete Экспериментально

Происходит, когда элемент удаляется из ContentIndex.

cookiechange Экспериментально

Вызывается, когда произошли изменения cookie, которые соответствуют списку подписок на изменения cookie рабочего процесса.

fetch

Происходит, когда вызывается fetch().

install

Происходит, когда регистрация ServiceWorkerRegistration получает нового ServiceWorkerRegistration.installing работника.

message

Происходит при получении входящих сообщений. Страницы с доступом могут использовать метод MessagePort.postMessage() для отправки сообщений рабочим процессам.

messageerror

Происходит, когда входящие сообщения не могут быть десериализованы.

notificationclick

Происходит, когда пользователь нажимает на отображаемое уведомление.

notificationclose

Происходит, когда пользователь закрывает отображаемое уведомление.

paymentrequest Экспериментально

Вызывается в рабочем процессе приложения для платежей, когда процесс платежа был инициирован на веб-сайте продавца с помощью метода PaymentRequest.show().

sync

Вызывается, когда вызов SyncManager.register был сделан со страницы клиента рабочего процесса. Попытка синхронизации выполняется немедленно, если доступен интернет, или как только интернет станет доступен.

periodicsync Экспериментально

Происходит через заданные интервалы, которые были указаны при регистрации PeriodicSyncManager.

push

Происходит при получении push-уведомления с сервера.

pushsubscriptionchange

Происходит, когда подписка на push-уведомления была аннулирована или должна быть аннулирована (например, когда служба push устанавливает время истечения срока действия).

Примеры

Этот фрагмент кода взят из примера предварительной выборки рабочего процесса (см. живой пример предварительной выборки.) Обработчик события onfetch прослушивает событие fetch. При срабатывании код возвращает промис, который разрешается первому соответствующему запросу в объекте Cache. Если соответствий нет, код извлекает ответ из сети.

Код также обрабатывает исключения, выброшенные операцией fetch(). Обратите внимание, что ошибка HTTP-ответа (например, 404) не вызовет исключения. Он вернёт обычный объект ответа с установленным соответствующим кодом ошибки.

self.addEventListener("fetch", (event) => {
  console.log("Handling fetch event for", event.request.url);

  event.respondWith(
    caches.match(event.request).then((response) => {
      if (response) {
        console.log("Found response in cache:", response);

        return response;
      }
      console.log("No response found in cache. About to fetch from network…");

      return fetch(event.request).then(
        (response) => {
          console.log("Response from network is:", response);

          return response;
        },
        (error) => {
          console.error("Fetching failed:", error);

          throw error;
        },
      );
    }),
  );
});

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

Спецификация
Рабочие процессы
# serviceworkerglobalscope-interface

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
ServiceWorkerGlobalScope 40 17 44 24 11.1 40 44 24 11.3 4.0 40
abortpayment_event 70 79 Нет 57 Нет 70 Нет 49 Нет 10.0 Нет
activate_event 40 17 44 24 11.1 40 44 24 11.3 4.0 40
backgroundfetchabort_event 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
backgroundfetchclick_event 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
backgroundfetchfail_event 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
backgroundfetchsuccess_event 74 79 Нет 62 Нет 74 Нет 53 Нет 11.0 Нет
canmakepayment_event 70 79 Нет 57 Нет 70 Нет 49 Нет 10.0 Нет
clients 40 17 44 24 11.1 40 44 24 11.3 4.0 40
contentdelete_event Нет Нет Нет Нет Нет 84 Нет 60 Нет 14.0 84
cookieStore 87 87 preview 73 Нет 87 Нет 62 Нет 14.0 87
cookiechange_event 87 87 Нет 73 Нет 87 Нет 62 Нет 14.0 87
fetch_event 40 17 44 24 11.1 40 44 24 11.3 4.0 40
install_event 40 17 44 24 11.1 40 44 24 11.3 4.0 40
message_event 40 17 44 24 11.1 40 44 24 11.3 4.0 40
messageerror_event 81 81 65 68
11.1Хотя свойство onmessageerror поддерживается, событие messageerror никогда не срабатывает. См. ошибку 272967.
81 65 58
11.3Хотя свойство onmessageerror поддерживается, событие messageerror никогда не срабатывает. См. ошибку 272967.
13.0 81
notificationclick_event 40 17 44 24
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
40 44 27 Нет 4.0 40
notificationclose_event 50 17 44 34
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
50 44 34 Нет 5.0 50
paymentrequest_event 70 79 Нет 57 Нет 70 Нет 49 Нет 10.0 Нет
periodicsync_event 80 80 Нет 67 Нет 80 Нет 57 Нет 13.0 Нет
push_event 40 17 44 24
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
40 48 24
16.4Уведомления поддерживаются в веб-приложениях, сохраненных на главном экране.
4.0 40
pushsubscriptionchange_event Нет 17–79
44Событие не имеет свойств oldSubscription и newSubscription. См. ошибку 1497429.
Нет
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
Нет
48Событие не имеет свойств oldSubscription и newSubscription. См. ошибку 1497429.
Нет Нет Нет Нет
registration 42 17 44 26 11.1 42 44 26 11.3 4.0 42
serviceWorker 79 79 Нет 66 15.4 79 Нет 57 15.4 12.0 79
skipWaiting 41 17 44 25 11.1 41 44 25 11.3 4.0 41
sync_event 49 79 Нет 24 Нет 49 Нет 24 Нет 5.0 Нет

См. также

  • Использование Service Workers
  • Пример кода Service workers

© 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/ServiceWorkerGlobalScope

Spec-Zone.ru

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