JavaScript Cookies

JavaScript Cookies

web 服務器向瀏覽器發送 web 頁面時,在鏈接關閉後,服務端不會記錄用戶的信息。Cookies 的做用就是用於存儲 web 頁面的用戶信息。html

Cookies 以名/值對形式存儲,以下所示:web

username=John Doe數組

使用 JavaScript 建立Cookie

JavaScript 可使用 document.cookie 屬性來建立 、讀取、及刪除 cookies。瀏覽器

JavaScript 中,建立 cookie 以下所示:服務器

document.cookie="username=John Doe";cookie

您還能夠爲 cookie 添加一個過時時間(以 UTC 或 GMT 時間)。默認狀況下,cookie 在瀏覽器關閉時刪除:函數

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

您可使用 path 參數告訴瀏覽器 cookie 的路徑。默認狀況下,cookie 屬於當前頁面。htm

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

使用 JavaScript 讀取 Cookie

JavaScript 中, 可使用如下代碼來讀取 cookies:

var x = document.cookie;

注意:document.cookie 將以字符串的方式返回全部的 cookies,類型格式: cookie1=value; cookie2=value; cookie3=value;

使用 JavaScript 修改 Cookie

JavaScript 中,修改 cookies 相似於建立 cookies,以下所示:

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 值。

設置 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<ca.length;i++),而後讀取數組中的每一個值,並去除先後空格 (c=ca[i].trim())。

若是找到 cookie(c.indexOf(name) == 0),返回 cookie 的值 (c.substring(name.length,c.length)。

若是沒有找到 cookie, 返回 ""。

檢測 cookie 值的函數

最後,咱們能夠建立一個檢測 cookie 是否建立的函數。

若是設置了 cookie,將顯示一個問候信息。

若是沒有設置 cookie,將會顯示一個彈窗用於詢問訪問者的名字,並調用 setCookie 函數將訪問者的名字存儲 365 天:

    function checkCookie(){

        var username=getCookie("username");

        if (username!=""){

            alert("Welcome again " + username);

          }else{

            username = prompt("Please enter your name:","");
            if (username!="" && username!=null){
                setCookie("username",username,365);
              }
        }
    }

完整案例:

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

        <title>cookie</title>

    </head>

    <head>

    <script>

      //設置cook

        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

          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

         function checkCookie(){

              var user=getCookie("username");

              if (user!=""){

                alert("Welcome again " + user);

              }else{

                user = prompt("Please enter your name:","");

                  if (user!="" && user!=null){

                     setCookie("username",user,30);

                   }

              }

        }

    </script>

    </head>

    <body onload="checkCookie()">

    </body>

</html>

相關文章
相關標籤/搜索