cookie設定過期時間
阿新 • • 發佈:2020-12-21
技術標籤:網頁儲存cookiejavascript
- 封裝初衷-不想每次設定cookie的過期時間都寫一遍,比較煩!
class happyCookie { constructor() { } /** * @param {*} cookieName:cookie的名字 string * @param {*} cookieValue:cookie的值 string * @param {*} expiresObj:不傳/{}/{timeScale:'秒/分/時 日/月/年',timeSize:number} */ setCookie(cookieName, cookieValue, expiresObj = null) { if (!expiresObj) {//使用者沒有傳入第三個引數 //不設定這個時間戳,瀏覽器會在頁面關閉時即將刪除該cookie document.cookie = `${cookieName}=${cookieValue}`; } else if (Object.keys(expiresObj).length == 0) {//輸入的是一個空物件 設定預設過期時間:15分鐘 let newDate = new Date();//獲取當前的時間物件 let nowTimeStamp = newDate.getTime();//獲取當前時間物件的時間戳 nowTimeStamp += (1000 * 60 * 15); newDate.setTime(nowTimeStamp); let expires = "expires=" + newDate.toGMTString(); document.cookie = `${cookieName}=${cookieValue};${expires}`; } else { let newDate = new Date();//獲取當前的時間物件 let nowTimeStamp = newDate.getTime();//獲取當前時間物件的時間戳 switch (expiresObj.timeScale) {//判斷時間規格 case '秒': nowTimeStamp += (1000 * expiresObj.timeSize) break; case '分': nowTimeStamp += (1000 * 60 * expiresObj.timeSize) break; case '時': nowTimeStamp += (1000 * 60 * 60 * expiresObj.timeSize) break; case '日': nowTimeStamp += (1000 * 60 * 60 * 24 * expiresObj.timeSize) break; case '月': nowTimeStamp += (1000 * 60 * 60 * 24 * 30 * expiresObj.timeSize) break; case '年': nowTimeStamp += (1000 * 60 * 60 * 24 * 30 * 12 * expiresObj.timeSize) break; default: break; } newDate.setTime(nowTimeStamp) let expires = "expires=" + newDate.toGMTString(); document.cookie = `${cookieName}=${cookieValue};${expires}`; } } getCookie(cookieName) { let name = cookieName + "="; let ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i].trim(); if (c.indexOf(name) == 0) return c.substring(name.length, c.length); } return ""; } delCookie(cookieName) { document.cookie = cookieName + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; } } export { happyCookie }