recursal/MDN huggingface dataset:
IDBKeyRange.upperBound()
========================

La méthode **`upperBound()`**, rattachée à l'interface `IDBKeyRange`, crée un intervalle de clé avec une borne supérieure.

Par défaut, la borne est inclue dans l'intervalle (autrement dit, il est fermé à droite).

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

Syntaxe
-------


```js
IDBKeyRange.upperBound(borne);
IDBKeyRange.upperBound(borne, ouvert);
```

### Paramètres

`borne`

La valeur de la borne supérieure pour l'intervalle.

`ouvert Facultatif`

Ce booléen indique si l'intervalle est ouvert à droite (autrement dit, s'il vaut `false` la borne est inclue et s'il vaut `true` la borne n'est pas inclue dans l'intervalle).

### Valeur de retour

Un objet `IDBKeyRange` qui correspond à l'intervalle de clé créé.

### Exceptions

Cette méthode peut lever une exception `DOMException` de type `DataError` lorsque la valeur passée en paramètre n'est pas une clé valide.

Exemples
--------

Dans l'exemple qui suit, on illustre comment créer un intervalle de clé avec une borne supérieure, on utilise `keyRangeValue = IDBKeyRange.upperBound("F");` — cela permet de créer un intervalle qui contient "F" et les valeurs inférieures. On ouvre ensuite une transaction grâce à `IDBTransaction`) puis un magasin d'objet et un curseur avec la méthode `IDBObjectStore.openCursor` à laquelle on associe l'intervalle de clé `keyRangeValue`.

Si on a avait utilisé `IDBKeyRange.upperBound("F", true);`, "F" n'aurait pas fait partie de l'intervalle.


```js
function displayData() {
  var keyRangeValue = IDBKeyRange.upperBound("F");

  var transaction = db.transaction(["fThings"], "readonly");
  var objectStore = transaction.objectStore("fThings");

  objectStore.openCursor(keyRangeValue).onsuccess = function (event) {
    var cursor = event.target.result;
    if (cursor) {
      var listItem = document.createElement("li");
      listItem.innerHTML =
        "<strong>" + cursor.value.fThing + "</strong>, " + cursor.value.fRating;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("Les éléments sont affichés.");
    }
  };
}
```


**Note :** Pour un exemple complet qui utilise les intervalles de clé, vous pouvez consulter le dépôt GitHub IDBKeyRange-example (ainsi que la démonstration associée).

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbkeyrange-upperbound① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBKeyRange.upperOpen
=====================

La propriété **`upperOpen`** de l'interface `IDBKeyRange` renvoie un booléen indiquant si la valeur de la limite supérieure est incluse dans l'`intervalle de clé`.

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

Syntaxe
-------


```js
myKeyRange.upperOpen;
```

Value
-----

true

La valeur de la limite supérieure n'est pas incluse dans l'intervalle.

false

La valeur de la limite supérieure est incluse dans l'intervalle.

Exemple
-------

Dans l'exemple suivant, on récupère l'`intervalle de clé` entre "F" et "W". Puis on ouvre une `transaction` sur la connexion pour avoir l'`accès` au magasin d'objets 'fThings'. On met en place un `curseur` sur l'intervalle pour afficher dans une liste les valeurs des propriétés fThing et fRating des objets trouvés.

La propriété **`upperOpen`** sert ici à afficher sur la console le booléen indiquant si la valeur de la limite supérieure est comprise dans l'intervalle.


```js
function displayData() {
  var keyRangeValue = IDBKeyRange.bound("F", "W", true, true);
  console.log(keyRangeValue.upperOpen);

  var transaction = db.transaction(["fThings"], "readonly");
  var objectStore = transaction.objectStore("fThings");

  objectStore.openCursor(keyRangeValue).onsuccess = function (event) {
    var cursor = event.target.result;
    if (cursor) {
      var listItem = document.createElement("li");
      listItem.innerHTML =
        "<strong>" + cursor.value.fThing + "</strong>, " + cursor.value.fRating;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbkeyrange-upperopen① |

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

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

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

* `Utiliser IndexedDB`
* `Débuter une connexion`
* `Utilisé les transactions`
* `Définir l'intervalle des clés`
* `Accès aux magasins d'objets`
* `Utiliser les curseur`
* Exemple de référence: To-do Notifications (view example live.)
IDBKeyRange.includes()
======================

La méthode **`includes()`**, rattachée à l'interface `IDBKeyRange`, renvoie un booléen si la clé est contenue dans un intervalle de clé.

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

Syntaxe
-------


```js
myIncludesResult = myKeyRange.includes("A");
```

### Paramètres

