1

我已经使用下一个代码在 firefox 15- 的 MultiWindows 应用程序中创建 MyGlobalObject 。

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Components.utils.import("resource://gre/modules/MyGlobalObject.jsm");

我的文件 MyGlobalObject.jsm 非常简单:

var EXPORTED_SYMBOLS = [ "MyGlobalObject" ];
if ("undefined" == typeof(MyGlobalObject)) {
    var MyGlobalObject = {};
    MyGlobalObject[0]=1;
}

由于 Firefox 17+,此代码无法运行。我用下一个 main.js 创建了附加组件:

exports.main = function() {
   var { Cu } = require("chrome");
   Cu.import("resource://gre/modules/MyGlobalObject.jsm");
};

不过,我无法在我的应用程序内的 Javascript 代码中访问 MyGlobalObject。我对 Firefox 17+ 编程的误解是什么?

4

1 回答 1

0

当您使用附加 SDK 创建附加组件时,Cu.import()将无法正确识别您的包的范围。这意味着您必须明确分配导出的符号

var {Cu} = require("chrome");
var {MyGlobalObject} = Cu.import("resource://gre/modules/MyGlobalObject.jsm", null);
于 2013-05-05T12:00:37.000 回答