2012-06-01 34 views

Respuesta

12

Aquí un ejemplo básico

(function(seconds) { 
    var refresh,  
     intvrefresh = function() { 
      clearInterval(refresh); 
      refresh = setTimeout(function() { 
       location.href = location.href; 
      }, seconds * 1000); 
     }; 

    $(document).on('keypress click', function() { intvrefresh() }); 
    intvrefresh(); 

}(15)); // define here seconds 

esto refresca la página cada 15 segundos sin pulsar una tecla o un evento de clic (pero si tienes mismos eventos definida en otro lugar haciendo un stopPropagation() esto no funcionará correctamente porque el evento no podrá llegar al elemento)

+0

'.triggerHandler' requiere un parámetro ... – Alnitak

+0

' .trigger' también requiere un parámetro ;-) – Alnitak

+0

el código en la respuesta vinculada es más limpio (en mi humilde opinión) porque no depende de desencadenar un evento falso para iniciar el ciclo , y también usa captura en lugar de burbujeo. – Alnitak

5

Cree un temporizador (setTimeout) que actualizará la página, y cada vez que presione un botón o presione el mouse, simplemente reinicie el temporizador.

Consulte this question para ver el código que hace la mayor parte de lo que desea.

Fwiw, aquí está la respuesta de F.Calderan reescrito para:

  1. eliminar cierres innecesarios
  2. separar el acción del repetición, por abastecer la acción como una devolución de llamada

-

function setIdle(cb, seconds) { 
    var timer; 
    var interval = seconds * 1000; 
    function refresh() { 
            clearInterval(timer); 
              timer = setTimeout(cb, interval); 
    }; 
    $(document).on('keypress click', refresh); 
    refresh(); 
} 

setIdle(function() { 
    location.href = location.href; 
}, 15); 
Cuestiones relacionadas