--- title: IDBObjectStore.openKeyCursor() slug: Web/API/IDBObjectStore/openKeyCursor tags: - API - IDBObjectStore - IndexedDB - Méthode - Reference translation_of: Web/API/IDBObjectStore/openKeyCursor ---
La méthode openKeyCursor(), rattachée à l'interface {{domxref("IDBObjectStore")}}, renvoie un objet {{domxref("IDBRequest")}} dont le résultat sera un curseur ({{domxref("IDBCursor")}}) qui pourra être utilisé afin de parcourir les enregistrements correspondants. Cette méthode est utilisée afin de parcourir les clés d'un magasin d'objets grâce à un curseur.
Afin de déterminer si le curseur a bien été ajouté, on pourra écouter l'évènement success sur le résultat de la méthode.
var requete = objectStore.openKeyCursor(optionalKeyRange, optionalDirection);
optionalKeyRangeoptionalDirection"next".Un objet {{domxref("IDBRequest")}} sur lequel seront déclenchés les différents évènements relatifs à cette opération.
Cette méthode peut déclencher une exception {{domxref("DOMException")}} ayant l'un des types suivants :
| Exception | Description |
|---|---|
InvalidStateError |
Le magasin d'objets ({{domxref("IDBObjectStore")}} ou l'index ({{domxref("IDBIndex")}}) a été supprimé. |
TransactionInactiveError |
La transaction associée au magasin d'objet ({{domxref("IDBObjectStore")}}) est inactive. |
DataError |
La clé ou l'intervalle de clés indiqué est invalide. |
Dans le fragment de code suivant, on crée une transaction, on l'utilise sur un magasin d'objets donné puis on utilise le curseur pour parcourir tous les enregistrements du magasin d'objets :
var transaction = db.transaction("name", "readonly");
var objectStore = transaction.objectStore("name");
var request = objectStore.openKeyCursor();
request.onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
// cursor.key contient la clé de l'enregistrement courant
// à la différence de openCursor, il n'y a pas de cursor.value
cursor.continue();
} else {
// Il n'y a plus d'autres résultats
}
};
| Spécification | État | Commentaires |
|---|---|---|
| {{SpecName('IndexedDB2', '#dom-idbobjectstore-openkeycursor', 'openKeyCursor')}} | {{Spec2('IndexedDB')}} |
| Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Support simple | {{CompatChrome(48.0)}} | {{CompatGeckoDesktop("44.0")}} [1] | 10, partial | 15 | 7.1 |
| Disponible dans les web workers | {{CompatChrome(48.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOpera(35)}} | {{CompatUnknown}} |
| Fonctionnalité | Android | Webview Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome pour Android |
|---|---|---|---|---|---|---|---|
| Support simple | 4.4 | {{CompatChrome(48.0)}} | {{CompatGeckoMobile("44.0")}} [1] | 10 | 22 | {{CompatNo}} | {{CompatChrome(48.0)}} |
| Disponible dans les web workers | {{CompatNo}} | {{CompatChrome(48.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatOperaMobile(35)}} | {{CompatUnknown}} | {{CompatChrome(48.0)}} |
[1] Cette fonctionnalité était disponible depuis Firefox 27 via une préférence : dom.indexedDB.experimental qui était désactivée par défaut.