javascript 监听器和定时器

这个例子是我要垮系统访问,防止当前会话失效,而还能访问另一个系统,而做得测试。

我将本Session过期的时间取到了页面。

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>合同起草</title>
</head>
<x:tbody title="xx" iconCls="icon-dot">
<div id="msgBox" style="display:none;"><font style="size: 14px;color: red"></font></div>
	<iframe id="logfrm" src="另一个系统地址"  frameborder="0" scrolling="no">
	</iframe>
		
<script type="text/javascript">
	// 提示时间
	var infoTime = 180;// 3分钟,到时默认提醒
	var unit = 1000;
	// session 过期时间,单位秒,从后台获取的
	var sessionTime = "${sessionLostTime}"*unit; ;
	// 和session 同步,初始化定时任务
	var timeout = runTimeout();
	// 时间到了进行提示,从180秒时间减少
	var outinfo = runInteval();
	var noticeout;
	// 点击默认刷新session 时间
	myWindowListener("click",function(){
		// 隐藏提示信息
		$('#msgBox').hide();
		clearTimeout(timeout);
		clearTimeout(outinfo);
		clearInterval(noticeout);
		outinfo = runInteval();
		timeout = runTimeout();
	});
	// 执行定时器,session 过去动作
	function runTimeout(){
		return window.setTimeout(active,sessionTime);
	}
	// 执行定时器,消息提醒
	function runInteval(){
		return window.setTimeout(noticeout=notice,(sessionTime-infoTime*unit));
	}
	// 时间到了 直接跳转登陆 界面
	function active(){
		forward('','/c/jsp/login/login');
	}

	// 时间即将到期 提示时间
	function notice(){
		$('#msgBox').show();
		return window.setInterval(infoAction,1000);
	}
	// 提示操作
	function infoAction(){
		infoTime --;
		$('#msgBox font').html("");
		$('#msgBox font').html("您长时间未操作,页面将在"+ infoTime +"秒后失效,恢复请点击空白处!");
	}	
	// IE/fire
	function myWindowListener(fanc,time){
		if(window.attachEvent){
			return window.document.attachEvent("on"+fanc,time);
		}else{
			return window.addEventListener(fanc,time,false);
		}
	}
</script>

</x:tbody>

</html>

 

有 更好的建议,请多帮助!

 

独立出来方便调用好一些。

	// 执行定时器,session 过去动作
	function runTimeout(sessionTime){
		return window.setTimeout(active,sessionTime);
	}
	// 执行定时器,消息提醒
	function runInteval(sessionTime,infoTime,unit){
		var lessTime = sessionTime-infoTime*unit;
		return window.setTimeout(noticeout=notice,lessTime);
	}
	// 时间到了 直接跳转登陆 界面
	function active(){
		forward('','/c/jsp/login/login');
	}

	// 时间即将到期 提示时间
	function notice(){
		$('#msgBox').show();
		return window.setInterval(infoAction,1000);
	}
	// 提示操作
	function infoAction(){
		infoTime --;
		$('#msgBox font').html("");
		$('#msgBox font').html("您长时间未操作,页面将在"+ infoTime +"秒后失效,恢复请点击空白处!");
	}	
	// IE/fire
	function myWindowListener(myevent,fanc,sessionTime){
		if(window.attachEvent){
			return window.document.attachEvent("on"+myevent,fanc);
		}else{
			return window.addEventListener(myevent,fanc,false);
		}
	}
	
	// 提示时间
	var infoTime = 180;// 3分钟
	// 点击默认刷新session 时间
	function initSessionListener(sessionLostTime){
		var msgBox =null;
		var unit = 1000;
		// session 过期时间,单位秒
		var sessionTime = sessionLostTime*unit; 
		// 和session 同步
		var timeout = runTimeout(sessionTime);
		// 时间到了进行提示
		var outinfo = runInteval(sessionTime,infoTime,unit);
		var noticeout;
		// 隐藏提示信息
		myWindowListener("click",function(){
				// 隐藏提示信息
				$('#msgBox').hide();
				clearTimeout(timeout);
				clearTimeout(outinfo);
				clearInterval(noticeout);
				outinfo = runInteval(sessionTime,infoTime,unit);
				timeout = runTimeout(sessionTime);
		});
	}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值