UserData的应用范围

serData是微软为IE专门在系统中开辟的一块存储空间,所以说只支持Windows+IE的组合,实际测试在2000(IE5.5)、XP(IE6、IE7),Vista(IE7)下都是可以正常使用的。

UserData存储在哪儿?

首先设置文件夹全部显示,在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。

UserData容量

安全区域 页大小限制 域大小限制
Intranet 512KB 10MB
本机、可信任区域及Internet 128KB 1MB
受限制区域 64KB 640KB

线上使用时,单个文件的大小限制是128KB,一个域名下总共可以保存1024KB的文件,文件个数应该没有限制。在受限站点里这两个值分别是64KB和640KB,所以如果考虑到各种情况的话,单个文件最好能控制64KB以下。

由名/值对是作为XML节点的属性存储在userData的XML文档中,因此Internet Explorer可以自动将某些特殊字符转义为XML中的对应字符。例如,双引号(”)会被替换为",而连字符(&)会被替换 为&。由于这些自动转义的字符会增加实际存储的数据大小,因此开发人员必须确保有足够的空间来存储转义后的数据。

UserData如何使用?

UserData其实就是借助一个方法给xml文件添加修改数据

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创建

var oUserData = document.body;
oUserData.addBehavior("#default#userdata");

UserData数据设置保存

oUserData.setAttribute("name","dtdxrk");
oUserData.save("cs");

执行后,UserData文件夹中会生成一个cs[1].xml文件,其中的内容是:
<ROOTSTUB name="dtdxrk"/>

UserData数据读取

oUserData.load("cs");
oUserData.getAttribute("name");

UserData删除属性

oUserData.removeAttribute("name")

UserData设置过期时间

var d = new Date();
d.setDate(d.getDate()+365);
oUserData.expires = d.toUTCString();

如果不设置时间会被默认为永久保存

UserData作用域

不同域、甚至同一域下的不同子域之间都不能共享数据。此 外,同一主机不同端口上的应用程序之间也无法共享数据。我们只能在同域同目录下的不同页面之间共享数据。例如,http://abc.com/Storage/Checkout.html可以访问http://abc.com/Storage/UserData.html,以及任何/Storage/目录下网页所存储的数据。如果试图从其他页面访问,仅会返回一个null。这些默认的限制是无法 改变的,并且几乎与cookie的默认规则恰恰相反。这也使得userData成为了Internet Explore中少数几个较为安全的功能之一。

UserData封装的方法

 var oUserData = {
oStart : null,
init : function(){
if(oUserData.oStart == null){
oUserData.oStart = document.body;
oUserData.oStart.addBehavior("#default#userdata");
}
},
/*
XmlName xml文件名称
attr 属性
data 数据
expiresDays 数据保存天数 不填为永久
*/
save : function(XmlName, attr, data, expiresDays){
try{
oUserData.init();
var oStart = oUserData.oStart;
if(attr && data) oStart.setAttribute(attr, data);
if(expiresDays){
var d = new Date();
d.setDate(d.getDate()+expiresDays);
oUserData.expires = d.toUTCString();
}
oStart.save(XmlName);
}catch(e){
alert("保存UserData失败!");
}
},
load : function(XmlName, attr){
try{
oUserData.init();
var oStart = oUserData.oStart;
if(oStart.load(XmlName)!==null && attr){
oStart.load(XmlName);
return oStart.getAttribute(attr);
}
}catch(e){
alert("提取UserData失败!");
}
},
del : function(XmlName, attr){
try{
oUserData.init();
var oStart = oUserData.oStart;
if(oStart.load(XmlName)!==null && attr){
oStart.load(XmlName);
oStart.removeAttribute(attr);
oStart.save(XmlName);
}
}catch(e){
alert("删除UserData失败!");
}
}
} oUserData.save("lx","name","dtdxrk");
oUserData.del("lx","name");
oUserData.save("lx","name2","dtdxrk2");
alert(oUserData.load("lx","name"));
alert(oUserData.load("lx","name2"));

