我有:我想了解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/