store.js - 实现本地存储(LocalStorage)
2016-05-30 11:47
633 查看
store.js 如下:
var store = (function () {
var api = {},
win = window,
doc = win.document,
localStorageName = 'localStorage',
globalStorageName = 'globalStorage',
tableKeys=[],
storage;
api.set = function (key, value) {};
api.get = function (key) {};
api.remove = function (key) {};
api.clear = function () {};
if (localStorageName in win && win[localStorageName]) {
storage = win[localStorageName];
api.set = function (key, val) { storage.setItem(key, val) };
api.get = function (key) { return storage.getItem(key) };
api.remove = function (key) { storage.removeItem(key) };
api.clear = function () { storage.clear() };
api.forEach = function() {
return storage;
}
} else if (globalStorageName in win && win[globalStorageName]) {
storage = win[globalStorageName][win.location.hostname];
api.set = function (key, val) { storage[key] = val };
api.get = function (key) { return storage[key] && storage[key].value };
api.remove = function (key) { delete storage[key] };
api.clear = function () { for (var key in storage ) { delete storage[key] } };
} else if (doc.documentElement.addBehavior) {
function getStorage() {
if (storage) { return storage }
storage = doc.body.appendChild(doc.createElement('div'));
storage.style.display = 'none';
// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
storage.addBehavior('#default#userData');
storage.load(localStorageName);
return storage;
}
api.set = function (key, val) {
var storage = getStorage();
storage.setAttribute(key, val);
storage.save(localStorageName);
};
api.get = function (key) {
var storage = getStorage();
return storage.getAttribute(key);
};
api.remove = function (key) {
var storage = getStorage();
storage.removeAttribute(key);
storage.save(localStorageName);
}
api.clear = function () {
var storage = getStorage();
var attributes = storage.XMLDocument.documentElement.attributes;;
storage.load(localStorageName);
for (var i=0, attr; attr = attributes[i]; i++) {
storage.removeAttribute(attr.name);
}
storage.save(localStorageName);
}
}
return api;
})();
js中引用方式:
1.引入文件:<script src="js/store.js" type="text/javascript"></script>
store.clear();//清除全部
//遍历所有
var storage = store.forEach();
for (var i=0; i<storage.length; i++) {
var key = storage.key(i)
var result= storage.getItem(key);
alert(result);
}
Songsong
var store = (function () {
var api = {},
win = window,
doc = win.document,
localStorageName = 'localStorage',
globalStorageName = 'globalStorage',
tableKeys=[],
storage;
api.set = function (key, value) {};
api.get = function (key) {};
api.remove = function (key) {};
api.clear = function () {};
if (localStorageName in win && win[localStorageName]) {
storage = win[localStorageName];
api.set = function (key, val) { storage.setItem(key, val) };
api.get = function (key) { return storage.getItem(key) };
api.remove = function (key) { storage.removeItem(key) };
api.clear = function () { storage.clear() };
api.forEach = function() {
return storage;
}
} else if (globalStorageName in win && win[globalStorageName]) {
storage = win[globalStorageName][win.location.hostname];
api.set = function (key, val) { storage[key] = val };
api.get = function (key) { return storage[key] && storage[key].value };
api.remove = function (key) { delete storage[key] };
api.clear = function () { for (var key in storage ) { delete storage[key] } };
} else if (doc.documentElement.addBehavior) {
function getStorage() {
if (storage) { return storage }
storage = doc.body.appendChild(doc.createElement('div'));
storage.style.display = 'none';
// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
storage.addBehavior('#default#userData');
storage.load(localStorageName);
return storage;
}
api.set = function (key, val) {
var storage = getStorage();
storage.setAttribute(key, val);
storage.save(localStorageName);
};
api.get = function (key) {
var storage = getStorage();
return storage.getAttribute(key);
};
api.remove = function (key) {
var storage = getStorage();
storage.removeAttribute(key);
storage.save(localStorageName);
}
api.clear = function () {
var storage = getStorage();
var attributes = storage.XMLDocument.documentElement.attributes;;
storage.load(localStorageName);
for (var i=0, attr; attr = attributes[i]; i++) {
storage.removeAttribute(attr.name);
}
storage.save(localStorageName);
}
}
return api;
})();
js中引用方式:
1.引入文件:<script src="js/store.js" type="text/javascript"></script>
store.clear();//清除全部
//遍历所有
var storage = store.forEach();
for (var i=0; i<storage.length; i++) {
var key = storage.key(i)
var result= storage.getItem(key);
alert(result);
}
Songsong
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- Tomcat端口被占用解决方法(不用重启)
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解