2013-09-24 1 views
2

У меня есть несколько файлов cookie, которые управляют расположением столбцов в сетке. Они устанавливаются Javascript на странице, и сервер/не имеет к ним никакого отношения. Я хотел бы очистить их, используя кнопку в JS (сбросить настройки по умолчанию). Проблема в том, что их невозможно удалить, если вы не используете графический интерфейс браузера для этого.Почему я не могу удалить этот файл cookie с консоли инструментов dev?

Я читал многочисленные сообщения, пробовал их все, даже https://developer.mozilla.org/en-US/docs/Web/API/document.cookie и его библиотеку docCookies.

Вот стенограмма из консоли Dev инструментов, который показывает, насколько живучи эти печенья:

>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" 

Почему я не могу удалить эти печенья?

И код docCookies ниже (он находится на ссылке выше, а также, но в случае, если связать изменения)

/*\ 
|*| 
|*| :: 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

Вы пытаетесь манипулировать файлами 'ext-'? Основываясь на имени, я бы предположил, что эти файлы cookie будут управляться расширением браузера, а не самой страницей. –

+0

ext-cookies из extjs, рамки, на которой написана страница. Я пытаюсь выяснить, как их очистить, поэтому клиент может сбросить настройки по умолчанию, если им не нравится состояние, в котором находятся их столбцы. – boatcoder

+0

Does кнопка RESET возвращает сообщение на сервер? Я предполагаю, что когда это происходит, во время перерисовки веб-страницы элемент управления снова устанавливает cookie. – TravisO

ответ

2

После того как я отправил этот вопрос, я видел эту ссылку на правой стороне страница

Why can't I delete this cookie?

Первый ответ (от Andreas Peterson) был ответ:

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

удалит cookie. Путь должен быть указан или он не будет удален.

Смежные вопросы