Paq*_*oft 4 html google-chrome indexeddb
我正在 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");
};
Run Code Online (Sandbox Code Playgroud)
即使我更改版本号,onversionchage 事件也不会被触发。
更新 正如ebidel所回答的那样,Chrome 实现不遵循当前规范,因此,为了拥有跨浏览器客户端代码,我们需要处理两种情况:onversionchange事件和database.version手动比较。
以下是一些带有代码示例的链接: Chromium google group和 HTML5 Rocks!
Chrome 的 IndexedDB 实现基于旧版本的规范,它使用旧的setVersion调用而不是onversionchange/ onupgradeneeded。请为此问题加注星标:http://crbug.com/108223
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |