假设您正在进行银行应用程序.如果用户登录到您的站点,如何检测他们的不活动状态并要求他们在一段时间内保持不活动状态?这里处于非活动状态意味着他们要么切换到其他选项卡,要么不触摸浏览器应用程序.
我想我可以通过注册用户在我的应用程序的每个页面上进行的每个鼠标移动或键盘移动来做到这一点.但是代码会非常难看并且难以维护.还有其他更优雅的方式吗?
嗨,大家好,这是我使用的代码.它不是我的,但我确实修改了它的'完美'.
// Add the following into your HEAD section var timer = 0; function set_interval() { // the interval 'timer' is set as soon as the page loads timer = setInterval("auto_logout()", 10000); // the figure '10000' above indicates how many milliseconds the timer be set to. // Eg: to set it to 5 mins, calculate 5min = 5x60 = 300 sec = 300,000 millisec. // So set it to 300000 } function reset_interval() { //resets the timer. The timer is reset on each of the below events: // 1. mousemove 2. mouseclick 3. key press 4. scroliing //first step: clear the existing timer if (timer != 0) { clearInterval(timer); timer = 0; // second step: implement the timer again timer = setInterval("auto_logout()", 10000); // completed the reset of the timer } } function auto_logout() { // this function will redirect the user to the logout script window.location = "your_logout_script.php"; } // Add the following attributes into your BODY tag onload="set_interval()" onmousemove="reset_interval()" onclick="reset_interval()" onkeypress="reset_interval()" onscroll="reset_interval()"
好运
理查德
如果用户定期从您的服务器请求新的页面/数据,那么在PHP中调整会话超时应该适用于此(假设您正在使用PHP会话).
如果担心他们可能坐在一个页面上很长一段时间没有去服务器(例如填写一个长表),并且你想区分这个和用户只需切换到另一个窗口,你可以做一些事情,比如使用javascript每五分钟左右使用XMLHTTPRequest请求一些数据,以保持会话活着.您可以使用window.focus和window.onblur事件的JavaScript停止和重新启动这一机制(我认为是IE浏览器的一些差异,有一个很好的解释在这里).