4

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 groupHTML5 Rocks!

4

1 に答える 1

5

Chrome の IndexedDB 実装は、 /setVersionではなく古い呼び出しを使用する古いバージョンの仕様に基づいています。この問題にスターを付けてください: http://crbug.com/108223onversionchangeonupgradeneeded

于 2012-02-22T23:17:51.840 に答える