如何从“依赖”对话框中获取参数

时间:2012-04-22 20:54:58

标签: dialog xul xulrunner

在我的XUL应用程序中,我通过以下代码打开一个对话框窗口:

var win = myWindow.openDialog("chrome://mywindow/content/mydialog.xul",
                  "Dialog creation",
                  "chrome, dialog, modal, resizable=yes",
                           params).focus();

我通过以下代码访问用户传递的信息:

if (params.out){     
    dialogVariablesValues = params.out['inputValues'];
    sameDialog = params.out['sameDialog'];  
    (...)
}

单击对话框窗口中的“确定”按钮时,窗口关闭,if(params.out)变为true,我可以获取值。我对这种方法没有任何问题。问题是我需要将对话窗口更改为依赖。所以我把代码更改为:

var win = myWindow.openDialog("chrome://mywindow/content/mydialog.xul",
                  "Dialog creation",
                  "chrome, dialog, dependent, resizable=yes",
                           params).focus();

但是params.out总是空的......

有人知道如何在依赖对话框关闭时获取值吗?

1 个答案:

答案 0 :(得分:0)

使用从属对话框,即使对话框仍处于打开状态,也会在openDialog()调用后继续执行。因此,您希望在关闭该对话框时“通知”您的代码。最简单的解决方案应该是在params中传递回调并更改对话框以在关闭时调用回调。因此打开对话框的代码如下所示:

params.callback = function(inputValues, sameDialog)
{
  // Do something with the dialog result here
};
myWindow.openDialog(..., params).focus();

对话框的代码如下:

var inputValues = ...;
var sameDialog = ...;
window.addEventListener("unload", function()
{
  // Dialog is being closed, call the callback
  window.arguments.callback(inputValues, sameDialog);
}, false)