javascriptモニターとタイマー


この例はシステムアクセスを壊して、現在のセッションが無効になることを防止します.他のシステムにもアクセスできます.テストを受けます.
このセッションの期限が切れた時間をページに取りました.
 
<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);
		});
	}