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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
JavaScript参数个数可变的函数举例说明
Oct 10 Javascript
Javascript this 关键字 详解
Oct 22 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 Javascript
js实现上一页下一页的效果【附代码】
Mar 10 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 Javascript
原生js实现对Ajax的封装(仿jquery)
Jan 22 Javascript
微信小程序实现页面浮动导航
Jan 28 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
Python操作Word批量生成文章的方法
2015/07/28 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
Python创建临时文件和文件夹
2020/08/05 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
教师师德承诺书
2014/03/26 职场文书
2016年国培研修日志
2015/11/13 职场文书