蛮讨厌IE的,因为他常常需要特别照顾,就像DOM Storage(sessionStorage和localStorage)只能支持IE8+,对于以下的只能使用userData。

原理:通过在document元素后面附加一个专属的“DHTML行为”来实现客户端存储,

 var memory=document.createElement("div");//创建一个元素
memory.style.display="none";//将其隐藏
memory.style.behavior="url('#default#userData')"; //附加userData行为
document.body.appendChild(memory);//将其添加到document元素中

一旦给元素赋予了“userData”行为,该元素就拥有了load()和save()方法,load()方法用于载入存储的数据。使用它的时候必须传递一个字符串作为参数——类似于一个文件名,该参数用来指定要载入的存储数据。当数据载入的时候,就可以通过该元素的属性来访问这些名值对形式的数据。

可以使用getAttribute()来查询这些数据,通过setAttribute()方法设置属性,然后调用save()方法可以存储性的数据,而要删除数据,通过使用removeAttribute()方法,然后调用save()方法即可。

IE userData Behavior
Methods Description
getAttribute(attr) 获取存储对象中属性值
load(name) 载入存储数据对象
removeAttribute(attr) 删除存储对象中的属性
save(name) 更新存储数据对象
setAttribute(attr, value) 设置存储对象中的键对值
properties  
expires 数据的有效期
XMLDocument Returns a reference to the XML Document of the persisted object.

基于userData实现部分存储API

/*基于IE的userData实现,只有在IE中有效,保存名为UserDataStorage.js*/
function UserDataStorage(maxage){
//创建一个document元素鼻骨附加userData行为
//因此该元素得save()和loda()方法
var memory=document.createElement("div");
memory.style.display="none";
memory.style.behavior="url('#default#userData')"; //附加userData行为
document.body.appendChild(memory); //如果传递了maxage参数(单位为秒),则将其设置为userData的有效期,以毫秒为单位
if(maxage){
var now=new Date().getTime(); //当前时间
var expires=now+maxage*1000;//当前时间加上有效期就等于过期时间
memory.expires=new Date(expires).toUTCString(); //设置userData的过期时间
} //通过载入存储的数据初始化memory元素
//参数是任意的,只要是在保存的时候存在的就可以了
memory.load("UserDataStorage"); //载入存储数据 this.getItem=function(key){ //通过属性来获取保存的值
return memory.getAttribute(key) || null;
};
this.setItem=function(key,value){
memory.setAttribute(key,value); //已设置属性的形式来保存数据
memory.save("UserDataStorage"); //保存数据改变后的状态
};
this.removeItem=function(key){
memory.removeAttribute(key); //删除存储的数据
memory.save("UserDataStorage"); //再次保存状态
}
}

因为以上只能针对ie所以要在最后写上

    <!--[if IE]>
<script src="UserDataStorage.js"></script>
<![endif]-->

userData允许存储的数据量比cookie大,但是却比localStorage以及sessionStorage允许存储的数据量要小。

userData IE的更多相关文章

  1. Lua 之 userdata

    Lua 之 userdata 在Lua中可以通过自定义类型(user data)与C语言代码更高效.更灵活的交互,从而扩展Lua能够表达的类型. full userdata full userdata ...

  2. 快速编译system.img、userdata.img、boot.img的方法

    快速编译system.img和boot.img的方法 快速编译system.img,可以使用这个命令: #make systemimage 快速编译boot.img,可以使用以下命令: #make b ...

  3. zImage.img、ramdisk.img、system.img、userdata.img介绍及解包、打包方法

    ramdisk.img system.img userdata.img介绍及解包.打包方法 Android 源码编译后,在out/target/product/generic下生成ramdisk.im ...

  4. Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程

    首先通過編譯,先將android內核編譯成功.正常情況下,在目錄out/target.product/generic/(但是有的就沒有generic文件,如freescale和iriver:但是lon ...

  5. Qt之界面数据存储与获取(使用setUserData()和userData())

    在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来配置文件.注册表.数据库.或者是server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例 ...

  6. localstorage || globalStorage || userData

    globalStorage 这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,并且存储容量比IE的userdata大得多,一个域下面是5120k.和 ...

  7. js本地存储解决方案(localStorage与userData)

    WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的user ...

  8. 基于'sessionStorage'与'userData'的类session存储

    Storage.js: 注意:此版本实现的存储在符合Web存储标准(ie8及ie8以上的版本与其他主流浏览器)的情况下与session的周期一致,但在页面不关闭的情况下没有过期时间,ie7及以下版本则 ...

  9. web本地存储-UserData

    userData,IE中持久化用户数据的方法. 使用userData用户数据首先必须使用css指定userData行为.代码示例: var ud = document.createElement(&q ...

  10. Lua中的userdata

    [话从这里说起] 在我发表<Lua中的类型与值>这篇文章时,就有读者给我留言了,说:你应该好好总结一下Lua中的function和userdata类型.现在是时候总结了.对于functio ...

随机推荐

  1. cocos2d-x step by step(1) First Blood

    下了cocos2d-x 源码,开搞! 首先,笔者本身 1)      5年没有摸过c++了 2)     没用过cocos2d-x 3)      有强烈的求知欲望(这条每个简历个人介绍不都这么写么, ...

  2. SilverLight:基础控件使用(4)-日期显示和选择类控件

    ylbtech-SilverLight-Basic-Control:基础控件使用(4)-日期显示和选择类控件 Calendar,DatePicker 1.A,返回顶部 Calendar控件(日期控件) ...

  3. 132-pattern(蛮难的)

    https://leetcode.com/problems/132-pattern/ 下面是我的做法.后来又看了一个提示: https://discuss.leetcode.com/topic/678 ...

  4. C 标准库 - <stdarg.h>

    C 标准库 - <stdarg.h> 简介 stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数. 可变参 ...

  5. discuz X3.1+Apache2.2+php-5.2.17+mysql5.6.14+Discuz_X3.1

    discuz X3.1+Apache2.2.25+php-5.2.17+mysql5.6.14+Discuz_X3.1 一.准备 1.httpd-2.2.25-win32-x86-no_ssl.msi ...

  6. 整合Hibernate3.x

    As of Spring 3.0, Spring requires Hibernate 3.2 or later. Hibernate 3和Hibernate 4有一些区别,所以对于spring而已, ...

  7. ubuntu环境准备

    一. 桌面方面看起来比较不爽,12的版本用起更不习惯,决定改成命令行登陆 a. vi  /ect/default/grub 文件 b. 修改成第二个红框的情况 c. 执行update-grub命令 d ...

  8. python(16)- python内置函数

    python内置了一系列的常用函数,以便于我们使用,python英文官方文档详细说明:https://docs.python.org/3/library/functions.html     Buil ...

  9. Plug and Play

    http://baike.baidu.com/view/33701.htm 即插即用 编辑   PNP是Plug-and-Play(即插即用)的缩写.它的作用是自动配置(低层)计算机中的板卡和其他设备 ...

  10. 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 &amp; 纹理混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星云 ...