Мой код раньше работал, но я недавно обновил jQuery UI до 1.8 и jQuery до 1.4, потому что некоторые вещи не работали. Как только я это сделал, эти вещи начали работать, однако теперь я замечаю, что этот диалог позиционирует себя как верхний центр, а не средний центр.
Позвольте мне сначала немного объяснить код. Код запрашивает Ajax-запрос каждые x минут, чтобы увидеть, когда в последний раз был запущен сеанс. Если с момента последнего посещения сеанса прошло 10 минут, появляется диалоговое окно div с пользовательским интерфейсом jQuery с предупреждением о том, что срок их сеанса истекает, и есть кнопка, позволяющая повторно выполнить сеанс через отдельный встроенный Ajax. ПОЛУЧИТЬ запрос без перезагрузки всей страницы.
Вот настоящая проблема. Через 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 после того, как он уже открыт, он идет туда, где и должен быть. Кажется, это просто открытое поведение в функции выше.