gpt4 book ai didi

javascript - "XMLHttpRequest is not a constructor"错误,与 Mozilla 文档在浏览器 chrome 中的用法相反

转载 作者:行者123 更新时间:2023-11-30 08:05:26 25 4
gpt4 key购买 nike

我正在使用 AddOn SDK 构建 Mozilla AddOn。我需要制作一个 AJAX 帖子,所以我使用 XMLHttpRequest .在 Mozilla's documentation它说XMLHttpRequest

can't be instantiated using the XMLHttpRequest() constructor. The constructor is not defined inside components and the code results in an error. The best way to work around this is to use the XPCOM component constructor.

文档说要这样做:

const XMLHttpRequest = Components.Constructor["@mozilla.org/xmlextras/xmlhttprequest;1"];
var oReq = new XMLHttpRequest();

很好。所以我完全按照文档中显示的方式实现了代码:

var { Cc, Cu, Ci, Cr, Cm, components } = require('chrome');
const XMLHttpRequest = components.Constructor["@mozilla.org/xmlextras/xmlhttprequest;1"];
. . .
var oReq = new XMLHttpRequest();

我在这一行收到“XMLHttpRequest is not a constructor”错误。

我错过了什么?我在这里做错了什么?我不能使用“Components.Constructor["@...”方式,因为生成 .xpi 的 AddOn SDK CLI 工具文件提示,说

use 'Components' to access chrome authority. To do so, you need to add a line somewhat like the following:

const {components} = require("chrome");

Then you can use any shortcuts to its properties that you import from the 'chrome' module ('Cc', 'Ci', 'Cm', 'Cr', and 'Cu' for the 'classes', 'interfaces', 'manager', 'results', and 'utils' properties, respectively. And components for Components object itself).

好的,好的。我有 require(chrome)在我的文件顶部调用,并生成快捷方式,然后有趣 components ,这是正确的形式,并且来自 AddOn 编译器的消息说要使用。然而我得到了错误。

非常感谢任何帮助。

最佳答案

您应该使用 request module在附加 SDK 中。

如果您出于某种原因仍想直接使用 nsIXMLHttpRequest,请注意在 SDK 模块中生成构造函数的正确方法是:

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

除了 components.Constructor() 似乎在 SDK 中不起作用。所以最好直接创建一个实例:

var {Cc, Ci} = require('chrome');
var r = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].
createInstance(Ci.nsIXMLHttpRequest);
r.open("GET", "http://example.org/");
r.addEventListener("loadend", function(e) {
console.log(this, e, e.type, this.responseText);
});
r.send();

MDN wiki(!) 信息完全不正确。我现在编辑了这篇文章并设置了“需要技术审查”标志。

关于javascript - "XMLHttpRequest is not a constructor"错误,与 Mozilla 文档在浏览器 chrome 中的用法相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com