recursal/MDN huggingface dataset:
WindowClient.focus()
====================

**Expérimental:** **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 **`focus()`** de l'interface `WindowClient` focus le client en cours et retourne une `Promise` qui est résolue vers le `WindowClient` existant.

Syntaxe
-------


```js
Client.focus().then(function (WindowClient) {
  // utilisez le WindowClient une fois qu'il est focus
});
```

### Paramètres

Nil.

### Valeur de retour

Une `Promise` qui est résolue vers le `WindowClient` existant.

Exemple
-------


```js
self.addEventListener("notificationclick", function (event) {
  console.log("On notification click: ", event.notification.tag);
  event.notification.close();

  // Vérifie si le client en cours est ouvert et
  // le focus le cas échéant
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then(function (clientList) {
        for (var i = 0; i < clientList.length; i++) {
          var client = clientList[i];
          if (client.url == "/" && "focus" in client) return client.focus();
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-focus |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
WindowClient.focused
====================

**Expérimental:** **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 propriété **`focused`** , en lecture seule de l'interface `WindowClient` , est un `Boolean` (en-US) qui indique si client actuel a le focus .

Syntaxe
-------


```js
myFocused = WindowClient.focused;
```

### Value

A `Boolean` (en-US).

Example
-------


```js
self.addEventListener('notificationclick', function(event) {
  console.log('On notification click: ', event.notification.tag);
  event.notification.close();

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(clients.matchAll({
    type: "window"
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client) {
        if(!client.focused)
          return client.focus();
        }
      }
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-focused |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
WindowClient.visibilityState
============================

**Expérimental:** **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 propriété **`visibilityState`**, en lecture seule de l'interface `WindowClient` indique la visibilité du client courant. La valeur pourra être : `hidden`, `visible`, `prerender`, or `unloaded`.

Syntaxe
-------


```js
myVisState = WindowClient.visibilityState;
```

### Value

une `DOMString`.

Example
-------


```js
  event.waitUntil(clients.matchAll({
    type: "window"
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client) {
        if(visibilityState === 'hidden')
          return client.focus();
        }
      }
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-visibilitystate |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
WindowClient.navigate()
=======================

**Expérimental:** **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 **`navigate()`** de l'interface `WindowClient` charge une URL spécifiée dans une page de client contrôlée, puis retourne une `Promise` qui devra être analysée par `WindowClient` (le demandeur).

Syntaxe
-------


```js
WindowClient.navigate(url).then(function (WindowClient) {
  // do something with your WindowClient after navigation
});
```

### Paramètres

`url`

L'emplacement pour naviguer vers (url est une string) .

### Retour

Une `Promise` qui sera analysée par le demandeur `WindowClient` (fonctionnement asynchrone : je te promet de faire, mais je suis pas sûr, à toi de vérifier) .

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-navigate |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Delay
=====

Baseline 2022
-------------

Newly availableSince September 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

* Learn more
* See full compatibility
* Report feedback
**Expérimental:** **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 propriété **`delay`** est un dictionnaire pour `AnimationEffectTimingProperties` qui représente le nombre de millisecondes à attendre avant de démarrer une animation.

**Note :** `Element.animate()`, `KeyframeEffectReadOnly()` (en-US) et `KeyframeEffect()` acceptent toutes un objet avec des propriétés de minutage, y compris `delay`. La valeur de `delay` correspond directement à `AnimationEffectTimingReadOnly.delay` dans les objets `AnimationEffectReadOnly.timing` (en-US) renvoyés par `AnimationEffectReadOnly` (en-US), `KeyframeEffectReadOnly` (en-US) et `KeyframeEffect` (en-US).

Syntaxe
-------


```js
var timingProperties = {
  delay: delayInMilliseconds,
};

timingProperties.delay = delayInMilliseconds;
```

### Valeur

Un nombre qui indique la durée qui doit s'écouler entre le début du cycle de l'animation et le début de l'intervalle d'activité (c'est-à-dire le moment où l'animation commence réellement). La valeur par défaut est 0.

Exemples
--------

Dans l'exemple *Pool of Tears*, chaque larme commence à un instant aléatoire grâce à l'objet de minutage :


```js
// Générateur de valeurs plus
// ou moins aléatoires
var getRandomMsRange = function (min, max) {
  return Math.random() \* (max - min) + min;
};

// On parcourt l'ensemble des larmes
tears.forEach(function (el) {
  // On anime chacune des larmes
  el.animate(tearsFalling, {
    delay: getRandomMsRange(-1000, 1000), // aléatoire pour chaque larme
    duration: getRandomMsRange(2000, 6000), // aléatoire pour chaque larme
    iterations: Infinity,
    easing: "cubic-bezier(0.6, 0.04, 0.98, 0.335)",
  });
});
```

Spécifications
--------------

| Specification |
| --- |
| Web Animations # dom-keyframeeffect-keyframeeffect |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'API Web Animations
* `Element.animate()`, `KeyframeEffectReadOnly()` (en-US), et `KeyframeEffect()` qui acceptent toutes un objet de minutage, y compris celui-ci (`delay`)
* La valeur de cette propriété correspond à celle de `AnimationEffectTimingReadOnly` (qui est l'objet de minutage `timing` (en-US) pour `AnimationEffectReadOnly` (en-US), `KeyframeEffectReadOnly` (en-US) et `KeyframeEffect` (en-US)).
* Les propriétés CSS `transition-delay` et `animation-delay`
CustomEvent.detail
==================

Le **`detail`** de la propriété en lecture seule de l'interface `CustomEvent` renvoie toutes les données transmises lors de l'initialisation de l'évènement.

**Note:** Cette fonctionnalité est disponible via les Web Workers

Syntaxe
-------


```js
let myDetail = customEventInstance.detail;
```

### Valeur retournée

Toute donnée initialisée avec l'évènement.

Exemple
-------


```js
// ajoute un écouteur d'évènement approprié
obj.addEventListener("cat", function (e) {
  process(e.detail);
});

// crée et distribue l'évènement
let event = new CustomEvent("cat", {
  detail: {
    hazcheeseburger: true,
  },
});
obj.dispatchEvent(event);

// Retournera un objet contenant la propriété hazcheeseburger
let myDetail = event.detail;
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # ref-for-dom-customevent-detail② |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `CustomEvent`
CustomEvent.initCustomEvent()
=============================

**Obsolète:** Cette fonctionnalité a été supprimée des standards du Web. Bien que quelques navigateurs puissent encore la supporter, elle est en cours d'éradication. Ne l'utilisez ni dans d'anciens projets, ni dans de nouveaux. Les pages et applications Web l'utilisant peuvent cesser de fonctionner à tout moment.

La méthode **`CustomEvent.initCustomEvent()`** initialise un objet `CustomEvent`. Si l'évènement a déjà été distribué, cette méthode ne change rien.

Les évènements initialisés par ce moyen doivent être créés avec la méthode `Document.createEvent()`. Cette méthode doit être appelée pour définir l'évènement avant son envoi en utilisant `EventTarget.dispatchEvent()`. Une fois l'évènement envoyé, la méthode ne fait rien.

**Attention :** N'utilisez plus cette méthode car elle est dépréciée.

À la place, utilisez les constructeurs d'évènements spécifiques comme `CustomEvent()` (en-US). La page Création et déclenchement d'évènements donne plus d'informations sur la façon de les utiliser.

Syntaxe
-------


```js
event.initCustomEvent(type, canBubble, cancelable, detail);
```

### Paramètres

`type`

est une `DOMString` (*chaîne de caractères*) contenant le nom de l'évènement.

*`canBubble`*

est un `Boolean` (*booléen*) indiquant si l'événement passe à travers le DOM ou non.

`cancelable`

est un `Boolean` indiquant si l'événement est annulable.

*`detail`*

Les données transmises lors de l'initialisation de l'évènement.

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-customevent-initcustomevent |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `CustomEvent`
* Le constructeur à utiliser à la place de cette méthode obsolète : `CustomEvent()` (en-US).
Location : reload()
===================

La méthode **`Location.reload()`** recharge la ressource depuis l'URL actuelle.

Le rechargement peut être bloqué avec une exception `DOMException` `SECURITY_ERROR`. Cela se produit si l'origine du script qui invoque `location.reload()` est différente de l'origine de la page qui possède l'objet `Location`. Voir les règles sur l'origine pour plus d'informations.

Syntaxe
-------


```js
location.reload();
```

location.reload() n'a pas de paramètre
--------------------------------------

Firefox prend en charge un paramètre booléen non-standard `forceGet` pour la méthode `location.reload()`, qui permet à Firefox de passer outre le cache et d'effectuer un rafraîchissement forcé du document. Toutefois, pour tous les autres navigateurs, tout argument utilisé en appelant `location.reload()` sera ignoré et n'aura aucun effet.

Il est toutefois possible que vous rencontriez des occurrences de `location.reload(true)` dans du code existant basé sur l'hypothèse que ce rafraîchissement forcé aurait lieu dans tous les navigateurs. Une recherche GitHub "`location.reload(true)`" renvoie plusieurs centaines de milliers de résultats.

Historiquement, une version de Netscape Navigator a introduit la prise en charge de cet argument et cela s'est retrouvé dans Firefox. À un moment, le groupe de travail du W3C sur les API Web a ouvert le sujet pour étudier son ajout à la spécification pour `location.reload()`. Toutefois, il n'a jamais été ajouté formellement.

En résumé, ce paramètre booléen ne fait pas partie de la spécification actuelle `location.reload()` et n'en a en fait jamais fait partie.

Spécifications
--------------

| Specification |
| --- |
| HTML Standard # dom-location-reload-dev |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `Location` à laquelle appartient cette méthode.
* Des méthodes semblables : `Location.assign()` et `Location.replace()`.
Location.assign()
=================

La méthode **`Location.assign()`** charge et affiche dans la fenêtre le document situé à l'URL spécifiée.

Si l'action est impossible à cause d'une violation de sécurité, une `DOMException` de type `SECURITY_ERROR` est lancée. Cela se produit si l'origine du script appelant est différente de l'origine de la page initialement désignée par l'objet `Location`, principalement quand le script est hébergé sur un autre domaine.

Si l'URL spécifiée n'est pas valide, une `DOMException` de type `SYNTAX_ERROR` est lancée.

Syntaxe
-------


```js
object.assign(url);
```

### Paramètres

*url*

Une `DOMString` contenant l'URL de la page vers laquelle naviguer.

Examples
--------


```js
// Navigue vers l'article Location.reload
document.location.assign(
  "https://developer.mozilla.org/fr/docs/Web/API/Location.reload",
);
```

Spécifications
--------------

| Specification |
| --- |
| HTML Standard # dom-location-assign-dev |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `Location` à laquelle appartient cette méthode.
* Méthodes similaires : `Location.replace()` et `Location.reload()`.
Location.replace()
==================

La méthode **`Location.replace()`** remplace la ressource actuelle par celle présente à l'URL donnée. La différence avec la méthode `assign()` est que, après avoir utilisé `replace()`, la page actuelle ne sera pas enregistrée dans l'historique de session `History`, ce qui signifie que l'utilisateur ne sera pas en mesure d'utiliser le bouton *précédent* pour y revenir.

Si le remplacement est impossible à cause d'une violation de sécurité, une `DOMException` de type `SECURITY_ERROR` est lancée. Ceci se produit si l'origine du script appelant est différente de l'origine de la page originellement désignée par l'objet `Location`, principalement quand le script est hébergé sur un autre domaine.

Si l'URL donnée n'est pas valide, une `DOMException` de type `SYNTAX_ERROR` est lancée.

Syntaxe
-------


```js
object.replace(url);
```

### Paramètres

*url*

`DOMString` contenant l'URL de la page vers laquelle naviguer.

Exemples
--------


```js
// Navigue vers l'article Location.reload en remplaçant la page actuelle
document.location.replace(
  "https://developer.mozilla.org/fr/docs/Web/API/Location.reload",
);
```

Spécifications
--------------

| Specification |
| --- |
| HTML Standard # dom-location-replace-dev |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `Location` à laquelle appartient cette méthode.
* Méthodes similaires : `Location.assign()` et `Location.reload()`.
Client.url
==========

**Expérimental:** **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 propriété **`url`** (lecture seule) de l'interface `Client` retourne l'url du service worker client courant.Syntaxe
-------


```js
var clientUrl = Client.url;
```

### Valeur de retour

Valeur de type `USVString`.

Exemple
-------


```js
self.addEventListener("notificationclick", function (event) {
  console.log("Au click de notification : ", event.notification.tag);
  event.notification.close();

  // Vérification pour savoir si l'évenement est ouvert et
  // se focalise dessus si c'est le cas
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then(function (clientList) {
        for (var i = 0; i < clientList.length; i++) {
          var client = clientList[i];
          if (client.url == "/" && "focus" in client) return client.focus();
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-url |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Client.postMessage()
====================

**Expérimental:** **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 **`postMessage()`** de l'interface `Client` permet à un service worker client d'envoyer un message à un `ServiceWorker`.

Syntaxe
-------


```js
Client.postMessage(message[, transfer]);
```

### Valeur de retour

Void.

### Paramètres

`message`

Le message à envoyer au service worker.

`transfer Facultatif`

Un objet transferable, comme par exemple une référence à un port.

Exemples
--------

Ce fragment de code est tiré de l'exemple d'envoi de message du service worker exemple d'envoi de message du service worker (voir exemple en ligne). Le code envoi un message et transfert le port vers le service worker qui pourra répondre via `Client.postMessage()`.

Ce message est contenu dans une promesse qui se résolvera si la réponse ne contient pas d'erreur et qui échouera avec l'erreur.


```js
function sendMessage(message) {
  return new Promise(function (resolve, reject) {
    var messageChannel = new MessageChannel();
    messageChannel.port1.onmessage = function (event) {
      if (event.data.error) {
        reject(event.data.error);
      } else {
        resolve(event.data);
      }
    };
    navigator.serviceWorker.controller.postMessage(message, [
      messageChannel.port2,
    ]);
  });
}
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # dom-client-postmessage-message-options |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Client.id
=========

**Expérimental:** **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 propriété **`id`** (lecture seule) de l'interface `Client` retourne l'identifiant universellement unique de l'objet `Client`.

Syntaxe
-------


```js
var clientId = Client.id;
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-id |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Client.frameType
================

**Expérimental:** **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 propriété **`frameType`** (accessible en lecture seule) de l'interface `Client` indique le type de contexte de navigation du `Client` courant. Cette valeur peut être `auxiliary`, `top-level`, `nested`, ou `none`.

Syntaxe
-------


```js
var myFrameType = Client.frameType;
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # client-frametype |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.