因为项目的需求,简单的研究了下IndexedDB,只实现简单的读取和写入
代码如下:
(function(){
var db;
var v;
var request = indexedDB.open("ecmascriptdb", 1);
request.onerror = function(event) {
alert('error!');
};
request.onsuccess = function(e) {
db = request.result;
window.set_data = function(name, value) {
var trans = db.transaction(["history"],"readwrite");
var store = trans.objectStore("history");
var request = store.get(name);
request.onsuccess = function() {
// grab the data object returned as the result
var data = request.result;
if (data){
data.value = value;
store.put(data);
}else{
store.add({key:name,value:value});
}
};
}
window.get_data = function(name, callback) {
var trans = db.transaction("history");
var store = trans.objectStore("history");
var request = store.get(name);
request.onerror = function(event) {
callback(null);
};
request.onsuccess = function(event) {
var data = request.result;
if (!data) callback(null);
else callback(data.value);
};
}
}
request.onupgradeneeded = function(event) {
var db = event.target.result;
db.onerror = function(event) {
};
var objectStore = db.createObjectStore("history", { keyPath: "key" });
objectStore.createIndex("value", "value", { unique: false });
};
})();
之后发现了localStorage这个东东,简单许多,这个项目果断放弃了IndexedDB,相同的封装代码如下:
if (window.localStorage){
window.set_cookie = function(name, value) {
window.localStorage.setItem(name, value);
}
window.get_cookie = function(name, callback) {
callback(window.localStorage.getItem(name));
}
}
参考资料:
IndexedDB: https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB
localStorage: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage