Firefox と Chrome の両方で、html5 仕様の IndexedDB API を使用しています。
私のせいなのかブラウザのバグなのかわからないので、ここで共有したいと思います。
APIによると、ローカル データベースへの接続を開いたときに発生するonversionchangeというイベントがあり、使用されているバージョン番号はデータベースのものよりも大きくなっています。私の問題は、このイベントが Firefox では発生しているが、Chrome では発生していないことです。
いくつかのモードを試すサンプルコード:
var db;
var DB_VERSION = 5;
var openRequest = indexedDB.open("test_db", DB_VERSION);
openRequest.onsuccess = function(event) {
db = openRequest.result;
};
openRequest.onversionchange = function(event) {
console.log("This is the place where I can change db structure");
};
openRequest.onupgradeneeded = function(event) {
console.log("This is the place where I can change db structure");
};
バージョン番号を変更しても onversionchage イベントが発生しません。
更新ebidelが回答した ように、Chrome の実装は現在の仕様に従っていないため、クロスブラウザー クライアント コードを使用するには、onversionchangeイベントとdatabase.versionの手動比較の 2 つの状況を処理する必要があります。
コード例を含むリンクのカップルを次に示します: Chromium google groupと HTML5 Rocks!