2012-10-23 143 views
7

我想刪除某些域中所有的cookie自動所以我製作一個extension.I我能夠查看餅乾域,但我沒有找到任何方法來刪除這些刪除Cookie Chrome擴展

這裏是我的代碼功能eraseCookie只是被稱爲一次

任何建議?

function eraseCookie(name) { 
    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
} 

$(document).ready(function() { 


var cookies = document.cookie.split(";"); 
for (var i = 0; i < cookies.length; i++) 
{ 
    window.alert(cookies[i]); 
    eraseCookie(cookies[i].split("=")[0]); 
} 

}); 

我也使用jquery,但我沒有看到這個問題!

{ 
     "name": "Gapa", 
     "version": "0.1", 
     "description": "", 
     "browser_action": { 
      "default_icon": "sigla.png", 
      "default_title": "", 
      "popup": "hello.html" 
     }, 
     "content_scripts": [ 
     { 
      "matches": ["*://*.google.ro/*"], 
      "js": ["jquery-1.8.2.min.js","cookie_handler.js"] 
     } 
     ], 
     "icons": { 
      "128":"sigla.png" }, 
     "permissions": [ 
     "cookies", 
     "tabs", 
     "*://*.google.ro/*" 
     ], 
     "manifest_version": 2 


    } 

LE: 這裏是我的腳本文件如何現在看起來:

你必須提供餅乾許可,您的清單中
$(document).ready(function() { 

var cookies = document.cookie.split(";"); 
for (var i = 0; i < cookies.length; i++) 
{ 
    chrome.cookies.remove({"url": ".google.ro", "name":cookies[i].split("=")[0]}, function(deleted_cookie) { window.alert('deleted cookie') }); 
} 

}); 

回答

19

第一。

其次所有的Chrome瀏覽器爲您提供了餅乾的API,其中刪除功能localted:

chrome.cookies.remove(object details, function callback); 

您可以使用它像:

chrome.cookies.remove({"url": "http://domain.com", "name": "cookieName"}, function(deleted_cookie) { console.log(deleted_cookie); }); 

嘗試使用此列出選定域的所有cookie (內部刪除功能刪除此域中的所有Cookie):

chrome.cookies.getAll({domain: "domain.com"}, function(cookies) { 
    for(var i=0; i<cookies.length;i++) { 
     chrome.cookies.remove({url: "http://domain.com" + cookies[i].path, name: cookies[i].name}); 
    } 
}); 

在您的manifest.json中添加:

"background": { 
    "scripts": ["background.js"] 
    }, 

並在background.js中包含了建議的函數。

+0

你的答案首先感謝我已附上清單文件到我的問題和我的來源。不幸的是不工作! – opc0de

+0

你缺少''name':' –

+0

修正了get函數只被調用一次,對任何cookie都沒有影響......可能是錯誤的? – opc0de

4

我拼湊起來的Arkadiusz答案,並得到了這個工作:

manifest.json中:

"background": { 
    "scripts": ["background.js"] 
    }, 
"permissions": [ 
    "cookies", 
    "https://*/", 
    "http://*/" 
    ] 

在background.js:

chrome.cookies.getAll({domain: ".mydomain.com"}, function(cookies) { 
    for(var i=0; i<cookies.length;i++) { 
     console.log(cookies[i]); 

     chrome.cookies.remove({url: "https://" + cookies[i].domain + cookies[i].path, name: cookies[i].name}); 
    } 
    });