IDBTransaction: abort event
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Theabort
event is fired when anIndexedDB
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 eventbubbles to the associatedIDBDatabase
object.
Syntax
Use the event name in methods likeaddEventListener()
, or set an event handler property.
addEventListener("abort", (event) => { })onabort = (event) => { }
Event type
A genericEvent
.
Bubbling
This event bubbles toIDBDatabase
. Theevent.target
property refers to theIDBTransaction
object that bubbles up.
For more information, seeEvent bubbling.
Examples
This example opens a database (creating the database if it does not exist), then opens a transaction, adds a listener to theabort
event, then aborts the transaction to trigger the event.
// Open the databaseconst DBOpenRequest = window.indexedDB.open("toDoList", 4);DBOpenRequest.onupgradeneeded = (event) => { const db = event.target.result; db.onerror = () => { console.log("Error creating database"); }; // Create an objectStore for this database const objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle", }); // define what data items the objectStore will contain 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; // open a read/write db transaction, ready for adding the data const transaction = db.transaction(["toDoList"], "readwrite"); // add a listener for `abort` transaction.addEventListener("abort", () => { console.log("Transaction was aborted"); }); // abort the transaction transaction.abort();};
The same example, but assigning the event handler to theonabort
property:
// Open the databaseconst DBOpenRequest = window.indexedDB.open("toDoList", 4);DBOpenRequest.onupgradeneeded = (event) => { const db = event.target.result; db.onerror = () => { console.log("Error creating database"); }; // Create an objectStore for this database const objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle", }); // define what data items the objectStore will contain 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; // open a read/write db transaction, ready for adding the data const transaction = db.transaction(["toDoList"], "readwrite"); // add a listener for `abort` transaction.onabort = (event) => { console.log("Transaction was aborted"); }; // abort the transaction transaction.abort();};
Specifications
Specification |
---|
Indexed Database API 3.0 # eventdef-idbtransaction-abort |