HTML5储存
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储存的更多相关文章
- html5储存篇(二)
indexedDB 相对于html5 中提到 web SQL Database,w3c已经明确声明放弃对其的继续支持,开始支持新的客户端数据库 indexedDB ,indexedDB 是一种no ...
- html5 说明
# 客户端储存历程 远古时期 cookies的用法和缺陷 userdata HTML5时代 localstorage application cache 离线缓存 indexedeDB 客户端数据 ...
- Vue+localstrong登录注册,并保持登录状态
在router.js中添加meta区分 比如登录注册页面,不需要登录即可进入,那么我们把meta中的isLogin标志设置为false { //登录 path: '/login', component ...
- Vue登录注册,并保持登录状态
关于vue登录注册,并保持登录状态,是vue玩家必经之路,网上也有很多的解决方法,但是有一些太过于复杂,新手可能会看的一脸懵逼,现在给大家介绍一种我自己写项目在用而且并不难理解的一种方法. 项目中有一 ...
- <<< html5本地储存
类似与Cookies,但由于Cookies储存量太小,大小也只有4-5KB的样子,html5的本地储存能存5M大小的数据 html5本地储存属性有,localStorage和sessionStorag ...
- 阿伦学习html5 之 Local Storage (本地储存)
一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedObject.Google Gears.Cookie.DOM Storage.User Data.window.name.S ...
- HTML5 的web储存: localStorage & sessionStorage
早期的浏览器使用cookie储存,HTML5新增web储存,包括:localStorage 和 sessiongStorage; localStorage:可以永久储存: sessionStorage ...
- HTML5的离线储存
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件. 原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技 ...
- 转 html5离线储存,application cache,manifest使用体验
html5离线应用application cache 最近在APP里新增一个论坛模块,为了快速地完成,决定将整个论坛模块做成WEB APP,WEB APP最致命的就是用户体验问题,页面跳转和过多的请求 ...
随机推荐
- C程序设计语言--宏定义
C语言中的宏定义 C语言中的宏定义也叫做预处理命令,预处理命令是C语言本身的组成部分,不能直接对它们进行编译. 1.基本概念: 1>预处理不是C语句,是在编译前进行的 2>预处理功能主要用 ...
- codeforces 732D
D. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- C#中A a=new B()的意义
A a=new B()的意义 前提:A是B的父类. A a = new B(); 或 A a; B b=new B(); a=b; 这一句的过程是这样的, 1)创建一个类A的引用a 2)创建一个类B的 ...
- JavaScript- 省市联动代码
以下是JS省市联动菜单代码: 代码一: <html> <head> <title></title> <script language=" ...
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- Ubuntu14.04搭建cocos2dx2.2.5开发环境(超级具体)
一 下载解压 官方下载地址:http://www.cocos2d-x.org/download 下载下来之后解压完毕之后会得到一个文件夹cocos2d-x-2.2.5 二 编译 1 安装依赖 cd到c ...
- Bootstrap-模态框Modal使用
传值使用JavaScript方式吧,代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...
- 通过开发工具发布web应用到tomcat服务器中--对于小白,大神可以忽略不看,勿喷,谢谢
需要的工具 MyEclipse和TomCat 本人用的是MyEclipse2014和TomCat7 TomCat结构图 第一步:在MyEclipse中配置TomCat 如图所示: 第二步:创建Web项 ...
- CentOS7系统下搭建Jenkins环境
1. 安装JDK yum -y install java 2.安装Ant 添加JPackage源 yum -y install wget wget http://www.jpackage.org/jp ...