Chrome中未触发IndexedDB onversionchange事件

问题描述 投票:2回答:1

我正在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事件。

UPDATE正如ebidel回答的那样,Chrome实现不遵循当前规范,因此,为了拥有跨浏览器客户端代码,我们需要处理两种情况:onversionchange事件和database.version手动比较。

以下是带有代码示例的链接:Chromium google groupHTML5 Rocks!

html google-chrome indexeddb
1个回答
3
投票

Chrome的IndexedDB实现基于规范的较旧版本,该规范使用较旧的setVersion调用而不是onversionchange / onupgradeneeded。请对此问题加注星标:http://crbug.com/108223

© www.soinside.com 2019 - 2024. All rights reserved.