1

在我的 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'];  
    (...)
}

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

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

但是 params.out 始终为空...

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

4

1 回答 1

0

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

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)
于 2012-04-23T07:58:53.320 回答