Jim*_*mbo 27 javascript cookies
我已经设置了一个cookie
document.cookie =
'MYBIGCOOKIE=' + value +
'; expires=' + now.toGMTString() +
'; path=/';
Run Code Online (Sandbox Code Playgroud)
现在这个网站上设置了5到10个cookie,有没有办法按名称检查这个cookie的值.
if (document.cookie.MYBIGCOOKIE == '1') {
alert('it is 1')
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*tte 24
使用RegExp构造函数和多个替换来阐明语法:
function getCook(cookiename)
{
// Get name followed by anything except a semicolon
var cookiestring=RegExp(""+cookiename+"[^;]+").exec(document.cookie);
// Return everything after the equal sign, or an empty string if the cookie name not found
return decodeURIComponent(!!cookiestring ? cookiestring.toString().replace(/^[^=]+./,"") : "");
}
//Sample usage
var cookieValue = getCook('MYBIGCOOKIE');
Run Code Online (Sandbox Code Playgroud)
lon*_*day 16
不幸的是,Javascript的cookie语法远没有那么好.事实上,在我看来,它是设计最差的部分之一.
当您尝试阅读时document.cookie,您会得到一个包含所有Cookie集的字符串.你必须解析字符串,用分号;字符分隔.网络上有很多版本,而不是自己编写.我最喜欢的是quirksmode.org上的那个.这给了你createCookie,readCookie和deleteCookie功能.
uso*_*ban 11
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
Run Code Online (Sandbox Code Playgroud)
资料来源:W3Schools
编辑:如@ zcrar70所述,上面的代码不正确,请看下面的答案Javascript getCookie函数
您可以使用以下功能:
function getCookiesMap(cookiesString) {
return cookiesString.split(";")
.map(function(cookieString) {
return cookieString.trim().split("=");
})
.reduce(function(acc, curr) {
acc[curr[0]] = curr[1];
return acc;
}, {});
}
Run Code Online (Sandbox Code Playgroud)
当以document.cookie为参数调用时,它将返回一个对象,以 cookie 键为键和 cookie 值。
var cookies = getCookiesMap(document.cookie);
var cookieValue = cookies["MYBIGCOOKIE"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100351 次 |
| 最近记录: |