轻量级插件sdstorage用于操作localStorage支持过期、批量搜索删除等
来源:互联网 发布:php项目开发实战入门 编辑:程序博客网 时间:2024/05/22 11:36
前言
项目中在某一界面需要做较为复杂的交互,为方便处理,多数数据操作都前端完成,最终保存时才保存到数据库,为了保证界面意外关闭再打开时数据仍保持,则需要将数据保存在本地,本来是想用cookie的,想到数据大小有限制(4k),只好换用localStorage,然而localStorage不支持过期,只好自己写个插件来满足要求。
插件源码
/*! * Copyright (C) Corporation. All rights reserved. * * Author : lihaitao * Email : lhtzbj12@126.com * Create Date : 2017-10-18 * Description : localstorage 操作工具 、支持过期处理、Key批量删除已过期等 * Version : V1.0.0 * * Revision History: * Date Author Description * 2017-10-18 lihaitao 完成第一版本 * */var sdstorage = function () { var lstorage = window.localStorage; //保存传入key data 多长时间过期,默认不过期 function save(dkey, data, expires) { if (!lstorage) return false; expires = calculateExpiration(expires); var expiretime = 0; //不过期 if (expires) { expiretime = expires; } var obj = {sdata: data, exp: expiretime}; //保存 try { lstorage[dkey] = JSON.stringify(obj); return true; } catch (e) { console.error(e); return false; } return false; } //获取过期或者不存在都返回 '' function get(dkey) { if (!lstorage) return ''; var str = lstorage[dkey]; if (str) { try { var obj = JSON.parse(str); //判断是否过期 var now = new Date().getTime(); if (obj.exp && (obj.exp === 0 || obj.exp > now)) { //console.log('key:' + dkey + ',离过期还有 ' + (obj.exp - now) / 1000 + ' 秒'); return obj.sdata; } else { //过期则删除 remove(dkey); } } catch (e) { console.error(e); return ''; } } return ''; } //清除所有,如果传入前辍,则只清除前辍为prefix的 function clear(prefix) { if (!lstorage) return; if (prefix) { for (var i = 0; i < lstorage.length; i++) { var key = lstorage.key(i); //如果prefix有值,则只处理前辍相同的 if (key.indexOf(prefix) === 0) { lstorage.removeItem(key); } } } else { lstorage.clear(); } } //删除单条 function remove(dkey) { if (!lstorage) return; lstorage.removeItem(dkey); } //清除过期,传入key前辍,则只除以prefix开始已经过期的数据 function removeexp(prefix) { if (!lstorage) return; for (var i = 0; i < lstorage.length; i++) { var key = lstorage.key(i); //如果prefix有值,则只处理前辍相同的 if (!prefix || key.indexOf(prefix) === 0) { get(key); } //console.log(key); } } //检测浏览器是否支持 function test() { if (lstorage) { return true; } else { return false } } //计算过期时间 var calculateExpiration = function (cookieExpire) { if (cookieExpire === null || typeof cookieExpire === 'undefined') { return null; } var time = cookieExpire.replace(/[0-9]*/, ''); //s,mi,h,d,m,y cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}/, ''); //number switch (time.toLowerCase()) { case 's': cookieExpire = cookieExpire; break; case 'mi': cookieExpire = cookieExpire * 60; break; case 'h': cookieExpire = cookieExpire * 60 * 60; break; case 'd': cookieExpire = cookieExpire * 24 * 60 * 60; break; case 'm': cookieExpire = cookieExpire * 30 * 24 * 60 * 60; break; case 'y': cookieExpire = cookieExpire * 365 * 24 * 60 * 60; break; default: cookieExpire = cookieExpire; break; } var d = new Date().getTime(); cookieExpire = d + cookieExpire * 1000; return cookieExpire; }; return { //检测是否支持 test: test, //保存传入key data 多长时间过期,默认不过期,单位 s(秒) mi(分钟) h(小时) d(天) m(月) y(年) //成功返回true,或者false save: save, //获取,不存在或者过期 返回 '' get: get, //根据key删除 remove: remove, //删除已经过期的 传入key前辍,则只除以prefix开始已经过期的数据 removeexp: removeexp, //清除所有 如果传入前辍,则只清除前辍为prefix的 clear: clear, };}();
方法
test
作用:判断浏览器是否支持,返回true false
sdstorage.test()
save
作用:保存数据,返回 true false
参数1:数据的key
参数2:数据,只支持str,如果是JSON,使用JSON.stringify()转成字符串
参数3:有效期,单位 s(秒) mi(分钟) h(小时) d(天) m(月) y(年),不传值则不过期
var key = 'users_info';var data={'username':'lhtzbj12'};sdstorage.save(key,JSON.stringify(data),'2d');//有效期2天
get
作用:获取数据,如果数据过期返回”,并删除
参数1:数据的key
var key = 'users_info';var str = sdstorage.get(key);
remove
作用:删除数据
参数1:数据的key
var key = 'users_info';sdstorage.remove(key);
removeexp
作用:删除过期的数据
参数1:数据key的前辍,不传值则删除所有过期数据
var prefix = 'users_';sdstorage.removeexp(prefix);//删除所有key以'users_'开始的过期数据sdstorage.removeexp();//删除所有过期数据
clear
作用:删除若干数据
参数1:数据key的前辍,不传值则删除所有数据
var prefix = 'users_';sdstorage.clear(prefix);//删除所有key以'users_'开始的数据sdstorage.clear();//删除所有数据
阅读全文
0 0
- 轻量级插件sdstorage用于操作localStorage支持过期、批量搜索删除等
- PHP 批量操作删除,同时支持单条删除
- EF扩展库(批量操作--删除、更新等)
- 使用forfiles自动批量删除过期文件
- 批量处理 删除过期文件及文件夹
- mysql日志进行操作的总结包括 启用,过期自动删除 等
- 对mysqlbinlog日志进行操作的总结包括 启用,过期自动删除 等
- 对mysqlbinlog日志进行操作的总结包括 启用,过期自动删除 等
- 对mysql日志进行操作的总结包括 启用,过期自动删除 等
- 对mysqlbinlog日志进行操作的总结包括 启用,过期自动删除 等
- Oracle批量删除表、索引等对象、批量恢复Drop操作删除的表、索引等对象
- 二叉搜索树的插入、查找、删除等操作
- Chrome支持"过期插件运行"设置方法
- 用于mmgrid表格批量删除的函数
- H5 localStorage 轻量级存储
- 批量删除小操作
- JEECG-批量删除操作
- 批量删除操作
- Keil中建立新工程
- java-动态代理
- 在命令行中使用vs编译器
- Java:输出乘法口诀(上三角)
- Cable master(二分查找)
- 轻量级插件sdstorage用于操作localStorage支持过期、批量搜索删除等
- 动态背景页面登录--(软件实训)
- freeCodeCamp-jQuery
- 编译原理学习笔记·语法分析(LL(1)分析法/算符优先分析法OPG)及例子详解
- 【HDU】1542 Atlantis 矩形面积并->线段树
- HDU-整除的尾数
- Java设计模式
- C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。
- 1042. Shuffling Machine (20)