IDBOpenDBRequest - 提供对打开或删除数据库的请求结果的访问
IDBOpenDBRequest
是 IndexedDB API 的接口,提供对打开或删除数据库的请求结果的访问(使用 IDBFactory.open
和 IDBFactory.deleteDatabase
),使用特定的事件处理程序属性。
属性
还从其父接口 IDBRequest
和EventTarget
继承了方法。
方法
没有特有的方法,但从其父接口 IDBRequest
和EventTarget
继承了方法。
事件
使用 addEventListener()
或通过为此接口的 oneventname
属性分配事件监听器来监听这些事件:
blocked
同一数据库中,当数据库打开的连接被 versionchange
事务阻止时触发。也可以通过 onblocked
属性处理。
upgradeneeded
尝试打开版本号高于其当前版本的数据库时触发。也可以通过onupgradeneeded
属性处理。
实例
在以下实例中,可以看到,如果加载了具有更高版本号的数据库,则通过 onupgradeneeded
处理程序更新数据库结构。有关完整的工作实例,请参阅我们的待办事项通知应用程序(查看在线实例。)
var db;
// 让我们打开数据库
var DBOpenRequest = window.indexedDB.open("toDoList", 4);
// 打开数据库时,触发这些事件处理程序。
DBOpenRequest.onerror = function(event) {
note.innerHTML += '<li>加载数据库出错。</li>';
};
DBOpenRequest.onsuccess = function(event) {
note.innerHTML += '<li>数据库已初始化。</li>';
// 存储在 db 变量中打开数据库的结果。这在后续会多处使用。
db = DBOpenRequest.result;
// 执行 displayData() 函数,使用 IDB 中已有的所有待办事项列表数据填充任务列表
displayData();
};
// 当数据库需要创建新版本:以前未创建过该数据库,
// 或者是通过上面的 window.indexedDB.open 提交了新版本号时,
// 触发该事件处理程序
DBOpenRequest.onupgradeneeded = function(event) {
var db = this.result;
db.onerror = function(event) {
note.innerHTML += '<li>加载数据库出错。</li>';
};
// 为此数据库创建 objectStore
var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });
// 定义 objectStore 将包含哪些数据项
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
objectStore.createIndex("notified", "notified", { unique: false });
};
规范
规范 | 状态 | 备注 |
---|---|---|
Indexed Database API IDBOpenDBRequest 的定义 |
推荐 | 初始定义 |
Indexed Database API 2.0 IDBOpenDBRequest 的定义 |
编者的草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 24 23 — 57 webkit | 支持 | 16 10 — 16 moz | 101 | 15 | 7 |
Available in workers | 支持 | 未知 | 37 | 未知 | 支持 | 未知 |
onblocked | 24 23 — 57 webkit | 12 | 16 10 — 16 moz | 101 | 15 | 7 |
onupgradeneeded | 24 23 — 57 webkit | 12 | 16 10 — 16 moz | 101 | 15 | 7 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 24 23 — 57 webkit | 24 23 — 57 webkit | 支持 | 22 | 未知 | 22 | 8 |
Available in workers | 支持 | 支持 | 支持 | 37 | 未知 | 支持 | 未知 |
onblocked | 24 23 — 57 webkit | 24 23 — 57 webkit | 支持 | 22 | 未知 | 22 | 8 |
onupgradeneeded | 24 23 — 57 webkit | 24 23 — 57 webkit | 支持 | 22 | 未知 | 22 | 8 |
1. 部分的
相关链接
- 使用 IndexedDB
- 启动事务:
IDBDatabase
- 使用事务:
IDBTransaction
- 设置一系列键:
IDBKeyRange
- 检索并更改数据:
IDBObjectStore
- 使用游标:
IDBCursor
- 参考实例:To-do 通知 (在线查看实例。)