jQueryUI中的jQueryUI对话框 - 有趣的定位

时间:2017-05-25 11:08:06

标签: jquery-ui iframe jquery-ui-dialog jquery-ui-tabs

我有一个使用jQueryUI选项卡的网页,其中一些选项卡有监听器,当其数据被另一个进程更改时会收到回调,并提供使用最新数据为您更新页面。

值得指出的是,此标签的内容位于iframe内。

我使用jQueryUI对话框弹出消息,但如果用户当时打开了不同的选项卡,当他们返回到该选项卡时,对话框会卡在页面的左上角:

enter image description here

如果在该选项卡打开时弹出对话框,则不会发生这种情况 - 即使我离开选项卡并稍后返回该选项卡,它也会很好地居中并保持居中:

enter image description here

这显然与当时隐藏的标签有关,是否有人知道解决方案?也许我可以在用户打开该选项卡时重新定位对话框?或者也许有一些方法可以让它居中,无论标签是否打开。

这是对话框的代码:

/*
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 });
        });
    }
});

感谢您的帮助!

0 个答案:

没有答案