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呼び出しには成功イベントがありません。ChromeとFirefoxでは正常に動作しますが、PDAブラウザでは動作しません。たとえば、これを待つにはどうすればよいですか。それが問題ですか?

ありがとうございました!

4

1 に答える 1

0

問題が解決しました。このブラウザーの indexedDB 仕様は少し異なります。getObjStores() は、いくつかの配列を含むオブジェクトを返します。そのうちの 1 つはオブジェクト ストアのリストです。DOMStringList を期待していたので、存在しないデータを取得していました。非常に特殊なケースでの「愚かな」エラー。ありがとうございました。

于 2012-12-30T12:49:28.893 に答える