`key`

La clé dont on souhaite savoir si elle est dans l'intervalle.

### Valeur de retour

Un booléen.

### Exceptions

Cette méthode peut lever une exception `DOMException` de type `DataError` lorsque la clé fournie n'est pas une clé valide.

Exemples
--------


```js
var keyRangeValue = IDBKeyRange.bound("A", "K", false, false);

var monResultat = keyRangeValue.includes("F");
// Renvoie true

var monResultat = keyRangeValue.includes("W");
// Renvoie false
```

Prothèse d'émulation (*polyfill*)
---------------------------------

La méhode `includes()` a été ajoutée à partir de la deuxième édition de la spécification d'Indexed DB. Pour les navigateurs qui ne prennent pas en charge cette fonctionnalité, on peut utiliser la prothèse suivante.


```js
IDBKeyRange.prototype.includes =
  IDBKeyRange.prototype.includes ||
  function (key) {
    var r = this,
      c;
    if (r.lower !== undefined) {
      c = indexedDB.cmp(key, r.lower);
      if (r.lowerOpen && c <= 0) return false;
      if (!r.lowerOpen && c < 0) return false;
    }
    if (r.upper !== undefined) {
      c = indexedDB.cmp(key, r.upper);
      if (r.upperOpen && c >= 0) return false;
      if (!r.upperOpen && c > 0) return false;
    }
    return true;
  };
```

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbkeyrange-includes① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
IDBKeyRange.lowerOpen
=====================

