1. 程式人生 > 其它 >cookie設定過期時間

cookie設定過期時間

技術標籤:網頁儲存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
}