- 状态设置成功后将状态值存入cookie中,设置过期时间(有需要时可重新赋值更新过期时间)
//5天后过期
setCookieFiveDays: function (name, value, days = 5) {
let expiresTime = new Date();
expiresTime.setTime(expiresTime.getTime() + 1000 * 60 * 60 * 24 * days);
document.cookie = name + '=' + value + ';expires=' + expiresTime.toGMTString() + ';path=/';
},
//当天内有效(过期时间23:59:59)
setCookieOneDay: function (name, value) {
var curDate = new Date(); //当前时间戳
var curTamp = curDate.getTime(); //当前日期
var curDay = curDate.toLocaleDateString();
var curWeeHours = 0;
if (navigator.userAgent.toLowerCase().indexOf("safari") != -1) {
//当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态
curWeeHours = new Date(curDay).getTime() + (8 * 60 * 60 * 1000) - 1;
} else {
curWeeHours = new Date(curDay).getTime() - 1;
}
//当日已经过去的时间(毫秒)
var passedTamp = curTamp - curWeeHours;
//当日剩余时间
var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
var leftTime = new Date();
leftTime.setTime(leftTamp + curTamp);
document.cookie = name + "=" + value + ";expires=" + leftTime.toGMTString() + ";path=/";
},
- 再次进入时判断是否有cookie,判断状态,然后进行自己的业务
getCookie: function (name) {
//name 为想要取到的键值的键名
let reg = /\s/g;
let result = document.cookie.replace(reg, '');
let resultArr = result.split(';');
for (var i = 0; i < resultArr.length; i++) {
let nameArr = resultArr[i].split('=');
if (nameArr[0] == name) {
return nameArr[1];
}
}
return null;
},
- 根据业务逻辑移除cookie
removeCookie: function (name) {
//name为想要删除的Cookie的键名
var oDate = new Date(); //时间对象
oDate.setDate(new Date().getDate() - 1);
document.cookie = name + "=123;expires=" + oDate + ";path=/";
}
完整代码
export const cookie = {
//5天后过期
setCookieFiveDays: function (name, value, days = 5) {
let expiresTime = new Date();
expiresTime.setTime(expiresTime.getTime() + 1000 * 60 * 60 * 24 * days);
document.cookie = name + '=' + value + ';expires=' + expiresTime.toGMTString() + ';path=/';
},
//当天内有效(过期时间23:59:59)
setCookieOneDay: function (name, value) {
var curDate = new Date(); //当前时间戳
var curTamp = curDate.getTime(); //当前日期
var curDay = curDate.toLocaleDateString();
var curWeeHours = 0;
if (navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
//当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态
curWeeHours = new Date(curDay).getTime() + 8 * 60 * 60 * 1000 - 1;
} else {
curWeeHours = new Date(curDay).getTime() - 1;
}
//当日已经过去的时间(毫秒)
var passedTamp = curTamp - curWeeHours;
//当日剩余时间
var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
var leftTime = new Date();
leftTime.setTime(leftTamp + curTamp);
document.cookie = name + '=' + value + ';expires=' + leftTime.toGMTString() + ';path=/';
},
getCookie: function (name) {
//name 为想要取到的键值的键名
let reg = /\s/g;
let result = document.cookie.replace(reg, '');
let resultArr = result.split(';');
for (var i = 0; i < resultArr.length; i++) {
let nameArr = resultArr[i].split('=');
if (nameArr[0] == name) {
return nameArr[1];
}
}
return null;
},
removeCookie: function (name) {
//name为想要删除的Cookie的键名
var oDate = new Date(); //时间对象
oDate.setDate(new Date().getDate() - 1);
document.cookie = name + '=123;expires=' + oDate + ';path=/';
}
};
//***************使用****************
//写入cookie
cookie.setCookieFiveDays("aaa","bbbb");
//获取cookie
let cookieData = cookie.getCookie("aaa");
if(cookieData ){
//TODO:业务逻辑
}
//移除cookie(需要时使用)
cookie.removeCookie("aaa");