2012-10-23 46 views
7

Tôi muốn xóa tất cả các cookie trên miền nhất định tự động vì vậy tôi đã chế tác một extension.I là có thể xem các tập tin cookie cho tên miền nhưng tôi đã không tìm thấy bất kỳ phương pháp để xóa chúngcookie Xóa chrome mở rộng

đây mã của tôi hàm eraseCookie chỉ được gọi là một lần

Bất kỳ đề xuất nào?

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

}); 

Tôi cũng đang sử dụng jquery nhưng tôi không thấy sự cố trong đó!

{ 
     "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: Sau đây là cách tập kịch bản của tôi trông bây giờ:

$(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') }); 
} 

}); 

Trả lời

19

Trước hết bạn phải cung cấp cookie cho phép trong biểu hiện của bạn.

Thứ hai của tất cả Chrome cung cấp cho bạn với các tập tin cookie api nơi loại bỏ chức năng được localted:

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

Bạn có thể sử dụng nó như thế:

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

Hãy thử sử dụng này để liệt kê tất cả các tập tin cookie cho các lĩnh vực được lựa chọn (chức năng xóa bên trong xóa tất cả cookie khỏi miền này):

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

Trong tệp manifest.json của bạn, hãy thêm:

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

và trong background.js bạn bao gồm chức năng được đề xuất.

+0

nhờ đầu tiên cho câu trả lời của bạn tôi có kèm theo các tệp kê khai cho câu hỏi của tôi và nguồn của tôi. Unfortunatelly không hoạt động! – opc0de

+0

Bạn đang thiếu '" name ":' –

+0

Cố định rằng hàm nhận được chỉ được gọi một lần và không có hiệu ứng trên bất kỳ cookie nào ... điều gì có thể sai? – opc0de

4

Tôi chắp ghép câu trả lời Arkadiusz và đã làm việc này:

Trong manifest.json:

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

Trong 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}); 
    } 
    }); 
Các vấn đề liên quan