原生JavaScript常用本地浏览器存储方法三(UserData IE Only)的更多相关文章

  1. 原生JavaScript常用本地浏览器存储方法一(方法类型)

    有时需要将网页中的一些数据保存在浏览器端.好处就是当下次访问页面时,直接就可以从本地读取数据,不需要再次向服务器请求数据.目前常用的有以下几种方法: 1.cookie cookie会随着每次HTTP请 ...

  2. 原生JavaScript常用本地浏览器存储方法四(HTML5 LocalStorage sessionStorage)

    HTML5 LocalStorage浏览器的支持的情况如上图,IE在8.0的时候就支持了.不过需要注意的是,IE测试的时候需要服务器环境(或者localhost). 测试自然是检测浏览器是否支持本地存 ...

  3. 原生JavaScript常用本地浏览器存储方法五(LocalStorage+userData的一个浏览器兼容类)

    基于LocalStorage+globalStorage+userData实现的一个本地存储类 userData用来兼容ie6 ie7 由userData模仿Session的方法:浏览器关闭删除保存的 ...

  4. 原生JavaScript常用本地浏览器存储方法二(cookie)

    JavsScript Cookie概述 cookie是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是Jav ...

  5. 原生javascript实现类似jquery on方法的行为监听

    原生javascript有addEventListener和attachEvent方法来注册事件,但有时候我们需要判断某一行为甚至某一函数是否被执行了,并且能够获取前一行为的参数,这个时候就需要其他方 ...

  6. 原生JavaScript常用的DOM操作

    之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或 ...

  7. MUI常用脚本及原生JavaScript常用操作元素方法

    1.mui元素转换html元素 var obj=mui("#id")[0]; 2.事件绑定 var btn = document.getElementById("logi ...

  8. JavaScript常用全局属性与方法

    最近,在学习JavaScript,Java作域链包含全局,记录下常用的全局属性与方法,就当是知识的积累,未列出全部,如需查看全部可参考JS相关的API文档. 常用的全局属性:  全局属性      作 ...

  9. 原生javascript实现阻止浏览器默认行为与阻止事件冒泡

    不同的浏览器之间存在兼容问题,在IE与标准浏览器之间存在很大的差异,所以在实现阻止浏览器默认行为和阻止事件冒泡就要考虑要它们之间的不同 /** * 取消冒泡 * @param {事件} e */ fu ...

随机推荐

  1. Notepad++ 编译运行java,c,c++

    1.Java NPP_SAVE cd $(CURRENT_DIRECTORY) D:\tibco\bw6\tibcojre64\1.8.0\bin\javac.exe "$(FILE_NAM ...

  2. git中常用命令

    1.全局安装git Git-2.11.1-64-bit() //配置gitgit config --global user.name "您的git账号名"git config -- ...

  3. ERROR: `elasticsearch` directory is missing in the plugin zip

    该问题出现在为elasticsearch安装中文分词器插件时 问题发生在插件和es版本不匹配~ 解决: es版本与插件版本对应齐 命令行安装 C:\Users\SeeClanUkyo>F:\el ...

  4. PHP-FPM参数详情

    pid = run/php-fpm.pid #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log #错误日志,默认在 ...

  5. codevs1504愚蠢的组合数 / RQNOJ愚蠢的组合数

    1504 愚蠢的组合数  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 最近老师教了狗狗怎么算组合数,狗狗又 ...

  6. 洛谷 P5436 【XR-2】缘分 题解

    P5436 [XR-2]缘分 题目背景 世间万物都置身于缘分编织的大网中.缘分未到,虽历经千劫,却不能相遇.缘分到了,在草原上都能等到一艘船.--<一禅小和尚> 题目描述 一禅希望知道他和 ...

  7. socket.error: [Errno 32] Broken pipe . tcp

    经过检查发现,是由于客户端请求的链接,在一次循环之后,产生的套接字关闭,没有新的客户端套接字进行请求连接,所以产生broken pipe错误

  8. 自动化部署--Jenkins

    自动化部署--Jenkins--简介安装(一) https://www.jianshu.com/p/b9ce206139f1 自动化部署--Jenkins--Maven构建(二)  https://w ...

  9. hbase 在线修复集群命令

    前提:HDFS fsck确保hbase根目录下文件没有损坏丢失,如果有,则先进行corrupt block移除. 切记:一定要在所有Region都上线之后再修复,否则修复之后可能出现重复Region. ...

  10. border-radius后面写px/rem与百分比有什么区别?

    首先百分比,表示的是设置50%表示的是圆是弧度,设置px/rem,是表示你想要变圆弧的半径是多少