在firefox add-on中使用XPCOM

在firefox addon中不能直接使用component , 必须通过require(“chrome”)来调用所有的组件.如下所示.

var {Cc, Ci} = require("chrome");

var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
                getService(Ci.nsIPromptService);

require("sdk/ui/button/action").ActionButton({
  id: "xpcom-example",
  label: "Hello from XPCOM",
  icon: "./icon-16.png",
  onClick: function() {
    promptSvc.alert(null, "My Add-on", "Hello from XPCOM");
  }
});

另外,通常使用组件的地方会被单独列在一个js文件种,比如,上面的代码可以写成:

var {Cc, Ci} = require("chrome");

var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
            getService(Ci.nsIPromptService);

exports.alert = function(title, text) {
    promptSvc.alert(null, title, text);
};

假定上面的文件保存为alert.js , 可以这样调用:

require("sdk/ui/button/action").ActionButton({
  id: "xpcom-example",
  label: "Hello from XPCOM",
  icon: "./icon-16.png",
  onClick: function() {
    require("./alert").alert("My Add-on", "Hello from XPCOM");
  }
});

这样调用的方便之处在于可以把使用组件的代码独立出来.通常使用组件的地方都会被认为是潜在的不安全因素.

参考文章: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK/Guides/XUL\_Migration\_Guide



本文地址: http://www.bagualu.net/wordpress/archives/5063 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注