需要关闭会话超时时确认消息。 [英] Need to close Confirm message on Session Time out.

查看:94
本文介绍了需要关闭会话超时时确认消息。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有j查询显示有关会话到期的显示警告消息。在延长会话的时间内单击确定按钮。点击取消按钮将在20分钟后过期。在到期之前,我正在显示另一条消息,说明会话过期将重定向到SessionExpired.aspx页面。



考虑会话超时时间= 20分钟。 18分钟后显示警告信息。如果我没有再点击确定按钮2分钟,警告信息应该在会话到期后立即关闭(20分钟后)和显示会话已过期的显示第二条消息



我无法找到如何在20分钟后以编程方式关闭确认消息框。并显示第二条消息。单击确定按钮后会重定向到SesionExpired.aspx页面?



以下是我在代码中的脚本;



< ; pre lang =   cs>< script lang =   javascript type =   text / javascript> 
// 会话超时警告消息
var sessionWarningTimer = null ;
var sessionTimeoutWarning = null ;

function RunSessionTimeOut(){
// var timeOnPageLoad = new Date();
sessionTimeoutWarning = <%= System.Configuration.ConfigurationManager.AppSettings [ SessionWarning ]。ToString()%> ;;
var timeOnPageLoad = new 日期();
// 警告
if (sessionWarningTimer!= null ){
sessionWarningTimer = null ;
clearTimeout(sessionWarningTimer);
}
sessionWarningTimer = setTimeout( function (){SessionWarning(sessionTimeoutWarning,timeOnPageLoad)}, parseInt (sessionTimeoutWarning)* 60 * 1000 );
}

$( document )。ready( function ( ){
RunSessionTimeOut();
});


function SessionWarning(sessionTimeoutWarning,timeOnPageLoad){
// var timeOnPageLoad = new Date();
var sessionTimeout = <%= Session.Timeout%>;
// var sessionWarningTimer = null;
var redirectToWelcomePageTimer = null ;
// 到期时间到期

var minutesForExpiry =( parseInt (sessionTimeout) - parseInt (sessionTimeoutWarning) ));
var message = 您的会话将过期在 + minutesForExpiry + 分钟。单击确定以扩展会话。;
// 确认用户是否要延长会话
answer =确认(消息);

// 如果是,则延长会话时间。
< span class =code-keyword> if
(answer){
var img = new 图像( 1 1 );
img.src = ' Default.aspx?date =' + escape new Date ());
// timeOnPageLoad = new Date();
sessionWarningTimer = setTimeout(< span class =code-keyword> function (){SessionWarning(sessionTimeoutWarning,timeOnPageLoad)}, parseInt (sessionTimeoutWarning)* 60 * 1000 );
var okCurrentTime = new 日期();
// 到期时间
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()+ parseInt (sessionTimeout));
// 当前时间大于到期时间
if Date .parse(okCurrentTime)> timeForExpiry){
RedirectToSessionExpiredPage();
}
}
其他 {
// *************************
// 即使点击了ok(扩展会话)或取消按钮,
/ / 如果会话时间结束。然后退出会话。
var cancelCurrentTime = new 日期();
// 到期时间
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()+ parseInt (sessionTimeout));
// 当前时间大于到期时间
if Date .parse(cancelCurrentTime)> timeForExpiry){
RedirectToSessionExpiredPage();
}
其他 {
// 重定向到欢迎页面
redirectToWelcomePageTimer = setTimeout(' RedirectToSessionExpiredPage( )' parseInt (minutesForExpiry)* 60 * 1000 );
}
// *************** ***********
}
}
// 会话超时
function RedirectToSessionExpiredPage(){
alert( 您的会话已过期。单击确定继续。);
window location = SessionExpired.aspx;
}
< / script>

 

解决方案

document )。ready( function (){
RunSessionTimeOut() ;
});


