Ho una presentazione semplice che ho creato sulla home page di un cliente, utilizzando setInterval per cronometrare le rotazioni.Mettere in pausa setInterval quando la pagina/browser non è a fuoco
Per impedire ai browser di avvitamento setInterval quando la pagina non è a fuoco (un'altra scheda sta osservando, o un altro programma), sto usando:
function onBlur() {
clearInterval(play);
};
function onFocus() {
mySlideRotateFunction();
};
if (/*@[email protected]*/false) {
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
Dove mySlideRotateFunction imposta la setInterval e corre qualche jQuery. Mentre questo funziona la maggior parte del tempo, trovo che, a volte, sembra che onBlur non sia stato eseguito, e quando torno alla pagina i tempi si sono "accumulati" e le rotazioni impazziscono.
Non riesco a determinare il motivo per cui ciò accade occasionalmente, e non su altri.
La mia domanda- c'è un problema con il mio codice, e qualcuno ha un suggerimento migliore per 'mettere in pausa' setInterval quando la finestra del browser non è a fuoco?
Grazie
mi imbatto nello stesso problema mentre stavo lavorando su un progetto di qualche tempo fa - abbiamo cercato di risolvere questo "bug" fastidioso .. ma alla fine abbiamo usato il codice come lo era .. perché siamo in grado di Si riproducono quando accade questo strano comportamento :( +1 spero che ci sia qualcuno là fuori con una soluzione :) – walialu