利用UserData行为实现表单数据定时自动保存

作者:清欢

时间:2026-10-26

浏览:324

本文介绍如何使用Internet Explorer特有的UserData行为实现表单数据的定时自动保存。通过为元素添加userData行为,利用setAttribute和save方法将数据持久化到本地,结合setInterval实现周期性保存,并演示如何停止保存及加载已保存的数据,解决了刷新页面后数据丢失的问题。

文章目录

利用UserData行为实现表单数据定时自动保存

(不确定是否两家邮箱都具备此功能)。


那么该功能是如何实现的呢?



定时机制我们已熟知,但如何实现保存?或许我们会借助隐藏域等手段来存储数据。然而,这种做法存在一个缺陷:一旦刷新页面,数据便会丢失。


此时,轮到那个鲜少被关注、且估计许多人并不了解的UserData行为(userData Behavior)登场了:


那么UserData究竟是什么?又该如何使用?我将在文章末尾转载一篇介绍它的文章。


现在,我直接给出示例,毕竟“无代码,无真相”:


代码如下:

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<script type="text/javascript">
window.onload=function(){
var txtObj = document.getElementById('txt1');
var spanObj = document.getElementById('s1');
//自动保存
txtObj.addBehavior("#default#userData");
var saveTimer= setInterval(function(){
txtObj.setAttribute('OValue',txtObj.value);
txtObj.save('SavedData');
spanObj.innerText='数据保存于:'+(new Date());
setTimeout(function(){
spanObj.innerText='';
},1000);
},10000); //每分钟保存一次
document.getElementById('btn1').attachEvent('onclick',function(){
clearInterval(saveTimer); //取消保存
txtObj.removeAttribute('OValue');
}); 
document.getElementById('btn2').attachEvent('onclick',function(){
txtObj.load('SavedData');
alert(txtObj.getAttribute('OValue'));
//txtObj.value = txtObj.getAttribute('OValue');
}); 
}; 
</script>
</head>
<body>
<span id="s1" style="color:red;"></span>
<p />
<textarea height="500" style="height:500px;width:500px;" id="txt1">
</textarea>
<p />
<input type="button" id="btn1" value="停止保存" />
<input type="button" id="btn2" value="获取保存的值" />
</body>
</html>

将这段HTML复制下来运行一下,你就会发现,其实这跟邮箱中的定时保存基本一致了,再稍作润色就OK了。


请大家查看利用userData实现客户端保存表单数据 这篇文章。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章