我有:我想了解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,以便该变量的内容是框中“已打印”的内容?

最佳答案

首先,请阅读以下内容: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;


基本上,

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

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

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

关于javascript - firefox扩展中使用的Javascript变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7942416/

10-16 22:38