在我的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总是空的......
有人知道如何在依赖对话框关闭时获取值吗?
答案 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)