ServiceWorkerGlobalScope
Базовая Широко доступная *
Эта функция хорошо отработана и работает на многих устройствах и версиях браузера. Она доступна в браузерах с апреля 2018 года.
* Некоторые части этой функции могут иметь разную степень поддержки.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна только в работе с сервисным рабочим потоком.
Интерфейс ServiceWorkerGlobalScope API сервисного рабочего потока представляет глобальный контекст выполнения сервисного рабочего потока.
Разработчики должны учитывать, что состояние ServiceWorker не сохраняется при завершении/перезапуске цикла, поэтому каждый обработчик событий должен предполагать, что он вызывается с чистым, стандартным глобальным состоянием.
После успешной регистрации сервисный рабочий поток может и будет завершен при бездействии для экономии памяти и ресурсов процессора. Активный сервисный рабочий поток автоматически перезапускается для ответа на события, такие как fetch или message.
Кроме того, синхронные запросы не разрешены внутри сервисного рабочего потока — можно использовать только асинхронные запросы, такие как те, которые инициированы с помощью метода fetch().
Этот интерфейс наследуется от интерфейса WorkerGlobalScope, а его родительский интерфейс — EventTarget.
Свойства экземпляра
Этот интерфейс наследует свойства от интерфейса WorkerGlobalScope и его родительского интерфейса EventTarget.
-
ServiceWorkerGlobalScope.clientsТолько для чтения -
Содержит объект
Clients, связанный с сервисным рабочим потоком. -
Возвращает ссылку на объект
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. -
Вызывается, когда произошли изменения 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;
},
);
}),
);
});
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | Нет | 16Уведомления поддерживаются в macOS Ventura и более поздних версиях. |
Нет | Нет | Нет | Нет | Нет | ||
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 | Нет |
См. также
© 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