2012-04-22 27 views
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總是空...

有誰知道什麼時候被關閉對話框依賴我怎麼能得到的價值觀?

回答

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)