Atraso mínimo de setInterval () / setTimeout () nas guias de segundo plano [duplicado]
Possible Duplicate:
Chrome: intervalos / intervalos suspensos nas guias em segundo plano?
Existe um atraso mínimo permitido parasetInterval()
esetTimeout()
ao ser executado em uma guia que você não está vendo no momento?
Este código é executadosetInterval()
com um atraso especificado de 100ms e registra quanto tempo realmente demorou. Também informa quando você entra / sai da guia.
<html>
<body>
<script type="text/javascript">
window.onfocus = function () { document.body.innerHTML += 'entered tab<br />'; };
window.onblur = function () { document.body.innerHTML += 'left tab<br />'; };
var previous = new Date().getTime();
setInterval(function () {
var now = new Date().getTime();
var elapsed = now - previous;
document.body.innerHTML += elapsed + '<br />';
previous = now;
}, 100);
</script>
</body>
</html>
Aqui está um trecho da saída no Chrome 12.0.742.100 no Ubuntu 10.04.2 LTS:
101
101
101
left tab
1001
1000
1004
1003
1002
1000
entered tab
101
101
101
102
101
Tentei valores diferentes para o atraso também. Qualquer valor menor que 1000 resulta no mesmo comportamento que é aumentado para 1000 quando você está visualizando uma guia diferente. Valores acima de 1000 se comportam corretamente. E o mesmo acontece com osetTimeout()
versão deste código.