JavaScript也能操縱cookie函式

尛沫發表於2014-07-03

jquery沒有直接操作cookie的函式,但我們可以寫一個cookie的操作函式,也可以下載一個jquery cookie外掛,或者直接把jquery cookie函式拿來用,這些方法都是可行的,以下文章中介紹一些基本寫法。

正常思路的普通寫法。

1.建立Cookie

我們要進行的第一件事就是要建立一個Cookie。下面給出的SctCookie()函式將完成這一功能。

function SetCookie (name, value)  
{       
var argv=SetCookie.arguments;       
var argc=SetCookie.arguments.length;       
var expires=(argc>2)?argv[2]: null;       
var path=(argc>3)? argv[3]: null;       
var domain=(argc>4)? argv[4]: null;       
var secure=(argc>5)? argv[5]: false;       
document.cookie=name+"="+escape(value)+ ((expires==null)?"":";expires="+expires.toGMTString()))+ ((path==null)?"":(";path="+path))+  ((domain==null)?"":(";domain="+ domain))+ ((secure==true)?";secure":"");     
}     

SetCookie()只要求傳遞被設定的Cookie的名字和值,但如果必要的話你可以設定其他4 個引數而不必改變這個函式。可選的引數必須用正確的次序使用。如果不想設定某個引數, 必須設定一個空串。比如,如果我們建立的一個Cookie需要指定secure域,但不想設定expir es, patb或domain,就可以像這樣呼叫SetCookie():

SetCookie("MyNewCookie","MyValue" ,"",","tyue);     

2.讀取Cookie

下面給出的函式GetCookie()用來讀取一個Cookie。當一個Cookie的請求被客戶機收到時,該客戶機查詢它的cookies.txt檔案以進行匹配。這個函式首先匹配這個Cookie的名字。如果有多個同名的Cookie,它再匹配路徑。函式完成匹配後返回這個Cookie的值。如果客戶機中沒有這個Cookie,或者路徑不匹配,該函式返回一個NULL。

function GetCookie(name)  
{       
var arg=name+ "=";       
var alen=arg.length;       
var clen=document.cookie.length;       
var i=0;       
while (i<clen) {         
var j=i+alen;         
if(document.cookie.substring(i,j) ==arg)         
return getCookieVal(j);         
i=document.cookie.indexOf("",i)+1;         
if(i==0)break;      }       
return null;    }  

直接把jQuery的cookie操作函式拿來用。

jQuery.cookie = function(name, value, options) {     
    if (typeof value != 'undefined') { // name and value given, set cookie       
        options = options || {};     
        if (value === null) {     
            value = '';     
            options.expires = -1;     
        }     
        var expires = '';     
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {     
            var date;     
            if (typeof options.expires == 'number') {     
                date = new Date();     
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));     
            } else {     
                date = options.expires;     
            }     
            expires = '; expires=' + date.toUTCString();     
        }     
        var path = options.path ? '; path=' + (options.path) : '';     
        var domain = options.domain ? '; domain=' + (options.domain) : '';     
        var secure = options.secure ? '; secure': '';     
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');     
    } else {     
        var cookieValue = null;     
        if (document.cookie && document.cookie != '') {     
            var cookies = document.cookie.split(';');     
            for (var i = 0; i < cookies.length; i++) {     
                var cookie = jQuery.trim(cookies[i]);     
                if (cookie.substring(0, name.length + 1) == (name + '=')) {     
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));     
                    break;     
                }     
            }     
        }     
        return cookieValue;     
    }     
};    

使用方法如下:

設定cookie的鍵值對

$.cookie(’name’, ‘value’);  

設定cookie的鍵值對,有效期,路徑,域,安全

$.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});  

新建一個cookie 包括有效期 路徑 域名等

讀取cookie的值

var account= $.cookie(’name’);  

刪除一個cookie

example $.cookie(’name’, null);  

本文為Anyforweb技術分享部落格,需要了解網站建設及更多Web應用相關資訊,請訪問anyforweb.com。

相關文章