Вот моя функция Javascript ниже. Возможно ли, чтобы предупреждение перезаписало другое предупреждение. Например, предупреждение (сообщение); триггеры сначала, но если сеанс заканчивается, он вызывает предупреждение ("Истек срок действия сеанса. Вы будете перенаправлены на страницу входа") ;. Единственный способ увидеть второе предупреждение - щелкнуть ok в сообщении (сообщение). Возможно ли, чтобы второе предупреждение просто перезаписало первое предупреждение, если сеанс истекает, или любой другой способ сделать это.
<!-- Session Timeout Function-->
<script language="javascript" type="text/javascript">
var sessionTimeout = <%= Session.Timeout %>;
var sessionTimeoutWarning = sessionTimeout - 1;
var timeOnPageLoad = new Date();
var warning = null;
var timeout = null;
if ( <% if (MasterPageTemplate.Classes.CmwSession.IsAuthenticated) Response.Write("1"); else Response.Write("0"); %> == 1)
{
//For warning
warning = setTimeout('SessionWarning()', parseInt(sessionTimeoutWarning) * 60 * 1000);
//To redirect to the welcome page
timeout = setTimeout('RedirectToWelcomePage()',parseInt(sessionTimeout) * 60 * 1000);
}
//Session Warning
function SessionWarning() {
//minutes left for expiry
var minutesForExpiry = (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning));
var message = "Your session will expire in another " + minutesForExpiry +
" minutes! Please Save the data before the session expires";
alert(message);
var currentTime = new Date();
//time for expiry
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() + parseInt(sessionTimeout));
//Current time is greater than the expiry time
if(Date.parse(currentTime) > timeForExpiry)
{
alert("Session expired. You will be redirected to login page");
window.location = "Default.aspx";
}
else
{
$.ajax({
type: "POST",
url: 'Default.aspx/PingSession',
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
success: function (msg) {
alert("Your session is now valid.")
}
});
if (warning != null)
{
clearTimeout(warning);
//For warning
warning = setTimeout('SessionWarning()', parseInt(sessionTimeoutWarning) * 60 * 1000);
}
if(timeout != null)
{
clearTimeout(timeout);
//To redirect to the welcome page
timeout = setTimeout('RedirectToWelcomePage()',parseInt(sessionTimeout) * 60 * 1000);
}
}
}
//Session timeout
function RedirectToWelcomePage(){
alert("Session expired. You will be redirected to login page");
window.location = "Default.aspx";
}
Это невозможно. После того, как он был открыт, у вас нет контроля над диалоговым окном. Поскольку этот ответ предполагает, что вы можете попробовать модальное диалоговое окно с использованием инфраструктуры пользовательского интерфейса: окно предупреждения Javascript close