我有:我想了解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,以便该变量的内容在框中“打印”?
答案 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;
基本上,
在打开时将参数传递给子窗口。
然后在子窗口中,使用希望传递回父窗口的值填充参数,然后关闭子窗口。
现在回到父窗口,您可以访问传递给子项的参数,它包含子窗口更新的信息。