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 animate图片模向滑动示例代码
Jan 26 Javascript
JavaScript中获取样式的原生方法小结
Oct 08 Javascript
jquery实现图片预加载
Dec 25 Javascript
javascript类型系统 Window对象学习笔记
Jan 07 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
JS验证码实现代码
Sep 14 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 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
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
php join函数应用
2011/05/04 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
php-msf源码详解
2017/12/25 PHP
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python新手实现2048小游戏
2015/03/31 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python实现读取json文件到excel表
2017/11/18 Python
python reverse反转部分数组的实例
2018/12/13 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
Python json格式化打印实现过程解析
2020/07/21 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
编写strcpy函数
2014/06/24 面试题
人事专员岗位职责
2015/02/03 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android