Ich habe einen gemeinsamen serviceworker escenario, wo ich einen Benachrichtigungsklick abfangen und den Tab, wo die Benachrichtigung herkommt, fokussieren soll. Die Variable clients ist jedoch immer leer, ihre Länge ist 0
Und die Registrierung ist diese:
chrome: // serviceworker-internals / output zeigt, dass Registrierung und Installation in Ordnung sind. Wenn eine Benachrichtigung gesendet wird, ist ClientList jedoch leer. Ich habe versucht, den Filtertyp "Fenster" zu entfernen, aber das Ergebnis ist immer noch dasselbe. Da Clients leer sind, wird immer ein neues Fenster geöffnet. Was mache ich falsch?
Der Verdacht in Ihrem eigenen Kommentar ist richtig. Eine Seite wird von einem Service-Mitarbeiter bei der Navigation zu einem Ursprung gesteuert, für den der Service-Mitarbeiter registriert ist . Die ursprüngliche Seitenladung, die den Service-Mitarbeiter tatsächlich initialisiert, wird nicht selbst gesteuert. Deshalb findet der Mitarbeiter den Tab nur, wenn Sie ihn mit einem neuen Tab aufrufen oder eine Aktualisierung durchführen.
Allerdings (wie Jeff Posnick in den Kommentaren hervorhebt) können Sie unkontrollierte Seiten wie folgt erhalten: ServiceWorkerClients.matchAll({includeUncontrolled: true, type: 'window'})
.
Tags und Links google-chrome service-worker