在IE11上打开IndexedDb事务抛出NotFoundError

时间:2017-03-22 09:14:54

标签: javascript internet-explorer-11 indexeddb web-worker

我尝试在indexedDB中打开并保存一些数据。

indexeddb封装在一个webworker中,但每次我尝试在IE11上打开一个事务时,它都会抛出一个“notFoundError”(在FF上运行良好)。

这是我的简化代码:

var dbApi = indexedDB || webkitIndexedDB || mozIndexedDB || msIndexedDB;
var transactionApi = IDBTransaction || webkitIDBTransaction || mozIDBTransaction || msIDBTransaction || {};

var request = dbApi.open('myDB', 1);
var db;

request.onerror = handle_error;
request.onupgradeneeded = handle_upgrade;

request.onsuccess = function(event) {
    console.log("Open db ok");
    db = event.target.result;
    try {
        var t = db.transaction(["packet"], (transactionApi.READ_WRITE ? transactionApi.READ_WRITE : 'readwrite')); // Throw error here
        t.onsuccess = function() {
            var os = t.objectStore("packet");
            var cmd = os.put("Some data", -2);
        }
    }
    catch(e) {
        console.log(e);
    }
};

由于

1 个答案:

答案 0 :(得分:0)

我自己回答:在IE11上,我们无法从webworker创建indexeddb。必须从主线程创建Db,并且web worker能够在之后访问它。