首頁  >  文章  >  web前端  >  JavaScript Cookie的了解與使用

JavaScript Cookie的了解與使用

jacklove
jacklove原創
2018-05-07 10:36:081620瀏覽

JavaScript Cookie在快取中有著重要的作用,本篇將對其做一些介紹。

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

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

Cookie 的功能是用來解決 "如何記錄客戶端的使用者資訊":

當使用者造訪 web 頁面時,他的名字可以記錄在 cookie 中。

在使用者下次造訪該頁面時,可以在 cookie 中讀取使用者存取記錄。

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

username=John Doe

當瀏覽器從伺服器上請求 web 頁面時, 屬於該頁面的 cookie 會被添加到該請求中。服務端透過這種方式來獲取用戶的資訊。

使用 JavaScript 建立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 2013 12:00:00 GMT";

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

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

使用JavaScript 讀取Cookie

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

var x = document.cookie;

document.cookie 將以字串的方式傳回所有的cookie,類型格式: cookie1=value; cookie2=value; cookie3=value;    

使用JavaScript 修改Cookie

在JavaScript 中,修改cookie 類似於建立cookie,如下所示:

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

舊的cookie 將會被覆寫。

使用 JavaScript 刪除 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 字串

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

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

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

cookie1=value; cookie2=value;

顯示所有Cookie  建立Cookie 1  建立Cookie 2 刪除Cookie 1  刪除Cookie 2

如果您需要尋找一個指定cookie 值,您必須建立一個JavaScript 函數在cookie 字串中尋找cookie 值。

JavaScript Cookie 實例

在下列實例中,我們將建立 cookie 來儲存訪客名稱。

首先,訪客造訪 web 頁面, 他將被要求填寫自己的名字。該名字會儲存在 cookie 中。

訪客下次造訪頁面時,他會看到一個歡迎的訊息。

在這個實例中我們會建立3 個JavaScript 函數:

設定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。

此函數設定了 cookie 名、cookie 值、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 "";}

函數解析:

cookie 名稱的參數為cname。

建立一個文字變數用於檢索指定 cookie :cname "="。

使用分號來分割 document.cookie 字串,並將分割後的字串陣列賦值給 ca (ca = document.cookie.split(';'))。

循環 ca 陣列 (i=0;i

如果找到cookie(c.indexOf(name) == 0),傳回cookie 的值(c.substring(name.length,c.length)。

#如果沒有找到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;}function getCookie(cname){
    var name = cname + "=";    var ca = document.cookie.split(&#39;;&#39;);    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 "";}function checkCookie(){
    var user=getCookie("username");    if (user!=""){
        alert("欢迎 " + user + " 再次访问");    }
    else {
        user = prompt("请输入你的名字:","");          if (user!="" && user!=null){
            setCookie("username",user,30);        }
    }}

本篇对相关cookie的相关知识做出了一些了解,更多的学习资料清关注php中文网即可观看。

相关推荐:

JavaScript 弹窗事件的相关知识

JavaScript typeof, null, 和 undefined的相关知识

JavaScript RegExp 对象的使用介绍

以上是JavaScript Cookie的了解與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn