语法
读取所有可从此位置访问的Cookie
allCookies = document.cookie;
在上面的代码中,allCookies被赋值为一个字符串,该字符串包含所有的Cookie,每条cookie以分号分隔(即, key=value 键值对)。
写一个新 cookie
document.cookie = newCookie;
newCookie是一个键值对形式的字符串。需要注意的是,用这个方法一次只能对一个cookie进行设置或更新。
以下可选的cookie属性值可以跟在键值对后,用来具体化对cookie的设定/更新,使用分号以作分隔:
这个值的格式参见Date.toUTCString()
;path=*path*
(例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。;domain=*domain*
(例如 'example.com', '.example.com' (包括所有子域名), 'subdomain.example.com') 如果没有定义,默认为当前文档位置的路径的域名部分。;max-age=*max-age-in-seconds*
(例如一年为606024*365);expires=*date-in-GMTString-format*
如果没有定义,cookie会在对话结束时过期;secure
(cookie只通过https协议传输)
cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值).
备注: 在Gecko 6.0前,被引号括起的路径的引号会被当做路径的一部分,而不是被当做定界符。现在已被修复。
示例
示例1: 简单用法
document.cookie = "name=oeschger";document.cookie = "favorite_food=tripe"; alert(document.cookie);// 显示: name=oeschger;favorite_food=tripe
示例2: 得到名为test2的cookie
document.cookie = "test1=Hello";document.cookie = "test2=World";var myCookie = document.cookie.replace(/(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)|^.*$/, "$1"); alert(myCookie);// 显示: World
示例3: 只执行某事一次
要使下面的代码工作,请替换所有someCookieName
(cookie的名字)为自定义的名字。
if (document.cookie.replace(/(?:(?:^|.*;\s*)someCookieName\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") { alert("Do something here!"); document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; } }
作者:芥末无疆sss
链接:https://www.jianshu.com/p/03c473cbe56a
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。