我正在使用Firefox和Chrome中的html5规范中的IndexedDB API。
有些东西没有按预期工作我想在这里分享,因为我不知道这是我的错还是浏览器错误。
根据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实现不符合当前规范,因此,为了拥有交叉broswser客户端代码,我们需要处理两种情况: onversionchange 事件和< em> database.version 手动比较。
以下是一对代码示例的链接: Chromium google group和 HTML5 Rocks!
答案 0 :(得分:3)
Chrome的IndexedDB实施基于较旧版本的规范,该版本使用较早的setVersion
来电而不是onversionchange
/ onupgradeneeded
。请为此问题加注星标:http://crbug.com/108223