下面是我打开indexedDB的Javascript代码。我之前已经在Firefox 21中成功测试了几次代码,但现在我看到e.target.error.name中的indexedDB.open()函数返回了一个AbortError。
var openDB = function(dbCallBack) {
var openDB = function(dbCallBack) {
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;
request = window.indexedDB.open('mgDB');
request.onerror = function(e) {
alert('Error: ' + e.target.error.name + ': Failed to open the database');
dbCallBack(false, false);
};
request.onupgradeneeded = function(e) {
dbCallBack(true, false);
};
request.onsuccess = function(e) {
db = e.target.result;
if (db.objectStoreNames.length == 0) {
dbCallBack(true, true);
} else {
dbCallBack(true, false);
}
};
};
};
以下是openDB()函数的调用方式。 dbCallBack函数的代码如下所示:
if (!db) {
var dbOpenSuccess;
openDB(function(dbOpenSuccess, emptyTableMsg) {
if (emptyTableMsg) {
displayEmptyTableMsg();
} else if (dbOpenSuccess) {
displayTableContents();
}
});
}
注意:在重新运行测试之前,我已尝试清除浏览器缓存并从文件夹C:\ users {userID} \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles中手动删除indexedDB。我在http://nparashuram.com/IndexedDB成功运行了相同的代码。可能有什么不对?
答案 0 :(得分:0)
如果您收听onabort事件,您的代码就可以了,如下所示。
request.onsuccess = function(e) {
db = e.target.result;
db.onabort = function(e) {
db.close();
db = null;
}
if (db.objectStoreNames.length == 0) {
dbCallBack(true, true);
} else {
dbCallBack(true, false);
}
};