in inlong-tubemq/resources/assets/scripts/common/helper.js [70:314]
"cookie": function (key, value, options) {
// #lizard forgives
var cookiex = $.cookie,
options = options || {},
ret,
result,
decode = options.raw ? function (s) {
return s;
} : decodeURIComponent,
getRet = function (tkey) {
var tret = '';
if (result = new RegExp('(?:^|; )' + encodeURIComponent(tkey) + '=([^;]*)').exec(document.cookie)) {
try {
tret = decode(result[1]);
} catch (e) {
tret = result[1];
}
}
return tret;
};
// key and value given, set cookie...
if (arguments.length > 1 && (value === null || typeof value !== "object")) {
if (value === null) {
//删除forever里面的东西,只改key和expires,在最后才写cookie
var forever = getRet("duo_common_forever"),
inCommon = false,
oldKey = key,
oldDomain = options.domain,
oldPath = options.path;
if (forever != '') {
var foreverList = forever.split('&');
for (var i = 0; i < foreverList.length; i++) {
if (foreverList[i].split('=')[0] == key) {
foreverList.splice(i, 1);
key = "duo_common_forever";
value = foreverList.join("&");
options.expires = new Date(0xfffffffffff);
options.domain = ".qq.com";
options.path = "/";
inCommon = true;
break;
}
}
}
//删除session里面的东西,只改key和expires,在最后才写cookie
if (!inCommon) {
var session = getRet("duo_common_session");
if (session != '') {
var sessionList = session.split('&');
for (var i = 0; i < sessionList.length; i++) {
if (sessionList[i].split('=')[0] == key) {
sessionList.splice(i, 1);
key = "duo_common_session";
value = sessionList.join("&");
options.expires = null;
options.domain = ".qq.com";
options.path = "/";
inCommon = true;
break;
}
}
}
}
//如果不在公用cookie里面就直接在最后删除原生cookie就行了,如果在公用cookie里面就改变
if (!inCommon) {
value = '';
options.expires = new Date(0);
} else {
//删除原生cookie,带直接写cookie操作
document.cookie = [
encodeURIComponent(oldKey),
'=',
"",
'; expires=' + (new Date(0)).toGMTString(),
oldPath ? '; path=' + oldPath : '; path=/',
oldDomain ? '; domain=' + oldDomain : '; domain=.qq.com',
options.secure ? '; secure' : ''
].join('');
}
} else {
//写cookie
if (typeof options.expires === 'number') {
//计时cookie,以天计
var days = options.expires,
t = options.expires = new Date();
t.setDate(t.getDate() + days);
} else if (typeof options.expires === 'string' && options.expires
!= 'forever') {
//计时cookie ,根据开发者输入的尾缀定单位
var t = parseInt(options.expires),
suffix = options.expires[options.expires.length - 1],
now = new Date();
if (suffix == "s") {
now.setSeconds(now.getSeconds() + t);
options.expires = now;
} else if (suffix == "m") {
now.setMinutes(now.getMinutes() + t);
options.expires = now;
} else if (suffix == "h") {
now.setHours(now.getHours() + t);
options.expires = now;
} else if (suffix == "d") {
now.setDate(now.getDate() + t)
options.expires = now;
} else if (suffix == "M") {
now.setMonth(now.getMonth() + t);
options.expires = now;
}
} else if (options.expires == 'forever') {
//永久cookie
options.expires = new Date(0xfffffffffff);
if (options.inCommon) {
//如果使用公用cookie,强制使用domain : .qq.com这个和 path : /
options.domain = ".qq.com";
options.path = "/";
var forever = cookiex("duo_common_forever");
if (forever != '') {
var retList = forever.split('&'),
inForever = false;
for (var i = 0; i < retList.length; i++) {
if (retList[i].split('=')[0] == key) {
retList[i] =
key + '=' + encodeURIComponent(String(value));
inForever = true;
break;
}
}
if (!inForever) {
value =
forever + "&" + key + '=' + encodeURIComponent(
String(value));
} else {
value = retList.join('&');
}
} else {
value = key + '=' + encodeURIComponent(String(value));
}
key = "duo_common_forever";
}
} else if ((typeof (options.expires) === "object") && (options.expires instanceof Date)) {
//用户自己传入Date对象
} else {
//浏览器进程cookie
options.expires = null;
if (options.inCommon) {
//如果使用公用cookie,强制使用domain : .qq.com这个和 path : /
options.domain = ".qq.com";
options.path = "/";
var session = cookiex("duo_common_session");
if (session != '') {
var retList = session.split('&'),
inSession = false;
for (var i = 0; i < retList.length; i++) {
if (retList[i].split('=')[0] == key) {
retList[i] =
key + '=' + encodeURIComponent(String(value));
inSession = true;
break;
}
}
if (!inSession) {
value =
session + "&" + key + '=' + encodeURIComponent(
String(value));
} else {
value = retList.join('&');
}
} else {
value = key + '=' + encodeURIComponent(String(value));
}
key = "duo_common_session";
}
}
}
//执行操作
return (document.cookie = [
encodeURIComponent(key), '=',
options.raw ? String(value) : encodeURIComponent(String(value)),
options.expires ? '; expires=' + options.expires.toGMTString() : '', // use
// expires
// attribute,
// max-age
// is
// not
// supported
// by
// IE
options.path ? '; path=' + options.path : '; path=/',
options.domain ? '; domain=' + options.domain : '; domain=.qq.com',
options.secure ? '; secure' : ''
].join(''));
}
// key and possibly options given, get cookie...
options = value || {};
ret = getRet(key);
//查找永久公用cookie
if (ret == '' && key != 'duo_common_forever') {
ret = getRet("duo_common_forever");
if (ret != '') {
var retList = ret.split('&');
for (var i = 0; i < retList.length; i++) {
if (retList[i].split('=')[0] == key) {
ret = decodeURIComponent(retList[i].split('=')[1]);
return ret;
}
}
}
ret = '';
}
//查找浏览器进程公用cookie
if (ret === '' && key != 'duo_common_session') {
ret = getRet("duo_common_session");
if (ret !== '') {
var retList = ret.split('&');
for (var i = 0; i < retList.length; i++) {
if (retList[i].split('=')[0] == key) {
ret = decodeURIComponent(retList[i].split('=')[1]);
return ret;
}
}
}
ret = '';
}
return ret;
}