ServiceWorker: statechange event
The statechange
event fires anytime the ServiceWorker.state
changes.
Syntax
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener('statechange', event => { });
onstatechange = event => { };
Event type
A generic Event
.
Examples
This code snippet is from the service
worker registration-events sample (live
demo). The code listens for any change in the ServiceWorker.state
and returns its value.
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);
});
}
Note that when statechange
fires, the service worker's references may have
changed. For example:
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.
}
})
Specifications
No specification found
No specification data found for api.ServiceWorker.statechange_event
.
Check for problems with this page or contribute a missing spec_url
to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.
Browser compatibility
No compatibility data found for api.ServiceWorker.statechange_event
.
Check for problems with this page or contribute missing data to mdn/browser-compat-data.