我在这里找到了一些 javascript 代码,它会显示会话超时警告和一条消息,通知用户他们已注销(如下所示)但是我对这段代码的问题是,如果用户不在电脑前要单击任一警报上的确定按钮,则不会采取进一步的行动。因此,目前超时警告设置为在重定向前 1 分钟显示,当该警告弹出时,计时器将暂停,直到用户单击按钮,并且在用户单击确定按钮后 1 分钟弹出第二条消息,然后在用户单击该警告上的按钮之前,不会发生重定向。
有一个更好的方法吗?我可以使用 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>
谢谢。