由于英国和NL的cookielaw限制,我试图在设置后立即过期cookie。 这是我现在使用的代码:
(function ($) {
$(document).ready(function(){
if (!CookieControl.maySendCookies()) {
var now = new Date();
var expirationDate = new Date();
expirationDate.setDate(now.getDate() - 7);
alert(getCookieValue('has_js'));
document.cookie='has_js=1;expires=' + expirationDate.toGMTString();
alert(getCookieValue('has_js'));
}
});
})(jQuery);
getCookieValue
函数是来自另一个文档的函数,用于检查cookie实际上已消失。在我过期cookie之前,值应为1
,因为它应该是。但是,当我使用document.cookie='has_js=1;expires=' + expirationDate.toGMTString();
使Cookie过期时,我再次检查该值,它仍然存在。
我真的无法弄清楚为什么它没有被删除。我不能等待会议或其他任何过期,这不符合NL法律。
有人有什么建议吗?
CMS:Drupal / Domain:localhost
答案 0 :(得分:1)
它可能与路径有关,我不知道,但您可以使用以下脚本:
function getCookieValue(name) {
var nameEQ = name + "=";
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, c.length);
if (c.indexOf(nameEQ) == 0)
return unescape(c.substring(nameEQ.length, c.length));
}
return null;
}
function setCookieValue(name, value, days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
document.cookie = name + "=" + escape(value) + expires + "; path=/";
}
function delCookieValue(name) {
Set_Cookie(name, '', -1);
}
$(document).ready(function(){
if (!CookieControl.maySendCookies()) {
delCookieValue("has_js");
}
});