UserData用法总结 lanyu出品


Posted in Javascript onJuly 01, 2010

应用范围
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函数定义结束 
};
Javascript 相关文章推荐
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
javascript闭包传参和事件的循环绑定示例探讨
Apr 17 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
javascript中Function类型详解
Apr 28 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
JavaScript面向对象编写购物车功能
Aug 19 Javascript
深入理解JavaScript中的for循环
Feb 07 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
详解VUE中v-bind的基本用法
Jul 13 Javascript
javascript 函数调用的对象和方法
Jul 01 #Javascript
this和执行上下文实现代码
Jul 01 #Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 #Javascript
jquery validate使用攻略 第四步
Jul 01 #Javascript
jquery.validate使用攻略 第三部
Jul 01 #Javascript
jquery.validate使用攻略 第二部
Jul 01 #Javascript
jQuery Validation插件remote验证方式的Bug解决
Jul 01 #Javascript
You might like
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
python和c语言的主要区别总结
2019/07/07 Python
用Python配平化学方程式的方法
2019/07/20 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Python学习之time模块的基本使用
2021/01/17 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
保洁主管岗位职责
2013/11/20 职场文书
中专自我鉴定
2014/02/05 职场文书
晚归检讨书
2014/02/19 职场文书
班级学习计划书
2014/04/27 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
大学军训通讯稿
2015/07/18 职场文书
高温慰问简报
2015/07/21 职场文书