Aca te paso el codigo de ejemplo anterior
agregue un codigo
este en particular controla si estas o no activo, si estas inactivo mas de 5 segundos entonces no ejecuta el Ajax. caso contrario lo hacer.
El tema seria asi:
idleTime controla, se agregan dos eventos, si se produce algunos lo ponen en cero.
cada un segundo se suma una unidad.
Código:
var idleInterval = setInterval("timerIncrement()", 1000);
Acordate que 1000 es un segundo.
Aqui lo que se controla que no se haya incrementado 5 veces la variable idelTime, que si lo haces por 1000 milisegundos (es decir 1 segundo) te daria que a los cinco segundo pone no disponible.
Código:
if(idleTime > 5){
document.getElementById(capa).innerHTML = "No disponible";
}
Aqui esta si es mayor a 5, cosa que es obvia, pero lo coloco para que veas donde podrias poner otras excepciones.
Espero que asi si te sirva, ahora actualizaras si esta disponible el usuario, en caso contrario, si pasan cinco segundos, no hara nada mas que poner No disponible.
Código PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Act</title>
<script type="text/javascript">
//Se toma el tiempo cada cuanto se realiza una actualizacion
//cada 300 MILISEGUNDO se ejecuta el metodo Enviar()
//y se pasa como argumento, la pagina prueba.php
// y resultado, que sera el nombre de nuestro div en la pagina.
var timer = setInterval("Enviar('prueba.php','resultado')", 1000);
var idleTime = 0;
//Aqui el script para detectar si el usuario esta o no activo.
var idleInterval = setInterval("timerIncrement()", 1000);
//cuerpo.onclick =activar;
var cuerpo = document;
cuerpo.addEventListener("mousemove", activar, false);
cuerpo.addEventListener("keypress", activar, false);
function activar(e)
{
idleTime = 0;
}
function timerIncrement()
{
idleTime++;
}
//llamara a la funcion ajax, que lo que hara sera una peticion a la
//_pagina pasada como argumento, y la capa es donde se colocara el resultado.
function Enviar(_pagina,capa) {
if(idleTime <= 5){
var ajax;
ajax = ajaxFunction();
ajax.open("POST", _pagina, true);
ajax.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
document.getElementById(capa).innerHTML = ajax.responseText;
} }
ajax.send(null);
}else{
if(idleTime > 5){
document.getElementById(capa).innerHTML = "No disponible";
}
}
}
//Se instancia el objeto y se devuelve
//dependiendo del navegador.
function ajaxFunction() {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
return xmlHttp;
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
return xmlHttp;
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
} catch (e) {
alert("Tu navegador no soporta AJAX!");
return false;
}}}
}
</script>
</head>
<body>
<!--Aqui se colocaran los datos obtenidos.-->
<div id="resultado">Nuestro Div Resultado.</div>
</body>
</html>