ServiceWorkerGlobalScope

ServiceWorkerGlobalScopeServiceWorker API のインターフェイスで、サービスワーカーのグローバル実行コンテキストを表します。

開発者は ServiceWorker の状態が停止/再起動サイクルをまたいで続かないことを心にとめておいてください。このため各イベントハンドラーは、むき出しの、デフォルトのグローバル状態で実行されることを想定すべきです。

いったん正しく登録されたら、サービスワーカーはメモリーとプロセッサーの力を温存するため、アイドル時であれば停止させることができます。アクティブなサービスワーカーはイベント、例えば ServiceWorkerGlobalScope.onfetchServiceWorkerGlobalScope.onmessage に応じて自動的に再起動します。

加えて、同期リクエストはサービスワーカーでは許可されていません— 非同期リクエスト、つまりfetch() メソッド経由で初期化されたものが使われます。

このインターフェイスは WorkerGlobalScope インターフェイスと、その親の EventTarget を継承し、このため WindowTimers, WindowBase64, WindowEventHandlers のプロパティを実装しています。

プロパティ

ServiceWorkerGlobalScope.clients 読取専用
サービスワーカーに関連する Clients オブジェクトを含む。
ServiceWorkerGlobalScope.registration 読取専用
サービスワーカーの登録を表す ServiceWorkerRegistration オブジェクトを含む。
ServiceWorkerGlobalScope.caches 読取専用
サービスワーカーに関連する CacheStorage オブジェクトを含む。

イベント

activate
ServiceWorkerRegistration が新しい ServiceWorkerRegistration.active ワーカーを得た時に発生します。
ServiceWorkerGlobalScope.onactivate プロパティからも利用できます。
fetch
fetch() が呼び出されたときに発生します。
ServiceWorkerGlobalScope.onfetch プロパティからも利用できます。
install
ServiceWorkerRegistration が新しい ServiceWorkerRegistration.installing ワーカーを得た時に発生します。
ServiceWorkerGlobalScope.oninstall プロパティからも利用できます。
message
メッセージを受信したときに発生します。制御中のページは MessagePort.postMessage() メソッドを使用してサービスワーカーにメッセージを送信することができます。サービスワーカーは任意で event.data.port で公開されている MessagePort を通じて、対応する制御中のページに返信することができます。
ServiceWorkerGlobalScope.onmessage プロパティからも利用できます。
notificationclick
表示された通知をユーザーがクリックしたときに発生します。
ServiceWorkerGlobalScope.onnotificationclick プロパティからも利用できます。
notificationclose
表示された通知をユーザーが閉じたときに発生します。
ServiceWorkerGlobalScope.onnotificationclose プロパティからも利用できます。
push
サーバーのプッシュ通知が届いたときに発生します。
ServiceWorkerGlobalScope.onpush プロパティからも利用できます。
pushsubscriptionchange
プッシュ通知への加入が無効化されたとき、または無効化されようとするとき (例えば、プッシュ通知の有効期限が設定されたとき) に発生します。
ServiceWorkerGlobalScope.onpushsubscriptionchange プロパティからも利用できます。
sync
サービスワーカーのクライアントページから SyncManager.register への呼び出しが行われたときに発生します。ネットワークが有効であるか、すぐに利用可能になるのであれば、直ちに同期が試みられます。
ServiceWorkerGlobalScope.onsync プロパティからも利用できます。

メソッド

ServiceWorkerGlobalScope.skipWaiting()
現在のサービスワーカーの登録を、待ち状態からクライアントが使っている時のアクティブ状態に進めます。

ServiceWorkerGlobalScopeWorkerGlobalScope を実装します — これは GlobalFetch を実装します。このため利用できる次のプロパティも持っています:

GlobalFetch.fetch()
リソース取得(fetch)のプロセスを開始します。これはリクエストのレスポンスを表す Response オブジェクトを解決するpromiseを返します。このアルゴリズムは service worker コンテキストに渡されるfetch処理のエントリーポイントです。

