Firefox扩展中的XMLHttpRequest
问题描述:
我正在编写一个FireFox扩展,希望从服务器加载数据。但是,当我尝试初始化了XMLHttpRequest:Firefox扩展中的XMLHttpRequest
var request = new XMLHttpRequest();
错误控制台说:
ReferenceError: XMLHttpRequest is not defined
我必须包括一些或为什么XMLTttpRequest无法识别?
答
附加SDK(通过附加组件生成器间接使用)提供了一个request
package,它本质上是一个围绕XMLHttpRequest
的包装,您应该使用它。根据我的理解,如果在执行请求时卸载/禁用附加组件,则无法直接访问XMLHttpRequest
访问权限。
答
看来弗拉基米尔的答案对于大多数这样的情况是有用的。但还有一个案例。
我发现在尝试解决Firefox下16怪该错误的问题三页,但我从来没有Firefox的15岁以下的看到这个错误
我得到这个错误在内容上的脚本部分页面。该脚本在开始时注入:
contentScriptWhen : "start",
它看起来像在某些情况下窗口对象未正确初始化。所以,我刚刚改变了从头到尾的脚本加载。对我而言是可能的。问题已经消失...
我不知道它为什么会出现,但知道解决方案并希望它对某人有用。
答
对于使用XMLHttpRequest的构造函数,你应该添加XPCOM组件构造:
const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest");
后:
// some code
var req = new XMLHttpRequest();
// some code
更多关于MDN
是一个JavaScript模块内部的代码信息?如果是这样,看看https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Using_XMLHttpRequest_from_JavaScript_modules_.2F_XPCOM.C2.A0components – 2012-01-02 12:06:20
嗨费利克斯!我在函数内的main.js中使用它。但是当我这样做时,附加组件构建器会说'不能复制xpi文件'... – SteMa 2012-01-02 12:11:12
您是否在使用新的插件SDK?如果是这样,我还没有使用它,所以我不能帮你。抱歉。 – 2012-01-02 12:12:52