用户在页面javascript或php中处于非活动状态3分钟时自动注销

时间:2018-01-12 09:32:27

标签: javascript php html css

我创建了一个标签A,B,C。每个标签都有一个html页面。如果我单击第一个选项卡,我已设置自动注销的超时功能(javascript)。如果我单击第二个选项卡,则运行相同的超时功能。但我想停止/重置第一个标签计时器。

function timeout(){
	var IDLE_TIMEOUT = 60; //seconds
	var _idleSecondsTimer = null;
	var _idleSecondsCounter = 0;

	document.onclick = function() {
	    _idleSecondsCounter = 0;
	};

	document.onmousemove = function() {
	    _idleSecondsCounter = 0;
	};

	document.onkeypress = function() {
	    _idleSecondsCounter = 0;
	};

	_idleSecondsTimer = window.setInterval(CheckIdleTime, 1000);

	function CheckIdleTime() {
	     _idleSecondsCounter++;
	    
	    if (_idleSecondsCounter >= IDLE_TIMEOUT) {
	        window.clearInterval(_idleSecondsTimer);
	        alert("Time expired!");
	        document.location.href = "logout.php";
	    }
	}
}

function opentab1(){
     document.getElementById("tab1").innerHTML='<object type="text/html" data="tab1.php" ></object>';
}

function opentab2(){
     document.getElementById("tab2").innerHTML='<object type="text/html" data="tab2.php" ></object>';
}

function opentab3(){
     document.getElementById("tab3").innerHTML='<object type="text/html" data="tab3.php" ></object>';
}
function opentab4(){
     document.getElementById("tab4").innerHTML='<object type="text/html" data="tab4.php" ></object>';
}
<body>
<div class="tab1" onload="timeout()" onclick="opentab1()">
</div>
<div class="tab2"  onload="timeout()" onclick="opentab2()">
</div>
<div class="tab3"  onload="timeout()" onclick="opentab3()">
</div>
<div class="tab4"  onload="timeout()" onclick="opentab4()">
</div>

// loading an php file using on click function
<div class="container" id="tab1"></div>
<div class="container" id="tab2"></div>
<div class="container" id="tab3"></div>
<div class="container" id="tab4"></div>


</body>

提前致谢。请指导。

2 个答案:

答案 0 :(得分:0)

您可以使用setTimeout()。

clearTimeout()方法清除使用setTimeout()方法设置的计时器。

setTimeout()返回的ID值用作clearTimeout()方法的参数。

注意:为了能够使用clearTimeout()方法,在创建超时方法时必须使用全局变量:

Syntax:
    myVar = setTimeout("javascript function", milliseconds);

然后,如果函数尚未执行,则可以通过调用clearTimeout()方法来停止执行。

Example:

var myVar;

function myFunction() {
   myVar = setTimeout(function(){ alert("Hello"); }, 3000);
}

function myStopFunction() {
    clearTimeout(myVar);
}


 In your case: 
  window.timeout1 = setTimeout(function() {
        _idleSecondsCounter++;
        if (_idleSecondsCounter >= IDLE_TIMEOUT) {
             window.clearInterval(_idleSecondsTimer);
             alert("Time expired!");
             document.location.href = "logout.php";
        }
  }, 1000);

 function stopTimeout1() {
        clearTimeout(window.timeout1);
 }

答案 1 :(得分:0)

通过编辑方法并停止当前计时器然后开始新计时器,只要单击新选项卡,就可以停止计时器。

您可以从div中删除Map<Integer, TreeNode> map = list.parallelStream() .collect(Collectors.toMap( NodeData::getId, TreeNode::new ));

onload

<div class="tab1" onload="timeout()" onclick="opentab1()">

然后在您检索标签内容的功能中,例如<div class="tab1" onclick="opentab1()"> 编辑它们,如下面的函数

opentab1()