客户端存储---利用IE userData持久化数据
IE5及以上版本的浏览器是通过document元素后面附加一个专属“DHTML行为”来实现客户存储的。
如下:
var memory = document.createElement(“div”);
memory.id = “_memory”;
memory.style.display = “none”;
memory.style.behavior = “url(‘#default#userData’)”;//附加userData行为
document.body.appendChild(memory); //将其添加到document元素中。
一旦给元素赋予了“userData“行为,该元素就拥有load()和save()方法。load()方法用于载入存储的数据。使用它的时候必须传递一个字符串作为参数----类似于一个文件名,该参数用来指定要载入的存储数据。当数据载入后,就可以通过该元素的属性来访问这些名、值对形式的数据,可以使用getAttribute()来查询这些数据。通过setAttribute()方法来设置属性,然后调用save()方法可以存储新的数据;removeAttribute()方法删除数据然后调用save()方法再保存一下。
memory.load(“myStoreData”);
var name =memory.getAttribute(“username”);
if(!name){
name = prompt(“What is your name?”);
memory.setAttribute(“ username”,name);
memory.save(“myStoreData”);
}
默认情况下,通过userData存储的数据,除非拖动删除否则永不失效。但是,也可以通过设置expires属性来指定过期时间。如下
var now = (newDate()).getTime();
var expires =now+100*24*60*60*1000; //距离当前100天,把天数换算成毫秒
expires = new Date(expires).toUTCString();
memory.expires = expires;
例:基于IE的userData实现部分存储API
function userDataStroage(maxage){
创建document元素并附加userData行为
var memory = document.createElement(“div”);
memory.id= “_memory”;
memory.style.display= “none”;
memory.style.behavior= “url(‘#default#userData’)”; //附加userData行为
document.body.appendChild(memory);//将其添加到document元素中。
if(maxage){
var now = new Date().getTime();
var expires = now+maxage*1000;
memory.expires = new Date(expires).toUTCString();
}
memory.load(“UserDataStorage”);
this.getItem= function(key){
return memory.getAttribute(key)|| null;
};
this.setItem = function(key,value){
memory.setAttribute(key,value);
memory.save(“UserDataStorage”);
}
this.removeItem = function(key){
memory.removeAttribute(key);
memory.save(“UserDataStorage”);
}
}
引用时
<!--if IE-->
<script type=”text/javascript” src=”UserDataStorage.js”></script>
<!--endif-->