Augmenting DOM Storage with IE's userData behavior
http://www.javascriptkit.com/javatutors/domstorage2.shtml
Augmenting DOM Storage with IE's userData behavior
As mentioned on the previous page, when it comes to IE, DOM Storage (sessionStorage and localStorage) is supported in IE8+. This leaves IE7 and IE6, still a formidable force on the internet depending on which survey you refer to, out in the cold. Depending on the task and your intended audience, that may be unacceptable. Fortunately, IE does actually support a proprietary feature that acts similarly to DOM Storage in terms of storage space, and that's IE's userData Behavior. Used in conjunction with DOM Storage, you can extend the guest list to your mega storage area to the lesser IE versions as well. IE userData behavior is supported in IE5+, and lets you persist up to 1MB of data per domain. Granted it's not quite the capacity of DOM Storage (4MB), but certainly a huge improvement over the miserly 4KB of space offered by JavaScript cookies.
IE's userData behaviour works as follows- you give the element in which you wish its data to be persisted a userData behavior (using either inline or external CSS), then call the appropriate userData methods of the element to save/retrieve that info:
| Methods | Description |
|---|---|
| getAttribute(attr) | Returns the persisted value stored inside the specified attribute of an element. |
| load(name) | Loads an object containing the persisted values of a particular userData behavior. |
| removeAttribute(attr) | Removes the specified attribute from an element and its persisted value |
| save(name) | Saves an object containing the persisted values of a particular userData behavior. |
| setAttribute(attr, value) | Stores a value to be persisted inside the specified attribute of an element. |
| properties | |
| expires | Gets or sets the expiration date of the data persisted with the userData behavior. |
| XMLDocument | Returns a reference to the XML Document of the persisted object. |
The best way to wrap your head around userData is just to see it in action- the following recreates the example on the previous page of persisting contents typed into a TEXTAREA in the event of an accidental browser refresh so it works in IE6 and IE7 as well:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<form><textarea id="feedback" style="width:350px;height:200px" style="behavior:url('#default#userData')"></textarea><br /><input type="button" value="Click to Hard Reload Page" onClick="location.reload(true)" /></form><script type="text/javascript">var feedbackarea=document.getElementById("feedback")if (window.sessionStorage){ if (sessionStorage.feedbackdata){ //if there is data stored for the target textarea feedbackarea.value=sessionStorage.feedbackdata //recall it upon refresh or crash } feedbackarea.onkeyup=function(e){ sessionStorage.feedbackdata=this.value //save contents of textarea as user types }}else if (feedbackarea.addBehavior){ feedbackarea.load("feedbackpersist") //load data if any persisted inside userData object "feedbackpersist" if (feedbackarea.getAttribute("feedbackattribute")){ //if there is persisted data founded inside attribute "feedbackattribute" feedbackarea.value=feedbackarea.getAttribute("feedbackattribute") //recall it upon refresh or crash } feedbackarea.onkeyup=function(e){ feedbackarea.setAttribute("feedbackattribute", this.value) //save contents of textarea into attribute "feedbackattribute" as user types feedbackarea.save("feedbackpersist") //save state of feedback textarea into userData object "feedbackpersist" }}</script> |
Demo (FF3.5+, Chrome4+, Safari4+, Opera10.5+, or IE6+):
Lets go through the important points:
- The element you wish to store userData to must be given a CSS Behavior, whether via inline or external CSS:
behavior:url('#default#userData') - To check whether the browser supports the userData Behavior, you can run a check for the
addBehavior()method on an element (ie:if (feedbackarea.addBehavior){...}) - Call
element.load(name)first when you wish to access any information stored inside one of the element's attributes. - Call
element.getAttribute(attr)to actually access the information inside a given attribute. - Call
element.setAttribute(attr, value)to store and persist any value you wish as an attribute of a given element. - Call
element.save(name)at the end after you have saved all information into any attributes of the element to actually save this information across sessions.
Note that in the above example, the contents persisted using userData lasts indefinitely, unlike the sessionStorage portion, which is just, naturally, session only. For the former, you can modify its expires property to change the duration of the persistence.
- Going beyond cookies- Using DOM sessionStorage and localStorage to persist larger amounts of info
- Augmenting DOM Storage with IE's userData Behavior
Augmenting DOM Storage with IE's userData behavior的更多相关文章
- 浅谈 HTML5 的 DOM Storage 机制 (转)
在开发 Web 应用时,开发者有时需要在本地存储数据.当前浏览器支持 cookie 存储,但其大小有 4KB 的限制.这对于一些 Ajax 应用来说是不够的.更多的存储空间需要浏览器本身或是插件的支持 ...
- userData Behavior
https://msdn.microsoft.com/zh-cn/vstudio/ms531424 userData Behavior This topic documents a feature o ...
- web离线应用--dom storage
web离线应用--dom storage dom storage是html5添加的新功能,其实也不是什么新的应用,只不过是cookie的放大版本,由于cookie的大小只有4kb,而且在每次请求一个新 ...
- HTML5在线状态检测和DOM Storage
除了离线资源缓存外,html5离线应用开发还可能用到以下技术 在线状态检测 navigator.onLine navigator.onLine 属性表示当前是否在线.如果为 true, 表示在线:如果 ...
- IE中的userData
之前做项目时用到了localstorage,但是考虑到浏览器存在IE8以下不兼容问题,所以来介绍以下IE中的userData. 本地存储解决方案很多,比如Flash SharedObject.Goog ...
- JavaScript本地存储实践(html5的localStorage和ie的userData)
http://www.css88.com/archives/3717 JavaScript本地存储实践(html5的localStorage和ie的userData) 发表于 2011年06月11日 ...
- 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase
Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...
- userData IE
蛮讨厌IE的,因为他常常需要特别照顾,就像DOM Storage(sessionStorage和localStorage)只能支持IE8+,对于以下的只能使用userData. 原理:通过在docum ...
- 阿伦学习html5 之 Local Storage (本地储存)
一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedObject.Google Gears.Cookie.DOM Storage.User Data.window.name.S ...
随机推荐
- javaweb 报表生成(pdf excel)所需要用到的技术和思路
pdf: “ 目前开源.成熟.稳定的第三方包只有iText.而用iText生成PDF有三种方式: 调用iText API,用代码“写”出PDF,依赖包:com.itextpdf:itextpdf:5. ...
- CSS过渡动画之transition
O(∩_∩)O~ 这两天在看看CSS的相关内容,关于transition动画感觉很有意思,分享一下. CSS负责给html加效果,自然少不了各种动画,今天介绍一下transition. 概述 看一段比 ...
- 简单字典实现(KV问题)
搜索二叉树基本概念请看上篇博客 这两个问题都是典型的K(key)V(value)问题,我们用KV算法解决. 判断一个单词是否拼写正确:假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单 ...
- Python的requests、greenlet和gevent模块在windows下安装
一.requests模块在windows下安装 Linux系统下requests的安装方法在http://docs.python-requests.org/en/latest/user/install ...
- Datawhale MySQL 训练营 Task2 查询语句
目录 MySQL 管理 MySQL 用户管理 参考 数据库管理 SQ查询语句 1. 导入示例数据库,教程 MySQL导入示例数据库 2. 查询语句 SELECT 3. 筛选语句 WHERE ,过滤 4 ...
- 路由器终端常用linux命令汇总(持续更新)
ls:显示文件名与相关属性 ls -al;ls -l;ls -a 第一列: d:表示目录,dir. -:表示文件. l:表示链接文件,linkfile. 接下来的字符三个为一组,且均为rwx这3个字母 ...
- 数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
一.聚类的概念 聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结 ...
- 【Unity Shader】渲染管线
流程概述 应用程序阶段 应用程序阶段,使用高级编程语言(C.C++.JAVA 等)进行开发,主要和CPU.内存打交道,诸如碰撞检测.场景图建立.空间八叉树更新.视锥裁剪等经典算法都在此阶段执行.在该阶 ...
- Netty源码分析第1章(Netty启动流程)---->第1节: 服务端初始化
Netty源码分析第一章: Server启动流程 概述: 本章主要讲解server启动的关键步骤, 读者只需要了解server启动的大概逻辑, 知道关键的步骤在哪个类执行即可, 并不需要了解每一步的 ...
- ofo容器pass架构分享
一.我们先要了解一下,为什么企业需要一个paas平台?或者可以说paas到底能做什么? 1.1 我们先来了解一下paas到底是什么? PaaS是Platform-as-a-Service的缩写,意思是 ...