首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnSelectedIndexChanged和AutoPostBack

OnSelectedIndexChanged和AutoPostBack
EN

Stack Overflow用户
提问于 2013-10-17 14:20:10
回答 1查看 115关注 0票数 0

我在这里发现了一些javascript代码,这些代码将显示会话超时警告和通知用户他们已被注销的消息(如下面所示),但是我的问题是,如果用户没有在计算机前面单击任何一个警报上的ok按钮,则不会采取进一步的行动。因此,当超时警告设置为重定向前1分钟显示时,当该警告弹出时,计时器暂停,直到用户单击按钮,第二条消息在用户单击“确定”按钮后1分钟弹出,然后在用户单击该警告的按钮后才会发生重定向。对我来说,这里最大的问题是,很明显,实际的会话计时器与这些javascript计时器是完全分开的,所以如果当第一个警告消息弹出时用户不在屏幕前,说他们在会话结束前有一分钟的时间,那么他们会看到消息并单击ok,他们没有被重定向,他们认为他们还有一分钟的时间,但是会话已经过期了,我在每个页面上都有计时器运行的代码,这样如果计时器过期了,它们就会重定向到索引页面,如果计时器过期了,并且存储的所有会话变量都消失了,所以他们会点击某些内容,并且无论如何都会被重定向。

有更好的方法吗?我可以使用javascript轮询会话状态并找出实际剩余的时间,而不是运行一个完全分离的计时器吗?

代码语言: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>

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 15:41:22

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

所以就用其他形式的对话,f.e。jQuery UI提供的那些。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19429295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档