【Web开发】JS会话工具对象

论坛 期权论坛 期权     
修道驿站   2019-7-13 18:34   2297   0
  1. //当前会话
复制代码
  1. (function () {
复制代码
  1. [/code][code]    //SessionKey 与 Key 转换 -----------------------------------start
复制代码
  1. [/code][code]    //随机4位16进制字符串
复制代码
  1.     function S4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); }
复制代码
  1. [/code][code]    //全局唯一标识符GUID,类似.net中的NewID();
复制代码
  1.     function guid() { return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); }
复制代码
  1. [/code][code]    //创建SessionID
复制代码
  1.     function createSessionID() { return S4() + S4(); }
复制代码
  1.     //获取Session ID
复制代码
  1.     function _getSessionID() {
复制代码
  1.         var SessionID = sessionStorage["SessionID"];
复制代码
  1.         if (!SessionID) {
复制代码
  1.             SessionID = createSessionID();// guid();
复制代码
  1.             sessionStorage["SessionID"] = SessionID;
复制代码
  1.         }
复制代码
  1.         return SessionID;
复制代码
  1.     }
复制代码
  1. [/code][code]    function _getSessionKey(key) {
复制代码
  1.         return key + "_" + _getSessionID();
复制代码
  1.     }
复制代码
  1. [/code][code]    function _getKey(SessionKey) {
复制代码
  1.         var _SessionKey = SessionKey + "",
复制代码
  1.             reg = new RegExp("_" + _getSessionID() + "$");
复制代码
  1.         return reg.test(_SessionKey) ? _SessionKey.replace(reg, "") : null;
复制代码
  1.     }
复制代码
  1. [/code][code]    //SessionKey 与 Key 转换 -----------------------------------end
复制代码
  1. [/code][code]    //设置数据
复制代码
  1.     function set(key, value) {
复制代码
  1.         sessionStorage[_getSessionKey(key)] = JSON.stringify({ "value": value });
复制代码
  1.     }
复制代码
  1. [/code][code]    //获取数据
复制代码
  1.     function get(key) {
复制代码
  1.         var _value = sessionStorage[_getSessionKey(key)];
复制代码
  1.         return _value ? (JSON.parse(_value)["value"] || null) : null;
复制代码
  1.     }
复制代码
  1. [/code][code]    //是否存在
复制代码
  1.     function exists(key) {
复制代码
  1.         return sessionStorage[_getSessionKey(key)] ? true : false;
复制代码
  1.     }
复制代码
  1. [/code][code]    //移除
复制代码
  1.     function remove(key) {
复制代码
  1.         sessionStorage.removeItem(_getSessionKey(key));
复制代码
  1.     }
复制代码
  1. [/code][code]    //清空
复制代码
  1.     function clear() {
复制代码
  1.         for (var ind = 0; ind < sessionStorage.length; ind++) {
复制代码
  1.             var _key = sessionStorage.key(ind),
复制代码
  1.                 key = _getKey(_key);
复制代码
  1.             if (key) {
复制代码
  1.                 sessionStorage.removeItem(_key);
复制代码
  1.             }
复制代码
  1.         }
复制代码
  1.     }
复制代码
  1. [/code][code]    //获取所有键
复制代码
  1.     function getKeys() {
复制代码
  1.         var _keys = [];        
复制代码
  1.         for (var ind = 0; ind < sessionStorage.length; ind++) {
复制代码
  1.             var _key = sessionStorage.key(ind),
复制代码
  1.                 key = _getKey(_key);
复制代码
  1.             if (key) {
复制代码
  1.                 _keys.push(key);
复制代码
  1.             }
复制代码
  1.         }
复制代码
  1.         return _keys;
复制代码
  1.     }
复制代码
  1. [/code][code]    //获取所有值
复制代码
  1.     function getValues() {
复制代码
  1.         var _values = [];
复制代码
  1.         for (var ind = 0; ind < sessionStorage.length; ind++) {
复制代码
  1.             var _key = sessionStorage.key(ind),
复制代码
  1.                 key = _getKey(_key);
复制代码
  1.             if (key) {
复制代码
  1.                 _values.push(get(key));
复制代码
  1.             }
复制代码
  1.         }
复制代码
  1.         return _values;
复制代码
  1.     }
复制代码
  1. [/code][code]    //获取所有数据
复制代码
  1.     function getDatas() {
复制代码
  1.         var _datas = {};
复制代码
  1.         for (var ind = 0; ind < sessionStorage.length; ind++) {
复制代码
  1.             var _key = sessionStorage.key(ind),
复制代码
  1.                 key = _getKey(_key);
复制代码
  1.             if (key) {
复制代码
  1.                 _datas[key] = get(key);
复制代码
  1.             }
复制代码
  1.         }
复制代码
  1.         return _datas;
复制代码
  1.     }
复制代码
  1. [/code][code]    //获取长度
复制代码
  1.     function getLength() {
复制代码
  1.         return getKeys().length;
复制代码
  1.     }
复制代码
  1.   
复制代码
  1.   //当前会话
复制代码
  1.     window.session =  {
复制代码
  1.         getSessionID: _getSessionID
复制代码
  1.         , getLength: getLength
复制代码
  1.         , set: set
复制代码
  1.         , get: get
复制代码
  1.         , exists: exists
复制代码
  1.         , remove: remove
复制代码
  1.         , clear: clear
复制代码
  1.         , getKeys: getKeys
复制代码
  1.         , getValues: getValues
复制代码
  1.         , getDatas: getDatas
复制代码
  1.     };
复制代码
  1. }());
复制代码
  1. [/code][code]
复制代码

源码地址
https://github.com/penn6699/jsUtil/blob/master/Session.js
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP