/**
* Created by 13352 on 2018/7/5.
*/
define(function() {
var session = {
_id: null,
_cookieCache: undefined,
_init: function() {
if (!) {
= Math.random();
}
this._id = ;
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:///docs/release/2.1.11/comments/require.js
// https:///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}
});