原生JavaScript常用本地浏览器存储方法三(UserData IE Only)
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)的更多相关文章
- 原生JavaScript常用本地浏览器存储方法一(方法类型)
有时需要将网页中的一些数据保存在浏览器端.好处就是当下次访问页面时,直接就可以从本地读取数据,不需要再次向服务器请求数据.目前常用的有以下几种方法: 1.cookie cookie会随着每次HTTP请 ...
- 原生JavaScript常用本地浏览器存储方法四(HTML5 LocalStorage sessionStorage)
HTML5 LocalStorage浏览器的支持的情况如上图,IE在8.0的时候就支持了.不过需要注意的是,IE测试的时候需要服务器环境(或者localhost). 测试自然是检测浏览器是否支持本地存 ...
- 原生JavaScript常用本地浏览器存储方法五(LocalStorage+userData的一个浏览器兼容类)
基于LocalStorage+globalStorage+userData实现的一个本地存储类 userData用来兼容ie6 ie7 由userData模仿Session的方法:浏览器关闭删除保存的 ...
- 原生JavaScript常用本地浏览器存储方法二(cookie)
JavsScript Cookie概述 cookie是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是Jav ...
- 原生javascript实现类似jquery on方法的行为监听
原生javascript有addEventListener和attachEvent方法来注册事件,但有时候我们需要判断某一行为甚至某一函数是否被执行了,并且能够获取前一行为的参数,这个时候就需要其他方 ...
- 原生JavaScript常用的DOM操作
之前项目一直都是用JQuery或者Vue来做的,确实好用,毕竟帮我们解决了很多浏览器兼容问题,但是后面发现大公司面试题都是要原生Javascript来做,然后我就一脸懵逼哈哈哈,毕竟大公司需要的框架或 ...
- MUI常用脚本及原生JavaScript常用操作元素方法
1.mui元素转换html元素 var obj=mui("#id")[0]; 2.事件绑定 var btn = document.getElementById("logi ...
- JavaScript常用全局属性与方法
最近,在学习JavaScript,Java作域链包含全局,记录下常用的全局属性与方法,就当是知识的积累,未列出全部,如需查看全部可参考JS相关的API文档. 常用的全局属性: 全局属性 作 ...
- 原生javascript实现阻止浏览器默认行为与阻止事件冒泡
不同的浏览器之间存在兼容问题,在IE与标准浏览器之间存在很大的差异,所以在实现阻止浏览器默认行为和阻止事件冒泡就要考虑要它们之间的不同 /** * 取消冒泡 * @param {事件} e */ fu ...
随机推荐
- bzoj 5299: [Cqoi2018]解锁屏幕 状压dp+二进制
比较简单的状压 dp,令 $f[S][i]$ 表示已经经过的点集为 $S$,且最后一个访问的位置为 $i$ 的方案数. 然后随便转移一下就可以了,可以用 $lowbit$ 来优化一下枚举. code: ...
- 【HTML】行内元素与块级元素
一.行内元素与块级元素的三个区别 1.行内元素与块级元素直观上的区别 行内元素会在一条直线上排列,都是同一行的,水平方向排列 块级元素各占据一行,垂直方向排列.块级元素从新行开始结束接着一个断行. 2 ...
- HTML5新增input标签属性
一. input type属性 <form action=""> 邮箱<input type="email" name="" ...
- JS基础_自增和自减
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 贴一段Matlab代码
% reduce leading zeros with rx ind3= find(rx~=0, 1, 'first'); if (isempty(ind3)) rx= gf(0, m, f0); e ...
- UOJ310. 【UNR #2】黎明前的巧克力 [FWT]
UOJ 思路 显然可以转化一下,变成统计异或起来等于0的集合个数,这样一个集合的贡献是\(2^{|S|}\). 考虑朴素的\(dp_{i,j}\)表示前\(i\)个数凑出了\(j\)的方案数,发现这其 ...
- windows--zabbix-agent添加主机
1.首先在 C 盘根目录下创建 zabbix 的文件夹 2.将需要的文件拖到该文件夹内(bin/win64) 3.修改 windows 配置文件(zabbix.agent.win.conf)的 ...
- fluent中截取任意面的数据
原版视频下载链接: https://pan.baidu.com/s/1c2aE740 密码: mf2i
- snprintf用错了快10年…
int snprintf(char *str, size_t size, const char *format, ...); 从用snprintf开始,size参数一直传的都是buff_size-1, ...
- !!a标签和button按钮只允许点击一次,防止重复提交
button 方法:加上属性disabled = “disabled” 或者 disabled = “true” <button id="btn" disabled=&quo ...