function SessionWarning(sessionTimeoutWarning,timeOnPageLoad){
// var timeOnPageLoad = new Date();
var sessionTimeout = <%= Session.Timeout%>;
// var sessionWarningTimer = null;
var redirectToWelcomePageTimer = null ;
// 到期时间到期

var minutesForExpiry =( parseInt (sessionTimeout) - parseInt (sessionTimeoutWarning) ));
var message = 您的会话将过期在 + minutesForExpiry + 分钟。单击确定以扩展会话。;
// 确认用户是否要延长会话
answer =确认(消息);

// 如果是,则延长会话时间。
< span class =code-keyword> if (answer){
var img = new 图像( 1 1 );
img.src = ' Default.aspx?date =' + escape new Date ());
// timeOnPageLoad = new Date();
sessionWarningTimer = setTimeout(< span class =code-keyword> function (){SessionWarning(sessionTimeoutWarning,timeOnPageLoad)}, parseInt (sessionTimeoutWarning)* 60 * 1000 );
var okCurrentTime = new 日期();
// 到期时间
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()+ parseInt (sessionTimeout));
// 当前时间大于到期时间
if Date .parse(okCurrentTime)> timeForExpiry){
RedirectToSessionExpiredPage();
}
}
其他 {
// *************************
// 即使点击了ok(扩展会话)或取消按钮,
/ / 如果会话时间结束。然后退出会话。
var cancelCurrentTime = new 日期();
// 到期时间
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()+ parseInt (sessionTimeout));
// 当前时间大于到期时间
if Date .parse(cancelCurrentTime)> timeForExpiry){
RedirectToSessionExpiredPage();
}
其他 {
// 重定向到欢迎页面
redirectToWelcomePageTimer = setTimeout(' RedirectToSessionExpiredPage( )' parseInt (minutesForExpiry)* 60 * 1000 );
}
// *************** ***********
}
}
// 会话超时
function RedirectToSessionExpiredPage(){
alert( 您的会话已过期。单击确定继续。);
window location = SessionExpired.aspx;
}
< / script>

 


为什么?如果以编程方式关闭某个消息框,无论它是什么,用户可能甚至都看不到它,因此它会破坏此消息的目的。如果用户不需要查看它,则不应发出消息本身。不合逻辑吗?



看起来你需要检查你的整个方法。



< DD> -SA

I have j query which dispaly warning message about session expiration. Click on "Ok" button within a time it will extend session. Click on "Cancel" button will expired session after 20 mins. Before expiring the sesion I am displaying another message stating that "Session Expire" which will redirect to "SessionExpired.aspx" page.

Consider a session time out period =20 mins. and warning message will dispaly after 18 min. If I did not click on "Ok" button for another 2 mins., warning message should get closed as soon as session get expired in background (after 20 mins) and dispaly second message stating that "Session Expired"

I am not able to find how I can close the "Confirm" message box programatically after 20 mins. and dispaly second message. Which will redirect to "SesionExpired.aspx" page after click on "Ok" button?

Below is a Script I have in code;

