在Javascript中删除cookie不能始终如一地工作

时间:2009-12-23 12:52:43

标签: javascript cookies

我有以下代码来设置,获取和删除cookie:

function set_cookie( name, value, expires, path, domain, secure ) {
  var today = new Date();
  today.setTime( today.getTime() );

  if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );

  document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function get_cookie( name ) {
  var start = document.cookie.indexOf( name + "=" );
  var len = start + name.length + 1;
  if ( ( !start ) &&
     ( name != document.cookie.substring( 0, name.length ) ) ) {
    return null;
  }
  if ( start == -1 ) return null;
  var end = document.cookie.indexOf( ";", len );
  if ( end == -1 ) end = document.cookie.length;
  return unescape( document.cookie.substring( len, end ) );
}

function delete_cookie(name) {
    document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}

在我的程序中,我有一个称为活动消息的东西,并使用cookie来记住活动消息的路径和存在。当然,我有一个丢弃消息功能,将删除cookie。它看起来像这样:

function discard_message() {
    alert('cookie = '+get_cookie('active_message'));
    clear_active_message_cookie();
    alert('should be null = '+get_cookie('active_message'));
    update_message('Discard', false, false);    
}

function clear_active_message_cookie(){
    delete_cookie("active_message");
}

正如您所看到的,我已将警报放入以检查cookie在删除后是否可读。奇怪的是,在我的应用程序的一部分中,cookie成功删除,但丢弃我的应用程序的另一部分中的消息不起作用。第二个cookie警告打印cookie的值。我已经确认cookie的名称是相同的。

这几乎就像我删除cookie的请求被拒绝了。有谁知道在什么情况下这是可能的?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为删除的Cookie只会在您离开当前页面后停用。

删除cookie后立即插入下面的代码;

location.href = “bringmeback.html”;

bringmeback.html (重定向到当前页面);

location.href="currentpage.html";

您可以使用此代码测试您的Cookie是否已完全删除。