2012-06-01 11 views

Odpowiedz

12

Oto podstawowy przykład

(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 

Ta strona zostanie odświeżona i co 15 sekund bez naciśnięcia klawisza lub zdarzenia click (ale jeśli masz same zdarzenia podane w innym miejscu dokonywania stopPropagation() to nie będzie działać poprawnie ponieważ zdarzenie nie będzie w stanie dotrzeć do elementu)

+0

'.triggerHandler' wymaga parametru ... – Alnitak

+0

' .trigger' wymaga również parametru ;-) – Alnitak

+0

kod w połączonej odpowiedzi jest czystszy (IMHO), ponieważ nie polega na wywołaniu fałszywego zdarzenia w celu rozpoczęcia cyklu , a także wykorzystuje przechwytywanie zamiast bulgotania. – Alnitak

5

Utwórz zegar (setTimeout), który odświeży stronę, a za każdym razem, gdy zostanie naciśnięty klawisz lub naciśnij myszą, po prostu uruchom ponownie zegar.

Przeczytaj kod this question, który wykonuje większość z tego, co chcesz.

FWIW, oto odpowiedź F.Calderan jest przepisany do:

  1. wyeliminowania zbędnych zamknięć
  2. oddzielić działania z powtórzenia przez suppling działanie jako zwrotnego

-

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); 
Powiązane problemy