Verständnis Service-Mitarbeiter Rahmen

Ich versuche zu implementieren ist eine Service Worker in einem test-Seite. Mein end-Ziel ist eine Anwendung, die arbeitet offline. Die Ordner-Struktur ist unter

/myApp
  ...
  /static
    /mod
      /practice
        service-worker.js
        worker-directives.js
        foopage.js
  /templates
    /practice
      foopage.html

Ich bin registrieren eines service-Arbeiter, wie unten gezeigt (in service-worker.js):

navigator.serviceWorker.register('../static/mod/practice/service-worker.js').then(function(reg) {
    console.log('Registration succeeded. Scope is ' + reg.scope);
    ...
}

und in der Konsole sehe ich

Registration succeeded. Scope is https://example.com/static/mod/practice/

Wenn meine Seite befindet sich bei https://example.com/practice/foopage, muss ich sicherstellen, dass mein service worker Umfang ist https://example.com/practice/foopage?

Wenn ich versuche, den Bereich definieren, in der register Funktion rufen Sie wie

navigator.serviceWorker.register('../static/mod/practice/service-worker.js', { scope: '/practice/foopage/' }).then(function(reg) {
    ...
}

Bekomme ich die Fehlermeldung

Registration failed with SecurityError: Failed to register a ServiceWorker: The path of the provided scope ('/practice/foopage/') is not under the max scope allowed ('/static/mod/practice/'). Adjust the scope, move the Service Worker script, or use the Service-Worker-Allowed HTTP header to allow the scope.

Frage ist: Was genau macht Umfang finden? Ist es die Sammlung von URLs, die service worker wird schließlich die Kontrolle? Muss ich verschieben service-workers.js woanders? Wenn ja, wo?

InformationsquelleAutor Brian Leach | 2016-03-03

Schreibe einen Kommentar