La propriété **`lowerOpen`**, rattachée à l'interface `IDBKeyRange`, renvoie un booléen qui inidque si l'intervalle est ouvert pour la borne inférieure (autrement dit, le booléen est vrai lorsque la borne n'est pas incluse et est faux sinon).

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

Syntaxe
-------


```js
myKeyRange.lowerOpen;
```

### Valeur

Un booléen qui indique si l'intervalle est ouvert pour la borne inférieure (`true` si c'est le cas (la borne n'est pas incluse), `false` sinon).

Exemples
--------

Dans l'exemple qui suit, on voit comment utiliser un intervalle de clé. On déclare `keyRangeValue = IDBKeyRange.upperBound("F", "W", true, true);` — c'est-à-dire un intervalle qui inclue tout ce qui se trouve entre "F" et "W" mais qui n'inclue pas ces bornes (l'intervalle est « ouvert »). Ensuite, on ouvre une transaction grâce à `IDBTransaction` puis on ouvre un magasin d'objet et un curseur grâce à `IDBObjectStore.openCursor`. La valeur `keyRangeValue` est utilisée comme intervalle de clé pour ce curseur.

Après avoir déclaré l'intervalle de clé, on affiche la valeur de la propriété `lowerOpen` dans la console. Ici, la valeur de la propriété est `true` car l'intervalle est ouvert pour la borne supérieure et la borne inférieure qui ne sont donc pas comprises dans l'intervalle.


```js
function displayData() {
  var keyRangeValue = IDBKeyRange.bound("F", "W", true, true);
  console.log(keyRangeValue.lowerOpen);

  var transaction = db.transaction(["fThings"], "readonly");
  var objectStore = transaction.objectStore("fThings");

  objectStore.openCursor(keyRangeValue).onsuccess = function (event) {
    var cursor = event.target.result;
    if (cursor) {
      var listItem = document.createElement("li");
      listItem.innerHTML =
        "<strong>" + cursor.value.fThing + "</strong>, " + cursor.value.fRating;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("Les éléments ont été affichés.");
    }
  };
}
```


**Note :** Pour un exemple complet qui utilise les intervalles de clé, vous pouvez consulter le dépôt GitHub IDBKeyRange-example (ainsi que la démonstration associée).

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

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbkeyrange-loweropen① |

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

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

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

* Utiliser IndexedDB
* Initier une connexion : `IDBDatabase`
* Utiliser les transactions : `IDBTransaction`
* Définir un intervalle de clés : `IDBKeyRange`
* Récupérer et modifier les données : `IDBObjectStore`
* Utiliser les curseurs `IDBCursor`
* Exemple de référence : To-do Notifications (exemple *live*).
PushManager : la propriété statique supportedContentEncodings
=============================================================

La propriété statique en lecture seule **`supportedContentEncodings`**, rattachée à l'interface `PushManager`, renvoie un tableau des encodages de contenu pris en charge et qui peuvent être utilisés pour chiffrer la charge utile d'un message push.

Valeur
------

Un tableau de chaînes de caractères.

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

| Specification |
| --- |
| Push API # dom-pushmanager-supportedcontentencodings |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PushManager : la méthode permissionState()
==========================================

La méthode **`permissionState()`** de l'interface `PushManager` renvoie une promesse (`Promise`) qui se résout en une chaîne de caractères indiquant l'état de la permission du gestionnaire de push. Les valeurs possibles sont `'prompt'`, `'denied'`, ou `'granted'`.

**Note :** Depuis Firefox 44, les autorisations pour Notifications et Push ont été fusionnées. Si l'autorisation est accordée pour les notifications, le push sera également activé.

Syntaxe
-------


```js
permissionState()
permissionState(options)
```

### Paramètres

`options` Facultatif

Un objet contenant des paramètres de configuration optionnels. Il peut avoir les propriétés suivantes :

`userVisibleOnly`

Un booléen indiquant que l'abonnement push renvoyé ne sera utilisé que pour les messages dont l'effet est visible pour l'utilisatrice ou l'utilisateur.

`applicationServerKey`

Clé publique que votre serveur push utilisera pour envoyer des messages aux applications clientes via un serveur push. Cette valeur fait partie d'une paire de clés de signature générée par votre serveur d'application et utilisable avec la signature numérique à courbe elliptique (ECDSA) sur la courbe P-256.


### Valeur de retour

Une promesse (`Promise`) qui se résout en une chaîne de caractères ayant pour valeur `'prompt'`, `'denied'`, ou `'granted'`.

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

| Specification |
| --- |
| Push API # dom-pushmanager-permissionstate |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PushManager : la méthode getSubscription()
==========================================

La méthode **`PushManager.getSubscription()`** de l'interface `PushManager` récupère un abonnement push existant.

Elle renvoie une promesse (`Promise`) qui renvoie à un objet `PushSubscription` (en-US) contenant les détails d'un abonnement existant. S'il n'y a pas d'abonnement existant, cette promesse renvoie une valeur `null`.

Syntaxe
-------


```js
getSubscription()
```

### Paramètres

Aucun.

### Valeur de retour

Une promesse (`Promise`) qui se résout en un objet `PushSubscription` (en-US) ou `null`.

Exemples
--------

Cet extrait de code est tiré d'un exemple de messagerie et de notification push.


```js
// Nous avons besoin de l'enregistrement du service worker pour vérifier
// l'existence d'un abonnement
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
  // Avons-nous déjà un abonnement aux messages push ?
  serviceWorkerRegistration.pushManager
    .getSubscription()
    .then((subscription) => {
      // Activer toute interface utilisateur d'inscription / désinscription
      // des messages push.
      const pushButton = document.querySelector(".js-push-button");
      pushButton.disabled = false;

      if (!subscription) {
        // Nous ne sommes pas abonnés à push, donc définir l'UI
        // pour permettre à l'utilisateur d'activer push
        return;
      }

      // Maintenez votre serveur synchronisé avec le dernier subscriptionId
      sendSubscriptionToServer(subscription);

      showCurlCommand(subscription);

      // Réglez votre interface utilisateur pour montrer qu'ils se sont abonnés
      // à des messages push
      pushButton.textContent = "Désactiver les messages push";
      isPushEnabled = true;
    })
    .catch((err) => {
      console.error(`Erreur lors de getSubscription() : ${err}`);
    });
});
```

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

| Specification |
| --- |
| Push API # dom-pushmanager-getsubscription |

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

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

La méthode **`Text.splitText()`** sépare le nœud `Text` en deux nœuds au niveau de l'indice spécifié, et conserve les deux nœuds dans l'arbre en tant que voisins.

Après la séparation, le nœud actuel contient tout le texte jusqu'à l'indice spécifié, et un nœud nouvellement créé du même type contient le texte restant. Le nœud nouvellement créé est retourné à l'appelant. Si le nœud original avait un parent, le nouveau nœud est inséré en tant que voisin suivant du nœud original. Si l'indice est égal à la longueur du nœud original, le nœud nouvellement créé ne contient pas de données.

Des nœuds texte séparés peuvent être concaténés en utilisant la méthode `Node.normalize()`.

Une `DOMException` avec la valeur `INDEX_SIZE_ERR` est levée si l'indice spécifié est négatif ou est supérieur au nombre d'unités 16-bit dans le texte du nœud ; une `DOMException` avec la valeur `NO_MODIFICATION_ALLOWED_ERR` est levée si le nœud est en lecture seule.

Syntaxe
-------


```js
noeudRemplacant = noeudTexte.splitText(indice);
```

Exemple
-------

Dans cet exemple, le nœud texte d'un `<p>` est séparé en deux nœuds texte et un `<span>` est inséré entre les deux.


```html
<body>
  <p id="p">foobar</p>

  <script type="text/javascript">
 var p = document.getElementById("p");
 var noeudTexte = p.firstChild;

 // coupe entre foo et bar
 var noeudRemplacant = noeudTexte.splitText(3);

 // crée un span avec ' contenu du span '
 var span = document.createElement("span");
 span.appendChild(document.createTextNode(" contenu du span "));

 // ajoute le span avant 'bar'
 p.insertBefore(span, noeudRemplacant);

 // le résultat est <p id="p">foo<span> contenu du span </span>bar</p>
 </script>
</body>
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-text-splittext① |

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

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

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

* L'interface `Text` à laquelle cette méthode appartient.
* La méthode opposée : `Node.normalize`.
WheelEvent.deltaX
=================

La propriété en lecture seule **`WheelEvent.deltaX`** est un `double` représentant la quantité de défilement horizontal dans l'unité `WheelEvent.deltaMode` (en-US).

Syntaxe
-------


```js
var dX = event.deltaX;
```

Exemple
-------


```js
var syntheticEvent = new WheelEvent("syntheticWheel", {
  deltaX: 4,
  deltaMode: 0,
});

console.log(syntheticEvent.deltaX);
```

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

| Specification |
| --- |
| UI Events # dom-wheelevent-deltax |

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

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

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

* L'évènement `wheel`
* `WheelEvent`
WheelEvent.deltaY
=================

La propriété en lecture seule **`WheelEvent.deltaY`** est un `double` représentant la quantité de défilement vertical dans l'unité `WheelEvent.deltaMode` (en-US).

Syntaxe
-------


```js
var dY = event.deltaY;
```

Exemple
-------


```js
var syntheticEvent = new WheelEvent("syntheticWheel", {
  deltaY: 4,
  deltaMode: 0,
});

console.log(syntheticEvent.deltaY);
```

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

| Specification |
| --- |
| UI Events # dom-wheelevent-deltay |

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

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

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

* L'évènement `wheel`
* `WheelEvent`
WheelEvent.deltaZ
=================

La propriété en lecture seule **`WheelEvent.deltaZ`** est un `double` représentant la quantité de défilement le long de l'axe z, dans l'unité `WheelEvent.deltaMode` (en-US).

Syntaxe
-------


```js
var dZ = event.deltaZ;
```

Exemple
-------


```js
var syntheticEvent = new WheelEvent("syntheticWheel", {
  deltaZ: 4,
  deltaMode: 0,
});

console.log(syntheticEvent.deltaZ);
```

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

| Specification |
| --- |
| UI Events # dom-wheelevent-deltaz |

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

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

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

* L'évènement `wheel`
* `WheelEvent`
CredentialsContainer.store()
============================

**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 **`store()`**, rattachée à l'interface `CredentialsContainer`, enregistre un ensemble d'informations d'authentification pour l'utilisateur dans une instance `Credential` et renvoie cette instance au travers d'une promesse (`Promise` (en-US)).

**Note :** Cette méthode ne peut être utilisé que pour les contextes de navigation les plus hauts. Les appels lancés depuis une `<iframe>` résoudront la promesse sans aucun effet.

Syntaxe
-------


```js
CredentialsContainer.store(cred).then(function(credRes) { ... } )
```

### Paramètres

`cred`

Une instance valide de `Credential`.

### Valeur de retour

Une promesse (`Promise` (en-US)) qui sera résolue avec l'instance de `Credential` passée en argument.

Exemples
--------


```js
// TBD
```

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

| Specification |
| --- |
| Credential Management Level 1 # dom-credentialscontainer-store |

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

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

**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 **`preventSilentAccess()`**, rattachée à l'interface `CredentialsContainer`, permet de paramétrer une option pour indiquer si les connexions automatiques sont autorisées pour les futures visites à l'origine. Elle renvoie ensuite une promesse (`Promise`) vide.

Cette méthode peut, par exemple, être appelée lorsqu'un utilisateur se déconnecte d'un site web afin de s'assurer qu'il n'est pas reconnecté à la prochaine visite. Cette gestion doit être gérée pour chaque origine.

Dans des versions antérieures de la spécification, cette méthode était intitulée `requireUserMediation()`. Voir le tableau ci-après sur la compatibilité des navigateurs pour plus de détails.

Syntaxe
-------


```js
var Promise = CredentialsContainer.preventSilentAccess();
```

### Paramètres

Aucun.

### Valeur de retour

Une promesse (`Promise`) vide.

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

| Specification |
| --- |
| Credential Management Level 1 # dom-credentialscontainer-preventsilentaccess |

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

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