/**
* Created by 13352 on 2018/7/5.
*/
define(function() {
var session = {
_id: null,
_cookieCache: undefined,
_init: function() {
if (!window.name) {
window.name = Math.random();
}
this._id = window.name;
this._initCache(); // See if we've changed protcols
var matches = (new RegExp(this._generatePrefix() + "=([^;]+);")).exec(document.cookie);
if (matches && document.location.protocol !== matches[1]) {
this._clearSession();
for (var key in this._cookieCache) {
try {
if (this._cookieCache.hasOwnProperty(key)) {
window.sessionStorage.setItem(key, this._cookieCache[key]);
}
} catch (e) {
console.error(e);
}
}
}
document.cookie = this._generatePrefix() + '=' + document.location.protocol + ';path=/;expires=' + (new Date((new Date).getTime() + 120000)).toUTCString();
},
_generatePrefix: function() {
return '__session:' + this._id + ':';
},
_initCache: function() {
var cookies = document.cookie.split(';');
this._cookieCache = {};
var self = this;
cookies.forEach(function(cookie) {
var kv = cookie.split('=');
if ((new RegExp(self._generatePrefix() + '.+')).test(kv[0]) && kv[1]) {
self._cookieCache[kv[0].split(':', 3)[2]] = kv[1];
}
});
},
_setFallback: function(key, value, onceOnly) {
var cookie = this._generatePrefix() + key + "=" + value + "; path=/";
if (onceOnly) {
cookie += "; expires=" + (new Date(Date.now() + 120000)).toUTCString();
}
document.cookie = cookie;
this._cookieCache[key] = value;
return this;
}, _getFallback: function(key) {
if (!this._cookieCache) {
this._initCache();
}
return this._cookieCache[key];
}, _clearFallback: function() {
for (var i in this._cookieCache) {
document.cookie = this._generatePrefix() + i + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
this._cookieCache = {};
}, _deleteFallback: function(key) {
document.cookie = this._generatePrefix() + key + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
delete this._cookieCache[key];
},
get: function(key) {
return window.sessionStorage.getItem(key) || this._getFallback(key);
},
set: function(key, value, onceOnly) {
try {
window.sessionStorage.setItem(key, value);
} catch (e) {}
this._setFallback(key, value, onceOnly || false);
return this;
},
del: function(key) {
return this.remove(key);
},
remove: function(key) {
try {
window.sessionStorage.removeItem(key);
} catch (e) {
console.error(e);
}
this._deleteFallback(key);
return this;
},
_clearSession: function() {
try {
window.sessionStorage.clear();
} catch (e) {
for (var i in window.sessionStorage) {
window.sessionStorage.removeItem(i);
}
}
},
clear: function() {
this._clearSession();
this._clearFallback();
return this;
}
};
session._init(); return session;
});

  

  config.js

// https://requirejs.org/docs/release/2.1.11/comments/require.js
// https://requirejs.org/docs/release/2.1.11/minified/require.js
require.config({
paths : {
"jquery-1.10.2" : "../assets/js/jquery",
"jquery-ui": "../assets/jqui/jquery-ui",
// "jquery": "../assets/bootstrap/js/jquery-3.3.1.min",
"jquery": "../assets/ckeditor/js/jquery-3.2.1",
"ckeditor-core": "../assets/ckeditor/ckeditor",
'ckeditor-jquery': "../assets/ckeditor/adapters/jquery",
"jquery-cookie": "../assets/js/jquery.cookie",
"bootstrap": "../assets/bootstrap/js/bootstrap",
"alert": "js/lib/alert",
"supersized": "../assets/js/login/supersized.3.2.7",
"url-param": "js/util/getUrlParam",
'image-preview': 'js/util/preview',
'cropbox': "../assets/cropbox/cropbox",
'session': "js/util/session"
},
shim: {
'ckeditor-jquery':{deps:['jquery','ckeditor-core']},
'jquery-cookie': {deps: ['jquery']},
'bootstrap': {deps: ['jquery']},
'jquery-ui':{deps: ['jquery']},
'supersized': {deps: ['jquery']},
'cropbox': {deps: ['jquery']}
}
});

  

  Usage:

require(['session'], function(session) {
session.set('schoolName', '许昌市家里蹲大学');
var schoolName = session.get('schoolName');
console.log(schoolName); // 许昌市家里蹲大学 session.set('a', JSON.stringify({a:1,b:2}));
var a= session.get('a');
console.log(a); // {"a":1,"b":2}
});

  

html5 sessionStorage util的更多相关文章

  1. [Html5]sessionStorage和localStorage常见操作

    摘要 [Html5]sessionStorage和localStorage的区别 索引 上篇文章简单介绍了它们的区别,已经常见的用法.那我们能通过. 或者类似dic[key]的方式访问吗?答案是当然可 ...

  2. HTML5 sessionStorage会话存储

    sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.本篇主要介绍 sessionStorage(会话存储) ...

  3. html5 sessionStorage VS loaclStorage

    localStorage:沒有時間限制的存儲,數據一致存在 sessionStorage:針對一個session的存儲,會話頁面關閉后,數據被刪除 以前這些都是通過cookie來完成的,但是cooki ...

  4. html5 sessionStorage 与 localStorage存储

    sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...

  5. [Html5]sessionStorage和localStorage的区别

    摘要 有时需要在浏览器中保存一些数据,特别在app中嵌入的h5页面中,需要在webview中保存一些数据,作为客户端的数据持久化. h5中web storage有两种存储方式:sessionStora ...

  6. HTML5 Web Storage 特性

    原文地址: Using HTML5 Web Storage 原文日期: 2010年06月28日 翻译日期: 2013年08月12日 当下Web开发领域最火爆的词语当属 HTML5.HTML5标准的新特 ...

  7. css3和html5

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase

    Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...

  9. 15款增强web体验的Javascript库

    1. Pikaday: Standalone JavaScript Datepicker 这是一个令人耳目一新的JavaScript日期选择器 轻量轻(压缩和gzip后小于5KB) 没有依赖其它JS框 ...

随机推荐

  1. docker 部署mysql连接问题

    发现windows上有一个docker descktop(虽然不怎么好用), 安装之后准备直接用docker搭本地测试环境的基础设施(比如MySQL,Redis,MongoDB,ES啥的), 虽然比去 ...

  2. NOIP 模拟 $30\; \rm 毛一琛$

    题解 \(by\;zj\varphi\) 如何判断一个集合可以被拆成两个相等的部分? 枚举两个集合,如果它们的和相等,那么他们的并集就是合法的,复杂度 \(\mathcal O\rm(3^n)\) \ ...

  3. java深度复制

    索要克隆的类必须实现:Serializable,Cloneable接口import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...

  4. RabbitMq安装(单点与集群)rabbitMq以及状态查询

    集群进入某个节点查看指令:rabbitmqctl cluster_status单机版:docker run -d --name rabbit \-e RABBITMQ_DEFAULT_USER=adm ...

  5. 测试Kaggle kernel commit 是否会删除以前的output

    在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...

  6. python matplotlib 绘图+显示数值

    参考:https://www.jb51.net/article/152685.htm 用plt.text函数 import numpy as np import matplotlib.mlab as ...

  7. Python3-sqlalchemy-orm 回滚

    #-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ...

  8. css 边框添加三角形指向,简单粗暴,易学易懂

    构建一个 div , class 随便命名 css 部分 class 名字 { position: relative; // 相对定位是重点 } class名字:before,class名字:afte ...

  9. JAVA 之 每日一记 之 算法( 给你一个Excel表列序号,返回出它对应的数字 )

    代码结果:(只想要代码的可以离开了,代码给你了,绝对能用的.想要思路的往下看.) class Solution { public int titleToNumber(String s) { int a ...

  10. 云原生 AI 前沿:Kubeflow Training Operator 统一云上 AI 训练

    分布式训练与 Kubeflow 当开发者想要讲深度学习的分布式训练搬上 Kubernetes 集群时,首先想到的往往就是 Kubeflow 社区中形形色色的 operators,如 tf-operat ...