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