2009-12-23 6 views
0

Je travaille pas toujours le code suivant pour définir, obtenir et supprimer les cookies:Suppression d'un cookie en Javascript ne

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;'; 
} 

Dans mon programme, j'ai quelque chose appelé un message actif et d'utiliser un cookie à retenir le chemin et l'existence du message actif. Naturellement, j'ai une fonction de message de rejet qui va supprimer le cookie. Il ressemble à ceci:

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"); 
} 

Comme vous pouvez le voir, j'ai mis des alertes pour vérifier si le cookie est lisible après l'avoir supprimé. La chose étrange est que dans une partie de mon application le cookie supprime avec succès, mais rejeter un message dans une autre partie de mon application ne fonctionne pas. La deuxième alerte de cookie imprime la valeur du cookie. J'ai confirmé que le nom du cookie est le même.

Il est presque comme si ma demande de suppression d'un cookie était refusée. Est-ce que quelqu'un sait dans quelles circonstances cela est possible?

Merci!

Répondre

0

Je pense qu'un cookie supprimé ne sera désactivé que lorsque vous aurez quitté la page en cours.

Insérez le code ci-dessous juste après avoir supprimé le cookie;

location.href = "bringmeback.html";

bringmeback.html (rediriger vers la page actuelle);

location.href="currentpage.html"; 

Vous pouvez utiliser ce code pour tester si votre cookie a été complètement supprimé.

+0

C'est un peu étrange étant donné que le cookie supprime bien dans d'autres parties de mon application. En d'autres termes, je peux définir le cookie sur "http: // someapp/pageA" et le supprimer sur "http: // someapp/pageA" avec ce code. Cependant faire ce même processus sur "http: // someapp/pageB" conduit à ce que le cookie ne soit pas effacé. On pourrait se demander quelle est la différence entre les pages, mais je pense presque que puisque j'ai indiqué le point exact de l'échec, il est plus facile d'essayer de comprendre pourquoi l'échec se produit. – Tony

+0

mon point est "vous pouvez mettre le cookie sur" someapp/pageA ", et l'effacer sur" someapp/pageA "mais" someapp/pageA "ne peut pas lire immédiatement que le cookie a été supprimé, je suis corrigé –

+0

ok, je je dis juste que someapp/pageA remarque en fait que le cookie a été supprimé sans quitter la page, où someapp/pageB ne le fait pas – Tony