AutoSave/自动存储功能实现


Posted in Javascript onMarch 24, 2007

转自: http://www.fayland.org/journal/AutoSave.html

这个功能很常见。是为了防止浏览器崩溃或提交不成功而导致自己辛辛苦苦写就的东西消失掉。Gmail 里也这个东西。
它的原理是将该文本框的东西存储进一个 Cookie. 如果没提交成功(原因可能是浏览器崩溃),下次访问该页面时询问是否导入上次存储的东西。
function AutoSave(it) { // it 指调用的文本框
    var _value = it.value;    // 获得文本框的值
   if (!_value) {
       var _LastContent = GetCookie('AutoSaveContent'); // 获得 cookie 的值,这里的 GetCookie 是个自定义函数,参见源代码

       if (!_LastContent) return; // 如果该 cookie 没有值,说明是新的开始

       if (confirm("Load Last AutoSave Content?")) { // 否则询问是否导入
           it.value = _LastContent;
           return true;
       }            
   } else {

       var expDays = 30;
       var exp = new Date();
       exp.setTime( exp.getTime() + (expDays * 86400000) ); // 24*60*60*1000 = 86400000
       var expires='; expires=' + exp.toGMTString();

       // SetCookie 这里就是设置该 cookie
        document.cookie = "AutoSaveContent=" + escape (_value) + expires;
    }
}
而这 HTML 中应当如此:
<script language=JavaScript src='/javascript/AutoSave.js'></script>
<form action="submit" method="POST" onSubmit="DeleteCookie('AutoSaveContent')">
<textarea rows="5" cols="70" wrap="virtual" onkeyup="AutoSave(this);" onselect="AutoSave(this);" onclick="AutoSave(this);"></textarea>
<input type="submit"></form>
第一句导入 js, 第二句的 onSubmit 指如果提交了就删除该 cookie, 而 DeleteCookie 也是自定义的一个函数。参见源代码。
textarea 里的 onkeyup 是指当按键时访问 AutoSave, 用以存储新写入的文字。
而 onselect 和 onclick 用以新访问时确定导入自动保存的文字。

大致就是如此。 Enjoy!

源代码:http://www.fayland.org/javascript/AutoSave.js

 

Javascript 相关文章推荐
jQuery数据缓存功能的实现思路及简单模拟
May 27 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
js中string转int把String类型转化成int类型
Aug 13 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
jQuery Raty 一款不错的星级评分插件
Aug 24 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 Javascript
ztree简介_动力节点Java学院整理
Jul 19 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
微信小程序获取音频时长与实时获取播放进度问题
Aug 28 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
javascript实现异形滚动轮播
Nov 28 Javascript
用 javascript 实现的点击复制代码
Mar 24 #Javascript
基于逻辑运算的简单权限系统(实现) JS 版
Mar 24 #Javascript
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 #Javascript
漂亮的提示信息(带箭头)
Mar 21 #Javascript
自动生成文章摘要的代码[JavaScript 版本]
Mar 20 #Javascript
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 #Javascript
表单提交时自动复制内容到剪贴板的js代码
Mar 16 #Javascript
You might like
拼音码表的生成
2006/10/09 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
vue debug 二种方法
2018/09/16 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中os.path用法分析
2015/01/15 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
如何现实servlet的单线程模式
2014/08/05 面试题
2015年度物流工作总结
2015/04/30 职场文书
勤俭节约主题班会
2015/08/13 职场文书
决心书格式范文
2015/09/23 职场文书