firefox扩展中使用的Javascript变量

时间:2011-10-29 23:46:08

标签: javascript variables firefox-addon xul

我有:我想了解Firefox扩展,所以我从http://kb.mozillazine.org/Getting_started_with_extension_development下载了包含“Hello World”示例的zip文件。

在hello.xul中我有:

<hbox align="center">
<description flex="1">text in box</description>
</hbox>

(给出一个弹出框,其中包含文本“框中的文字”)

在overlay.js中我有:

var HelloWorld = {
  onLoad: function() {
    // initialization code
    this.initialized = true;
  },

  onMenuItemCommand: function() {
    window.open("chrome://helloworld/content/hello.xul", "", "chrome");
    var a = "text I want in box";
  }
};

window.addEventListener("load", function(e) { HelloWorld.onLoad(e); }, false); 

问题:如何在javascript文件中使用变量a,以便该变量的内容在框中“打印”?

2 个答案:

答案 0 :(得分:2)

您需要将参数传递给新窗口。示例显示为here

答案 1 :(得分:1)

首先,请阅读:https://developer.mozilla.org/en/DOM/window.openDialog#Passing_extra_parameters_to_the_dialog

您应该使用参数将值从一个窗口传递到另一个窗口(Dialog Concept)

这提供了一种在xul文件中传递值的简单方法。

对于您的问题,您可以在xxx.xul中执行类似的操作。这将打开hello.xul以及额外参数returnValues:

var returnValues = { out: null };
window.openDialog("hello.xul", "tree", "modal", returnValues);

注意模态是必须​​的。

接下来在你的xxx.xul中,存储你要传递给hello.xul的所有值(我们称之为y),如下所示:

window.arguments[0].out = y

注意window.argument[0]指的是returnValues

现在您可以在hello.xul中访问y的值(在您的案例中是标签的名称),如下所示:

var labels = returnValues.out;

基本上,

在打开时将参数传递给子窗口。

然后在子窗口中,使用希望传递回父窗口的值填充参数,然后关闭子窗口。

现在回到父窗口,您可以访问传递给子项的参数,它包含子窗口更新的信息。