靠谱的软件下载站
当前位置:  IEfans/IE专区/IE相关/IE10 和 Metro 风格应用程序的 IndexedDB 更新

IE10 和 Metro 风格应用程序的 IndexedDB 更新

IE相关 互联网 2012-03-27 阅读(1512)
Internet Explorer 团队和更广泛的 Web 社区不断对 IndexedDB 规范进行改进。IndexedDB 是一个 W3C 工作草案,使您能够存储、搜索和检索用户设备上的数据,即使在已禁用 Internet 连接的情况下也可以。IndexedDB 是一项由 Windows 8 消费者预览版中的 IE10 和 Metro 风格应用程序共享的 Web 平台功能。 本博文介绍为实现最新版本的 W3C 规范,我们在IE10平台预览第五版中所做的更改。

对版本控制的更改

最显著的更改涉及开发人员将其数据库架构(即对象存储、索引)从一个版本更新到另一版本的方式。工作组(包括 Microsoft)决定用新的 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.countIDBObjectStore.deleteIDBIndex.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();

    }

  • 添加了对 Blob 上的索引属性的支持。这使您能够从 Web 下载二进制数据,将其存储到本地,并将 Blob 属性(如名称、大小等)用作 Blob 中的索引或唯一键。此功能可实现类似如下方案:在脱机收听音乐合辑或查看图像和视频时,能够使用 Blob 的名称在合辑中搜索。我们的最新 IE 体验演示说明了如何使用此功能来脱机查看您的 Facebook 相册

IE 体验演示 Facebook Companion 的屏幕截图 IE 体验演示 Facebook Companion 的屏幕截图

我们还向 W3C 工作组提交了 IndexedDB 的 100 多个测试用例,其中包括新测试以及对现有测试的更新。

控制网站和应用程序使用 IndexedDB 的方式

除了进行更新以符合 W3C 规范变动外,Windows 8 消费者预览版还进行了一些改进,以允许用户在其设备上控制网站和应用程序使用 IndexedDB 的方式:
  • 推出了使用 indexedDB 的 Metro 风格应用程序的卸载处理程序。该处理程序可确保一旦最终用户删除应用程序,在卸载过程中,将会自动删除该应用程序的 IndexedDB 数据库中的相关数据。
  • 实施了配额(存储限制)以防止网站用尽磁盘空间。配额限制可以由 IT 管理员通过组策略设置进行更新,也可以由对注册表具有管理访问权限的用户进行更新。但是,配额不适用于 Metro 风格应用程序。
  • 添加了新的浏览器界面,以便于最终用户管理其数据库和配额。用户可以使用[Caches and databases](缓存和数据库)对话框删除单个数据库。或者,也可以使用[Delete Browsing History](删除浏览历史记录)对话框并选中[Cookies and Web site data](Cookie 和网站数据)来删除所有数据库。

[Website Data Settings](网站数据设置)对话框中新的[Caches and databases](缓存和数据库)选项卡的屏幕截图。这使您能够控制网站是否可以创建缓存和数据库以及这些缓存和数据库可以有多大。更新的[Delete Browsing History](删除浏览历史记录)对话框,其中显示 Cookie 选项新的措辞,以包括网站数据,特别是由网站创建的数据库。 [Website Data Settings](网站数据设置)对话框中新的[Caches and databases](缓存和数据库)选项卡以及更新的[Delete Browsing History](删除浏览历史记录)对话框的屏幕截图

展望未来

W3C WebApp 工作组将通过进行重要改进并缩减对规范进行改动的次数和范围,继续推动 IndexedDB 逐步完善。对于在不久的将来基于该技术在 Windows 8 和 IE10 中进行构建的 Web 开发人员而言,这是非常重要的一步。 我们期待看到您在您的网站和应用程序中使用 IndexedDB,并欢迎您对 IE10 中的 IndexedDB 提供反馈。 —Internet Explorer 首席项目经理 Israel Hilerio 博士 英文原文:IndexedDB Updates for IE10 and Metro style apps

标签:应用程序IE10MetroIE WebIndexedDB

Copyright © 1998-2017 www.iefans.net All Rights Reserved 湘ICP备13012168号-17