我正在尝试向我的 Firefox 扩展添加一个函数,以在单击站点 A 上的按钮时触发从站点 B 删除 cookie 的事件。站点 A 和 B 不共享域,但站点 B 在注入站点 A 的 iframe 中运行。我需要 Firefox 内容脚本中的 click 事件来触发内容脚本或 Firefox 扩展主程序中的事件以删除所有来自站点 B 的 cookie。
我将单击侦听器分配给按钮并触发。我已经通过扩展在 Google Chrome 中实现了同样的效果。我收到有关使用组件的错误,但找不到替代组件的解决方案。它只需要在 Firefox 22+ 上运行。我正在使用 addon-sdk-1.14 来开发扩展。
内容脚本.js
function DeleteCookies() {
var payload="Delete";
self.port.emit("Delete", payload);
}
主.js
var {Cc, Ci} = require("chrome");
pageMod.PageMod({
include: "*",
contentScriptFile: [ self.data.url("jquery-1.9.1.js")
,self.data.url("script.js")],
onAttach: function(worker) {
worker.port.on('Delete',function (){ DeleteCookies();});
}
});
function DeleteCookies() {
var cookieManager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);
var domain= "siteB.com";
var iter = cookieManager.enumerator;
var cookie_count = 0;
while (iter.hasMoreElements()) {
var cookie = iter.getNext();
if (cookie instanceof Ci.nsICookie) {
if (domain.indexOf(cookie.host.toUpperCase()) != -1) {
cookieManager.remove(cookie.host, cookie.name, cookie.path, cookie.blocked);
cookie_count++;
}
}
}
};