- sessionStorage
- localStorage
从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了;而localStorage则一直将数据保存在客户端本地,除非主动删除数据,否则数据是永远不会过期的;不管是sessionStorage,还是localStorage,可使用的API都相同,常用的有如下几个方法:
- 保存数据:localStorage.setItem( key, value ); sessionStorage.setItem( key, value );
- 读取数据:localStorage.getItem( key ); sessionStorage.getItem( key );
- 删除单个数据:localStorage.removeItem( key ); sessionStorage.removeItem( key );
- 删除所有数据:localStorage.clear( ); sessionStorage.clear( );
- 得到某个索引的key:localStorage.key( index ); sessionStorage.key( index );
两个都有属性 length 表示key 的个数,也即 key 长度:
var keyLength1 = localStorage.length; var keyLength2 = sessionStorage.length;如上,key 和 value 都必须为字符串,换言之,web Storage的API只能操作字符串。
web storage的浏览器支持情况的判断:
在使用web storage时首先判断是否支持该功能,有些版本浏览器不支持(如IE7及之前的版本不支持),只有支持才可以使用,判断方法如下:
[javascript]
- if(window.localStorage){ //或者 window.sessionStorage
- alert("浏览支持localStorage")
- }else{
- alert("浏览暂不支持localStorage")
- }
- //或者
- if(typeof window.localStorage == 'undefined') { //或者 window.sessionStorage
- alert("浏览暂不支持localStorage")
- }
1,录入联系人,联系人有姓名、手机号码2个字段,以手机号作为key存入localStorage;
2,根据手机号码,查找机主; 3,列出当前已保存的所有联系人信息;首先,准备一个简单的HTML页面,如下:
[html]
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8"/>
- <title>HTML5本地存储之Web Storage篇</title>
- </head>
- <body>
- <div style="border: 2px dashed #ccc;width:320px;text-align:center;">
- <label for="user_name">姓名:</label>
- <input type="text" id="user_name" name="user_name" class="text"/>
- <br/>
- <label for="mobilephone">手机:</label>
- <input type="text" id="mobilephone" name="mobilephone"/>
- <br/>
- <input type="button" onclick="save()" value="新增记录"/>
- <hr/>
- <label for="search_phone">输入手机号:</label>
- <input type="text" id="search_phone" name="search_phone"/>
- <input type="button" onclick="find()" value="查找机主"/>
- <p id="find_result"><br/></p>
- </div>
- <br/>
- <div id="list">
- </div>
- </body>
- </html>
[javascript]
- //保存数据
- function save(){
- var mobilephone = document.getElementById("mobilephone").value;
- var user_name = document.getElementById("user_name").value;
- if(window.localStorage){
- localStorage.setItem(mobilephone,user_name);
- }else{
- alert("浏览器还不支持 web storage 功能");
- }
- }
要实现查找机主,则实现如下JS方法:
[javascript]
- //查找数据
- function find(){
- var search_phone = document.getElementById("search_phone").value;
- var name = "";
- if(window.localStorage){
- localStorage.getItem(search_phone);
- }else{
- alert("浏览器还不支持 web storage 功能");
- return; //采用其他处理方式
- }
- var find_result = document.getElementById("find_result");
- find_result.innerHTML = search_phone + "的机主是:" + name;
- }
[javascript]
- //将所有存储在localStorage中的对象提取出来,并展现到界面上
- function loadAll(){
- var list = document.getElementById("list");
- if( !window.localStorage ){
- alert("浏览器还不支持 web storage 功能");
- return; //可进行其他处理
- }
- if(localStorage.length>0){
- var result = "<table border='1'>";
- result += "<tr><td>姓名</td><td>手机号码</td></tr>";
- for(var i=0;i<localStorage.length;i++){
- var mobilephone = localStorage.key(i);
- var name = localStorage.getItem(mobilephone);
- result += "<tr><td>"+name+"</td><td>"+mobilephone+"</td></tr>";
- }
- result += "</table>";
- list.innerHTML = result;
- }else{
- list.innerHTML = "目前数据为空,赶紧开始加入联系人吧";
- }
- }
如下简单演示增加了公司属性的联系人保存JS代码:
[javascript]
- //保存数据
- function save(){
- var contact = new Object;
- contact.user_name = document.getElementById("user_name").value;
- contact.mobilephone = document.getElementById("mobilephone").value;
- contact.company = document.getElementById("company").value;
- var str = JSON.stringify(contact); //需要引用相关的JSON包
- if(window.localStorage){
- localStorage.setItem(contact.mobilephone,str);
- }else{
- alert("浏览器还不支持 web storage 功能");
- return; //采用其他处理方式
- }
- loadAll();
- }
- //将所有存储在localStorage中的对象提取出来,并展现到界面上
- function loadAll(){
- var list = document.getElementById("list");
- if( !window.localStorage ){
- alert("浏览器还不支持 web storage 功能");
- return; //可进行其他处理
- }
- if(localStorage.length>0){
- var result = "<table border='1'>";
- result += "<tr><td>姓名</td><td>手机</td><td>公司</td></tr>";
- for(var i=0;i<localStorage.length;i++){
- var mobilephone = localStorage.key(i);
- var str = localStorage.getItem(mobilephone);
- var contact = JSON.parse(str);
- result += "<tr><td>"+contact.user_name+"</td><td>"+contact.mobilephone+"</td><td>"+contact.company+"</td></tr>";
- }
- result += "</table>";
- list.innerHTML = result;
- }else{
- list.innerHTML = "目前数据为空,赶紧开始加入联系人吧";
- }
- }