我有一个使用jQueryUI选项卡的网页,其中一些选项卡有监听器,当其数据被另一个进程更改时会收到回调,并提供使用最新数据为您更新页面。
值得指出的是,此标签的内容位于iframe内。
我使用jQueryUI对话框弹出消息,但如果用户当时打开了不同的选项卡,当他们返回到该选项卡时,对话框会卡在页面的左上角:
如果在该选项卡打开时弹出对话框,则不会发生这种情况 - 即使我离开选项卡并稍后返回该选项卡,它也会很好地居中并保持居中:
这显然与当时隐藏的标签有关,是否有人知道解决方案?也许我可以在用户打开该选项卡时重新定位对话框?或者也许有一些方法可以让它居中,无论标签是否打开。
这是对话框的代码:
/*
show any message in a confirmation box and handle the response.
Close loading dialog if it's open otherwise
jQuery gets upset about the order of dialog creation and destruction
*/
function showConfirm(msg, confirmFunction, recordId) {
parent.closeCustomPopup('loader');
if(
$j('#confirmInFrame').html(msg).dialog({
fluid: true,
width: 'auto',
height: 'auto',
modal: true,
draggable: false,
resizable: false,
closeOnEscape: true,
position: { my: "center center", at: "center center", of: window },
buttons: {
'OK': function() {
$j( this ).dialog( 'close' );
confirmFunction(recordId);
},
Cancel: function() {
$j( this ).dialog( 'close' );
}
}
}).dialog( 'open' )
){
confirmFunction;
}
在父页面中,我尝试抓住打开的对话框并将它们重新定位到中心,但我无法抓住它们(大概是因为它们位于iframe内)并收到“错误:无法调用对话框上的方法在初始化之前;尝试调用方法'option'“:
$j('#tabs').tabs({
activate: function(event ,ui){
var activeDialogs = $j('iframe:visible').contents().find('.ui-dialog:visible');
activeDialogs.each(function(i) {
$j(this).dialog("option", "position", { my: "center center", at: "center center", of: window });
});
}
});
感谢您的帮助!