IDBTransaction: abort event
The abort event is fired when an IndexedDB transaction is aborted.
This can happen for any of the following reasons:
- Bad requests, (E.g., trying to add the same key twice, or put the same index key when the key has a uniqueness constraint).
- An explicit
abort() call.
- An uncaught exception in the request's success/error handler.
- An I/O error (an actual failure to write to disk, for example disk detached, or other OS/hardware failure).
- Quota exceeded.
This non-cancelable event bubbles to the associated IDBDatabase object.
Syntax
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("abort", (event) => {});
onabort = (event) => {};
Event type
Bubbling
This event bubbles to IDBDatabase. The event.target property refers to the IDBTransaction object that bubbles up.
For more information, see Event bubbling and capture.
Examples
This example opens a database (creating the database if it does not exist), then opens a transaction, adds a listener to the abort event, then aborts the transaction to trigger the event.
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = () => {
console.log("Error creating database");
};
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
};
DBOpenRequest.onsuccess = (event) => {
const db = DBOpenRequest.result;
const transaction = db.transaction(["toDoList"], "readwrite");
transaction.addEventListener("abort", () => {
console.log("Transaction was aborted");
});
transaction.abort();
};
The same example, but assigning the event handler to the onabort property:
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = () => {
console.log("Error creating database");
};
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
};
DBOpenRequest.onsuccess = (event) => {
const db = DBOpenRequest.result;
const transaction = db.transaction(["toDoList"], "readwrite");
transaction.onabort = (event) => {
console.log("Transaction was aborted");
};
transaction.abort();
};
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
abort_event |
23 |
12 |
10 |
10 |
15 |
8 |
4.4 |
25 |
22 |
14 |
8 |
1.5 |
See also