ServiceWorkerContainer.register()

Experimental

Esta é uma tecnologia experimental
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produção.

O m√©todo register()da interface ServiceWorkerContainer cria ou atualiza um ServiceWorkerRegistration passado em scriptURL.

Em caso de sucesso, um registro de service worker vincula o URL do script fornecido ao escopo, que √© usado posteriormente para a navega√ß√£o correspondente. Voc√™ pode chamar esse m√©todo incondicionalmente da p√°gina controlada. Ou seja, voc√™ n√£o precisa primeiro verificar se h√° um registro ativo.

H√° uma frequente confus√£o em rela√ß√£o ao significado e uso do escopo. Uma vez que um service worker n√£o pode ter um escopo mais amplo do que sua pr√≥pria localiza√ß√£o, use apenas a op√ß√£o `scope` quando precisar de um escopo mais limitado do que o padr√£o.

Síntaxe

ServiceWorkerContainer.register(scriptURL, options)
  .then(function(ServiceWorkerRegistration) { ... });

Par√Ęmetros

scriptURL
A URL do script service worker.
options Optional
Um objeto contendo as op√ß√Ķes do registro. Atualmente as op√ß√Ķes dispon√≠veis s√£o:
  • scope: Uma USVString representando uma URL que define o registro do escopo de um service worker's ; ou seja, o alcance das URLs que o service worker pode controlar. √Č geralmente uma URL relativa. O valor padr√£o √© o URL que voc√™ obt√©m se voc√™ resolvesse './' usando a localiza√ß√£o da p√°gina web como  base.  N√£o √©, como customa-se acreditar, relativo √† localiza√ß√£o do service worker. Veja as se√ß√Ķes de Exemplos para mais informa√ß√Ķes sobre como isso funciona.

Valor retornado

Um Promise que resolve com um objeto ServiceWorkerRegistration.

Exemplos

Os exemplos descritos escrito aqui deve ser tomado em conjunto para obter um melhor entendimento de como escopos do service workers s√£o aplicados a uma p√°gina. 

O exemplo a seguir usa o valor padr√£o descope (ao omit√≠-lo). O service worker neste caso ir√° controlarexample.com/index.html bem como p√°ginas abaixo, como example.com/product/description.html.

if ('serviceWorker' in navigator) {
  // Registra um service worker hospeadado na raiz do
  // site usando o escopo padr√£o
  navigator.serviceWorker.register('/sw.js').then(function(registration) {
    console.log('Service worker  registrado com sucesso:', registration);
  }).catch(function(error) {
    console.log('Falha ao Registrar o Service Worker:', error);
  });
} else {
  console.log('Service workers n√£o suportado!');
}

O c√≥digo a seguir,  se inclu√≠do em uma p√°gina na raiz de um site, seria aplicado  exatamente √†s mesmas p√°ginas, como no exemplo acima. Lembre-se de que o escopo, quando inclu√≠do, usa a localiza√ß√£o da p√°gina como base. Alternativamente, se esse c√≥digo foi inclu√≠do em uma p√°gina example.com/product/description.html,  o escopo de'./' significa que o escopo que o service worker seria aplicado somente  aos recursos deexample.com/product.  Se precisassemos de registrar um service worker em example.com/product/description.html aplicado a todoo example.com, deixar√≠amos o escopo acima.

if ('serviceWorker' in navigator) {
  // Registre um service worker hospeado na raiz do
  // site usando um escopo mais restritivo.
  navigator.serviceWorker.register('/sw.js', {scope: './'}).then(function(registration) {
    console.log('Service worker registrado com sucesso:', registration);
  }).catch(function(error) {
    console.log('Service worker falhou ao registrar:', error);
  });
} else {
  console.log('Service workers não é suportado pelo navegador!.');
}

Especifica√ß√Ķes

Especificação Status Comentário
Service Workers
The definition of 'ServiceWorkerContainer' in that specification.
Rascunho atual Initial definition.

Compatibilidade com Navegadores

Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 40 44.0 (44.0)[1] N√£o suportado 27 N√£o suportado
Feature Android Webview Chrome for Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
Basic support 40 40 44.0 (44.0) (Yes) N√£o suportado 27 N√£o suportado

[1] Os Service workers (e Push) foram desativados no Firefox 45 e 52 Extended Support Releases (ESR.)