有这么多这样的错误incurred.Only本文http://dev.opera.com/articles/introduction-to-indexeddb/说明了为什么----- “随着IndexedDB的,在我们的数据库中的所有操作或交易必须在一个回调函数内发生。”
这个是我简单的例子,请通过检查Chrome的devtool->资源 - > IndexedDB的;(如果没有在IndexedDB的尝试刷新浏览器)
HTML部分:
<form id="form1">
<label for="task">What do you need to do?</label>
<input type="text" name="task" id="task" value="" required>
<button type="submit" id="submit">Save entry</button>
</form>
的脚本部分:
var idb = indexedDB.open('niangzi10', 2);
var dbobject; // Define a global variable to hold our database object
idb.onsuccess = function (evt) {
console.log("success");
if (dbobject === undefined) {
dbobject = evt.target.result;
}
}
idb.onupgradeneeded = function (evt) {
dbobject = evt.target.result;
if (evt.oldVersion < 1) {
dbobject.createObjectStore('tasks', { autoIncrement: true });
}
}
//transaction operation in callback function
var form1 = document.getElementById('form1');
form1.addEventListener('submit', function (evt) {
'use strict';
evt.preventDefault();
var entry = {}, transaction, objectstore, request;
entry = { name: document.querySelector("#task").value };
// Open a transaction for writing
transaction = dbobject.transaction(['tasks'], 'readwrite');
objectstore = transaction.objectStore('tasks');
// Save the entry object
request = objectstore.add(entry);
transaction.oncomplete = function (evt) {
alert("'" + document.querySelector("#task").value + "'has been insert into indexedDB;please check it using chrome's devtool->resource->indexedDB(if nothing,refresh browser);");
};
});
您使用的浏览器是?另外,我知道这并不是IndexedDB的世界上最简单的事情,但如果您可以发布一个表现此问题的自包含测试用例,那么您将有更好的机会得到一个好的答案。 – dumbmatter