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

时间:2015-06-09 10:49:27

标签: javascript firefox-addon

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

1 个答案:

答案 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