--- title: IDBObjectStore.openCursor() slug: Web/API/IDBObjectStore/openCursor tags: - API - IDBObjectStore - IndexedDB - Méthode - Reference translation_of: Web/API/IDBObjectStore/openCursor ---
La méthode openCursor()
, rattachée à l'interface {{domxref("IDBObjectStore")}}, renvoie un objet {{domxref("IDBRequest")}} et, dans un thread séparé, renvoie un nouvel objet {{domxref("IDBCursorWithValue")}} qu'on peut utiliser pour parcourir un magasin d'objets avec un curseur.
Afin de déterminer si l'opération s'est déroulée correctement, on pourra surveiller l'évènement success
.
{{AvailableInWorkers}}
var requete = ObjectStore.openCursor(optionalKeyRange, optionalDirection);
range
{{optional_inline}}direction
{{optional_inline}}"next"
.Un objet {{domxref("IDBRequest")}} sur lequel seront déclenchés les évènements relatifs à l'opération.
Cette méthode peut déclencher une exception {{domxref("DOMException")}} ayant l'un des types suivants :
Exception | Description |
---|---|
InvalidStateError |
L'objet {{domxref("IDBObjectStore")}} ou l'objet {{domxref("IDBIndex")}} a été supprimé. |
TransactionInactiveError |
La transaction rattachée au magasin d'objets ({{domxref("IDBObjectStore")}}) est inactive. |
DataError |
La clé ou l'intervalle de clés indiqué est invalide. |
Dans ce fragment de code, on crée une transaction, on ouvre le magasin d'objets souhaité puis on place un curseur pour parcourir tous les enregistrements du magasin d'objets :
var transaction = db.transaction("name", "readonly"); var objectStore = transaction.objectStore("name"); var request = objectStore.openCursor(); request.onsuccess = function(event) { var cursor = event.target.result; if(cursor) { // cursor.value contient l'enregistrement courant // pendant le parcours, on peut éventuellement le manipuler ici cursor.continue(); } else { // il n'y a plus de résultats } };
Spécification | État | Commentaires |
---|---|---|
{{SpecName('IndexedDB', '#widl-IDBIndex-openCursor-IDBRequest-any-range-IDBCursorDirection-direction', 'openCursor')}} | {{Spec2('IndexedDB')}} |
Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Support simple | 23{{property_prefix("webkit")}} 24 |
{{CompatVersionUnknown}} | 10 {{property_prefix("moz")}} {{CompatGeckoDesktop("16.0")}} |
10, partial | 15 | 7.1 |
Disponible dans les web workers | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("37.0")}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
Fonctionnalité | Android | Webview Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome pour Android |
---|---|---|---|---|---|---|---|---|---|
Support simple | 4.4 | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("22.0")}} | 1.0.1 | 10 | 22 | 8 | {{CompatVersionUnknown}} |
Disponible dans les web workers | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("37.0")}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} |