原文地址: Using HTML5 Web Storage

原文日期: 2010年06月28日

翻译日期: 2013年08月12日

当下Web开发领域最火爆的词语当属 HTML5。HTML5标准的新特性将得到那些不想通过东拼西凑一些功能来使得网站更快,更好,更灵活的WEB开发者热烈的欢迎。其中一个耀眼的特性是Web Storage(Web 存储)。Web存储提供一个客户端方法来保存会话信息,让我们来看看如何使用Web Storage:

Web Storage的特点

 - 值可以是任意的数据类型,只要是key-value形式可以保存的。

 - 数据将永不过期,除非用户明确调用了delete方法,或者浏览器限制了空间大小,或者其他原因(比如用户清空历史数据)

 - 数据项在整个domain(域名)内都可见。

HTML5 Web 存储方法列表

setItem(key,value): 添加一个键值对,存储到sessionStorage(会话存储)对象

getItem(key): 根据key获取值

clear(): 清空sessionStorage(会话存储)的所有键/值对

removeItem(key): 从sessionStorage 移除某个项(键值对)

key(n): 获取第n个key。

设置key/value

有两种方式可以把值存储到sessionStorage:

// 第一种方式,标准方法
sessionStorage.setItem('email','renfufei@qq.com');
// 第二种方式,直接当成普通对象属性赋值。
sessionStorage.blog = 'http://blog.csdn.net/renfufei';

获取值

同样有两种方式:

// 1. 标准方法
var email = sessionStorage.getItem('email');
// 2. 直接取属性值
var blog = sessionStorage.blog;

移除key/value

// 移除之后,再获取值,将会得到 undefined
// 根据key,移除键值对
sessionStorage.removeItem('email');

清空sessionStorage

// 全部清除
sessionStorage.clear();

非常简单的一个示例

当用户点击退出按钮时,提示"欢迎下次再来!"

<a href="javascript:;" onClick="if(sessionStorage && sessionStorage.getItem('name')) { alert('欢迎下次再来, ' + sessionStorage.getItem('name')); }">退出</a>

浏览器兼容性

就像其他酷炫的特性一样,浏览器兼容性总是焦点。 IE8以前的浏览器都不支持sessionStorage,如果想要支持更早的浏览器,你需要自己构建sessionStorage类(对象).

HTML5 web存储简单而有趣,但是 HTML5 Web Storage需要JavaScript的支持,所以在某些关键领域(场合),你可能需要审慎地使用。

你如何看待HTML5 的 Web Storage,你在开发中用到过么?



完整的代码示例如下:

<!DOCTYPE html>
<html>
 <head>
  <title>HTML5 Web Storage 示例</title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="renfufei@qq.com">
  <meta name="Keywords" content="HTML5 sessionStorage">
  <meta name="Description" content="from:http://davidwalsh.name/html5-storage">
  <!-- HTML5 建议,script 标签,不加type属性域 -->
  <script>
	// 封装为自己的方法,有一个好处,就是如果想支持更古老的浏览器,
	// 那么,可以判断是否支持HTML5,也采用自己的实现,比如cookie
	// 根据key获取值,可以指定默认值
	function get(key,defValue){
		return sessionStorage.getItem(key) || defValue;
		//return sessionStorage[key] || defValue;
	};
	// 设置key/value
	function set(key,value){
		return sessionStorage.setItem(key,value);
		//return sessionStorage[key] = value;
	};
	// 设置key/value
	function clearStorage(){
		return sessionStorage.clear();
	};
	// 退出
	function signout(){
		var name = get("name",'游客');
		if(name) {
			alert('再见, ' +name );
		}
	};
	// 设置值
	function setName(){
		var nameInput = document.getElementById("name");
		if(nameInput){
			var name = nameInput.value;
			if(!name){
				alert("姓名不能为空");
			} else {
				set('name',name);
			}
		}
	};
	// 绑定事件
	 window.addEventListener("DOMContentLoaded", function() {
        var btnsetname = document.getElementById("btnsetname");
        var btnclear = document.getElementById("btnclear");
        var btnsignout = document.getElementById("btnsignout");
        btnsetname.addEventListener("click",function(){
            //
            setName();
        });
		btnclear.addEventListener("click",function(){
            //
            clearStorage();
        });
		btnsignout.addEventListener("click",function(){
            //
            signout();
        });
    }, false);
  </script>
 </head>

 <body>
  <div>
	姓名: <input id="name" value="" /> <button id="btnsetname">确定</button>
  </div>
  <div>
	<button id="btnclear">清除数据</button>
  </div>
  <div>
	<button id="btnsignout">退出</button>
  </div>
 </body>
</html>

最新文章

  1. BEA-WEBLOGIC ---http://www.beansoft.biz/weblogic/docs92/index.html
  2. php框架-yii
  3. SZU:B47 Big Integer I
  4. java class加载机制及对象生成机制
  5. SQL储存过程
  6. Django 跨域请求处理
  7. pwnable.tw applestore 分析
  8. SpringBoot的@Enable*注解的使用介绍
  9. ubuntu默认的Python版本号修改
  10. C# 获取文件详细备注信息 (如图片、视频实际创建时间)
  11. C#获取一周的工作日显示(星期几)
  12. 记无法用被动方式登录远程linux主机的原因
  13. LeetCode 114| Flatten Binary Tree to Linked List(二叉树转化成链表)
  14. Header的Request部分和Response部分
  15. shell中数组基础语法
  16. idea 常用快捷使用
  17. 查看oracle数据库最近执行了哪些sql语句
  18. python学习笔记(五) 200行实现2048小游戏
  19. iOS中几种数据持久化方案
  20. Sql的行列转换

热门文章

  1. 整理spring定时器corn表达式
  2. Lock锁子类了解一下
  3. JS判断PC还是移动端打开网页
  4. Docker 工具和示例
  5. Python3 OS 文件/目录方法
  6. Objective-C与Java类的一些区别
  7. Dynamics CRM2016 关闭错误报告弹框提示
  8. Python实现八大排序算法(转载)+ 桶排序(原创)
  9. SceneKit:简单的3D游戏场景搭建
  10. Swift基础之Demo包含刷新,加载,网络请求,MVC