在前端开发中,咱们会常遇到要在两个甚至多个html之间通讯,咱们能够在url中添加参数,可是当要传递的数据量较大较多时呢,不妨试试html5 的localStorage吧。 html
1) 检测你的浏览器是否支持localStorage:前端
if(window.localStorage){html5
alert('YES!');web
} else alert('NO!');json
2) 数据都是以键值对的形式存储在localStorage中的,使用时直接在window.localStorage中添加一个属性就能够了,定义和修改的示例以下:canvas
//在window.localStorage添加一个test属性,并赋值test1的三种实现方式浏览器
localStorage.test = “test1”;dom
localStorage[“test”] = “test1”; post
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惟一的优势就是语法简单,可是性能并非很好,能不用的时候尽可能不用。