以下是我使用的功能:
设置Cookie:
function set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure )
{
var cookie_string = name + "=" + escape ( value );
if ( exp_y )
{
var expires = new Date ( exp_y, exp_m, exp_d );
cookie_string += "; expires=" + expires.toGMTString();
}
if ( path )
cookie_string += "; path=" + escape ( path );
if ( domain )
cookie_string += "; domain=" + escape ( domain );
if ( secure )
cookie_string += "; secure";
document.cookie = cookie_string;
}
阅读Cookie:
function get_cookie ( cookie_name )
{
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
}
删除Cookie:
function delete_cookie ( cookie_name )
{
var cookie_date = new Date ( ); // current date & time
cookie_date.setTime ( cookie_date.getTime() - 1 );
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
我用来构建cookie的Jquery:
if(get_cookie('visible')== 'no') {
$("#wrapper").hide();
$(".help").hide();
$("#slid .show").show();
$("#slid .hide").hide();
} else {
$("#slid .show").hide();
$("#slid .hide").show();
}
$("#slider").click(function() {
if(get_cookie('visible')== null) {
set_cookie('visible','no', 2020, 01,01, '/', 'domain.com');
} else {
delete_cookie('visible');
}
$(".help").slideToggle();
$("#wrapper").animate({ opacity: 1.0 },200).slideToggle(200, function() {
$("#slid img").toggle();
});
});
我尝试使用路径'/'。
为domain.com下存在的所有网页设置Cookie然而,使用这些函数和jQuery它似乎没有工作,任何人都可以让我知道我哪里出错了?
答案 0 :(得分:0)
只要domain
匹配或省略,domain
或path
中没有任何内容被escape()
破坏,就可以为我工作。
(你不应该使用escape()
作为cookie参数:这些没有标准的转义方案。对{em>使用escape()
/ unescape()
通常是一个坏主意。 ;它是一种非标准的编码方案,与URL编码不同,所以如果你尝试从PHP等其他语言读取cookie,你将无法使用任何内置的方法正确解码-in function。如果你想要对cookie值本身进行真正的URL编码,请转到encodeURIComponent
/ decodeURIComponent
,尽管这些仍未用于cookie参数。)