如何在 Firefox 插件开发中使用模块

How to use modules in Firefox addon development

正在尝试创建访问浏览器 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);

谢谢@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