| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/Clients/openWindow | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit April 2018 browserbergreifend verfgbar.
Hinweis: Diese Funktion ist nur in Service Workers verfgbar.
Die Methode openWindow() des Interfaces Clients
erstellt einen neuen Browsing-Kontext der obersten Ebene und ldt eine angegebene URL. Wenn das aufrufende
Skript keine Berechtigung zum Anzeigen von Pop-ups hat, lst openWindow() einen
InvalidAccessError aus.
In Firefox darf die Methode Pop-ups nur anzeigen, wenn sie als Ergebnis eines Klickereignisses auf eine Benachrichtigung aufgerufen wird.
In Chrome fr Android kann die Methode stattdessen die URL in einem vorhandenen Browsing-Kontext einer eigenstndigen Web-App ffnen, die zuvor zum Startbildschirm des Benutzers hinzugefgt wurde. Seit Kurzem funktioniert dies auch in Chrome fr Windows.
openWindow(url)
urlEin String, der die URL des Clients darstellt, den Sie im Fenster ffnen mchten. Im Allgemeinen muss dieser Wert eine URL derselben Origin wie das aufrufende Skript sein.
Ein Promise, das zu einem WindowClient-Objekt aufgelst wird, wenn die
URL dieselbe Origin wie der Service Worker hat, oder andernfalls zu einem null-Wert.
InvalidAccessError DOMExceptionDas Promise wird mit dieser Ausnahme abgelehnt, wenn keines der Fenster in der Origin der App ber eine transiente Aktivierung verfgt.
In diesem Beispiel erstellt ein Service Worker eine Benachrichtigung mit einer zugeordneten URL, die innerhalb des Geltungsbereichs des Service Workers liegt, und zeigt sie anschlieend an. Wenn der Benutzer auf die Benachrichtigung klickt:
Beachten Sie, dass die Eigenschaft Client.url nicht aktualisiert wird, sofern nicht tatschlich eine neue Seite geladen wird. Das bedeutet, dass sie nicht aktualisiert wird, wenn der Benutzer innerhalb derselben Seite mithilfe eines URL-Fragments navigiert oder wenn eine Single-Page-App (SPA) ein Navigationsereignis abfngt (beispielsweise mithilfe der Navigation API) und den Seiteninhalt mithilfe von clientseitigem Code aktualisiert. Daher ist diese Technik nicht fr SPAs geeignet.
// Create and show notification
if (self.Notification.permission === "granted") {
const notificationObject = {
body: "Click here to view your messages.",
data: { url: `${self.location.origin}/some/path` },
};
self.registration.showNotification(
"You've got messages!",
notificationObject,
);
}
// Handle notification click
self.addEventListener("notificationclick", (e) => {
// Close the notification popout
e.notification.close();
e.waitUntil(
// Get all the Window clients
clients.matchAll({ type: "window" }).then((clientsArr) => {
const windowToFocus = clientsArr.find(
(windowClient) => windowClient.url === e.notification.data.url,
);
if (windowToFocus) {
// If a Window tab matching the targeted URL already exists, focus that;
windowToFocus.focus();
} else {
// Otherwise, open a new tab to the applicable URL and focus it.
clients
.openWindow(e.notification.data.url)
.then((windowClient) => (windowClient ? windowClient.focus() : null));
}
}),
);
});
| Spezifikation |
|---|
| Service Workers Nightly # clients-openwindow |
ClientsDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |