2012-06-01 15 views

risposta

12

Ecco un esempio di base

(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 

Ciò aggiornare la pagina ogni 15 secondi senza pressione di un tasto o di un evento click (ma se avete stessi eventi definiti altrove facendo una stopPropagation() questo non funzionerà correttamente perché la evento non sarà in grado di raggiungere l'elemento)

+0

'.triggerHandler' richiede un parametro ... – Alnitak

+0

' .trigger' richiede anche un parametro ;-) – Alnitak

+0

il codice nella risposta collegata è più pulito (IMHO) perché non si basa sull'attivazione di un evento falso per avviare il ciclo e usa anche la cattura anziché il gorgoglio. – Alnitak

5

Creare un timer (setTimeout) che aggiornerà la pagina e ogni volta che si preme un tasto o si preme il mouse, è sufficiente riavviare il timer.

Vedere this question per il codice che esegue la maggior parte di ciò che si desidera.

FWIW, ecco la risposta di F.Calderan riscritto per:

  1. eliminare chiusure inutili
  2. separare il azione dal ripetizione, dal suppling l'azione come un callback

-

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); 
Problemi correlati