1. 程式人生 > >如何在JavaScript中設定cookie

如何在JavaScript中設定cookie

cookie的最基本的儲存形式是“name=value”,
所以用JavaScript建立cookie的最簡單的語法就是document.cookie="name=value";
一般來說都會為cookie的儲存,讀取,刪除設定不同的函式,方便在程式中進行呼叫。

   //儲存cookie
    function setCookie(name,value)
    {
        var args=setCookie.arguments;
        var len=setCookie.arguments.length;
        var expires=(len>2)?args[2]:"";
        var path=(len>3)?args[3]:"";
        var domain=(len>4)?args[4]:"";
        var secure=(len>5)?args[5]:false;
        document.cookie=name+"="+escape(value)+((expires=="")?"":(";expires="+expires.toGMTString()))+
        ((path=="")?"":(";path="+path))+((domain=="")?"":(";domain="+domain))+(secure?";secure":"");
            
    }
    這裡預設的2個引數是必須的,第一個代表cookie的名字,第2個引數代表cookie的值
   

   另外可選的第3個引數代表cookie的生存期,這個引數的值必須是GMT格式的日期型字串,代表這個cookie的過期時間,
    假如你想要這個cookie一天之後過期,可以執行如下程式碼:
    var now =new Date();
    now.setDate(now.getDate()+1);
    然後將now作為第3個引數傳入即可。
   

    第4個引數用來設定cookie的路徑,因為預設情況下cookie只可被建立它的網頁或者與該網頁在同一目錄或者子目錄下的所有網頁訪問
    如果要讓該網頁父目錄的網頁也能訪問,則要將path的值設為相對於該網頁的相對路徑。
    比如

http://www.myWeb.com/a/b/test.html建立的cookie,將path設為“a/”,則http://www.myWeb.com/a/路徑中的網頁也能訪問該cookie,
    如果想整個網站都能訪問該cookie,則需要將path設定為網站根目錄,即“/”
   

    第5個引數表示cookie的域,預設情況下www.myWeb.com和bbs.myWeb.com屬於不同的域,即這2個伺服器的網頁不能互相訪問cookie,將domain設定 
    為“.myWeb.com”之後,就可以互相訪問了
    第6個引數用來設定cookie的secure,如果為true,表示cookie只能通過https或其它安全協議才能被傳輸。
    一般來說為將cookie的值編碼,所以用到了escape(value)

    //讀取cookie
    function getCookie(name)
    {
        var mycookie=unescape(document.cookie);
        var cindex=mycookie.indexOf(name+"=");
        if(cindex!=-1)
        {
            var cstart=cindex+name.length+1;
            var cend=mycookie.indexOf(";",cstart);
            //如果找不到分號,則取cookie的最後
            if(cend==-1)
            {
                cend=mycookie.length;
            }
            return mycookie.substring(cstart,cend);
        }
    }
    //刪除cookie
    function delCookie(name)
    {
        var time = new Date();
        time.setTime(time.getTime() - 1);
        var value = getCookie(name);
        document.cookie = name + "=" + value + ";expires=" + time.toGMTString();
    }
    cookie是不能被刪除的,要刪除某個cookie實際上就是將該cookie的expires設定為過期時間