IndexedDB事件不会触发

时间:2013-06-20 05:13:14

标签: events indexeddb

我正在使用Firefox 21.我编写了下面的代码,以在页面加载时显示indexedDB对象存储的内容。

      window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB ||
                         window.msIndexedDB;    
      window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction ||
                         window.msIDBTransaction;
      window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange ||
                         window.msIDBKeyRange;

      var request = window.indexedDB.open('mgDB', 1);
      request.onerror = function(e) {
           alert('error');
      };

      request.onupgradeneeded = function(e) {
           alert('upgradeneeded');
      };

      request.onsuccess = function(e) {
           alert('success'); 
      };

知道mgDB还不存在,我预计会发生升级所需的事件。当我使用Firebug调试代码时,我看到错误,onsuccess和onupgradeneeded具有空值,因此没有触发任何事件。当我在没有调试模式的情况下执行代码时,我看到成功事件被触发。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

onupgradeneeded不会触发的事实是因为你已经多次运行代码而第一次运行版本为1的数据库。 open函数的逻辑是,如果不存在则创建db,如果数据库的版本低于提供的版本则进行升级。 (请记住indexeddb是持久存储,意味着如果你关闭浏览器它就不会被破坏)如果你想确保每次都想要输入onupgradeneeded(用于测试pupouses !!!)你可以删除数据库在打开/再次创建之前。

事件为空的事实可能取决于您放置断点的位置?在其中一个回调中放置一个断点,你会看到onsuccess,onerror,...将填充在请求对象上。