我无法在firefox 17中看到由Components.utils.import(“resource://gre/modules/myfile.jsm”)创建的更多我的全局对象

时间:2013-05-04 16:46:59

标签: firefox firefox-addon global-variables

我已使用下一代码在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+的误解是什么?

1 个答案:

答案 0 :(得分:0)

使用附加SDK创建加载项时,Cu.import()无法正确识别程序包的范围。这意味着您必须assign the exported symbols explicitly

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