2

根据indexedDB 的 w3 规范indexedDB.open的最新版本,版本为 < 1的调用例如window.indexedDB.open('somename', 0)应该具有以下行为:

DOMException TypeError version 的值为 0(零)或负数。

但是,我注意到 WinJS 似乎抛出了 type 的错误异常InvalidStateError

我是否误解了 w3 规范,或者这是(我假设它是 IE10 引擎)实现中的缺陷?

我之所以这么说,是因为我花了一段时间才InvalidState使用无效版本号将我看到的错误 () 与我的代码联系起来——希望其他人能够避免我的错误!

4

2 回答 2

2

您无法打开版本为 0 的数据库。它至少需要为 1 或更高版本。规范说:

首次创建数据库时,其版本为 0。

因此,当您尝试打开尚不存在的数据库时,将创建它并获取版本 0。创建数据库后,将调用 onupgradeneeded 方法,以便您可以定义结构。在这里,您将看到旧版本为 0,新版本为提供的版本或 1(如果您没有提供版本。)

于 2012-10-27T05:40:05.507 回答
0

我对 IE10 也有同样的问题。我所做的是使用前缀“msIndexedDB”并且...... open 函数将 DB 名称作为 ONLY 参数。因此,他们已恢复使用已弃用的 open 版本。我不知道为什么这对他们来说有很好的软件工程意义,因为它对我来说几乎没有。

于 2013-10-03T19:02:25.823 回答