Удаление куки в Javascript не работает последовательно - PullRequest
0 голосов
/ 23 декабря 2009

У меня есть следующий код для установки, получения и удаления файлов 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 голосов
/ 23 декабря 2009

Я думаю, что удаленный файл cookie будет деактивирован только после того, как вы уйдете с текущей страницы.

Введите код ниже сразу после удаления куки;

location.href = "bringmeback.html";

yieldmeback.html (перенаправление на текущую страницу);

location.href="currentpage.html";

Этот код можно использовать для проверки того, был ли полностью удален ваш файл cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...