尝试创建一个访问浏览器cookie的firefox插件。以下谷歌搜索教程我写了以下函数,但看起来无法访问Services.jsm?
Components.utils.import("resource://gre/modules/Services.jsm");
var myExtension = {
myListener: function(evt) {
//I get here
alert("Received from web page: " +
evt.target.getAttribute("attribute1") + "/" +
evt.target.getAttribute("attribute2"));
//I dont see anything dumped
let enum = Services.cookies.getCookiesFromHost("example.com");
while (enum.hasMoreElements()) {
var cookie = e.getNext().QueryInterface(Ci.nsICookie2);
dump(cookie.host + ";" + cookie.name + "=" + cookie.value + "\n");
}
}
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true);
答案 0 :(得分:1)
谢谢@Shakur我没有抓到e
,是的,你是对的,需要修复enum
。
我不熟悉cookie服务,我必须阅读它,但你已经走上正轨。
这是因为您没有定义Ci在while循环中使用Ci。您可以将Ci
替换为Components.interfaces
,它应该修复它。 :)如果您想使用C*
短格式,通常会添加到顶部:const {Cc:classes, Cu:utils, Ci:interfaces, Cr:results, CC: Constructor} = Components
,如此示例所示:https://codereview.stackexchange.com/questions/56821/improvements-to-nsizipreader-and-nsiscriptableinputstream/56824#56824