/**
* @description 格式化cookie选项
* @param Obj
*/
function formatCookie(Obj = {}) {
const objKeys = Object.keys(Obj);
if (objKeys.length < 1) return '';
let str = '';
objKeys.map(item => {
const value = Obj[item];
value && (str += `;${item}=${value}`);
});
return str;
}
/**
* @description js原生设置cookie
* @param Obj
* @param {String} Obj.name 给你要设置的cookie起个名字(key)
* @param {String} Obj.value cookie的具体内容(value)
* @param {String} Obj.maxAge 设置cookie的相对过期时间,单位:s
* @param {String} Obj.expire 设置cookie的绝对过期时间(国际标准时间),单位:s
* @param {Boolean} Obj.secure 设置cookie是否只通过https传输
*/
function setCookie(Obj = {}) {
if (!Obj.name) return '';
const cookieStr = `${Obj.name}=${Obj.value}` + formatCookie({
'path': Obj.path || '',
'max-age': Obj.maxAge || 0,
'expires': Obj.expire || ''
});
Obj.secure === true && (cookieStr += ';secure');
document.cookie = cookieStr;
}
/**
* @description js原生获取指定cookie
* @param name 获取指定cookie
*/
function getCookie(name) {
const cookies = document.cookie;
if (!cookies) return '';
const oCookie = {};
const cookieArr = cookies.split(';');
for (item of cookieArr) {
const index = item.indexOf('=');
oCookie[item.slice(0, index).trim()] = item.slice(index + 1);
}
return oCookie[name];
}
/**
* @description js原生删除指定cookie
* @param name
*/
function removeCookie(name) {
setCookie({
name,
value: '',
maxAge: -1
});
};
// maxAge调用示例
setCookie({
name: 'test',
value: 'test',
maxAge: 10 // 单位s
});
// expire调用示例
let ex = new Date();
ex.setSeconds(100);
setCookie({
name: 'test',
value: 'test',
expire: ex.toUTCString()
});
// 仅https传输调用示例
setCookie({
name: 'test',
value: 'test',
maxAge: 10, // 单位s
secure: true
});
原生JS操作cookie (增、删、取)基于es6
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 功能 主要实现的功能是有个活动的结果弹窗需要每天进入页面时自动弹出来一次,然后点击关闭之后,当天只弹出一次,直到活...
- Object.assign()有兼容性问题,兼容es5的方法如下https://blog.csdn.net/fai...
- 原链接:select 下拉菜单Option对象使用add(elements,index)方法动态添加 - ITCH...