IDBDatabase: versionchange-Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Das Ereignis versionchange wird ausgelöst, wenn an anderer Stelle eine Änderung der Datenbankstruktur angefordert wurde (durch ein upgradeneeded-Ereignis, das bei einem IDBOpenDBRequest ausgelöst wird, oder durch IDBFactory.deleteDatabase). Dies geschieht höchstwahrscheinlich in einem anderen Fenster oder Tab auf demselben Computer.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("versionchange", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
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 mit der Event-Handler-Eigenschaft onversionchange (beachten Sie jedoch, dass dadurch andere, gegebenenfalls mit onversionchange und onsuccess hinzugefügte Event-Listener ersetzt werden):
// 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
| Spezifikation |
|---|
| Indexed Database API 3.0> # eventdef-idbdatabase-versionchange> |
| Indexed Database API 3.0> # dom-idbdatabase-onversionchange> |