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 相关文章推荐
jQuery 行级解析读取XML文件(附源码)
Oct 12 Javascript
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 Javascript
使用jquery给指定的table动态添加一行、删除一行
Oct 13 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
Dec 26 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
实习求职信
2013/12/01 职场文书
高一地理教学反思
2014/01/18 职场文书
三个儿子教学反思
2014/02/03 职场文书
《乞巧》教学反思
2014/02/27 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
个人欠款担保书
2014/05/20 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
对讲机知识
2022/04/07 无线电