ServiceWorkerGlobalScope

The ServiceWorkerGlobalScope interface of the Service Worker API represents the global execution context of a service worker.

Developers should keep in mind that the ServiceWorker state is not persisted across the termination/restart cycle, so each event handler should assume it's being invoked with a bare, default global state.

Once successfully registered, a service worker can and will be terminated when idle to conserve memory and processor power. An active service worker is automatically restarted to respond to events, such as fetch (en-US) or message (en-US).

Additionally, synchronous requests are not allowed from within a service worker — only asynchronous requests, like those initiated via the fetch() method, can be used.

This interface inherits from the WorkerGlobalScope (en-US) interface, and its parent EventTarget.

EventTarget WorkerGlobalScope (en-US) ServiceWorkerGlobalScope

Instance properties

This interface inherits properties from the WorkerGlobalScope (en-US) interface, and its parent EventTarget.

ServiceWorkerGlobalScope.clients 읽기 전용

Contains the Clients object associated with the service worker.

ServiceWorkerGlobalScope.registration (en-US) 읽기 전용

Contains the ServiceWorkerRegistration object that represents the service worker's registration.

Instance properties inherited from WorkerGlobalScope

ServiceWorkerGlobalScope.caches (en-US) 읽기 전용

Returns the CacheStorage (en-US) object associated with the current context. This object enables functionality such as storing assets for offline use, and generating custom responses to requests.

ServiceWorkerGlobalScope.console (en-US) 읽기 전용 비표준

Returns the console associated with the worker.

ServiceWorkerGlobalScope.fonts (en-US) 읽기 전용

Returns the FontFaceSet (en-US) associated with the worker.

ServiceWorkerGlobalScope.indexedDB (en-US) 읽기 전용

Provides a mechanism for applications to asynchronously access capabilities of indexed databases; returns an IDBFactory (en-US) object.

ServiceWorkerGlobalScope.isSecureContext (en-US) 읽기 전용

Returns a boolean indicating whether the current context is secure (true) or not (false).

ServiceWorkerGlobalScope.location (en-US) 읽기 전용

Returns the WorkerLocation (en-US) associated with the worker. WorkerLocation is a specific location object, mostly a subset of the Location for browsing scopes, but adapted to workers.

ServiceWorkerGlobalScope.navigator (en-US) 읽기 전용

Returns the WorkerNavigator (en-US) associated with the worker. WorkerNavigator is a specific navigator object, mostly a subset of the Navigator for browsing scopes, but adapted to workers.

ServiceWorkerGlobalScope.origin (en-US) 읽기 전용

Returns the global object's origin, serialized as a string.

ServiceWorkerGlobalScope.performance (en-US) 읽기 전용

Returns the Performance (en-US) object associated with the worker, which is a regular performance object, but with a subset of its properties and methods available.

ServiceWorkerGlobalScope.scheduler (en-US) 읽기 전용

Returns the Scheduler (en-US) object associated with the current context. This is the entry point for using the Prioritized Task Scheduling API.

ServiceWorkerGlobalScope.self (en-US)

Returns an object reference to the ServiceWorkerGlobalScope object itself.

Instance methods

This interface inherits methods from the WorkerGlobalScope (en-US) interface, and its parent EventTarget.

ServiceWorkerGlobalScope.skipWaiting()

Allows the current service worker registration to progress from waiting to active state while service worker clients are using it.

Inherited from WorkerGlobalScope

ServiceWorkerGlobalScope.atob()

Decodes a string of data which has been encoded using base-64 encoding.

ServiceWorkerGlobalScope.btoa()

Creates a base-64 encoded ASCII string from a string of binary data.

ServiceWorkerGlobalScope.cancelAnimationFrame()

Cancels a callback scheduled by requestAnimationFrame.

ServiceWorkerGlobalScope.clearInterval() (en-US)

Cancels the repeated execution set using setInterval.

ServiceWorkerGlobalScope.clearTimeout()

Cancels the repeated execution set using setTimeout.

ServiceWorkerGlobalScope.dump() (en-US) 지원이 중단되었습니다 비표준

Writes a message to the console.

ServiceWorkerGlobalScope.importScripts() (en-US)

Imports one or more scripts into the worker's scope. You can specify as many as you'd like, separated by commas. For example: importScripts('foo.js', 'bar.js');

ServiceWorkerGlobalScope.requestAnimationFrame()

Requests the browser to execute a callback function before painting the next frame.

ServiceWorkerGlobalScope.setInterval()

Schedules the execution of a function every X milliseconds.

ServiceWorkerGlobalScope.setTimeout()

Sets a delay for executing a function.

Events

activate (en-US)

Occurs when a ServiceWorkerRegistration acquires a new ServiceWorkerRegistration.active worker.

backgroundfetchabort (en-US) Experimental

Fired when a background fetch operation has been canceled by the user or the app.

backgroundfetchclick (en-US) Experimental

Fired when the user has clicked on the UI for a background fetch operation.

backgroundfetchfail (en-US) Experimental

Fired when at least one of the requests in a background fetch operation has failed.

backgroundfetchsuccess (en-US) Experimental

Fired when all of the requests in a background fetch operation have succeeded.

canmakepayment (en-US) Experimental

Fired on a payment app's service worker to check whether it is ready to handle a payment. Specifically, it is fired when the merchant website calls new PaymentRequest() (en-US).

contentdelete (en-US) Experimental

Occurs when an item is removed from the Content Index (en-US).

fetch (en-US)

Occurs when a fetch() is called.

install (en-US)

Occurs when a ServiceWorkerRegistration acquires a new ServiceWorkerRegistration.installing worker.

message (en-US)

Occurs when incoming messages are received. Controlled pages can use the MessagePort.postMessage() (en-US) method to send messages to service workers. The service worker can optionally send a response back via the MessagePort (en-US) exposed in event.data.port, corresponding to the controlled page.

notificationclick

Occurs when a user clicks on a displayed notification.

notificationclose (en-US)

Occurs when a user closes a displayed notification.

paymentrequest (en-US) Experimental

Fired on a payment app when a payment flow has been initiated on the merchant website via the PaymentRequest.show() (en-US) method.

sync (en-US)

Triggered when a call to SyncManager.register (en-US) is made from a service worker client page. The attempt to sync is made either immediately if the network is available or as soon as the network becomes available.

periodicsync (en-US) Experimental

Occurs at periodic intervals, which were specified when registering a PeriodicSyncManager (en-US).

push (en-US)

Occurs when a server push notification is received.

pushsubscriptionchange (en-US)

Occurs when a push subscription has been invalidated, or is about to be invalidated (e.g. when a push service sets an expiration time).

Examples

This code snippet is from the service worker prefetch sample (see prefetch example live.) The onfetch (en-US) event handler listens for the fetch event. When fired, the code returns a promise that resolves to the first matching request in the Cache object. If no match is found, the code fetches a response from the network.

The code also handles exceptions thrown from the fetch() operation. Note that an HTTP error response (e.g., 404) will not trigger an exception. It will return a normal response object that has the appropriate error code set.

js

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

Specifications

Specification
Service Workers
# serviceworkerglobalscope-interface

Browser compatibility

BCD tables only load in the browser

See also