web前端实现本地存储
2014-10-14 12:40
513 查看
当我们在提及web前端本地存储的时候,首先需要介绍一下本地化存储的概念和历史。本地化存储从来不是一个新奇的概念,因为web应用程序一直在追求的就是媲美甚至超越桌面应用程序。但是桌面应用程序一直优于web应用程序一个很重要的原因是它的本地化存储得到了很好的支持。对于本地应用程序,操作系统会提供一个抽象层,用于存储和获取特定于应用程序的数据,这些数据可以存储于注册表、INI文件,或者其他什么地方,这取决于操作系统的实现,如果本地应用程序需要不单是键值对形式的本地存储,可以使用嵌入式数据库或其他很多种解决方案。而对于web应用程序,它的本地存储一步一步走到今天的HTML5本地存储是非常不容易的。为了描述它的历史,我们可以先看一张图片:
View Code
至于第二种,在github上面有很多优秀的代码,博主这里推荐其中一份:github localStorage
最后,欢迎转载原文,但是希望加上转载链接:/article/5237475.html
if (!window.localStorage) { Object.defineProperty(window, "localStorage", new (function () { var aKeys = [], oStorage = {}; Object.defineProperty(oStorage, "getItem", { value: function (sKey) { return sKey ? this[sKey] : null; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "key", { value: function (nKeyId) { return aKeys[nKeyId]; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "setItem", { value: function (sKey, sValue) { if(!sKey) { return; } document.cookie = escape(sKey) + "=" + escape(sValue) + "; path=/"; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "length", { get: function () { return aKeys.length; }, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "removeItem", { value: function (sKey) { if(!sKey) { return; } var sExpDate = new Date(); sExpDate.setDate(sExpDate.getDate() - 1); document.cookie = escape(sKey) + "=; expires=" + sExpDate.toGMTString() + "; path=/"; }, writable: false, configurable: false, enumerable: false }); this.get = function () { var iThisIndx; for (var sKey in oStorage) { iThisIndx = aKeys.indexOf(sKey); if (iThisIndx === -1) { oStorage.setItem(sKey, oStorage[sKey]); } else { aKeys.splice(iThisIndx, 1); } delete oStorage[sKey]; } for (aKeys; aKeys.length > 0; aKeys.splice(0, 1)) { oStorage.removeItem(aKeys[0]); } for (var iCouple, iKey, iCouplId = 0, aCouples = document.cookie.split(/\s*;\s*/); iCouplId < aCouples.length; iCouplId++) { iCouple = aCouples[iCouplId].split(/\s*=\s*/); if (iCouple.length > 1) { oStorage[iKey = unescape(iCouple[0])] = unescape(iCouple[1]); aKeys.push(iKey); } } return oStorage; }; this.configurable = false; this.enumerable = true; })()); }
View Code
至于第二种,在github上面有很多优秀的代码,博主这里推荐其中一份:github localStorage
最后,欢迎转载原文,但是希望加上转载链接:/article/5237475.html
相关文章推荐
- Web前端实现本地存储
- JavaScript 实践HTML5 localStorage 本地存储Json等数据 助于移动设备和web前端开发
- (十)HTML5本地存储——SQLLite实现web留言本
- VUE+WebPack精美游戏设计:实现像微信红包打开时钱币转动的动画精灵和页面数据的本地存储
- web前端-在迷惘中的探索HTML5(二)本地存储之IndexDB
- 【麦子学院】03.web前端开发之html5本地存储、网页留言板、video、audio、HTML5拖放
- web存储 实现本地存储
- 【web前端】折腾:瀑布流布局(基于多栏列表流体布局实现)
- 巧用FileSystem组件实现WEB应用中的本地特定打印的方法
- 使用 HTML 5 开启移动 Web 应用程序的本地存储
- 【web前端】JavaScript实现图片幻灯片滚动播放动画效果
- 分离mysql和存储实现双web负载均衡
- SideShow Gadget本地存储实现
- 前端 _本地存储问题
- HTML5开发学习(3):本地存储之Web Sql Database(附源码)
- html5-web本地存储
- html5的本地存储localstorage和web databases
- SideShow Gadget本地存储实现
- 【Nutch】Linux下应用nutch 1.0 Web前端实现单机检索
- 【web前端】团购类网站倒计时的js实现