请教如何实现用户超时锁屏 我用的ASP.NET,请问如何在页面上用户无操作10分钟后锁住当前浏览的页面,同时弹出一个登录页面。查了一些资料,一般都是介绍用Session,但是用session需要回传页面,并且用户在当前页面的操作会丢失(比如写一封邮件写了30分钟,一回传先前输入的内容就没了),现在肯定是想保存住用户已经输入的内容。请教如何实现以上功能,无论是服务端实现,还是客户端JS脚本。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在页面内用 js 计时(简单的可以直接用var timer0 = setTimeout...),页面有任何操作时应当重置计时器(这一点比较麻烦,因为要充分监听各类可能的用户事件),计时器到时间后重定向页面或是用 HTML 元素覆盖页面就可以了。 不建议使用setTimeout,一旦setTimeout的地方太多,很难保证timeoutID的清除.这不是麻不麻烦的问题,而是会导致bug。如果真的考虑要用setTimeout,则在setTimeout之前一定要把上一次的timeout clear掉。至于保存用户数据,像邮件这种多内容的,可以定时为用户保存草稿。 2楼既然不建议settimeout,那么一般现在论坛网站上都使用的是什么样的方法? 以上是我之前做测试用的代码,你稍微改下就可以用了 var Linson={}; Linson.sessionTracking={}; Linson.sessionTracking.sessionExpiry=1; Linson.sessionTracking.sessionExpiryCountdown=60; Linson.sessionTracking.title="Session Tracking Test"; Linson.sessionTracking.noticeText1="Your session will expire in "; Linson.sessionTracking.noticeText2=" seconds"; Linson.sessionTracking.noticeText3="Please press OK to continue with your session. "; Linson.sessionTracking.expiredText="Sorry, your session has expired!"; $(document).ready(function(){Linson.startSessionTracking();}); window.onbeforeunload = function() { if (Linson.sessionTracking) { Linson.sessionTracking.sessionExpiry = 0; } } Linson.startSessionTracking = function() { if (Linson.sessionTracking && parseInt(Linson.sessionTracking.sessionExpiry) > 0) { setTimeout("Linson.launchSessionNotice();", ((parseInt(Linson.sessionTracking.sessionExpiry) * 60) * 1000)); } } $(window).resize(function() { if ($('#dimmer').length > 0) { $('#dimmer').css('width', ($(document).width()) + 'px'); $('#dimmer').css('height', ($(document).height()) + 'px'); } }); Linson.launchSessionNotice = function() { if (Linson.sessionTracking && parseInt(Linson.sessionTracking.sessionExpiry) > 0) { if ($('#dimmer').length > 0) { $('#dimmer').remove(); $('#sessionNoticeBox').remove(); } $('body').append('<div id="dimmer"></div><div id="sessionNoticeBox"><span id="sessionNoticeText">' + Linson.sessionTracking.title + '<br/>' + Linson.sessionTracking.noticeText1 + '<span id="sessionNoticeCount">' + Linson.sessionTracking.sessionExpiryCountdown + '</span>' + Linson.sessionTracking.noticeText2 + '<br/>' + Linson.sessionTracking.noticeText3 + '</span><br/><br/><input id="sessionNoticeOK" type="button" value=" OK " /></div>'); $('#dimmer').show(); $('#sessionNoticeBox').show(); $('#dimmer').css('width', ($(document).width()) + 'px'); $('#dimmer').css('height', ($(document).height()) + 'px'); ...... window.focus(); } jquery如何让动态加载的内容也能受到页面加载时的代码影响? 新浪微博如何显示信息来源,已经有appkey 这种选择器应该怎么做? js菜鸟,大虾们帮俺解释一个问题 计数器问题。。 javascrip 小问题 [求助]请问这段代码应该如何写在一起? ■■页面中table的td的字体怎么改呀?我定义样式表不起作用。?请看:■■ 关于onclick,很简单,但我不会! node.js addon模块 返回一个字符串 图片循环赋值后 ID 不对啊!麻烦各位大侠帮忙 broadway的视频怎么播放不了
如果真的考虑要用setTimeout,则在setTimeout之前一定要把上一次的timeout clear掉。
至于保存用户数据,像邮件这种多内容的,可以定时为用户保存草稿。
Linson.sessionTracking={};
Linson.sessionTracking.sessionExpiry=1;
Linson.sessionTracking.sessionExpiryCountdown=60;
Linson.sessionTracking.title="Session Tracking Test";
Linson.sessionTracking.noticeText1="Your session will expire in ";
Linson.sessionTracking.noticeText2=" seconds";
Linson.sessionTracking.noticeText3="Please press OK to continue with your session. ";
Linson.sessionTracking.expiredText="Sorry, your session has expired!";
$(document).ready(function(){Linson.startSessionTracking();});
window.onbeforeunload = function() {
if (Linson.sessionTracking) {
Linson.sessionTracking.sessionExpiry = 0;
}
}
Linson.startSessionTracking = function() {
if (Linson.sessionTracking && parseInt(Linson.sessionTracking.sessionExpiry) > 0) {
setTimeout("Linson.launchSessionNotice();", ((parseInt(Linson.sessionTracking.sessionExpiry) * 60) * 1000));
}
} $(window).resize(function() {
if ($('#dimmer').length > 0) {
$('#dimmer').css('width', ($(document).width()) + 'px');
$('#dimmer').css('height', ($(document).height()) + 'px');
}
}); Linson.launchSessionNotice = function() {
if (Linson.sessionTracking && parseInt(Linson.sessionTracking.sessionExpiry) > 0) {
if ($('#dimmer').length > 0) {
$('#dimmer').remove();
$('#sessionNoticeBox').remove();
}
$('body').append('<div id="dimmer"></div><div id="sessionNoticeBox"><span id="sessionNoticeText">' + Linson.sessionTracking.title + '<br/>' + Linson.sessionTracking.noticeText1 + '<span id="sessionNoticeCount">' + Linson.sessionTracking.sessionExpiryCountdown + '</span>' + Linson.sessionTracking.noticeText2 + '<br/>' + Linson.sessionTracking.noticeText3 + '</span><br/><br/><input id="sessionNoticeOK" type="button" value=" OK " /></div>');
$('#dimmer').show();
$('#sessionNoticeBox').show();
$('#dimmer').css('width', ($(document).width()) + 'px');
$('#dimmer').css('height', ($(document).height()) + 'px');
......
window.focus();
}