<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>IndexDB Test</title>
</head>
<body>
<div>
<div>
<label for="version">版本</label>
<input type="text" name="version" id="version">
</div>
<button id="Sp">点击有惊喜</button>
</div>
</body>
<script>
var formData = document.querySelector("button#Sp");
var version = document.querySelector("input#version");
formData.onclick = () => {
new Promise(() => {
// IndexedDB
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB,
IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.OIDBTransaction || window.msIDBTransaction;
var request = indexedDB.open("elephantFiles", version.value),
db,
createObjectStore = (dataBase) => {
console.log("Creating objectStore")
dataBase.createObjectStore("elephants");
},
putData = (name = 'test', data = '数据') => {
var readWriteMode = typeof IDBTransaction.READ_WRITE == "undefined" ? "readwrite" : IDBTransaction.READ_WRITE;
var transaction = db.transaction(["elephants"], readWriteMode);
var put = transaction.objectStore("elephants").put(data, name);
transaction.objectStore("elephants").get("test").onsuccess = function (event) {
var testData = event.target.result;
console.log("Got elephant!" + testData);
};
}
request.onsuccess = (e) => {
console.log("Success creating/accessing IndexedDB database");
db = request.result;
db.onerror = (event) => {
console.log("Error creating/accessing IndexedDB database");
};
console.log(db);
if (db.setVersion) {
if (db.version != version.value) {
var setVersion = db.setVersion(version.value);
setVersion.onsuccess = function () {
createObjectStore(db);
};
}
else {
putData();
}
}
else {
putData();
}
}
request.onerror = (e) => {
console.log('onerror...');
}
request.onupgradeneeded = (event) => {
console.log('onupgradeneeded...');
createObjectStore(event.target.result);
}
}).catch((error) => {
alert(error)
})
}
</script>
</html>
//Test URL
http://robnyman.github.io/html5demos/indexeddb/
//Know
https://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/
//Learning
https://blog.kisnows.com/2017/12/06/step-into-indexdb/