📖
JavaScript - 網站程式設計
  • JavaScript - 網站程式設計
  • 1. 簡介
    • 1.1 講者簡介
    • 1.2 課程簡介
    • 1.3 開發工具簡介
  • 2. JS 在網頁上的基本觀念
    • 2.1 變數宣告
    • 2.2 資料型態
    • 2.3 基礎節點操控
    • 2.4 套用方式
  • 3. 瀏覽器物件模型 (BOM)
    • 3.1 Window
    • 3.2 Location
    • 3.3 內建彈出視窗
  • 4. 文件物件模型 (DOM)
    • 4.1 DOM 簡介
    • 4.2 取得節點、內容、屬性
    • 4.3 節點查找(Traversing)
    • 4.4 更新節點
    • 4.5 新增節點
    • 4.6 刪除節點、屬性
    • 4.7 操控 class 屬性
    • 4.8 練習
  • 5. 事件 (Events)
    • 5.1 事件(Event)簡介
    • 5.2 事件物件(Event Object)
    • 5.3 window 及 document 事件
    • 5.4 滑鼠相關事件
    • 5.5 鍵盤相關事件
    • 5.6 scroll 事件
    • 5.7 表單事件及停止元素預設行為
    • 5.8 動態事件綁定
    • 5.9 練習
  • 6. 表單 (Form)
    • 6.1 取得表單資料
    • 6.2 設定表單資料
    • 6.3 練習
  • 7. 儲存機制(Storage)
    • 7.1 Cookies
    • 7.2 localStorage
  • 8. ECMAScript (ES)
    • 8.1 Template String
    • 8.2 Arrow Function
    • 8.3 Spread and Rest Operator
    • 8.4 物件屬性簡寫
    • 8.5 解構賦值
  • 9. 作業
  • 10. 參考資料
Powered by GitBook
On this page
  • 什麼是 Cookie?
  • 在哪裡可看到 cookie 資訊?
  • Cookie 的操作
  • 建立 Cookie 與更新
  • 取得 Cookie
  • 設定 Cookie 存活期間
  • 刪除 Cookie
  • Cookie 有用函式
  1. 7. 儲存機制(Storage)

7.1 Cookies

Previous7. 儲存機制(Storage)Next7.2 localStorage

Last updated 26 days ago

在 practice 資料夾下,建立 cookie.html ,以便練習。 並用網域(例:http://127.0.0.1:5500/practice/cookie.html )的方式來開啟。

什麼是 Cookie?

  • Cookie 是網站在您瀏覽網頁時儲存在您的電腦上的資料。

  • Cookie 可用於儲存各種資訊,包含個人識別資訊(例如姓名、id……等等)。

  • 容量空間有限,大約 4K 左右。

  • 可以設定 cookie 的存活期間,如果沒有設定,預設就是當下使用者瀏覽網頁的期間(session),結束瀏覽器的話就自動消失。

在哪裡可看到 cookie 資訊?

開啟開發者工具,在 Application 頁籤當中。

Cookie 的操作

建立 Cookie 與更新

以下程式建立了兩個 cookie,名稱(Name)叫做「food_id」,值(Value)是「abc」;另一個是名稱叫做「ad_code」,值是「year2020」:(執行完以下程式後,找出在哪裡看得到。)

document.cookie = "food_id=abc";
document.cookie = "ad_code=year2020";

更新的語法同上,如果 food_id 本身是已經存在的話,那就會是更新。

留意 path,如下圖:

表示 ad_code 這個 cookie,只有在網址路徑為 /path 底下時,才能取得該 cookie。

如果希望 ad_code 這個 cookie,是在根網域底下都可取得的話,則原始碼改成:

document.cookie = "ad_code=year2020; path=/";

取得 Cookie

var my_cookies = document.cookie;

console.log(my_cookies); // food_id=def; ad_code=year2020

會是一整個字串。如果想取得單一的資訊呢? 其實滿麻煩。參考後續的函式提供。

設定 Cookie 存活期間

以下原始碼,設定 ad_code 這個 cookie 的存活期間是到「Thu, 18 Dec 2999 03:00:00 UTC」

document.cookie = "ad_code=year2020; expires=Thu, 18 Dec 2999 03:00:00 UTC";

刪除 Cookie

只要將 cookie 的存活期間設定成過去的時間,就會刪除,例:

document.cookie = "ad_code=; expires=Thu, 18 Dec 2018 03:00:00 UTC";

Cookie 有用函式

// 設定 cookie
function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  var expires = "expires="+d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

// 取得 cookie 的值
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

// 檢查某 cookie 是否存在
function checkCookie(cname) {
  var cookie_value = getCookie(cname);
  if (cookie_value != "") {
    return true;
  } else {
    return false;
  }
}

在 practice/js/ 資料夾下,建立 all_func.js 檔案,將以上原始碼放進去。然後頁面要載入 all_func.js 檔案。

然後練習執行以下程式:

setCookie("new_cookie", "new_value", 1); // 建立 cookie
console.log(getCookie("new_cookie"));    // 取得 new_cookie 的值
console.log(checkCookie("new_cookie"));  // 檢查 new_cookie 是否存在

官方提供了 setCookie 及 getCookie 函式,讓我們方便設定 cookie 及 取得 cookie,第三個 checkCookie 是老師改寫,判斷某 cookie 是否存在,回傳 true 或 false。

https://www.w3schools.com/js/js_cookies.asp
Cookie