c# - 用于 session 超时的javascript倒数计时器

标签 c# javascript asp.net

我想提醒用户 session 超时即将到期。我想要一个带有确定按钮的弹出窗口,并在弹出窗口上显示秒数。我可以只用 java 脚本来做到这一点吗? 我也可以在后面使用 C# 代码。

现在它检测到 session 超时并弹出窗口告诉他们 session 已过期。

<script type="text/javascript">
    var sessionTimeout = "<%= Session.Timeout %>";

    function DisplaySessionTimeout() {
        sessionTimeout = sessionTimeout - 1;

        if (sessionTimeout >= 0)
          window.setTimeout("DisplaySessionTimeout()", 60000);
        else {
            alert("Your current Session is over due to inactivity.");
        }
    }
</script>

最佳答案

是的,您可以通过 JavaScript 执行此操作。这是一个简单的计数器实现 that was inspired from this StackOverflow answer我前一段时间发现:

function Counter(options) {
    var timer;
    var instance = this;
    var seconds = options.seconds || 10;
    var onUpdateStatus = options.onUpdateStatus || function() {};
    var onCounterEnd = options.onCounterEnd || function() {};
    var onCounterStart = options.onCounterStart || function() {};

    function decrementCounter() {
        onUpdateStatus(seconds);
        if (seconds === 0) {
            stopCounter();
            onCounterEnd();
            return;
        }
        seconds--;
    };

    function startCounter() {
        onCounterStart();
        clearInterval(timer);
        timer = 0;
        decrementCounter();
        timer = setInterval(decrementCounter, 1000);
    };

    function stopCounter() {
        clearInterval(timer);
    };

    return {
        start : function() {
            startCounter();
        },
        stop : function() {
            stopCounter();
        }
    }
};

...以及如何使用它的示例:

var countdown = new Counter({
    // number of seconds to count down
    seconds: 3,

    onCounterStart: function () { 
        // show pop up with a message 
        ... 
    },

    // callback function for each second
    onUpdateStatus: function(second) {
        // change the UI that displays the seconds remaining in the timeout 
        ... 
    },

    // callback function for final action after countdown
    onCounterEnd: function() {
        // show message that session is over, perhaps redirect or log out 
        ... 
    }
});
countdown.start();

一旦服务器准备好提醒用户,只需创建计时器,它就会开始倒计时。您可以自定义每个事件发生的情况:计时器何时开始、秒数何时结束以及倒计时何时结束。

关于c# - 用于 session 超时的javascript倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755706/

相关文章:

c# - Active Directory 显示表格中的所有属性

c# - 将 EF 实体映射到维护 ICollection 和延迟加载的 ViewModel

c# - 如何以编程方式将目录压缩为 zip 文件

c# - 如何在 C# 中使用线程制作重复按钮?

javascript - 实现跨浏览器移动兼容性

javascript - 解析API响应中的数据,调用函数直到收到参数

javascript - 复选框和点击事件处理

c# - ASP :repeater events - how to postback

asp.net - 将 Docker 部署到离线 PC

Session 变量上的 ASP.NET 三元运算符