ServiceWorker.onstatechange

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Обработчик события, вызываемый при срабатывании события statechange; по сути, срабатывает при изменении ServiceWorker.state.

Синтаксис

ServiceWorker.onstatechange = function(statechangeevent) { ... }
ServiceWorker.addEventListener('statechange', function(statechangeevent) { ... } )

Примеры

Данный фрагмент кода из примера событий service worker (демо) возвращает состояние при каждом его изменении.

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);
  });
}

Обратите внимание, что при срабатывании statechange, ссылки на service worker могли измениться. Например:

navigator.serviceWorker.register(..).then(function(swr) {
  swr.installing.state == "installing"
  swr.installing.onstatechange = function() {
    swr.installing == null;
    // At this point, swr.waiting OR swr.active might be true. This is because the statechange
    // event gets queued, meanwhile the underlying worker may have gone into the waiting
    // state and will be immediately activated if possible.
  }
})

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

Спецификация Статус Комментарии
Service Workers
Определение 'ServiceWorker.onstatechange' в этой спецификации.
Рабочий черновик Изначальное определение

Совместимость

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
onstatechange
Экспериментальная
Chrome Полная поддержка 40Edge Полная поддержка 17
Полная поддержка 17
Полная поддержка 16
Отключено
Отключено From version 16: this feature is behind the Enable service workers preference.
Firefox Полная поддержка 44
Замечания
Полная поддержка 44
Замечания
Замечания Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)
IE Нет поддержки НетOpera Полная поддержка 27Safari Полная поддержка 11.1WebView Android Полная поддержка 40Chrome Android Полная поддержка 40Firefox Android Полная поддержка 44Opera Android Полная поддержка 27Safari iOS Полная поддержка 11.3Samsung Internet Android Полная поддержка 4.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.