获取cookie
export function getCookie(name: string) {
let strCookie = document.cookie; // 获取cookie字符串
let arrCookie = strCookie.split('; '); // 分割
// 遍历匹配
for (let i = 0; i < arrCookie.length; i++) {
let arr = arrCookie[i].split('=');
if (arr[0] === name) {
return arr[1];
}
}
return '';
}
设置cookie
export function setCookie(cname, cvalue, exdays) {
let d = new Date();
d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
let expires = 'expires=' + d.toUTCString();
document.cookie = cname + '=' + cvalue + '; ' + expires;
}
在设置cookie时不能使用特殊字符,如在设置cookie的path时,路径中有#,cookie就会失效
清除指定域名cookie 若不指定则清除当前域名下指定cookie
export function clearCookie(name) {
const exp = new Date();
exp.setTime(exp.getTime() - 1);
const cval = getCookie(name);
if (cval != null) {
document.cookie = name + '=' + cval + ';path=/;domain=' + q1_domain + ';expires=' + exp.toUTCString();
}
}
清除指定域名下所有cookie 若不指定则清除当前域名下所有cookie
// 清除所有cookie函数
export function clearAllCookie() {
let date = new Date();
date.setTime(date.getTime() - 10000);
let keys = document.cookie.match(/[^ =;]+(?=\=)/g); // eslint-disable-line
if (keys) {
for (let i = keys.length; i--;) {
document.cookie = keys[i] + '=0; expire=' + date.toUTCString() + '; path=/';
}
}
}
在使用过程中遇到报错:error Unnecessary escape character: \/ no-useless-escape
在代码后面加上// eslint-disable-line就可解决