IDBDatabase.onversionchange

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.

Le gestionnaire d'événement onversionchange, rattaché à l'interface IDBDatabase, s'exécute au déclenchement de l'événement versionchange qui se produit lorsque la structure de la base de donnée change (l'événement IDBOpenDBRequest.onupgradeneeded ou IDBFactory.deleteDatabase a été demandé par ailleurs (probablement dans une autre fenêtre ou onglet sur le même ordinateur)).

Cela n'est pas la même chose qu'une transaction versionchange (bien que les concepts soient apparentés).

Note : Cette fonctionnalité est disponible via les Web Workers.

Syntaxe

js
db.onversionchange = function() { ... }

Exemple

Cette exemple illustre un gestionnaire d'événement IDBOpenDBRequest.onupgradeneeded dans lequel on ajoute un magasin d'objets. Les deux gestionnaires d'événements onerror et onabort sont utilisés pour les cas d'échec. Le gestionnaire d'événement onversionchange est utilisé afin d'indiquer que la structure de la base de données a été modifiée.

js
DBOpenRequest.onupgradeneeded = function (event) {
  var db = event.target.result;

  db.onerror = function () {
    note.innerHTML += "<li>Erreur du chargement de la base de données.</li>";
  };

  db.onabort = function () {
    note.innerHTML += "<li>L'ouverture de la connexion à été annulée !</li>";
  };

  // Ajoute un magasin d'objets à la base de données

  var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });

  // Définition des index

  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 });

  objectStore.createIndex("notified", "notified", { unique: false });

  note.innerHTML += "<li>Le magasin d'objet à été ajouté.</li>";

  db.onversionchange = function (event) {
    note.innerHTML +=
      "<li>Des changements ont été appliqués sur la base de données. Vous devez réactualiser cette page ou la fermer et utiliser l'autre version de cette application qui est ouverte.</li>";
  };
};

Spécifications

Specification
Indexed Database API 3.0
# eventdef-idbdatabase-versionchange
Indexed Database API 3.0
# dom-idbdatabase-onversionchange

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi