`
toyota2006
  • 浏览: 552406 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

利用userData实现客户端保存表单数据

阅读更多

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
分享到:
评论

相关推荐

    js下利用userData实现客户端保存表单数据

    在Web开发中,客户端保存表单数据是一个常见的需求。一般来说,Cookie是最常用来实现这一功能的技术。Cookie具有一定的局限性,比如容量小、需要手动发送给服务器等。而微软的DHTML技术提供了一种替代方案,即...

    JavaScript王者归来part.1 总数2

     15.10 userData示例--一个利用userData实现客户端保存表单数据的例子   15.11 总结   第四部分 数据交互  第16章 同步和异步  16.1 什么是同步和异步   16.2 超时设定和时间间隔   16.3 定时器使用--...

    HTML5 LocalStorage和UserData实现兼容多浏览器的本地存储

    HTML5的LocalStorage和UserData是两种不同的机制,它们都允许网页在用户本地存储数据,从而实现离线应用或者增强用户体验。这两个技术在实现浏览器兼容性方面起着关键作用,特别是对于那些需要在用户关闭浏览器后...

    cwRsyncServer服务端与cwRsync客户端数据

    《cwRsyncServer服务端与cwRsync客户端数据同步详解》 cwRsync是一款基于Rsync协议的跨平台文件同步工具,尤其在Windows Server 2003环境下,它能有效地实现服务器与客户端之间的数据同步。本文将详细阐述如何在...

    javascript定时保存表单数据的代码

    JavaScript定时保存表单数据是一种常见的前端开发技巧,用于防止用户在编辑表单内容时意外丢失数据。例如,QQ和163邮箱中的自动保存功能就是这样的应用实例。当用户撰写邮件时,系统会在设定的时间间隔内自动保存...

    C# 实现保存输入框,再次启动保存上次输入

    这涉及到数据持久化,即将内存中的数据保存到硬盘上,以便在程序关闭后还能再次读取。以下是对这个主题的详细解释: 一、数据持久化 数据持久化是指将程序运行时的数据保存到非易失性存储设备(如硬盘),使得数据...

    libcurl 提交post表单数据 上传图片 demo

    在本教程中,我们将探讨如何利用libcurl库在C/C++程序中实现POST方法来提交表单数据并上传图片。这个过程涉及到几个关键步骤,包括初始化libcurl会话、设置请求选项、构建POST数据以及处理响应。 首先,你需要包含...

    Android应用源码之(Body的m_userData).zip

    开发者可以利用`m_userData`来存放与特定View关联的任意信息,如用户ID、自定义配置或者临时状态等。 在Android UI编程中,`View`是所有可视组件的基础类,而`ViewGroup`是`View`的子类,用于组织和管理其他`View`...

    安卓开发-利用JSON,通过Android客户端访问web服务器,实现一个登录功能.zip.zip

    在安卓应用开发中,利用JSON(JavaScript Object Notation)与Web服务器进行数据交互是一个常见的实践。JSON作为一种轻量级的数据交换格式,因其易读、易写、易解析的特性,被广泛应用于移动设备上的网络通信。本...

    Userdata.dll 丢失 win7

    2. **恢复系统文件**:利用Windows的系统还原功能,将系统回滚到Userdata.dll未丢失的日期。如果之前创建了系统还原点,这可能是个有效的方法。 3. **从可靠来源下载并替换**:如果上述方法无效,可以在微软官方...

    win7系统解决 Userdata.dll 丢失的问题

    在Windows 7操作系统中,Userdata.dll文件是一个重要的动态链接库(Dynamic Link Library),它包含了系统运行时必要的函数和数据。当用户启动计算机时,尤其是登录界面(LogonUI.exe)运行时,Userdata.dll会被调用...

    jsp表单添加存储数据表格显示

    2. 数据存储,利用JDBC或JPA与数据库交互,插入和读取数据。 3. JSP页面展示,使用HTML表格和JSTL标签动态显示从数据库获取的数据。 通过理解并掌握这些知识点,开发者能够创建交互式的Web应用,允许用户输入数据,...

    Android保存用户数据到手机内存中

    本文将详细介绍如何在Android系统中实现这一功能,主要探讨三种常用的数据存储方式:SharedPreferences、文件存储以及SQLite数据库,并以`MyLoginDatabase`为例,讨论如何使用SQLite数据库来保存用户登录信息。...

    应用源码之(Body的m_userData).zip

    如果一个类实现了Parcelable,那么"m_userData"可以作为额外的数据字段,通过writeToParcel()方法写入,再通过Creator对象的createFromParcel()方法读取。 4. **Fragment交互**: 在Fragment中,"m_userData"可以...

    jqgrid加载本地数据并且分页例子

    在这个"jqgrid加载本地数据并且分页例子"中,我们将深入探讨如何利用jqGrid实现从本地数据源加载数据并进行分页显示。 首先,要理解jqGrid的工作原理。它基于jQuery库,通过HTML表格元素来渲染数据,并通过AJAX从...

    【cocos creator】网页/浏览器读取保存json/text文件

    不过,开发者仍然可以通过一些API和技巧来实现读取和保存JSON或文本文件。下面将详细探讨这一主题。 一、Web API的使用 1. `FileReader` API:这是HTML5提供的一个用于读取本地文件的接口,可以读取JSON或文本文件...

    利用XSL和ASP实现XML文档在线编辑

    然后,根据业务逻辑,可以保存修改后的XML文档或者执行其他操作,比如验证数据、连接数据库等。 这个例子展示了XML、XSL和ASP如何协同工作,提供一个用户友好的在线编辑界面。XML负责数据的存储,XSL负责数据的呈现...

Global site tag (gtag.js) - Google Analytics