应用范围
userdata是微软为ie专门在系统中开辟的一块存储空间,所以说只支持windows+ie的组合,实际测试在2000(ie5.5)、xp(ie6、ie7),vista(ie7)下都是可以正常使用的。
在哪儿?
在xp下,一般位于c:\documents and settings\用户名userdata,有些时候会在c:\documents and settings\用户名application data\microsoft\internet explorer\userdata。
在vista下,位于c:\users\用户名appdata\roaming\microsoft\internet explorer\userdata。
容量
网页制作完成手册中这样说:
security zone
document limit (kb)
domain limit (kb)
local machine
128
1024
intranet
512
10240
trusted sites
128
1024
internet
128
1024
restricted
64
640
线上使用时,单个文件的大小限制是128kb,一个域名下总共可以保存1024kb的文件,文件个数应该没有限制。在受限站点里这两个值分别是64kb和640kb,所以如果考虑到各种情况的话,单个文件最好能控制64kb以下。
如何使用?
用下面的js语句就可以建立一个支持userdata的对象:
o = document.createelement('input');
o.type = hidden;
o.addbehavior (#default#userdata);
//userdata.o.style.behavior = url('#default#userdata') ;
//上面的语句也是一样的作用
document.body.appendchild(o);
说白了userdata就是样式里的一个behavior,所以这样写也是一样的:
userdata可以绑定在大多数的html标签上,具体为:
a, acronym, address, area, b, big, blockquote, button, caption, center, cite, code, dd, del, dfn, dir, div, dl, dt, em, font, form, hn, hr, i, img, input type=button, input type=checkbox, input type=file, input type=hidden, input type=image, input type=password, input type=radio, input type=reset, input type=submit, input type=text, kbd, label, li, listing, map, marquee, menu, object, ol, option, p, plaintext, pre, q, s, samp, select, small, span, strike, strong, sub, sup, table, textarea, tt, u, ul, var, xm
userdata对象有以下的属性和方法:
属性
描述
expires
设置或读取文件过期时间
xmldocument
读取文件的xml dom
方法
描述
getattribute
读取指定属性的值
load
打开文件
removeattribute
删除指定的属性
save
保存文件
setattribute
为指定属性赋值
userdata文件实际上就是一个xml文件,通过文件名->属性的方式保存字符串,如以下一段代码:
o.setattribute(code, hello world!);
o.save(baidu);
执行后,userdata文件夹中会生成一个baidu[1].xml文件,其中的内容是:
在一个文件中可以有多个属性,也就是可以存储多种不同的数据。
在音乐盒链接保存项目里,封装了一个userdata类,这样可以更方便地使用userdata,代码如下:
复制代码 代码如下:
/** @class 定义userdata的操作 */
var userdata = {
// 定义userdata对象
o : null,
// 设置文件过期时间
defexps : 365,
// 初始化userdate对象
init : function(){
if(!userdata.o){
try{
userdata.o = document.createelement('input');
userdata.o.type = hidden;
//userdata.o.style.behavior = url('#default#userdata') ;
userdata.o.addbehavior (#default#userdata);
document.body.appendchild(userdata.o);
}catch(e){
return false;
}
};
return true;
},
// 保存文件到userdata文件夹中 f-文件名,c-文件内容,e-过期时间
save : function(f, c, e){
if(userdata.init()){
var o = userdata.o;
// 保持对象的一致
o.load(f);
// 将传入的内容当作属性存储
if(c) o.setattribute(code, c);
// 设置文件过期时间
var d = new date(), e = (arguments.length == 3) ? e : userdata.defexps;
d.setdate(d.getdate()+e);
o.expires = d.toutcstring();
// 存储为制定的文件名
o.save(f);
}
},
// 从uerdata文件夹中读取指定文件,并以字符串形式返回。f-文件名
load : function(f){
if(userdata.init()){
var o = userdata.o;
// 读取文件
o.load(f);
// 返回文件内容
return o.getattribute(code);
}
},
// 检查userdata文件是否存在 f-文件名
exist : function(f){
return userdata.load(f) != null;
},
// 删除userdata文件夹中的指定文件 f-文件名
remove : function(f){
userdata.save(f, false, -userdata.defexps);
}
// userdata函数定义结束
};