UNPKG

@lancercomet/utils

Version:
76 lines (75 loc) 2.54 kB
/** * 获取一条 Cookie. * * @param {string} key Cookie 键名. * @returns {string} Cookie 内容. */ function getCookie(key) { return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || ''; } /** * 是否拥有目标 Cookie. * * @param {string} key Cookie 键名. * @returns {boolean} 是否拥有目标 Cookie. */ function hasCookie(key) { return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie); } /** * 删除一个 Cookie. * * @param {any} key Cookie 键名. * @param {any} path Cookie 所属路径. * @param {any} domain Cookie 所属域名. * @returns {boolean} 是否操作成功. */ function removeCookie(key, path, domain) { if (!key || !hasCookie(key)) { return false; } document.cookie = encodeURIComponent(key) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (domain ? '; domain=' + domain : '') + (path ? '; path=' + path : ''); return true; } /** * 设置一条 Cookie. * * @param {string} key Cookie 键名. * @param {string} value Cookie 值. * @param {(number | string | Date)} [end] Cookie 有效期, 当传入 Infinity 时设定到 9999 年, 当不传入时为会话 Cookie. * @param {string} [path] Cookie 所属路径. * @param {string} [domain] Cookie 所属域名. * @param {boolean} [isSecure] 是否为 Secure Cookie. * @returns {boolean} 是否操作成功. */ function setCookie(key, value, end, path, domain, isSecure) { if (!key || /^(?:expires|max\-age|path|domain|secure)$/i.test(key)) { return false; } var expires = ''; if (end) { if (typeof (end) === 'number') { expires = end === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + end; } else if (typeof (end) === 'string') { expires = '; expires=' + end; } else if (end instanceof Date) { expires = '; expires=' + end.toUTCString(); } } document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value) + expires + (domain ? '; domain=' + domain : '') + (path ? '; path=' + path : '') + (isSecure ? '; secure' : ''); return true; } export { getCookie, hasCookie, removeCookie, setCookie };