Javascript 未在Chrome上调用IndexedDB.open回调

Javascript 未在Chrome上调用IndexedDB.open回调,javascript,google-chrome,indexeddb,Javascript,Google Chrome,Indexeddb,我正在尝试使用IndexedDB,一切都很好,直到几个小时前,我的.open()回调停止在Chrome上调用(在Safari上测试,效果很好) 我查看了Chrome开发者工具IndexedDB,但什么都没有 有人知道发生了什么吗 多谢各位 编辑:完全重新启动浏览器成功了,但我仍然很想知道发生了什么。您是否在同一时间尝试删除数据库?如果存在被阻止的挂起的deleteDatabase操作,IndexedDB可能会进入一种奇怪的(尽管根据规范是正确的)状态。例如,下面的代码。如果其他都失败了,你可以检

我正在尝试使用IndexedDB,一切都很好,直到几个小时前,我的.open()回调停止在Chrome上调用(在Safari上测试,效果很好)

我查看了Chrome开发者工具IndexedDB,但什么都没有

有人知道发生了什么吗

多谢各位


编辑:完全重新启动浏览器成功了,但我仍然很想知道发生了什么。

您是否在同一时间尝试删除数据库?如果存在被阻止的挂起的deleteDatabase操作,IndexedDB可能会进入一种奇怪的(尽管根据规范是正确的)状态。例如,下面的代码。如果其他都失败了,你可以检查一下chrome://indexeddb-internals,它将告诉您是否有任何挂起的打开或删除操作正在把事情搞砸

var request = indexedDB.open("test", 1);
request.onblocked = function(e) {
  console.log("DB open blocked", e);
};

request.onerror = function(err) {
  console.log("DB open error", err);
};

request.onupgradeneeded = function(e) {
  console.log("DB open upgrade needed");
};

request.onsuccess = function(e) {
  db = request.result;
  console.log("DB open success");
  db.onversionchange = function(e) {
    console.log("DB got a versionchange event")
  }
  request = indexedDB.deleteDatabase("test");
  request.onsuccess = function(e) {
    console.log("delete success will not be called")
  }
  request.onblocked = function(e) {
    console.log("delete was blocked");
    request = indexedDB.open("test", 1);
    request.onsuccess = function(e) {
      console.log("success won't be called");
    };
    request.onblocked = function(e) {
      console.log("blocked won't be called", e);
    };
    request.onerror = function(err) {
      console.log("error won't be called", err);
    };
    request.onupgradeneeded = function(e) {
      console.log("upgradeneeded won't be called");
    };
  };
};

不,我没有删除数据库,但我估计有未决的请求。谢谢你的回答。
var request = indexedDB.open("test", 1);
request.onblocked = function(e) {
  console.log("DB open blocked", e);
};

request.onerror = function(err) {
  console.log("DB open error", err);
};

request.onupgradeneeded = function(e) {
  console.log("DB open upgrade needed");
};

request.onsuccess = function(e) {
  db = request.result;
  console.log("DB open success");
  db.onversionchange = function(e) {
    console.log("DB got a versionchange event")
  }
  request = indexedDB.deleteDatabase("test");
  request.onsuccess = function(e) {
    console.log("delete success will not be called")
  }
  request.onblocked = function(e) {
    console.log("delete was blocked");
    request = indexedDB.open("test", 1);
    request.onsuccess = function(e) {
      console.log("success won't be called");
    };
    request.onblocked = function(e) {
      console.log("blocked won't be called", e);
    };
    request.onerror = function(err) {
      console.log("error won't be called", err);
    };
    request.onupgradeneeded = function(e) {
      console.log("upgradeneeded won't be called");
    };
  };
};