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.

js
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:

js
// 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:

js
// 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

Siehe auch