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 相关文章推荐
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
Oct 14 Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 Javascript
jQuery异步提交表单实例
May 30 jQuery
jquery仿京东商品放大浏览页面
Jun 06 jQuery
原生js实现省市区三级联动代码分享
Feb 12 Javascript
vue项目中添加单元测试的方法
Jul 21 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
微信小程序实现电子签名功能
Jul 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开发中四种查询返回结果分析
2011/01/02 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
js DataSet数据源处理代码
2010/03/29 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
音乐教育感言
2014/03/05 职场文书
出差报告格式模板
2014/11/06 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
小学中队委竞选稿
2015/11/20 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL