So registrieren Sie ein service-Mitarbeiter der scope ein Verzeichnis oben, wo die service_worker.js liegt
MEINE Verzeichnisse sind wie folgt.
public_html/
sw/
Den "sw/", dort möchte ich alle service-Mitarbeiter, aber dann haben die service-Mitarbeiter mit einem Umfang, um alle Dateien in "public_html/".
JS
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw/notifications.js', { scope: '../sw/' }).then(function(reg) {
//registration worked
console.log('Registration succeeded. Scope is ' + reg.scope);
}).catch(function(error) {
//registration failed
console.log('Registration failed with ' + error);
});
};
</script>
Wie kann ich diese Art von Rahmen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den max-Rahmen für service-Arbeiter ist, wo es sich befindet. Das heißt, Sie können sich nicht registrieren eine service-Arbeiter liegt bei
/sw/
imscope: '/public_html/'
es sei denn, Sie eine spezielle KopfzeileService-Worker-Allowed
auf die neue max Bereich für Ihre service-Mitarbeiter.Zusammenfassen, wenn Sie hinzufügen können diese header beim servieren der service-Mitarbeiter, legen Sie es wie folgt:
Wenn nicht, müssen Sie die sw an einer Stelle über dem Rahmen.
Edit: Wie Salva ' s Antwort zeigt, das max-Rahmen muss erweitert werden, mit die
Service-Worker-Allowed
- header die folgenden, erfolgreich zu sein.Ändern Sie die
scope
Eigenschaft der Registrierung options-Objekt (der zweite parameter vonnavigator.serviceWorker.register()
) der URL, die Sie möchten, den service-Mitarbeiter zu sein Gültigkeitsbereich. In Ihrem Fall kann dies../public_html
.Diesem parameter wird standardmäßig auf
./
(bezogen auf die ServiceWorker Skript), wenn das options-Objekt ist nicht bereitgestellt, oder hat keinescope
Eigenschaft.Auch die Einstellung einer
scope
mit jedem Herkunft anderen als der aktuellen origin - wird die Registrierung verweigern, Versprechen mitSecurityError
Ausnahme.Referenzen:
https://www.w3.org/TR/service-workers/#navigator-service-worker-register
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register#Parameters