在前端开发中,我们会常遇到要在两个甚至多个html之间通信,我们可以在url中添加参数,但是当要传递的数据量较大较多时呢,不妨试试html5 的localStorage吧。

1) 检测你的浏览器是否支持localStorage:

            if(window.localStorage){

alert('YES!');

else alert('NO!');

2) 数据都是以键值对的形式存储在localStorage中的,使用时直接在window.localStorage中添加一个属性就可以了,定义和修改的示例如下:

//在window.localStorage添加一个test属性,并赋值test1的三种实现方式

localStorage.test = “test1”;

localStorage[“test”] = “test1”;

localStorage.setItem(“test”,”test1”);

//属性值得修改同其的定义方式一样

//属性值的获取

var test = localStorage.test;

var test = localStorage[“test”];

var test = localStorage.getItem(“test”);

//属性的删除

localStorage.removeItem(“test”);//清除属性test

localStorage.clear();//清除所有的属性

3) localStorage提供的key()和length可以方便的实现所有属性的数据遍历,例:

var storage = window.localStorage;

var key = “”;

for(var i = 0;I < storage.length;i++){

key = storage.key(i);

console.log(key + “ : ” + localStorage.getItem(key));

}

4)localStorage仅能存储这种key/value键值对形式的数据,如果我们要存储的数据量比较大那,可以试试把这些数据转化为json数据,作为value值存储进去。如:

//set the infomation

var json = {“name”:”echo”,”message”:”hello localStorage”,”id”:1};

localStorage.setItem(“info”,json);

//get the information

var info = localStorage.getItem(“info”);

info = eval(“(” + info + ”)”);

console.log(“name:”+info.name+” message:”+info.message);

5)如果你用html5 的canvas做开发,你可以把这个canvas的内容生成一个快照在另一个html中显示,如:

//普通canvas实现

var canvas = document.getElementById(“canvas”);

var url = canvas.toDataURL(“image/png”);

localStorage.setItem(“image”,url);

//如果你用webgl做3D开发,可这么实现

var url = renderer.domElement.toDataURL('image/png','name');

localStorage.setItem("image",url);

6)最后,localstorage唯一的优点就是语法简单,但是性能并不是很好,能不用的时候尽量不用。

最新文章

  1. PHP uniqid 高并发生成不重复唯一ID
  2. Android进程保活
  3. 优秀ASP.NET程序员修炼之路
  4. 20145212 实验四《Andoid开发基础》
  5. Gerrit日常操作命令收集
  6. 第一章 : javaScript框架分类及主要功能
  7. HTML---常见标签与插入背景音乐;
  8. [C#] Extension Method 扩展方法
  9. 庞锋 OpenCV 视频 学习进度备忘
  10. Netty 中文教程 Hello World !详解
  11. getDefinitionByName与ApplicationDomain.getDefinition
  12. 2015年10月23日JS笔记
  13. Delphi Length函数
  14. linux下环境变量PS1设置
  15. Ubuntu + VMware=Linux虚拟机
  16. BZOJ 3211: 花神游历各国【线段树区间开方问题】
  17. ES2015 中的函数式Mixin
  18. js封装一个模块
  19. c/c++ new delete初探
  20. node (02 CommonJs 和 Nodejs 中自定义模块)顺便讲讲module.exports和exports的区别 dependencies 与 devDependencies 之间的区别

热门文章

  1. Github for Windows使用介绍
  2. centos Apache、php、mysql默认安装路径
  3. oc面向对象特性: 多态
  4. .net4.0及Silverlight_Tools for vs2008sp1安装失败解决办法
  5. 《CSS3实战》读书笔记 第2章 层叠样式表(CSS)
  6. 第五章:创建DbContext
  7. fastjson是阿里巴巴的开源JSON解析库
  8. python递归理解图
  9. inet_ntoa、 inet_aton、inet_addr
  10. Linux 高精確的時序(sleep, usleep,nanosleep) from:http://blog.sina.com.cn/s/blog_533ab41c0100htae.html