このコードスニペットは、service worker prefetch sampleprefetch example live を参照してください)からのものです。ServiceWorkerGlobalScope.onfetch イベントハンドラーは fetch イベントを監視します。イベントが発火した時、コードは Cache オブジェクト内で、最初にマッチングしたリクエストに対して解決するプロミスを返します。もし、何もマッチしなかった場合は、コードはネットワークからのレスポンスをフェッチします。

さらに、このコードは fetch() 演算から投げられた例外をハンドリングします。 HTTP のエラーレスポンス (たとえば、404) は、例外を引き起こさないことにご注意ください。適切なエラーコードセットを持った通常のレスポンスオブジェクトを返します。

self.addEventListener('fetch', function(event) {
  console.log('Handling fetch event for', event.request.url);

  event.respondWith(
    caches.match(event.request).then(function(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(function(response) {
        console.log('Response from network is:', response);

        return response;
      }, function(error) {
        console.error('Fetching failed:', error);

        throw error;
      });
    })
  );
});

仕様書

仕様書 状態 備考
Service Workers
ServiceWorkerGlobalScope の定義
草案 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
ServiceWorkerGlobalScopeChrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
activate event
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
caches
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
clients
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
install event
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
message event
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
notificationclick eventChrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 未対応 なしChrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onabortpayment
実験的
Chrome 完全対応 61
無効
完全対応 61
無効
無効 From version 61: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤79
無効
完全対応 ≤79
無効
無効 From version ≤79: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled).
Firefox ? IE 未対応 なしOpera ? Safari 完全対応 11.1WebView Android 未対応 なしChrome Android 完全対応 61
無効
完全対応 61
無効
無効 From version 61: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android ? Opera Android ? Safari iOS 完全対応 11.3Samsung Internet Android 未対応 なし
onactivate
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onbackgroundfetchabort
実験的
Chrome 完全対応 74Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 74Firefox Android 未対応 なしOpera Android 完全対応 53Safari iOS 未対応 なしSamsung Internet Android 完全対応 11.0
onbackgroundfetchclick
実験的
Chrome 完全対応 74Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 74Firefox Android 未対応 なしOpera Android 完全対応 53Safari iOS 未対応 なしSamsung Internet Android 完全対応 11.0
onbackgroundfetchfail
実験的
Chrome 完全対応 74Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 74Firefox Android 未対応 なしOpera Android 完全対応 53Safari iOS 未対応 なしSamsung Internet Android 完全対応 11.0
onbackgroundfetchsuccess
実験的
Chrome 完全対応 74Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 74Firefox Android 未対応 なしOpera Android 完全対応 53Safari iOS 未対応 なしSamsung Internet Android 完全対応 11.0
oncanmakepayment
実験的
Chrome 完全対応 61
無効
完全対応 61
無効
無効 From version 61: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤79
無効
完全対応 ≤79
無効
無効 From version ≤79: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled).
Firefox ? IE 未対応 なしOpera ? Safari ? WebView Android 未対応 なしChrome Android 完全対応 61
無効
完全対応 61
無効
無効 From version 61: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android 未対応 なし
onfetch
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
oninstall
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onmessage
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onmessageerrorChrome ? Edge ? Firefox ? IE 未対応 なしOpera ? Safari ? WebView Android ? Chrome Android ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ?
onnotificationclick
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onnotificationclose
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onpaymentrequest
実験的
Chrome 完全対応 57
無効
完全対応 57
無効
無効 From version 57: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤79
無効
完全対応 ≤79
無効
無効 From version ≤79: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled).
Firefox ? IE 未対応 なしOpera ? Safari ? WebView Android 未対応 なしChrome Android 完全対応 57
無効
完全対応 57
無効
無効 From version 57: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android 未対応 なし
onpush
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onpushsubscriptionchange
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onsync
実験的
Chrome 完全対応 49Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 5.0
push eventChrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
pushsubscriptionchange eventChrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
registration
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
skipWaiting
実験的
Chrome 完全対応 40Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).
IE 未対応 なしOpera 完全対応 24Safari 未対応 なしWebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 24Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報