Событие indexedDB onversionchange не запущено в Chrome - PullRequest
2 голосов
/ 22 февраля 2012

Я играю с IndexedDB API из спецификации html5 как в Firefox, так и в Chrome.

Там что-то работает не так, как ожидалось, я хочу поделиться этим здесь, потому что не знаю, виновата ли яили ошибка браузера.

В соответствии с API , существует событие под названием onversionchange , которое вызывается, когда вы открываете соединение с локальной базой данных, и используется номер версии:больше, чем базы данных один.Моя проблема заключается в том, что это событие вызывается в Firefox, но не в Chrome.

В некоторых примерах кода используется несколько режимов:

var db;
var DB_VERSION = 5;
var openRequest = iDb.open("test_db", DB_VERSION, function() {
    console.log("This is the place where I can change db structure");
});
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 сравнение вручную.

Вот пара ссылок на пример кода: Chromium google group и HTML5 Скалы!

1 Ответ

3 голосов
/ 23 февраля 2012

Реализация Chrome IndexedDB основана на более старой версии спецификации, в которой используется более старый вызов setVersion вместо onversionchange / onupgradeneeded. Пожалуйста, отметьте эту проблему: http://crbug.com/108223

...