2013-04-08 7 views
0

Я нашел скрипт cookie, который я просматриваю, он работает, чтобы создать файл cookie, но не убивает cookie.Как удалить этот файл cookie?

Код:

function SetCookie(cookieName,cookieValue,nDays) { 
    var today = new Date(); 
    var expire = new Date(); 
if (nDays==null || nDays==0) nDays=1; 
    expire.setTime(today.getTime() + 3600000*24*nDays); 
document.cookie = cookieName+"="+escape(cookieValue) 
+ ";expires="+expire.toGMTString(); 
} 

    function KillCookie(cookieName) { 
     SetCookie(cookieName,"",-3); 
    } 

function ReadCookie(cookieName) { 
    var theCookie=""+document.cookie; 
    var ind=theCookie.indexOf(cookieName+"="); 
if (ind==-1 || cookieName=="") return ""; 
var ind1=theCookie.indexOf(";",ind); 
if (ind1==-1) ind1=theCookie.length; 
return unescape(theCookie.substring(ind+cookieName.length+1,ind1)); 
} 

Как вы видите, я создал функцию KillCookie, которая должна установить дату истечения обратно три дня и иметь браузер автоматически удалять. Проблема заключается в том, что он не удаляет ее.

У меня есть эти функции, написанные в моем коде, как так

$(function() { 
    $('#left').before('<div id="left_widg"><button></button></span>'); 
    $('#right').before('<div id="right_widg"><button></button></span>'); 

    $('#left_widg button').on('click',function() {  
     var _checkme = $('#left').css('display'); 
     var oriWidth = 180; 
    if(_checkme === "block") { 
    SetCookie('closeWidgetsLeft', 'true', 100); 
    $('#left').animate({width:'-='+ oriWidth +'px'},500,function() { 
     $(this).hide(); 
    $('#left_widg button').html('Open'); 
    }); 
    } else { 
    KillCookie('closeWidgetsRight'); 
    $('#left').show(); 
    $('#left').animate({width:'+='+ oriWidth +'px'},500,function() { 
    $('#left_widg button').html('Close'); 
}); 
} 
}); 
if (ReadCookie('closeWidgetsLeft') == 'true') { 
    $('#left').css('display','none'); 
} else if (ReadCookie('closeWidgetsRight') == 'true') { 
    $('#right').css('display','none'); 
    } 
}); 
+0

Возможно, попробуйте изменить время истечения срока действия в 'KillCookie' на' (новая дата(). GetTime()/1000) - 1'? Возможно, он не сможет использовать времена _before_ эпохи Unix. Кроме того, 'Date.getTime()' возвращает миллисекунды, но время истечения cookie использует секунды. – Pietu1998

+0

Хорошо, так как я новичок в куках, как бы я это написал? 'KillCookie() {(новая дата(). GetTime()/1000) -1}' или? – EasyBB

+0

Внутри 'KillCookie' используется' SetCookie (cookieName, "", (new Date(). GetTime()/1000) - 1); 'Попробуйте и скажите, работает ли он или нет. – Pietu1998

ответ

0
function KillCookie(key) { 
    var t = new Date(); 
    t.setDate(t.getDate() - 1); 

    document.cookie = [ 
      encodeURIComponent(key), 
      '=', 
      encodeURIComponent(String(null)), 
      '; expires=' + t.toUTCString(), 
      '; path=/' 
    ].join(''); 
}; 

Примечание путь аргумента, который устанавливает куки для корня (весь сайт). Вы должны включить его в функцию SetCookie тоже ...

function SetCookie(key,value,expires) { 
    var t = new Date(); 
    t.setDate(t.getDate() + expires); 
    document.cookie = [ 
      encodeURIComponent(key), 
      '=', 
      encodeURIComponent(String(value)), 
      '; expires=' + t.toUTCString(), 
      '; path=/' 
    ].join(''); 
} 

И KillCookie становится:

function KillCookie(key) { 
    SetCookie(key, null, -1); 
}; 

Иногда дело с печеньем сложно и много вещей может привести к его просто не будет работать, так что я порекомендует вам использовать что-то вроде this JQuery plugin, откуда этот код вдохновлен.

+0

Я бы просто не использовал плагин, когда javascript сам делает. Я прыгнул с пистолета и сначала научился jQuery, поэтому теперь я пытаюсь продолжать работу с Vanilla вместо – EasyBB

+0

Я просто хотел предложить ... –

+0

Нет, это не проблема. Я ценю предложение. Я просто считаю, что путь jQuery - это расточительное пространство, когда javascript уже имеет это. У меня есть работа сейчас, я считаю, что другой javascript заставлял файлы cookie работать неправильно. Я не помню. – EasyBB