Firefox扩展中的XMLHttpRequest

时间:2012-01-02 12:00:56

标签: javascript ajax firefox-addon firefox-addon-sdk

我正在编写FireFox-Extension并希望从服务器加载数据。但是当我尝试使用:

初始化XMLHttpRequest时
var request = new XMLHttpRequest();

错误控制台说:

ReferenceError: XMLHttpRequest is not defined

我是否必须包含某些内容或为何无法识别XMLTttpRequest?

3 个答案:

答案 0 :(得分:10)

附加SDK(您通过附加组件间接使用)提供request package,它本质上是XMLHttpRequest的包装,您应该使用它。根据我的理解,如果在执行请求时卸载/禁用了加载项,则不会直接XMLHttpRequest访问以防止出现问题。

答案 1 :(得分:3)

要使用XMLHttpRequest构造函数,您应该添加XPCOM组件构造函数:

const XMLHttpRequest  = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest");

之后:

// some code
var req = new XMLHttpRequest();
// some code

有关MDN

的更多信息

答案 2 :(得分:1)

看来弗拉迪米尔的答案对大多数此类案件都很有用。但还有一个案例。

我发现tris页面试图在Firefox 16下解决此错误的问题。奇怪,但我从未在Firefox 15下看到此错误。

我在 某些 页面的内容脚本中遇到此错误。脚本在开始时注入:

contentScriptWhen : "start",

在某些情况下,窗口对象未正确初始化。所以,我刚刚从头到尾更改了脚本加载。在我的情况下,这是可能的。问题已经消失......

我不知道它出现的原因,但知道解决方案并希望它对某人有用。