// sets a cookie called 'myCookie' with value 'Chocolate Chip'
docCookies.setItem('myCookie', 'Chocolate Chip');
// reads the value of a cookie called 'myCookie' and assigns to variable
var myCookie = docCookies.getItem('myCookie');
// removes the cookie called 'myCookie'
docCookies.removeItem('myCookie');
function getCookie(name) {
name = name + "=";
var cookies = document.cookie.split(';');
for(var i = 0; i <cookies.length; i++) {
var cookie = cookies[i];
while (cookie.charAt(0)==' ') {
cookie = cookie.substring(1);
}
if (cookie.indexOf(name) == 0) {
return cookie.substring(name.length,cookie.length);
}
}
return "";
}
function setCookie(name, value, expirydays) {
var d = new Date();
d.setTime(d.getTime() + (expirydays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = name + "=" + value + "; " + expires;
}
function deleteCookie(name){
setCookie(name,"",-1);
}
function getCookies() {
var cookies = {};
for (let cookie of document.cookie.split('; ')) {
let [name, value] = cookie.split("=");
cookies[name] = decodeURIComponent(value);
}
console.dir(cookies);
}
function readCookie( name )
{
var cookieParts = document.cookie.split( ';' )
, i = 0
, part
, part_data
, value
;
while( part = cookieParts[ i++ ] )
{
part_data = part.split( '=' );
if ( part_data.shift().replace(/\s/, '' ) === name )
{
value = part_data.shift();
break;
}
}
return value;
}
一旦找到cookie值并返回其值,这应该会中断 . 在我看来,双重分裂非常优雅 .
if条件的替换是空白修剪,以确保它正确匹配
-1
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;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
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);
}
}
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
16 回答
以下是可用于创建和检索Cookie的函数 .
JQuery Cookies
或普通的Javascript:
简约和全功能的ES6方法:
Mozilla提供了simple framework for reading and writing cookies with full unicode support以及如何使用它的示例 .
一旦包含在页面上,您就可以设置一个cookie:
读一个cookie:
或删除cookie:
例如:
查看有关Mozilla's document.cookie page的更多示例和详细信息 .
我是一段很棒的代码:简单易用 . 但我通常使用babel和ES6以及模块,所以如果你像我一样,这里是复制的代码,以便用ES6更快地开发
Accepted answer用ES6重写为模块:
在此之后,您可以将其导入为任何模块(当然路径可能会有所不同):
对于那些需要像{foo:'bar'}这样的保存对象的人,我分享了@ KevinBurke答案的编辑版本 . 我添加了JSON.stringify和JSON.parse,这就是全部 .
所以,现在你可以做这样的事情:
这是Get, Set and Delete Cookie in JavaScript的代码 .
资料来源:http://mycodingtricks.com/snippets/javascript/javascript-cookies/
我用这个对象 . 值是编码的,因此在从服务器端读取或写入时需要考虑它 .
ES7,使用正则表达式获取get() . 基于MDN
用法 - Cookie.get(name,value [,options]):
options支持所有标准cookie选项并添加"days":
path :'/' - 任何绝对路径 . 默认值:当前文档位置,
domain :'sub.example.com' - 可能无法以点开头 . 默认值:没有子域的当前主机 .
secure :true - 仅通过https提供cookie . 默认值:false .
days :2天,直到cookie过期 . 默认值:会话结束 .
设置过期的其他方法:
expires :'Sun, 18 Feb 2018 16:23:42 GMT' - 作为GMT字符串的到期日期 .
当前日期可以使用:new Date(Date.now()) . toUTCString()
'max-age' :30 - 与天相同,但以秒为单位而不是天 .
其他答案使用“expires”而不是“max-age”来支持旧的IE版本 . 这个方法需要ES7,所以IE7无论如何都是出局的(这不是什么大问题) .
注意:支持有趣的字符,如"="和""作为cookie值,正则表达式处理前导和尾随空格(来自其他库) .
如果您想存储对象,可以使用和JSON.stringify和JSON.parse之前和之后对它们进行编码,编辑上面的内容,或添加其他方法 . 例如:
在ES6中读取cookie的简单方法 .
我用js-cookie来取得成功 .
readCookie的改进版本:
一旦找到cookie值并返回其值,这应该会中断 . 在我看来,双重分裂非常优雅 .
if条件的替换是空白修剪,以确保它正确匹配
我编写了简单的cookieUtils,它有三个函数用于创建cookie,读取cookie和删除cookie .
阅读cookie的一种厚颜无耻且简单的方法可能是:
如果您知道您的cookie包含以下内容,则可以使用此选项:
username="John Doe"; id=123;
. 请注意,字符串在cookie中需要引号 . 可能不是推荐的方式,但适用于测试/学习 .以下是w3chools中提到的示例 .