<pre lang="cs"><script lang="javascript" type="text/javascript" >
            //Session time out warning message
            var sessionWarningTimer = null;
            var sessionTimeoutWarning = null;

            function RunSessionTimeOut() {
               // var timeOnPageLoad = new Date();
                sessionTimeoutWarning = "<%= System.Configuration.ConfigurationManager.AppSettings["SessionWarning"].ToString()%>";
                var timeOnPageLoad = new Date();
                //For warning
                if (sessionWarningTimer != null) {
                    sessionWarningTimer = null;
                    clearTimeout(sessionWarningTimer);
                }
                sessionWarningTimer = setTimeout(function () { SessionWarning(sessionTimeoutWarning, timeOnPageLoad) }, parseInt(sessionTimeoutWarning) * 60 * 1000);
            }

            $(document).ready(function () {
                RunSessionTimeOut();
            });


            function SessionWarning(sessionTimeoutWarning, timeOnPageLoad) {
               // var timeOnPageLoad = new Date();
                var sessionTimeout = "<%= Session.Timeout %>";
                  // var sessionWarningTimer = null;
                   var redirectToWelcomePageTimer = null;
                  //minutes left for expiry

                   var minutesForExpiry = (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning));
                   var message = "Your session will expire in " + minutesForExpiry + " minutes. Click ok to extend your session.";
                  //Confirm the user if he wants to extend the session
                   answer = confirm(message);

                  //if yes, extend the session.
                   if (answer) {
                       var img = new Image(1, 1);
                       img.src = 'Default.aspx?date=' + escape(new Date());
                       //timeOnPageLoad = new Date();
                       sessionWarningTimer = setTimeout(function () { SessionWarning(sessionTimeoutWarning, timeOnPageLoad) }, parseInt(sessionTimeoutWarning) * 60 * 1000);
                       var okCurrentTime = new Date();
                       //time for expiry
                       var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() + parseInt(sessionTimeout));
                       //Current time is greater than the expiry time
                       if (Date.parse(okCurrentTime) > timeForExpiry) {
                           RedirectToSessionExpiredPage();
                       }
                   }
                   else {
                       //*************************
                       //Even after clicking ok(extending session) or cancel button,
                       //if the session time is over. Then exit the session.
                       var cancelCurrentTime = new Date();
                       //time for expiry
                       var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() + parseInt(sessionTimeout));
                       //Current time is greater than the expiry time
                       if (Date.parse(cancelCurrentTime) > timeForExpiry) {
                           RedirectToSessionExpiredPage();
                       }
                       else {
                           //To redirect to the welcome page
                           redirectToWelcomePageTimer = setTimeout('RedirectToSessionExpiredPage()', parseInt(minutesForExpiry) * 60 * 1000);
                       }
                       //**************************
                   }
               }
               //Session timeout
               function RedirectToSessionExpiredPage() {
                   alert("Your session has expired. Click ok to continue.");
                   window.location = "SessionExpired.aspx";
               }
        </script>

解决方案

(document).ready(function () { RunSessionTimeOut(); }); function SessionWarning(sessionTimeoutWarning, timeOnPageLoad) { // var timeOnPageLoad = new Date(); var sessionTimeout = "<%= Session.Timeout %>"; // var sessionWarningTimer = null; var redirectToWelcomePageTimer = null; //minutes left for expiry var minutesForExpiry = (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning)); var message = "Your session will expire in " + minutesForExpiry + " minutes. Click ok to extend your session."; //Confirm the user if he wants to extend the session answer = confirm(message); //if yes, extend the session. if (answer) { var img = new Image(1, 1); img.src = 'Default.aspx?date=' + escape(new Date()); //timeOnPageLoad = new Date(); sessionWarningTimer = setTimeout(function () { SessionWarning(sessionTimeoutWarning, timeOnPageLoad) }, parseInt(sessionTimeoutWarning) * 60 * 1000); var okCurrentTime = new Date(); //time for expiry var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() + parseInt(sessionTimeout)); //Current time is greater than the expiry time if (Date.parse(okCurrentTime) > timeForExpiry) { RedirectToSessionExpiredPage(); } } else { //************************* //Even after clicking ok(extending session) or cancel button, //if the session time is over. Then exit the session. var cancelCurrentTime = new Date(); //time for expiry var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() + parseInt(sessionTimeout)); //Current time is greater than the expiry time if (Date.parse(cancelCurrentTime) > timeForExpiry) { RedirectToSessionExpiredPage(); } else { //To redirect to the welcome page redirectToWelcomePageTimer = setTimeout('RedirectToSessionExpiredPage()', parseInt(minutesForExpiry) * 60 * 1000); } //************************** } } //Session timeout function RedirectToSessionExpiredPage() { alert("Your session has expired. Click ok to continue."); window.location = "SessionExpired.aspx"; } </script>


Why? If you close some message box programmatically, no matter what it is, the user may not even see it, so it would defeat the purpose of this message. If the user does not need to see it, you should not issue the message itself. Isn't it logical?

It looks like you need to review your whole approach.

—SA


这篇关于需要关闭会话超时时确认消息。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