bencalie已经把userData的基本应用整理很好了,偶只好施行拿来主义吧!
引用
作者:bencalie
对于多数网页制作的朋友,实现在客户端保存在网页表单上的信息,比较多的是采用Cookie技术来实现,这些功能例如:下拉列表框选择的选
项,文本框输入的数据等。事实上,我们可以利用微软DHTML默认行为中的userData行为来实现这个功能。
因为很多网友问到这样的问题,整理了一下,并提供了三个示例。下面将就该行为的使用做一个介绍:
UserData 行为(userData Behavior):
1、说明:
userData行为通过将数据写入一个UserData存储区(UserData store)来保存数据,userData可以将数据以XML格式保存在客户端计算机上,如
果你用的是 Windows 2000 或者 Windows XP,是保存在C:\Documents and Settings\Liming\UserData\文件夹下(如果操作系统不是安装在C
盘,那么C就应该是操作系统所在的分区)。
该数据将一直存在,除非你人为删除或者用脚本设置了该数据的失效期。
userData行为提供了一个比Cookie更具有动态性和更大容量的数据结构。每页的UserData存储区数据大小可以达到64 Kb,每个域名可以达到
640 Kb。
userData行为通过sessions为每个对象分配UserData存储区。使用save和load方法将UserData存储区数据保存在缓存(cache)中。一旦
UserData存储区保存以后,即使IE浏览器关闭或者刷新了,下一次进入该页面,数据也能够重新载入而不会丢失。
出于安全的考虑,相同协议使用同一个文件夹保存UserData存储区数据。
For security reasons, a UserData store is available only in the same directory and with the same protocol used to persist the
store.
在HTML、HEAD、TITLE和STYLE标记上应用了userData行为后使用save和load方法将会出错。
Setting the userData behavior (proposed) class on the HTML, HEAD, TITLE, or STYLE object causes an error when the save or
load method is called.
必须在行内或者文档的HEAD部分宣告如下样式:
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
userData行为可用于Microsoft? Win32?和Unix平台上的IE 5.0以上版本,不支持Netscape。
2、语法:
HTML <ELEMENT STYLE="behavior:url('#default#userData')" ID=sID>
Script object.style.behavior = "url('#default#userData')"
object.addBehavior ("#default#userData")
注:sID参数是一个可以描述该标记的唯一id。ID是可选的,但如果有,可以在脚本中方便地对该标记加以控制。
3、成员:
expires
设置或取得使用userData行为保存数据的失效日期。
脚本语法:对象ID.expires = 参数
参数是一个使用UTC(Universal Time Coordinate,世界调整时间)格式表示失效日期的字符串。该属性可以读写,没有默认值。浏览器
会对比这个日期和当前日期,如果到期,该数据就自动失效。
getAttribute()
取得指定的属性值。
load(存储区名)
从UserData存储区载入存储的对象数据。
removeAttribute()
从对象中删除指定的属性值。
save(存储区名)
将对象数据存入一个UserData存储区。
setAttribute()
设置指定的属性值。
XMLDocument
取得存储该对象数据的XML DOM引用。
具体用法可以查看MSDN(http://msdn.microsoft.com)
4、示例
示例一:文本框标记的应用(Microsoft)
<HTML>
<HEAD>
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
function fnSaveInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.setAttribute("sPersist",oPersist.value); //将oPersist.value存储为sPersist属性
oPersist.save("oXMLBranch"); //存储在名为oXMLBranch的UserData存储区
}
function fnLoadInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.load("oXMLBranch"); //载入在名为oXMLBranch的UserData存储区
oPersist.value=oPersist.getAttribute("sPersist"); //将sPersist属性赋值给oPersist.value
}
</SCRIPT>
</HEAD>
<BODY>
<FORM ID="oPersistForm">
<INPUT CLASS="userData" TYPE="text" ID="oPersistInput">
<INPUT TYPE="button" VALUE="Load" onclick="fnLoadInput()">
<INPUT TYPE="button" VALUE="Save" onclick="fnSaveInput()">
</FORM>
</BODY>
</HTML>
提示:你可以先修改部分代码再运行
示例二:Checkbox标记的应用
<style>
.userData {behavior:url(#default#userdata);}
</style>
<input type=checkbox id=chkbox1 class=userData>
<script>
var obj=document.all.chkbox1;
obj.attachEvent('onclick',saveChecked)
function saveChecked(){
obj.setAttribute("bCheckedValue",obj.checked);
obj.save("oChkValue");
}
window.attachEvent('onload',loadChecked)
function loadChecked(){
obj.load("oChkValue");
var chk=(obj.getAttribute("bCheckedValue")=="true")?true:false;
obj.checked=chk;
}
</script>
提示:你可以先修改部分代码再运行
示例三:Select标记的应用
<style>
.userData {behavior:url(#default#userdata);}
</style>
<select id="select1" class="userData">
<option>option1</option>
<option>option2</option>
<option>option3</option>
<option>option4</option>
</select>
<script>
var obj=document.all.select1;
obj.attachEvent('onchange',saveSelectedIndex)
function saveSelectedIndex(){
obj.setAttribute("sSelectValue",obj.selectedIndex);
obj.save("oSltIndex");
}
window.attachEvent('onload',loadSelectedIndex)
function loadSelectedIndex(){
obj.load("oSltIndex");
obj.selectedIndex=obj.getAttribute("sSelectValue");
}
</script>
示例四:偶综合起来做的例子
<HTML>
<HEAD>
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
function fnSaveInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.setAttribute("sPersist",oPersist.value); //将oPersist.value存储为sPersist属性
oPersist.save("oXMLBranch"); //存储在名为oXMLBranch的UserData存储区
var oPersist2=oPersistForm.oPersistInput2;
oPersist2.setAttribute("sPersist2",oPersist2.value);
oPersist2.save("oXMLBranch2");
}
function fnLoadInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.load("oXMLBranch");
oPersist.value=oPersist.getAttribute("sPersist");
var oPersist2=oPersistForm.oPersistInput2;
oPersist2.load("oXMLBranch2");
oPersist2.value=oPersist2.getAttribute("sPersist2");
}
</SCRIPT>
</HEAD>
<BODY>
<FORM ID="oPersistForm">
<INPUT CLASS="userData" TYPE="text" ID="oPersistInput"><br>
<textarea CLASS="userData" id="oPersistInput2" name="message" rows="15" cols="35" wrap="virtual"></textarea>
<INPUT TYPE="button" VALUE="Load" onclick="fnLoadInput()">
<INPUT TYPE="button" VALUE="Save" onclick="fnSaveInput()">
</FORM>
<select id="select1" class="userData">
<option>option1</option>
<option>option2</option>
<option>option3</option>
<option>option4</option>
</select>
<script>
var obj=document.all.select1;
obj.attachEvent('onchange',saveSelectedIndex)
function saveSelectedIndex(){
obj.setAttribute("sSelectValue",obj.selectedIndex);
obj.save("oSltIndex");
}
window.attachEvent('onload',loadSelectedIndex)
function loadSelectedIndex(){
obj.load("oSltIndex");
obj.selectedIndex=obj.getAttribute("sSelectValue");
}
</script>
<input type=checkbox id=chkbox1 class=userData>
<script>
var obj2=document.all.chkbox1;
obj2.attachEvent('onclick',saveChecked)
function saveChecked(){
obj2.setAttribute("bCheckedValue",obj2.checked);
obj2.save("oChkValue");
}
window.attachEvent('onload',loadChecked)
function loadChecked(){
obj2.load("oChkValue");
var chk=(obj2.getAttribute("bCheckedValue")=="true")?true:false;
obj2.checked=chk;
}
</script>
</BODY>
</HTML>
参考:
http://www.relaxlife.net/2005/relaxlife/blogview.asp?logID=220
分享到:
相关推荐
下面将就该行为的使用做一个介绍: UserData 行为(userData Behavior): 1、说明: userData行为通过将数据写入一个UserData存储区(UserData store)来保存数据,userData可以将数据以XML格式保存在客户端计算机...
15.10 userData示例--一个利用userData实现客户端保存表单数据的例子 15.11 总结 第四部分 数据交互 第16章 同步和异步 16.1 什么是同步和异步 16.2 超时设定和时间间隔 16.3 定时器使用--...
HTML5 LocalStorage和UserData实现兼容多浏览器的本地存储
而此时,就该轮到我们很少关注,而且估计有不少人不知道的UserData 行为(userData Behavior)登场了: 而这个UserData是什么?怎么用?,我将在文章最后转载一篇介绍它的文章。 现在,我直接上例子,所谓无代码,...
win7\WIN XP\WIN 8 \WIN 10等系统解决 userdata.dll 丢失的问题
Userdata.dll 丢失的问题,包含32 和 64位的dll 内含使用说明
windows 7启动出现LogonUI.exe错误提示:加载userdata.dll错误的处理办法 Userdata.dll 丢失,包含32 和 64位的dll 内含使用说明
微博数据集userdata.zip
userdata.dll丢失问题解决,适用于WIN32位操作系统
3、利用控件的userdata数据 4、为handles结构体添加新字段 5、setappdata函数为句柄添加数据 6、跨空间计算evalin和赋值assignin 7、将数据保存到文件,需要时读取 8、带参数调用GUI的M文件 9、嵌套函数(不适用于...
Storage.js是一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储。由于cookie本身的不可替代性,Storage.js也添加了对cookie的封装...
public userdata.sh
主要介绍了JS实现本地存储信息的方法,基于localStorage与userData实现本地存储的功能,需要的朋友可以参考下
2):把用户名和UserData保存到 FormsAuthenticationTicket 票据中 3):对票据进行加密 Encrypt 4):将加密后的票据保存到Cookie发送到客户端 4、跳转到登录前的页面 5、如果登录失败,返回当前视图 二、验证...
为什么要存数据到客户端? 存储数据在客户端可以解决很多的问题和减少不必要的传输数据: 1. 能保存程序的状态:用户关闭浏览器再打开后能知道他工作到哪了。 2. 能缓存数据:很多不会变化的数据根本没必要每次都从...
Light_UserData 2019-09-27-> 2021-03-15 一种轻量服务,用于管理用户资产。 这是一个。 这是一部分。安装通过使用 lt install Ling.Light_UserData 使用命令。 uni import Ling/Light_UserData 或只是下载它,然后...
#Storage.jsStorage.js是一个基于HTML5 Web本地存储的扩展解决方案,虽然IE早期不支持本地存储(localStorage),但是可以通过userData来实现更多的本地数据存储。由于cookie本身的不可替代性,Storage.js也添加了对...
雨中冒险2全部解锁存档,把这个复制到STEAM文件夹下面的Userdata下面你自己账号对应的632360下面的remote下面的Userprofiles下面并替换掉原有文件.xml
UserData.class