我试图在cookie中存储我页面上某个元素的状态,更准确地说是侧边栏的扩展或缩小状态。
我已设法正确存储它并且它可以工作,但我注意到如果我刷新页面并从扩展或收缩状态切换侧边栏,则会添加第二个cookie,名称相同,但是新价值。
以下是日志输出的内容:
expanded=false; expanded=true; PHPSESSID=2314324545
我需要cookie,以便如果用户想要转到另一个页面,他可以在上一页中看到侧边栏的方式。现在,如果我有2个同名的cookie,当我检查它的值时会出现问题。
以下是我实施它的方法:
$('.expand-button').on('click', function(e) {
$('.pushmenu').toggleClass('expanded');
$('.navbar-left').toggleClass('expanded');
$('.navbar-left-2').toggleClass('small')
if( $(window).width()+scrollbarWidth > 1240){
$('.container.fluid-content').toggleClass('shrinked')
}
if($('.pushmenu').hasClass('expanded')) {
expandedValue = true;
document.cookie = 'expanded=' + expandedValue;
console.log(document.cookie);
} else {
expandedValue = false;
document.cookie = 'expanded=' + expandedValue;
console.log(document.cookie);
}
})
$(window).on('load', function() {
//cookie is already set
console.log(document.cookie);
if( document.cookie.indexOf('expanded=true') != -1 ) {
$('.pushmenu').toggleClass('expanded');
$('.navbar-left').toggleClass('expanded');
$('.navbar-left-2').toggleClass('small')
if( $(window).width()+scrollbarWidth > 1240){
$('.container.fluid-content').toggleClass('shrinked')
}
} else {
console.log('not doing anything');
}
})
答案 0 :(得分:1)
Cookie与路径和域名相关联。如果每个cookie都有不同的域名,您可能会在服务器端收到两个(或更多!)cookie,如:
.domain.org
.www.domain.org
您收到cookie的顺序是最合格域名的最低限度域名(如该列表所示)。
我建议您安装FireBug(假设您使用的是FireBug兼容的浏览器,如Firefox),并查看其中的cookie。您将看到详细信息,例如路径和域名以及到期日期。
要设置路径,只需使用以下内容:
blah=value; Path=/
同样,您可以使用以下命令强制域:
blah=value; Domain=.domain.org
您可以通过分号分隔多个参数:
blah=value; Path=/; Domain=.domain.org
如果您使用的是HTTPS(安全域),我强烈建议您也使用Secure:
blah=value; Path=/; Domain=.domain.org; Secure
使用FireBug,您可以删除部分Cookie。您应该这样做,使用第一个版本(.domain.org)或最后一个版本(.www.domain.org)。
差异可能来自您的前端代码(JavaScript)和您的后端代码(您的PHP)。查看服务器返回的一种方法是查看路径和域是否都按预期指定,是使用带-S命令行选项的wget:
wget -S http://domain.org
wget -S http://www.domain.org
如果您同时允许""和" www",那么你必须强制没有www:
的域名; Domain=.domain.org
否则你会得到那些副本。