为什么Components.classes未定义?

时间:2014-01-27 10:11:14

标签: javascript firefox firefox-addon

在我运行以下代码的Firefox中:

var clazz = Components.classes["@mozilla.org/messenger;1"];

此错误即将发生:

TypeError: Components.classes is undefined

请看这个链接: http://jsfiddle.net/BbrvX/

有关Components.classes的信息,请访问以下链接:

https://developer.mozilla.org/en/docs/Components.classes

3 个答案:

答案 0 :(得分:3)

Components.classes适用于Chrome代码,扩展程序或浏览器开发。您无法在内容页面中访问它。

答案 1 :(得分:2)

如果您使用Addon SDK开发插件,则应使用此成语:

var { Cc } = require("chrome");
var clazz = Cc["@mozilla.org/messenger;1"];

其中Cc代表Component.classes。您可以在here上阅读更多内容。

答案 2 :(得分:2)

旧线程,新出现的错误:

如果在.cfg文件中使用了Component.Classes,则在Firefox 64位中会出现此错误。

目前,解决方法似乎是将此行添加到autoconfig.js文件中,以禁用Firefox Quantum / 64位中的沙箱。

pref("general.config.sandbox_enabled", false);

来自https://support.mozilla.org/en-US/questions/1236295的提示是针对Firefox 62的建议,但也适用于Firefox 68。