allCookies = document.cookie; 在上面的代码中,allCookies被赋值为一个字符串,该字符串包含所有的Cookie,每条cookie以"分号和空格(; )"分隔(即, key=value 键值对)。
document.cookie = newCookie; newCookie 是一个键值对形式的字符串。 需要注意的是,用这个方法一次只能对一个cookie进行设置或更新。
以下可选的cookie属性值可以跟在键值对后,用来具体化对cookie的设定/更新,使用分号以作分隔:
;path=path (例如 ‘/’, ‘/mydir’) 如果没有定义,默认为当前文档位置的路径。;domain=domain (例如 ‘example.com’, ‘subdomain.example.com’) 如果没有定义,默认为当前文档位置的路径的域名部分。与早期规范相反的是,在域名前面加 . 符将会被忽视,因为浏览器也许会拒绝设置这样的cookie。如果指定了一个域,那么子域也包含在内。;max-age=max-age-in-seconds (例如一年为606024*365);expires=date-in-GMTString-format 如果没有定义,cookie会在对话结束时过期 这个值的格式参见Date.toUTCString();secure (cookie只通过https协议传输)cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值).
所以,在你更新cookie或者删除cookie的时候, 要注意与添加cookie时用同样的域和路径,不同的域、不同的路径下可以存在同样名字的cookie,
封装cookie的设置及清除方法
(function($) { var util = {}; $.extend(util, { /* 设置和获取cookie的方法 option:{ expires: 存储的有效时间--天数(-1的时候是清除cookie),此时value为null path: 路径 domain: 域名 secure: secure属性设置为true时,cookie只有在https协议下才能上传到服务器 } */ cookie: function(name, value, options) { if (typeof value != 'undefined') { 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) { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = $.trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } }, removeAllCookie: function(options) { var cookies = document.cookie.split(";");//将所有cookie键值对通过分号分割为数组 for (var i = 0; i < cookies.length; i++) {///循环遍历所有cookie键值对 if (cookies[i].indexOf(" ") == 0) {//有些cookie键值对前面会莫名其妙产生一个空格,将空格去掉 cookies[i] = cookies[i].substring(1); } var cookie_name = cookies[i].split("=")[0]; util.cookie(cookie_name,null,options) } } }); window.util = util; })(jQuery);