Диалог пользовательского интерфейса jQuery не подчиняется параметру положения при открытии

Раньше мой код работал, но недавно я обновил пользовательский интерфейс jQuery до версии 1.8 и jQuery до версии 1.4, потому что некоторые вещи не работали. Как только я это сделал, эти вещи начали работать, однако теперь я заметил, что этот диалог позиционирует себя в верхнем центре, а не в середине.

Позвольте мне сначала немного объяснить код. Код запрашивает Ajax-запрос каждые x минут, чтобы узнать, когда в последний раз был запущен сеанс. Если с момента последнего запуска сеанса прошло 10 минут, появится диалоговое окно jQuery UI с предупреждением о том, что срок действия сеанса скоро истечет, и есть кнопка, позволяющая повторно запустить сеанс с помощью отдельного встроенного Ajax. GET-запрос без перезагрузки всей страницы.

Вот собственно беда. Через 15 минут или более он должен закрыть диалоговое окно с предупреждением (он проверяет, открыто ли оно уже, что в данной ситуации «вероятно»), а затем создает новое диалоговое окно со встроенной формой входа в систему, которая позволяет вам повторно подтвердить ваш войти в систему без перезагрузки страницы (и потери несохраненных, наполовину заполненных форм).

Вот функция, которая должна закрыть предупреждение, создайте div для повторного входа в систему:

function renderReLogin() {
    if ($("#logOutWarning").dialog("isOpen")) {
        $("#logOutWarning").dialog("close"); // Close warning dialog as session has already expired
    }

    if ($("#logOutReLogin").dialog("isOpen") != true)
    {
        $('#noticeContainers').html('<div id="logOutReLogin" title="You\'ve been logged out!"><div id="logOutReLoginText"></div></div>');
    }

    $('#logOutReLoginText').html("This session has expired. In order to protect the integrity of you and your clients, we must limit sessions. To resume this session (and not lose any unsaved work) you must revalidate your credentials by logging in below.<br />" +
        '<br /><div style="color:red;text-align:center;" id="loginFeedback"></div>'+
        '<form id="reloginForm">'+
        '<table width="40%" align="center"><tr><td>E-mail:</td>'+
        '<td><input id="username" type="edit"></td></tr>'+
        '<tr><td>Password</td>'+
        '<td><input id="password" type="password"></td></tr>'+
        '</table></form>'
    );

    $('#logOutReLogin').dialog(
        {
            width: '50%',
            modal: true,
             show: 'scale',
            hide: 'scale',
            draggable: false,
            resizable: false,
            position: 'center',
            buttons: {
                "Re-Login": function() { retryLogin(); },
            }
        }
    );
}

Теперь, как я уже сказал выше, предупреждение открывается нормально, а затем нормально закрывается. Но диалоговое окно повторного входа в систему привязывается к самому верхнему центру окна просмотра, а не к среднему центру.

Когда я вручную вызываю $("#logOutReLogin").dialog("option", "position", "center" ); через Firebug в Firefox после того, как он уже открыт, он действительно идет туда, куда должен быть. Это просто похоже на открытое поведение в приведенной выше функции.


person WhiskeyTangoFoxtrot    schedule 30.05.2010    source источник


Ответы (1)


После проб и ошибок я считаю, что нашел причину, по которой он не работал. Кажется, что анимация скрытия в диалоговом окне предупреждения конфликтует с анимацией показа диалогового окна повторного входа в систему.

Я перемещал много вещей и заметил наиболее желательный результат после комментирования настроек анимации, поэтому я предполагаю, что это было так, но это могла быть комбинация вещей, которые я изменил во время экспериментов.

Я не уверен, что это известное нет-нет, чтобы все было настроено так, как я сделал / делаю. Но я полагаю, что анимация для этого на самом деле не нужна, поскольку вероятная причина, по которой они всплывают, заключается в том, что пользователь не смотрит на вкладку.

person WhiskeyTangoFoxtrot    schedule 01.06.2010