应用范围 
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,所以这样写也是一样的: 
<input type=hidden class= storeuserData /> 
<style> 
.storeuserData {behavior:url(#default#userData);} 
</style> 
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文件,其中的内容是: 
<ROOTSTUB code="hello,world!"/> 
在一个文件中可以有多个属性,也就是可以存储多种不同的数据。 
在音乐盒链接保存项目里,封装了一个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函数定义结束 
}; 
您可能感兴趣的文章:
