IDBDatabase: versionchange-Ereignis
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
Das versionchange
-Ereignis wird ausgelöst, wenn eine Änderung der Datenbankstruktur (ein upgradeneeded
-Ereignis wird an eine IDBOpenDBRequest
oder IDBFactory.deleteDatabase
gesendet) anderswo angefordert wurde (höchstwahrscheinlich in einem anderen Fenster/Reiter auf demselben Computer).
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
, oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("versionchange", (event) => {});
onversionchange = (event) => {};
Ereignistyp
Ein generisches Event
.
Beispiele
Dieses Beispiel öffnet eine Datenbank und fügt bei Erfolg einen Listener für versionchange
hinzu:
// Open the database
const dBOpenRequest = window.indexedDB.open("Nonexistent", 4);
dBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
// 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.addEventListener("success", (event) => {
const db = event.target.result;
db.addEventListener("versionchange", (event) => {
console.log("The version of this database has changed");
});
});
Dasselbe Beispiel unter Verwendung der onversionchange
-Ereignishandler-Eigenschaft:
// Open the database
const dBOpenRequest = window.indexedDB.open("Nonexistent", 4);
dBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
// 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 = event.target.result;
db.onversionchange = (event) => {
console.log("The version of this database has changed");
};
};
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # eventdef-idbdatabase-versionchange |
Indexed Database API 3.0 # dom-idbdatabase-onversionchange |
Browser-Kompatibilität
BCD tables only load in the browser