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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
jquery下操作HTML控件的实现代码
Jan 12 Javascript
js和jquery使按钮失效为不可用状态的方法
Jan 26 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
微信小程序 setData的使用方法详解
Apr 20 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
vue项目中锚点定位替代方式
Nov 13 Javascript
JS 数组基本用法入门示例解析
Jan 16 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python中的choice()方法使用详解
2015/05/15 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
运动会开幕式解说词
2014/02/05 职场文书
高考备战决心书
2014/03/11 职场文书
春游踏青活动方案
2014/08/14 职场文书
2016公司年会主持词
2015/07/01 职场文书
升学宴来宾致辞
2015/07/27 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android