Experimental
Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
La méthode openWindow()
de l'interface Clients
crée un nouveau niveau de contexte de navigation et charge une URL donnée. Si le script d'origine n'a pas la permission d'ouvrir une popup, openWindow()
lèvera une InvalidAccessError.
Dans Firefox, une méthode est authorisée d'ouvrir une popup seulement lorsqu'elle est appelée à la suite d'un click sur une notification.
Syntaxe
ServiceWorkerClients.openWindow(url).then(function(WindowClient) {
// Faire quelque chose avec le WindowClient
});
Paramètres
url
- Une
USVString
représentant l'URL que le client veut ouvrir dans une nouvelle fenêtre. Généralement, cette valeur doit être une URL de la même origine que le script d'origine.
Valeur de retour
- Une
Promise
qui résoud un objetWindowClient
si l'URL est de la même origine que le service worker, et null value sinon.
Exemples
// Quand l'utilisateur click sur une notification, focus sur la fenêtre si elle existe,
// ou ouvre en une autre.
onotificationclick = function(event) {
var found = false;
clients.matchAll().then(function(clients) {
for (i = 0; i < clients.length; i++) {
if (clients[i].url === event.data.url) {
// La fenêtre existe, focus dessus.
found = true;
clients[i].focus();
break;
}
}
if (!found) {
// Crée une nouvelle fenêtre
clients.openWindow(event.data.url).then(function(windowClient) {
// Faire quelque chose avec le WindowClient
});
}
});
};
Spécifications
Spécification | Statut | Commentaire |
---|---|---|
Service Workers La définition de 'Clients' dans cette spécification. |
Version de travail | Définition initiale |
Compatibilité des navigateurs
Nous convertissons les données de compatibilité dans un format JSON.
Ce tableau de compatibilité utilise encore l'ancien format
car nous n'avons pas encore converti les données qu'il contient.
Vous pouvez nous aider en contribuant !
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support de base | 42.0 [1] | 45.0 (45.0) | Pas de support | ? | Pas de support |
Fonctionnalité | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Support de base | Pas de support | Pas de support | 45.0 (45.0) | (Oui) | Pas de support | ? | Pas de support | 40.0 [1] |
- [1] Avec Chrome 43 et suivant, vous pouvez ouvrir n'importe quelle URL. In Chrome 42 you could only open URLs on the same origin.