首頁 > 軟體

JavaScript實現cookie的操作

2022-05-24 22:04:04

cookie 用於儲存 web 頁面的使用者資訊。

一、什麼是 Cookie?

Cookie 是一些資料, 儲存於你電腦上的文字檔案中。

當 web 伺服器向瀏覽器傳送 web 頁面時,在連線關閉後,伺服器端不會記錄使用者的資訊。

Cookie 的作用就是用於解決 "如何記錄使用者端的使用者資訊":

  • 當用戶存取 web 頁面時,他的名字可以記錄在 cookie 中。
  • 在使用者下一次存取該頁面時,可以在 cookie 中讀取使用者存取記錄。

Cookie 以名/值對形式儲存,如下所示:

username=John Doe

當瀏覽器從伺服器上請求 web 頁面時, 屬於該頁面的 cookie 會被新增到該請求中。伺服器端通過這種方式來獲取使用者的資訊。

二、建立Cookie

JavaScript 可以使用 document.cookie 屬性來建立 、讀取、及刪除 cookie。

JavaScript 中,建立 cookie 如下所示:

document.cookie="username=John Doe";

您還可以為 cookie 新增一個過期時間(以 UTC 或 GMT 時間)。預設情況下,cookie 在瀏覽器關閉時刪除:

document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";

您可以使用 path 引數告訴瀏覽器 cookie 的路徑。預設情況下,cookie 屬於當前頁面。

document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

建立 cookie 值的函數

首先,我們建立一個函數用於儲存存取者的名字:

該函數設定了 cookie 名、cookie 值、cookie過期時間。

function setCookie(cname,cvalue,exdays)
{
  var d = new Date();
  d.setTime(d.getTime()+(exdays*24*60*60*1000));
  var expires = "expires="+d.toGMTString();
  document.cookie = cname + "=" + cvalue + "; " + expires; //cookie 的名稱為 cname,cookie 的值為 cvalue,並設定了 cookie 的過期時間 expires。
}

呼叫方法:setCookie(cookie名稱,cookie數值,過期時間(天))

setCookie('sex','男', 10);

三、讀取 Cookie

document.cookie 屬性看起來像一個普通的文字字串,其實它不是。

即使您在 document.cookie 中寫入一個完整的 cookie 字串, 當您重新讀取該 cookie 資訊時,cookie 資訊是以名/值對的形式展示的。

如果您設定了新的 cookie,舊的 cookie 不會被覆蓋。 新 cookie 將新增到 document.cookie 中,所以如果您重新讀取document.cookie,您將獲得如下所示的資料:

cookie1=value; cookie2=value;

在 JavaScript 中, 可以使用以下程式碼來讀取 cookie:

var x = document.cookie;

讀取 cookie 值的函數

然後,我們建立一個函數使用者返回指定 cookie 的值:

function getCookie(cname)
{
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++) 
  {
    var c = ca[i].trim();
    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
  return "";
}

呼叫方法:getCookie(cookie名稱)

getCookie('username');

四、修改 Cookie

在 JavaScript 中,修改 cookie 類似於建立 cookie,如下所示:舊的 cookie 將被覆蓋。

document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

五、刪除 Cookie

刪除 cookie 非常簡單。您只需要設定 expires 引數為以前的時間即可。如下所示,設定為 Thu, 01 Jan 1970 00:00:00 GMT:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

注意,當您刪除時不必指定 cookie 的值。

移除 cookie函數

function removeCookie(key) {
    setCookie(key, '', -1);  //cookie的過期時間設為昨天
}

呼叫方法:removeCookie(cookie名稱)

removeCookie('age');

六、判斷瀏覽器是否啟用cookie

var cookiesEnabled = (function(){
  var id = new Date().getTime();
  document.cookie =   '__cookieprobe='  + id + ';path=/';
  return (document.cookie.indexOf(id) !== -1);

})();

到此這篇關於JavaScript操作Cookie的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com