2013-09-24 3 views
2

J'ai des cookies qui contrôlent la disposition des colonnes dans une grille. Ils sont définis par le Javascript sur la page et le serveur n'a rien à voir avec eux. Je voudrais les effacer en utilisant un bouton dans JS (réinitialiser les valeurs par défaut). Le problème est qu'ils semblent être impossible à supprimer à moins d'utiliser l'interface graphique du navigateur pour le faire.Pourquoi ne puis-je pas supprimer ce cookie de la console dev tools?

J'ai lu de nombreux articles, essayé tous, même https://developer.mozilla.org/en-US/docs/Web/API/document.cookie et sa bibliothèque docCookies.

Voici une transcription de la console d'outils de dev, qui montre à quel point ces cookies sont tenaces:

>document.cookie="food=hotdog" 
"food=hotdog" 
>docCookies.keys() 
["food", "ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("ext-history-results") 
true 
>docCookies.keys() 
["food", "ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("food") 
true 
>docCookies.keys() 
["ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("ext-history-results") 
true 
>docCookies.keys() 
["ext-history-results", "ext-today-summaries", "csrftoken"] 
>document.cookie="food=hotdog" 
"food=hotdog" 
>docCookies.keys() 
["food", "ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("ext-history-results") 
true 
>docCookies.keys() 
["food", "ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("food") 
true 
>docCookies.keys() 
["ext-history-results", "ext-today-summaries", "csrftoken"] //csrftoken is set by the server 
>docCookies.removeItem("csrftoken") 
true 
>docCookies.keys() 
["ext-history-results", "ext-today-summaries", "csrftoken"] 
>docCookies.removeItem("ext-today-summaries") 
true 
>document.cookie   // output wrapped for "clarity" 
"ext-history-results=o%3Acolumns%3Da%253Ao%25253Aid%25253Ds%2525253Ah9%255Eo%25253Aid%25253Ds%2525253Aext-gen1133%255Eo%25253Aid%25253Ds%2525253Ah1%255Eo%25253Aid%25253Ds%2525253Ah2%255Eo%25253Aid%25253Ds%2525253Ah3%255Eo%25253Aid%25253Ds%2525253Ah4%255Eo%25253Aid%25253Ds%2525253Ah5%255Eo%25253Aid%25253Ds%2525253Ah6%255Eo%25253Aid%25253Ds%2525253Ah7%255Eo%25253Aid%25253Ds%2525253Ah8%5Esort%3Do%253Aproperty%253Ds%25253Agrouper%255Edirection%253Ds%25253AASC%255Eroot%253Ds%25253Adata; 
ext-today-summaries=o%3Acolumns%3Da%253Ao%25253Aid%25253Ds%2525253Ah1%255Eo%25253Aid%25253Ds%2525253Ah2%255Eo%25253Aid%25253Ds%2525253Ah3%255Eo%25253Aid%25253Ds%2525253Ah4%255Eo%25253Aid%25253Ds%2525253Ah5%255Eo%25253Aid%25253Ds%2525253Ah6%255Eo%25253Aid%25253Ds%2525253Ah7%255Eo%25253Aid%25253Ds%2525253Ah8%255Eo%25253Aid%25253Ds%2525253Ah9%5Esort%3Do%253Aproperty%253Ds%25253ABox%255Edirection%253Ds%25253AASC%255Eroot%253Ds%25253Adata; 
csrftoken=RMYlasyNxjPz8pMpn2gMvYxCscMQGX5W" 

Pourquoi ne puis-je supprimer ces cookies?

Et le code docCookies est ci-dessous (il est sur le lien ci-dessus aussi bien, mais dans le cas où lier les changements)

/*\ 
|*| 
|*| :: cookies.js :: 
|*| 
|*| A complete cookies reader/writer framework with full unicode support. 
|*| 
|*| https://developer.mozilla.org/en-US/docs/DOM/document.cookie 
|*| 
|*| This framework is released under the GNU Public License, version 3 or later. 
|*| http://www.gnu.org/licenses/gpl-3.0-standalone.html 
|*| 
|*| Syntaxes: 
|*| 
|*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]]) 
|*| * docCookies.getItem(name) 
|*| * docCookies.removeItem(name[, path], domain) 
|*| * docCookies.hasItem(name) 
|*| * docCookies.keys() 
|*| 
\*/ 

var docCookies = { 
    getItem: function (sKey) { 
    return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; 
    }, 
    setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { 
    if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } 
    var sExpires = ""; 
    if (vEnd) { 
     switch (vEnd.constructor) { 
     case Number: 
      sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; 
      break; 
     case String: 
      sExpires = "; expires=" + vEnd; 
      break; 
     case Date: 
      sExpires = "; expires=" + vEnd.toUTCString(); 
      break; 
     } 
    } 
    document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); 
    return true; 
    }, 


    removeItem: function (sKey, sPath, sDomain) { 
    if (!sKey || !this.hasItem(sKey)) { return false; } 
    document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : ""); 
    return true; 
    }, 
    hasItem: function (sKey) { 
    return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); 
    }, 
    keys: /* optional method: you can safely remove it! */ function() { 
    var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); 
    for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } 
    return aKeys; 
    } 
}; 
+0

Etes-vous en train de manipuler les cookies 'ext-'? Basé sur le nom, je suppose que ces cookies soient gérés par une extension de navigateur et non la page elle-même. –

+0

Les cookies externes proviennent d'extjs, le framework dans lequel la page est créée. J'essaie de comprendre comment les effacer, afin qu'un client puisse réinitialiser les valeurs par défaut s'il n'aime pas l'état dans lequel se trouvent ses colonnes. – boatcoder

+0

le bouton RESET renvoie-t-il un message au serveur? Je suppose que quand il le fait, lors du redessin de la page Web, le contrôle définit à nouveau le cookie. – TravisO

Répondre

2

Après avoir posté cette question, j'ai vu ce lien sur le côté droit de la page

Why can't I delete this cookie?

la première réponse (de Andreas Peterson) a eu la réponse:

docCookies.removeItem("ext-today-summaries", '/') 

va supprimer le cookie. Le chemin doit être spécifié ou il ne sera pas supprimé.

Questions connexes