--- title: ServiceWorkerRegistration slug: Web/API/ServiceWorkerRegistration tags: - API - Interface - Offline - Reference - Service Workers - Service worker API - ServiceWorkerRegistration - Workers translation_of: Web/API/ServiceWorkerRegistration ---
Service Worker API の ServiceWorkerRegistration インターフェイスは、サービスワーカー登録を表します。 あなたは同じオリジンを共有する1つ以上のページを制御するサービスワーカーを登録します。
サービスワーカー登録の存続期間は、対応するサービスワーカークライアントの存続期間内でそれらを表す ServiceWorkerRegistration オブジェクトの存続期間を超えています。 ブラウザーは、アクティブな ServiceWorkerRegistration オブジェクトの永続的なリストを維持します。
注: この機能は Web Worker で使用できます。
また、その親インターフェイスである {{domxref("EventTarget")}} からプロパティを実装します。
installing)のサービスワーカーを返します。 これは最初は null に設定されています。installed)のサービスワーカーを返します。 これは最初は null に設定されています。activating)またはアクティブ化済み(activated)のサービスワーカーを返します。 これは最初は null に設定されています。 クライアントの URL が登録のスコープ内にある場合、アクティブワーカーは {{domxref("ServiceWorkerClient")}} を制御します({{domxref("ServiceWorkerContainer.register")}} を最初に呼び出したときに設定した scope オプション)。updatefound のイベントが発生するたびに呼び出される EventListener のプロパティ。 {{domxref("ServiceWorkerRegistration.installing")}} プロパティが新しいサービスワーカーを取得するたびに発生します。また、その親インターフェースである {{domxref("EventTarget")}} からメソッドを実装します。
この例では、コードはまずブラウザーがサービスワーカーをサポートしているかどうかをチェックし、サポートしている場合はそれを登録します。 次に、updatefound リスナーを追加します。 このリスナーでは、サービスワーカー登録を使用して、サービスワーカーの状態のさらなる変更をリッスンします。 サービスワーカーが最後に登録されてから変更されていない場合、updatefound イベントは発生しません。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
registration.addEventListener('updatefound', function() {
// updatefound が発生した場合は、新しいサービスワーカーを
// インストールしていることを意味します。
var installingWorker = registration.installing;
console.log('新しいサービスワーカーをインストールしています:',
installingWorker);
// インストール中のサービスワーカーの状態の変更を、
// installingWorker.onstatechange を介してリッスンできます
});
})
.catch(function(error) {
console.log('サービスワーカーの登録に失敗しました:', error);
});
} else {
console.log('サービスワーカーをサポートしていません。');
}
| 仕様 | 状態 | コメント |
|---|---|---|
| {{SpecName('Service Workers', '#serviceworkerregistration', 'ServiceWorkerRegistration')}} | {{Spec2('Service Workers')}} | 初期定義 |
| {{SpecName('Push API', '#dom-serviceworkerregistration-pushmanager', 'PushManager')}} | {{Spec2('Push API')}} | {{domxref("PushManager","pushManager")}} プロパティを追加。 |
| {{SpecName('Web Notifications')}} | {{Spec2('Web Notifications')}} | {{domxref("ServiceWorkerRegistration.showNotification()","showNotification()")}} メソッドと {{domxref("ServiceWorkerRegistration.getNotifications()","getNotifications()")}} メソッドを追加。 |
| {{SpecName('Background Sync')}} | {{Spec2('Background Sync')}} | {{domxref("ServiceWorkerRegistration.sync","sync")}} プロパティを追加。 |
{{Compat("api.ServiceWorkerRegistration")}}