1、sessionStorage

特点:关闭浏览器(或标签页)后数据就不存在了。但刷新页面或使用“前进”、“后退按钮”后sessionStorage仍然存在;

   sessionStorage每个窗口的值都是独立的(每个窗口都有自己的数据),它的数据会随着窗口的关闭而消失,窗口间的sessionStorage也是不可以共享的;

   储存大小4M。

方法:setItem(key, value)  getItem(key)  removeItem(key)。

2、localStorage

特点:localStorage把只把数据存储在了客户端使用,不会发送的服务器上(除非你故意这样做)

   而且对于某一个域下来说,local storage是共享的(多个窗口共享一个“数据库”)

   localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

方法类似于sessionStorage

应用:

 (function(owner) {
     /**
      * 用户登录
      **/
     owner.login = function(loginInfo, callback) {
         callback = callback || $.noop;
         loginInfo = loginInfo || {};
         loginInfo.account = loginInfo.account || '';
         loginInfo.password = loginInfo.password || '';
         if (loginInfo.account.length < 5) {
             return callback('账号最短为 5 个字符');
         }
         if (loginInfo.password.length < 6) {
             return callback('密码最短为 6 个字符');
         }
         var users = JSON.parse(localStorage.getItem('$users') || '[]');
         var authed = users.some(function(user) {
             return loginInfo.account == user.account && loginInfo.password == user.password;
         });
         if (authed) {
             return owner.createState(loginInfo.account, callback);
         } else {
             return callback('用户名或密码错误');
         }
     };

     owner.createState = function(name, callback) {
         var state = owner.getState();
         state.account = name;
         state.token = "token123456789";//状态码
         owner.setState(state);
         return callback();
     };

     /**
      * 新用户注册
      **/
     owner.reg = function(regInfo, callback) {
         callback = callback || $.noop;
         regInfo = regInfo || {};
         regInfo.account = regInfo.account || '';
         regInfo.password = regInfo.password || '';
         if (regInfo.account.length < 5) {
             return callback('用户名最短需要 5 个字符');
         }
         if (regInfo.password.length < 6) {
             return callback('密码最短需要 6 个字符');
         }
         if (!checkEmail(regInfo.email)) {
             return callback('邮箱地址不合法');
         }
         var users = JSON.parse(localStorage.getItem('$users') || '[]');
         users.push(regInfo);
         localStorage.setItem('$users', JSON.stringify(users));
         return callback();
     };

     /**
      * 获取当前状态
      **/
     owner.getState = function() {
         var stateText = localStorage.getItem('$state') || "{}";
         return JSON.parse(stateText);
     };

     /**
      * 设置当前状态
      **/
     owner.setState = function(state) {
         state = state || {};
         localStorage.setItem('$state', JSON.stringify(state));
         //var settings = owner.getSettings();
         //settings.gestures = '';
         //owner.setSettings(settings);
     };

     var checkEmail = function(email) {
         email = email || '';
         return (email.length > 3 && email.indexOf('@') > -1);
     };

     /**
      * 找回密码
      **/
     owner.forgetPassword = function(email, callback) {
         callback = callback || $.noop;
         if (!checkEmail(email)) {
             return callback('邮箱地址不合法');
         }
         return callback(null, '新的随机密码已经发送到您的邮箱,请查收邮件。');
     };

     /**
      * 获取应用本地配置
      **/
     owner.setSettings = function(settings) {
         settings = settings || {};
         localStorage.setItem('$settings', JSON.stringify(settings));
     }

     /**
      * 设置应用本地配置
      **/
     owner.getSettings = function() {
             var settingsText = localStorage.getItem('$settings') || "{}";
             return JSON.parse(settingsText);
         }

 }(window.app = {}));

上述代码可以应用于H5 app的用户登录。不断的通过localStorage的setItem与getItem方法来存储用户的登陆信息。

 //登陆
 var loginInfo = {
     account: user.value,
     password: password.value
 };
 app.login(loginInfo, function(err) {
     if (err) {
         plus.nativeUI.toast(err);
         return;
     }
    //上传服务器
 });        

