0

我在这里找到了一些 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>

谢谢。

4

1 回答 1

0

alert阻止 UI 和任何进一步的脚本执行。

所以只需使用其他形式的对话框,例如jQuery UI提供的那些。

于 2013-10-17T15:41:22.763 回答