我在这里发现了一些javascript代码,这些代码将显示会话超时警告和通知用户他们已被注销的消息(如下面所示),但是我的问题是,如果用户没有在计算机前面单击任何一个警报上的ok按钮,则不会采取进一步的行动。因此,当超时警告设置为重定向前1分钟显示时,当该警告弹出时,计时器暂停,直到用户单击按钮,第二条消息在用户单击“确定”按钮后1分钟弹出,然后在用户单击该警告的按钮后才会发生重定向。对我来说,这里最大的问题是,很明显,实际的会话计时器与这些javascript计时器是完全分开的,所以如果当第一个警告消息弹出时用户不在屏幕前,说他们在会话结束前有一分钟的时间,那么他们会看到消息并单击ok,他们没有被重定向,他们认为他们还有一分钟的时间,但是会话已经过期了,我在每个页面上都有计时器运行的代码,这样如果计时器过期了,它们就会重定向到索引页面,如果计时器过期了,并且存储的所有会话变量都消失了,所以他们会点击某些内容,并且无论如何都会被重定向。
有更好的方法吗?我可以使用javascript轮询会话状态并找出实际剩余的时间,而不是运行一个完全分离的计时器吗?
<script type="text/javascript">
var iddleTimeoutWarning = null;
var iddleTimeout = null;
function pageLoad() {
if (iddleTimeoutWarning != null)
clearTimeout(iddleTimeoutWarning);
if (iddleTimeout != null)
clearTimeout(iddleTimeout);
var millisecTimeOutWarning = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeoutWarning"]) * 60 * 1000 %>;
var millisecTimeOut = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeout"]) * 60 * 1000 %>;
iddleTimeoutWarning = setTimeout("DisplayIddleWarning()", millisecTimeOutWarning);
iddleTimeout = setTimeout("TimeoutPage()", millisecTimeOut);
}
function DisplayIddleWarning() {
alert("Your session will expire in one minute due to inactivity.");
}
function TimeoutPage() {
alert("Your session has expired due to inactivity.");
location.replace("index.aspx");
}
</script>谢谢。
发布于 2013-10-17 15:41:22
alert阻止UI和任何进一步的脚本执行。
所以就用其他形式的对话,f.e。jQuery UI提供的那些。
https://stackoverflow.com/questions/19429295
复制相似问题