Похоже, что диалог и окно не связаны. Так что в вашем близком обработчике вам нужно будет также закрыть диалоговое окно, а также ваше окно. То, как вы это сделаете, будет зависеть от того, что делает функция showWaitingDialog (), но вам, вероятно, потребуется сохранить ссылку на диалоговое окно, созданное в этом методе, а затем в своем обработчике закрытия вызвать метод в вашем диалоге (например, в диалоговом окне). .close ()), чтобы отменить это тоже. Для этого может потребоваться изменить метод showWaitingDialog (), чтобы он возвращал ссылку на диалоговое окно:
function showWaitingDialog() {
// dialog is created as normal
// add something like this
return dialog;
}
Затем измените панель запуска и закройте обработчик, чтобы использовать сохраненный диалог:
// Dialog reference will be stored here
var dialog;
function callPreviewWindow(){
$.ajax( {
type : "GET",
url : "/ajax/eform/preview.do",
cache : false,
dataType : "text/html",
timeout: 40000,
beforeSend : function() {
// Store reference
dialog = showWaitingDialog("Please wait...");
},
error: function (xhr, err) {
resolveAjaxError(xhr, err);
},
success : function(data) {
showPreviewWindow(data);
}
});
}
function showPreviewWindow(htmlData){
var previewWindow = new Ext.Window({
title: "E-Form View",
width:650,
id:'previewWindow',
autoHeight: true,
html: htmlData,
modal: true,
y: 150,
listeners: {
beforeclose: function () {
searchVisible = false;
}
},
buttons: [{
text: 'Close', handler: function() {
previewWindow.close();
dialog.close();
}
}]
});
previewWindow.show(this);
}