ServiceWorkerRegistration
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс ServiceWorkerRegistration API сервисных рабочих (Service Worker API) представляет регистрацию сервисного рабочего. Вы регистрируете сервисного рабочего для управления одной или несколькими страницами, которые разделяют один и тот же источник.
Срок существования регистрации сервисного рабочего превышает срок существования объектов ServiceWorkerRegistration, которые представляют их в течение срока жизни соответствующих клиентов сервисного рабочего. Браузер поддерживает постоянный список активных объектов ServiceWorkerRegistration.
Свойства экземпляра
Также наследует свойства от своего родительского интерфейса EventTarget.
-
ServiceWorkerRegistration.activeТолько для чтения -
Возвращает сервисного рабочего, состояние которого
activatingилиactivated. Изначально установлено значениеnull. Активный рабочий будет управлятьClient, если URL клиента попадает в область действия регистрации (опцияscopeустановлена при первом вызовеServiceWorkerContainer.register). -
ServiceWorkerRegistration.backgroundFetchТолько для чтения Экспериментальная -
Возвращает ссылку на объект
BackgroundFetchManager, который управляет операциями фонового извлечения. -
Возвращает ссылку на интерфейс
CookieStoreManager, который позволяет подписаться и отписаться от событий изменения куки. -
ServiceWorkerRegistration.indexТолько для чтения Экспериментальная -
Возвращает ссылку на интерфейс
ContentIndexдля управления индексируемым содержимым для просмотра офлайн. -
ServiceWorkerRegistration.installingТолько для чтения -
Возвращает сервисного рабочего, состояние которого
installing. Изначально установлено значениеnull. -
Возвращает экземпляр
NavigationPreloadManager, связанный с текущей регистрацией сервисного рабочего. -
ServiceWorkerRegistration.paymentManagerТолько для чтения Экспериментальная -
Возвращает экземпляр
PaymentManagerприложения для платежей, используемый для управления различными функциями приложения для платежей. -
ServiceWorkerRegistration.periodicSyncТолько для чтения Экспериментальная -
Возвращает ссылку на интерфейс
PeriodicSyncManager, который позволяет регистрировать задачи для выполнения через определённые интервалы. -
ServiceWorkerRegistration.pushManagerТолько для чтения -
Возвращает ссылку на интерфейс
PushManagerдля управления подписками на push-уведомления, включая подписку, получение активной подписки и доступ к статусу разрешения push-уведомлений. -
ServiceWorkerRegistration.scopeТолько для чтения -
Возвращает строку, представляющую URL, определяющий область действия регистрации сервисного рабочего; то есть диапазон URL, которыми может управлять сервисный рабочий.
-
ServiceWorkerRegistration.syncТолько для чтения -
Возвращает ссылку на интерфейс
SyncManager, который управляет процессами фоновой синхронизации. -
ServiceWorkerRegistration.updateViaCacheТолько для чтения -
Возвращает значение параметра, определяющего условия, при которых браузер обратится к кэшу HTTP, когда он пытается обновить сервисного рабочего или любые скрипты, импортированные через
importScripts(). Может принимать следующие значения:imports,all, илиnone. -
ServiceWorkerRegistration.waitingТолько для чтения -
Возвращает сервисного рабочего, состояние которого
installed. Изначально установлено значениеnull.
Методы экземпляра
Также наследует методы от своего родительского интерфейса EventTarget.
ServiceWorkerRegistration.getNotifications()-
Возвращает список уведомлений в порядке их создания из текущего источника через текущую регистрацию сервисного рабочего.
ServiceWorkerRegistration.showNotification()-
Отображает уведомление с запрошенным заголовком.
ServiceWorkerRegistration.unregister()-
Отменяет регистрацию сервисного рабочего и возвращает
Promise. Сервисный рабочий завершит все текущие операции перед отменением регистрации. ServiceWorkerRegistration.update()-
Проверяет сервер на наличие обновленной версии сервисного рабочего без обращения к кэшам.
События
updatefound-
Срабатывает всякий раз, когда свойство
ServiceWorkerRegistration.installingполучает нового сервисного рабочего.
Примеры
В этом примере код сначала проверяет, поддерживает ли браузер сервисные рабочие, и, если да, регистрирует один. Затем он добавляет слушателя updatefound события, в котором он использует регистрацию сервисного рабочего для отслеживания дальнейших изменений состояния сервисного рабочего. Если состояние сервисного рабочего не изменилось с момента последней регистрации, то событие updatefound не будет вызвано.
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
registration.addEventListener("updatefound", () => {
// If updatefound is fired, it means that there's
// a new service worker being installed.
const installingWorker = registration.installing;
console.log(
"A new service worker is being installed:",
installingWorker,
);
// You can listen for changes to the installing service worker's
// state via installingWorker.onstatechange
});
})
.catch((error) => {
console.error(`Service worker registration failed: ${error}`);
});
} else {
console.error("Service workers are not supported.");
}
Спецификации
| Спецификация |
|---|
| Сервисные рабочие # serviceworkerregistration-interface |
| Push API # extensions-to-the-serviceworkerregistration-interface |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
ServiceWorkerRegistration |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
|---|---|---|---|---|---|---|---|---|---|---|---|
active |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
backgroundFetch |
74 | 79 | Нет | 62 | Нет | 74 | Нет | 53 | Нет | 11.0 | Нет |
cookies |
87 | 87 | Нет | 73 | Нет | 87 | Нет | 62 | Нет | 14.0 | 87 |
getNotifications |
40 | 17 | 44 | 27 | 16Уведомления поддерживаются в macOS Ventura и более поздних версиях. |
40 | 44 | 27 | 16.4Уведомления поддерживаются в веб-приложениях, сохраненных на главном экране. |
4.0 | Нет |
index |
Нет | Нет | Нет | Нет | Нет | 84 | Нет | 60 | Нет | 14.0 | 84 |
installing |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
navigationPreload |
59 | 17 | 99 | 46 | 15.4 | 59 | 99 | 43 | 15.4 | 4.0 | 59 |
paymentManager |
70 | 79 | Нет | 57 | Нет | 70 | Нет | 49 | Нет | 10.0 | Нет |
periodicSync |
80 | 80 | Нет | 67 | Нет | 80 | Нет | 57 | Нет | 13.0 | Нет |
pushManager |
40 | 17 | 44 | 27 | 16Уведомления поддерживаются в macOS Ventura и более поздних версиях. |
40 | 48 | 27 | 16.4Уведомления поддерживаются в веб-приложениях, сохраненных на главном экране. |
4.0 | Нет |
scope |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
showNotification |
42 | 17 | 44 | 29 | 16Уведомления поддерживаются в macOS Ventura и более поздних версиях. |
42 | 44 | 29 | 16.4Уведомления поддерживаются в веб-приложениях, сохраненных на главном экране. |
4.0 | Нет |
sync |
49 | 79 | Нет | 36 | Нет | 49 | Нет | 36 | Нет | 4.0 | Нет |
unregister |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
update |
45["Начиная с Chrome 46, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До Chrome 48 этот метод всегда обходил кэш браузера. Начиная с Chrome 48, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
17 | 44 | 32["Начиная с Opera 33, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До Opera 35 этот метод всегда обходил кэш браузера. Начиная с Opera 35, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
11.1 | 45["Начиная с Chrome Android 46, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До Chrome Android 48 этот метод всегда обходил кэш браузера. Начиная с Chrome Android 48, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
44 | 32["Начиная с Opera Android 33, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До Opera Android 35 этот метод всегда обходил кэш браузера. Начиная с Opera Android 35, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
11.3 | 4.0["Начиная с Samsung Internet 5.0, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До Samsung Internet 5.0 этот метод всегда обходил кэш браузера. Начиная с Samsung Internet 5.0, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
45["Начиная с WebView Android 46, update() возвращает promise, который разрешается с 'undefined', если операция завершилась успешно или не было обновления, и отклоняется, если обновление завершилось неудачно. Если новый worker запустился, но установка завершилась неудачей, promise все равно разрешается.", "До WebView Android 48 этот метод всегда обходил кэш браузера. Начиная с WebView Android 48, он обходит кэш только тогда, когда прошла проверка предыдущего service worker более двадцати четырех часов назад."] |
updateViaCache |
68 | 18 | 57 | 55 | 11.1 | 68 | 57 | 48 | 11.3 | 10.0 | 68 |
updatefound_event |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
waiting |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
|---|
См. также
© 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/ServiceWorkerRegistration