IDBFactory.open
API 取代 IDBDatabase.setVersion
API。新的 open
API 使用一个额外的参数来检测您是想使用当前数据库版本还是想将数据库架构更新为较新的版本。open
API 现在返回一个 IDBOpenDBRequest
对象,该对象允许您注册 onupgradeneeded 事件。在事件处理程序中,您可以通过添加其他对象存储和索引来更新数据库架构。
若要更新现有代码,请将 version
参数添加到 open
方法,以取代对 setVersion
的调用,并在 IDBOpenDBRequest
上注册新的 onupgradeneeded
事件处理程序(如下所示)。
旧代码示例 – 使用绿色突出显示受影响的代码
function openDBTest(dbName) {
var rq = window.msIndexedDB.open(dbName);
rq.onsuccess = successOpenningDB;
rq.onerror = failureHandler;
}
function successOpenningDB(evt) {
var db = evt.target.result;
var rq = db.setVersion("1");
rq.onsuccess = successHandler;
rq.onerror = failureHandler;
}
function successHandler(evt) {
//create schema
}
function openDBTest(dbName) {
var rq = window.msIndexedDB.open(dbName, 1);
rq.onsuccess = useDB;
rq.onupgradeneeded = successHandler;
rq.onerror = failureHandler;
}
function successHandler(evt) {
//create schema
}
此外,我们还对平台进行了一些细微(但同样非常显著)的更改:
IDBCursor.advance(count)
方法。此方法使您能够跳过游标中的记录,进而实现分页方案。可使用 count
参数来定义在访问数据前要跳过的记录数。有效值为 1 或更大数值。IDBObjectStore.count(key)
和 IDBIndex.count(key)
方法。它们使您能够对匹配特定条件的记录进行计数。如果未指定键值,则会返回索引或对象存储中的所有记录的计数。IDBFactory.cmp(first, second)
方法。此方法会比较两个键值,以确定是一个值大于另一个值还是两个值相等。IDBKeyRanges
现在可使用更多方法,包括 IDBObjectStore.count
、IDBObjectStore.delete
和 IDBIndex.count
。这使您能够匹配跨键值组的记录。IDBObjectStore
。onsuccess
事件处理程序中引发异常,则会中止该活动事务。但是,处理异常时将允许该数据库事务继续照常进行。
// This won’t abort the transaction because there is no active transaction.
function createTransaction() {
var txn = db.transaction("test");
window.aaaaaa();
}
// This will abort the transaction because the exception is thrown when there is an active transaction.
var rq = objectStore.add(record);
rq.onsuccess = function (event) {
window.aaaaaa();
}
IE 体验演示 Facebook Companion 的屏幕截图
[Website Data Settings](网站数据设置)对话框中新的[Caches and databases](缓存和数据库)选项卡以及更新的[Delete Browsing History](删除浏览历史记录)对话框的屏幕截图