【问题标题】:"Cannot call method 'open' of undefined" error when using indexedDB.open使用 indexedDB.open 时出现“无法调用未定义的方法‘open’”错误
【发布时间】:2012-07-12 05:28:53
【问题描述】:

我是 IndexedDB 的新手,我正在关注本指南 IndexedDB Tutorial 我只是想创建一个数据库,然后能够添加一些条目。这是我到目前为止所拥有的。

var db = window.indexedDB.open('FriendDB', 'My Friends!');

if (db.version != '1') {
    // User's first visit, initialize database (name, key, auto increment).
    db.createObjectStore('Friends', 'id', true);
    db.setVersion('1');
} else {
  // DB already initialized.
}

var store = db.openObjectStore('Friends');
var user = store.put({name: 'Eric', gender: 'male', likes: 'html5'});

在我的控制台中,我收到错误“无法调用未定义的方法‘打开’”我怎样才能让它工作?另外,如果有更好的在线资源可以帮助我,因为我似乎无法为新手找到关于 IndexedDB 主题的任何内容。

【问题讨论】:

标签: javascript indexeddb


【解决方案1】:

这是来自 html5rocks 的 indexeddb 演示,我对其进行了改进以在 Mozilla Firefox 上工作,并添加了用于查看详细数据和编辑现有数据的功能。里面有说明如何在indexeddb中创建db,插入,更新和删除数据。

https://github.com/denimf/IndexedDbToDo

【讨论】:

    【解决方案2】:

    只要您看到包含对 setVersion 的调用的代码,它就使用了过时的语法。很遗憾,我们不得不在编写规范的这么晚才做出如此大的改变,但这使得正确使用 IndexedDB 变得非常简单,因此我们认为这是值得的。

    developer.mozilla.org 上有很好的文档,尽管它肯定可以改进。

    【讨论】:

    • onupgradeneeded 方法在 chrome 中仍然不起作用,因此升级数据库的唯一方法是使用 setVersion 函数。
    • 对于查看此内容的任何人,onupgradeneeded 事件现在适用于当前版本的 Chrome。
    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 2021-01-16
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多