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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
versionchange event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi