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.
Note :
Cette fonctionnalité est disponible via les Web Workers.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 2.0 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