我第一次使用Firefox Web Extension API。我想通过单击按钮删除example.com的所有cookie。我有以下代码,但没有得到任何结果。
background.js
function onRemoved(cookie) {
console.log(`Removed: ${cookie}`);
}
function onError(error) {
console.log(`Error removing cookie: ${error}`);
}
function removeCookie() {
var removing = browser.cookies.remove({
url: "example.com"
});
removing.then(onRemoved, onError);
}
browser.browserAction.onClicked.addListener(removeCookie);
的manifest.json
{
"description": "RemoveCookie",
"manifest_version": 2,
"name": "remove-cookies",
"version": "1.0",
"icons": {
"48": "icons/icon.png"
},
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": "icons/icon.png",
"default_title": "Remove Cookie!"
},
"permissions": [
"*://*.example.com/*",
"cookies"
]
}
答案 0 :(得分:0)
来自https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/remove
Cookie API的remove()方法会根据其名称和URL删除Cookie。
这意味着您还需要指定name
参数。
此外,url
参数必须包含协议,否则承诺只会以null
解析(意味着找不到cookie)。
如果找不到与details参数匹配的cookie,则使用null实现promise。
话虽这么说,您可以使用browser.cookies.getAll
获取给定网址的所有Cookie,然后删除每个名称的Cookie:
function onRemoved(cookies) {
console.log('Removed', cookies);
}
function onError(error) {
console.log(`Error removing cookie: ${error}`);
}
function removeCookie() {
var url = "http://example.com"; // NOTE the full url including protocol
browser.cookies.getAll({ url: url })
.then(function(cookies) {
return Promise.all(cookies.map(function(cookie) {
return browser.cookies.remove({ url: url, name: cookie.name });
}));
})
.then(onRemoved, onError);
}
browser.browserAction.onClicked.addListener(removeCookie);