Le gestionnaire d'événement onerror
, rattaché à l'interface IDBTransaction
, s'exécute au déclenchement d'un événement error
lorsque la transaction échoue.
Syntaxe
transaction.onerror = function() { ... };
Exemple
Dans le code suivant, on commence par ouvrir une connexion à la base de donnée. Grâce à cette connexion, on initialise une transaction en lecture/écriture grâce à IDBTransaction
pour accéder au magasin d'objets intitulé toDoList
et y ajouter un enregistrement via la méthode IDBObjectStore.add
. On notera également l'utilisation du gestionnaire d'événements IDBTransaction.oncomplete
.
Le gestionnaire d'événement onerror
de la transaction affiche le code d'erreur de la propriété propriété error
sur la page.
// Connexion à la base de données var DBOpenRequest = window.indexedDB.open("toDoList", 4); DBOpenRequest.onsuccess = function(event) { note.innerHTML += '<li>Connexion établie.</li>'; // On affecte la connexion à la variable db. db = DBOpenRequest.result; // On exécute la fonction addData () pour ajouter // des données dans la base addData(); }; function addData() { // On crée un nouvel objet prêt à être emmagasiné newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ]; // On ouvre une transaction de lecture / écriture // pour traiter les données via la connexion var transaction = db.transaction(["toDoList"], "readwrite"); // En cas de succès de l'ouverture de la transaction // on utilise ce gestionnaire transaction.oncomplete = function(event) { note.innerHTML += '<li>Transaction terminée : modification de la base de données OK.</li>'; }; // En cas d'échec de l'ouverture de la transaction // on utilisera ce gestionnaire transaction.onerror = function(event) { note.innerHTML += '<li>L\'erreur: "' + transaction.error +'" s\'est produite, échec de la transaction.</li>'; }; // On ouvre l'accès au magasin "toDoList" de la transaction var objectStore = transaction.objectStore("toDoList"); // Enfin on ajoute un enregistrement var objectStoreRequest = objectStore.add(newItem[0]); objectStoreRequest.onsuccess = function(event) { // On signale l'ajout de l'enregistrement note.innerHTML += '<li>Enregistrement ajouté.</li>'; }; };
Note : Pour un exemple de travail complet, voir l'application To-do Notifications (exemple live disponible ici).
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'onerror' dans cette spécification. |
Recommendation |
Compatibilité avec les navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support simple | 23webkit 24 |
10 moz 16.0 (16.0) |
10, en partie | 15 | 7.1 |
Disponible via les web workers | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | 4.4 | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Disponible via les web workers | (Oui) | 37.0 (37.0) | (Oui) | ? | (Oui) | ? |
Voir aussi
- Manipuler IndexedDB
- Démarrer des transactions :
IDBDatabase
- Manipuler des transactions :
IDBTransaction
- Définir un intervalle de clés :
IDBKeyRange
- Récupérer des données et les modifier :
IDBObjectStore
- Manipuler des curseurs :
IDBCursor
- Exemple de référence pour IndexedDB : To-do Notifications