UNPKG

@ivujs/i-utils

Version:

前端模块化 JavaScript 工具库

68 lines (65 loc) 2.05 kB
import { isEmpty } from '../validate/index.mjs'; /** * @module 浏览器Cookie */ /** * 浏览器是否支持 Cookie * @returns {boolean} 返回true和false */ function isSupportCookie() { return window.navigator.cookieEnabled; } /* cookie存储 */ /** * 通过name获取cookie * @param {string} name 参数name * @returns {string} 返回获取的值 */ function getCookie(name) { if (typeof document == "undefined") return ""; // cookie中每个分号后面是有个空格的,需要替换掉 const arr = document.cookie ? document.cookie.replace(/\s/g, "").split(";") : []; for (const i in arr) { const tempArr = arr[i].split("="); if (tempArr[0] === name) { return decodeURIComponent(tempArr[1]); } } return ""; } /** * 通过name设置cookie * 注:timestamp参数不填,则默认为session级别,浏览器关闭即cookie过期 * @param {string} name 参数name * @param {string} value 设置的value * @param {number} timestamp 过期的时间戳值,默认为一天,设置一天过期则为:24*60*60*1000 */ function setCookie(name, value, timestamp = 24 * 60 * 60 * 1000) { if (typeof document == "undefined") return; document.cookie = name + "=" + value + ";expires=" + new Date(Date.now() + timestamp); } /** * 通过name删除cookie * @param {string} name 参数name */ function removeCookie(name) { if (isEmpty(name)) return; setCookie(name, "", -1); } /** * 清空当前站点域名的cookie * @param {string} domain 域名地址,默认是当前站点域名 */ function clearCookie(domain = document.domain) { const names = document.cookie.match(/[^ =;]+(?==)/g) || []; if (names && names.length > 0) { for (let i = names.length; i--;) { document.cookie = names[i] + "=0;path=/;" + domain ? "domain=" + domain + ";" : "" + "expires=" + new Date(0).toUTCString(); } } } export { clearCookie, getCookie, isSupportCookie, removeCookie, setCookie };