Раньше мой код работал, но недавно я обновил пользовательский интерфейс 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 после того, как он уже открыт, он действительно идет туда, куда должен быть. Это просто похоже на открытое поведение в приведенной выше функции.