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 相关文章推荐
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
javascript 二进制运算技巧解析
Nov 27 Javascript
文本框回车提交与禁止提交示例
Sep 27 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
Dec 16 Javascript
深入理解javascript中concat方法
Dec 12 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 Javascript
详解React路由传参方法汇总记录
Nov 29 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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 解析XML文件
2009/04/15 Python
Python程序中设置HTTP代理
2016/11/06 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
区域总监的岗位职责
2013/11/21 职场文书
施工班组长岗位职责
2014/01/05 职场文书
24岁生日感言
2014/01/13 职场文书
一夜的工作教学反思
2014/02/08 职场文书
学校门卫岗位职责
2014/03/16 职场文书
总账会计岗位职责
2015/04/02 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
Go并发4种方法简明讲解
2022/04/06 Golang