/**
* 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. 旅游景点 Tourist Attractions 题解

    题面在这里 再次破了纪录,连做了3天... 让我们从头来一点一点分析 1.预处理 先看题面,乍一看貌似是个图论题,有n个点m条边,给定一些必须经过的点和强制经过顺序,求一条最短路 我们发现n和m都比较 ...

  2. jsoup的Node类

    一.简介 Node类直接继承Object,实现了Cloneable接口,它是一个抽象类,类声明:public abstract class Node extends Object implements ...

  3. Qt 中的属性系统(Property System)

    21 人赞同了该文章 本节内容主要讲解我对 Qt 属性系统的理解.官方文档参考 The Property System. 如何理解"属性系统"这个概念? 一般我们说一个类有什么属性 ...

  4. 虚拟机--第一章走进java--(抄书)

    这是本人阅读周志明老师的<深入理解Java虚拟机>第二版抄写的,有很多省略,不适合直接阅读,需要阅读请出门左转淘宝,右转京东,支持周老师(侵权请联系删除) 第一章走近java 世界上并没有 ...

  5. 多线程Synchronized的两种锁

    Synchronized的作用: 能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果 Synchronized的两个用法: 1)对象锁 包括方法锁(默认锁对象为this当前实例对 ...

  6. http请求包含哪几个部分(请求行、请求头、请求体)

    http协议报文     1.请求报文(请求行/请求头/请求数据/空行)         请求行             求方法字段.URL字段和HTTP协议版本             例如:GET ...

  7. Mybatis源码解析3——核心类SqlSessionFactory,看完我悟了

    这是昨晚的武汉,晚上九点钟拍的,疫情又一次来袭,曾经熙熙攘攘的夜市也变得冷冷清清,但比前几周要好很多了.希望大家都能保护好自己,保护好身边的人,生活不可能像你想象的那么好,但也不会像你想象的那么糟. ...

  8. JavaScript高级程序设计读书笔记之JSON

    JSON(JavaScript Object Notation)JavaScript对象表示法.JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据. ...

  9. 史上最详细的信号使用说明(已被收藏和N次)

    Unix环境高级编程(第三版) 第10章 信号 文章目录 1. 引言 2. 信号的概念 2.1 信号操作之忽略信号 2.2 信号操作之捕捉信号 2.3 信号操作之执行系统默认操作 2.4 常见的信号 ...

  10. MySQL实战45讲(16--20)-笔记

    目录 16 | "order by"是怎么工作的? 全字段排序 rowid 排序 17 | 如何正确地显示随机消息? 内存临时表 磁盘临时表 随机排序方法 18 | 为什么这些SQ ...