HTML5储存的更多相关文章

  1. html5储存篇(二)

    indexedDB   相对于html5 中提到 web SQL Database,w3c已经明确声明放弃对其的继续支持,开始支持新的客户端数据库 indexedDB ,indexedDB 是一种no ...

  2. html5 说明

    # 客户端储存历程 远古时期 cookies的用法和缺陷 userdata   HTML5时代 localstorage application cache 离线缓存 indexedeDB 客户端数据 ...

  3. Vue+localstrong登录注册,并保持登录状态

    在router.js中添加meta区分 比如登录注册页面,不需要登录即可进入,那么我们把meta中的isLogin标志设置为false { //登录 path: '/login', component ...

  4. Vue登录注册,并保持登录状态

    关于vue登录注册,并保持登录状态,是vue玩家必经之路,网上也有很多的解决方法,但是有一些太过于复杂,新手可能会看的一脸懵逼,现在给大家介绍一种我自己写项目在用而且并不难理解的一种方法. 项目中有一 ...

  5. <<< html5本地储存

    类似与Cookies,但由于Cookies储存量太小,大小也只有4-5KB的样子,html5的本地储存能存5M大小的数据 html5本地储存属性有,localStorage和sessionStorag ...

  6. 阿伦学习html5 之 Local Storage (本地储存)

    一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedObject.Google Gears.Cookie.DOM Storage.User Data.window.name.S ...

  7. HTML5 的web储存: localStorage & sessionStorage

    早期的浏览器使用cookie储存,HTML5新增web储存,包括:localStorage 和 sessiongStorage; localStorage:可以永久储存: sessionStorage ...

  8. HTML5的离线储存

    在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件.        原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技 ...

  9. 转 html5离线储存,application cache,manifest使用体验

    html5离线应用application cache 最近在APP里新增一个论坛模块,为了快速地完成,决定将整个论坛模块做成WEB APP,WEB APP最致命的就是用户体验问题,页面跳转和过多的请求 ...

随机推荐

  1. Result

    1.常用四种类型: a)          dispatcher(默认) 服务器跳转(普通转发),就是forward到一个JSP或者HTML或者其他结果页面,不能是Action 视图请求地址是     ...

  2. innerHTML和innerText

    document 对象中有innerHTML和innerText 两个属性, 这两个属性都是获取document对象的文本内容的,这两个属性间有哪些区别呢?通过几个例子来看一下. 示例1 <ht ...

  3. Oracle学习.Windows 命令行 启动ORACLE服务与实例

    使用数据库前要先打开数据库的实例和监听器! --总结启动命令如下: lsnrctl  [start|stop|status]                  --启动监听器,停止监听器,查看监听器的 ...

  4. SpringMVC接收页面表单参数(转)

    作者:CN.programmer.Luxh 和java相关 一个普通的表单. 表单的代码如下: <%@ page language="java" contentType=&q ...

  5. angularjs ngrepeat filter

    angularjs ng-repeat filter演示样例 地址

  6. poj 3294 Life Forms

    后缀数组的题目,把后缀连接起来,这个还是先二分答案,然后选取一段连续的height值,判断这些height代表的后缀有没有覆盖一半以上的字符串. 得出答案的长度之后还要在枚举连续的heigh,判断有没 ...

  7. 在Delphi中实现HexToStr函数和StrToHex函数

    function TransChar(AChar: Char): Integer; begin '] then Result := Ord(AChar) - Ord(') else Result := ...

  8. oracle本月、上月、去年同月第一天最后一天

    select trunc(sysdate, 'month') 本月第一天,        trunc(last_day(sysdate)) 本月最后一天,        trunc(add_month ...

  9. web安全培训笔记

    1.漏洞获取方法 1)扫描器扫描 2)乌云 3)线上服务漏洞 样例: 线上crm->管理员弱口令->后台上传头像处漏洞->上传php文件->进入内网->扫描内网拓扑-&g ...

  10. oracle10 权限角色

    管理权限和角色 介绍 这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在那里.   当刚刚建立用户时,用户没有任何权限,也不能执行任何操作,oracle数据库会自动创建一个方案, ...