ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Javascript:SetTimeout和ClearTimeout重置.

2019-08-30 23:43:38  阅读:284  来源: 互联网

标签:javascript asp-net settimeout cleartimeout


我有以下会话时间的javascript代码

    <script type="text/javascript">

    var time;
    var sessionTimeout = <%= Session.Timeout %>

    function DisplaySessionTimeout() {

       document.getElementById("<%= lblSessionTime.ClientID %>").innerText = sessionTimeout;
        sessionTimeout = sessionTimeout - 1;

        if (sessionTimeout >= 0)
            time = window.setTimeout("DisplaySessionTimeout()", 1000);
        else {
            alert("Your current Session is over.");
        }
   }

    function cleartime() {
        clearTimeout(time);
        document.onmousemove = cleartime;
        document.onkeypress = cleartime;
    }
</script>   

它可以倒计时.但是当我移动鼠标或按键时没有任何事情发生.我想让它在mousemove和keypress上重置计数器.谁能发现错误?

解决方法:

如果你打算将计时器重置为初始值,那么你就错了.我还建议使用setInterval而不是setTimeout(并传递函数而不是字符串):

var time,
    sessionTimeout = <%= Session.Timeout %>,
    remainingTime = sessionTimeout,
    intervalHandle,
    lastPos = [0, 0];

function displaySessionTimeout() {
   document.getElementById("<%= lblSessionTime.ClientID %>").innerText = remainingTime;
}

function updateTimer() {
    remainingTime -= 1;

    if (remainingTime >= 0) {
        displaySessionTimeout();
    } else {
        clearInterval(intervalHandle);
        alert("Your current Session is over.");
    }
}

function resetTimer() {
    if (remainingTime >= 0 && (e.clientX !== lastPos[0] || e.clientY !== lastPos[1])) {
       lastPos = [e.clientX, e.clientY];
       remainingTime = sessionTimeout;
       displaySessionTimeout();
    }
}

intervalHandle = setInterval(updateTimer, 1000);
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
displaySessionTimeout();

http://jsfiddle.net/2ZERB/

标签:javascript,asp-net,settimeout,cleartimeout
来源: https://codeday.me/bug/20190830/1771734.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有