Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Clients
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2018 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist nur in Service Workers verfügbar.
Das Clients-Interface bietet Zugriff auf Client-Objekte. Greifen Sie darauf mit [self](/de/docs/Web/API/ServiceWorkerGlobalScope).clients innerhalb eines Service Workers zu.
Instanzmethoden
Clients.get()-
Gibt ein
Promisefür einenClientzurück, der mit einer gegebenenidübereinstimmt. Clients.matchAll()-
Gibt ein
Promisefür ein Array vonClient-Objekten zurück. Ein Optionsargument ermöglicht es Ihnen, die Typen der zurückgegebenen Clients zu steuern. Clients.openWindow()-
Öffnet ein neues Browserfenster für eine gegebene URL und gibt ein
Promisefür den neuenWindowClientzurück. Clients.claim()-
Ermöglicht einem aktiven Service Worker, sich selbst als
controllerfür alle Clients innerhalb seinesscopezu setzen.
Beispiele
Das folgende Beispiel zeigt ein vorhandenes Chat-Fenster oder erstellt ein neues, wenn der Benutzer auf eine Benachrichtigung klickt.
addEventListener("notificationclick", (event) => {
event.waitUntil(
(async () => {
const allClients = await clients.matchAll({
includeUncontrolled: true,
});
let chatClient;
// Let's see if we already have a chat window open:
for (const client of allClients) {
const url = new URL(client.url);
if (url.pathname === "/chat/") {
// Excellent, let's use it!
client.focus();
chatClient = client;
break;
}
}
// If we didn't find an existing chat window,
// open a new one:
chatClient ??= await clients.openWindow("/chat/");
// Message the client:
chatClient.postMessage("New chat messages!");
})(),
);
});
Spezifikationen
| Spezifikation |
|---|
| Service Workers Nightly> # clients-interface> |
Browser-Kompatibilität
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.