Firefox扩展中的XMLHttpRequest

XMLHttpRequest in Firefox Extension

本文关键字:XMLHttpRequest 扩展 Firefox      更新时间:2023-09-26

我正在编写一个firefox扩展,并希望从服务器加载数据。但是当我尝试用:

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

错误控制台显示:

ReferenceError: XMLHttpRequest is not defined

我必须包括一些东西,或者为什么XMLTttpRequest不被识别?

Add-on SDK(您通过Add-on Builder间接使用)提供了一个request包,本质上是XMLHttpRequest的包装器,您应该使用它。据我所知,如果在执行请求时卸载/禁用附加组件,您不会直接访问XMLHttpRequest以防止问题。

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

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

之后:

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

关于MDN的更多信息

似乎vladimir的答案对大多数这种情况都是有用的。但还有一种情况

我发现tris页面试图在Firefox 16下解决这个错误的问题。很奇怪,但是我从来没有在firefox15下看到过这个错误。

我在一些页面的内容脚本中出现了此错误。脚本在开始时被注入:

contentScriptWhen : "start",

看起来在某些情况下窗口对象没有正确初始化。所以,我只是从头到尾改变了脚本加载。对我来说,这是可能的。问题已经解决了……

我不知道为什么会出现,但我知道解决方案,希望对某人有用。