1

我有一个带有 indexedDB 函数的 JS 文件,如下所示:

// Get all object stores from IndexedDB
mydb.indexedDB.getObjStores = function() {
  var db = mydb.indexedDB.db;
  return db.objectStoreNames;
};

我从另一个 JS 文件中调用这个函数,我需要对象存储的名称来对它们做一些事情,比如填充一个组合:

function doSomething(){
  var arr = mydb.indexedDB.getObjStores();
  for (var i=0; i<arr.length;i++) {
    document.getElementById('mycombo').options[i] = new Option (arr[i], i);
  }
}

根据浏览器的不同,组合是空的,尽管我可以获得数组的长度(奇怪)。我认为问题在于异步的事情正在杀死我......我认为使用 addEventListener 之类的东西是个好主意(我什么时候可以告诉我已经在 indexedDB 中打开了一个连接?),但是这个 indexedDB 调用没有 onsuccess 事件. 它适用于 Chrome 和 Firefox,但不适用于 PDA 浏览器,例如,我该如何等待?那是问题吗?

谢谢!

4

1 回答 1

0

问题解决了。这个浏览器中的 indexedDB 规范有点不同:getObjStores() 返回一个带有一些数组的对象,其中一个是对象存储列表。所以我正在检索不存在的数据,因为我期待一个 DOMStringList。在非常特殊的情况下出现“愚蠢”错误。谢谢你。

于 2012-12-30T12:49:28.893 回答